[Home] [Help]
PACKAGE BODY: APPS.XLA_00707_AAD_S_000005_PKG
Source
1 PACKAGE BODY XLA_00707_AAD_S_000005_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_000005_PKG |
10 | |
11 | DESCRIPTION |
12 | Package generated From Product Accounting Definition |
13 | Name : Cost Management Encumbrance Application Accounting Defi|
14 | Code : COST_MANAGEMENT_ENCUMBRANCE |
15 | Owner : PRODUCT |
16 | Version : |
17 | AMB Context Code: DEFAULT |
18 | HISTORY |
19 | Generated at 30-03-2009 at 05:03:41 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_000005_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_000005_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_000005_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_000005_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_000005_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_000005_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_000005_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_000005_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_000005_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_000005_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_000005_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 --DISTRIBUTION_IDENTIFIER
2380 , p_source_11 IN NUMBER
2381 --Distribution Type
2382 , p_source_12 IN VARCHAR2
2383 , p_source_12_meaning IN VARCHAR2
2384 --Entered Currency Code
2385 , p_source_15 IN VARCHAR2
2386 --Entered Amount
2387 , p_source_18 IN NUMBER
2388 --Currency Conversion Date
2389 , p_source_19 IN DATE
2390 --Currency Conversion Rate
2391 , p_source_20 IN NUMBER
2392 --Currency Conversion Type
2393 , p_source_21 IN VARCHAR2
2394 --Accounted Amount
2395 , p_source_22 IN NUMBER
2396 --Accounting Line Type
2397 , p_source_24 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 := 'MTL_ACCOUNTING_EVENTS';
2492 l_event_class_code := 'RETR_PRICE_ADJ';
2493 l_event_type_code := 'RETR_PRICE_ADJ_ALL';
2494 l_line_definition_owner_code := 'S';
2495 l_line_definition_code := 'RETR_PRICE_ADJ';
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_24,9E125) = 16
2525 THEN
2526
2527 --
2528 XLA_AE_LINES_PKG.SetNewLine;
2529
2530 p_balance_type_code := l_balance_type_code;
2531 -- set the flag so later we will know whether the gain loss line needs to be created
2532
2533 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2534 p_actual_flag :='A';
2535 END IF;
2536
2537 --
2538 -- bulk performance
2539 --
2540 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2541 p_header_num => 0); -- 4262811
2542 --
2543 -- set accounting line options
2544 --
2545 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2546 p_natural_side_code => 'D'
2547 , p_gain_or_loss_flag => 'N'
2548 , p_gl_transfer_mode_code => 'S'
2549 , p_acct_entry_type_code => 'A'
2550 , p_switch_side_flag => 'Y'
2551 , p_merge_duplicate_code => 'N'
2552 );
2553 --
2554 l_acc_rev_natural_side_code := 'C'; -- 4262811
2555 --
2556 --
2557 -- set accounting line type info
2558 --
2559 xla_ae_lines_pkg.SetAcctLineType
2560 (p_component_type => l_component_type
2561 ,p_event_type_code => l_event_type_code
2562 ,p_line_definition_owner_code => l_line_definition_owner_code
2563 ,p_line_definition_code => l_line_definition_code
2564 ,p_accounting_line_code => l_component_code
2565 ,p_accounting_line_type_code => l_component_type_code
2566 ,p_accounting_line_appl_id => l_component_appl_id
2567 ,p_amb_context_code => l_amb_context_code
2568 ,p_entity_code => l_entity_code
2569 ,p_event_class_code => l_event_class_code);
2570 --
2571 -- set accounting class
2572 --
2573 xla_ae_lines_pkg.SetAcctClass(
2574 p_accounting_class_code => 'ACCRUAL'
2575 , p_ae_header_id => l_ae_header_id
2576 );
2577
2578 --
2579 -- set rounding class
2580 --
2581 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2582 'ACCRUAL';
2583
2584 --
2585 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2586 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2587 --
2588 -- bulk performance
2589 --
2590 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2591
2592 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2593 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2594
2595 -- 4955764
2596 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2597 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2598
2599 -- 4458381 Public Sector Enh
2600
2601 --
2602 -- set accounting attributes for the line type
2603 --
2604 l_entered_amt_idx := 3;
2605 l_accted_amt_idx := 8;
2606 l_bflow_applied_to_amt_idx := NULL; -- 5132302
2607 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2608 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
2609 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2610 l_rec_acct_attrs.array_char_value(2) := p_source_12;
2611 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2612 l_rec_acct_attrs.array_num_value(3) := p_source_18;
2613 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2614 l_rec_acct_attrs.array_char_value(4) := p_source_15;
2615 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2616 l_rec_acct_attrs.array_date_value(5) := p_source_19;
2617 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2618 l_rec_acct_attrs.array_num_value(6) := p_source_20;
2619 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2620 l_rec_acct_attrs.array_char_value(7) := p_source_21;
2621 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
2622 l_rec_acct_attrs.array_num_value(8) := p_source_22;
2623
2624 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2625 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2626
2627 ---------------------------------------------------------------------------------------------------------------
2628 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2629 ---------------------------------------------------------------------------------------------------------------
2630 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2631
2632 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2633 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2634
2635 IF xla_accounting_cache_pkg.GetValueChar
2636 (p_source_code => 'LEDGER_CATEGORY_CODE'
2637 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2638 AND l_bflow_method_code = 'PRIOR_ENTRY'
2639 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2640 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2641 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2642 )
2643 THEN
2644 xla_ae_lines_pkg.BflowUpgEntry
2645 (p_business_method_code => l_bflow_method_code
2646 ,p_business_class_code => l_bflow_class_code
2647 ,p_balance_type => l_balance_type_code);
2648 ELSE
2649 NULL;
2650 -- No business flow processing for business flow method of NONE.
2651 END IF;
2652
2653 --
2654 -- call analytical criteria
2655 --
2656
2657 --
2658 -- call description
2659 --
2660 -- No description or it is inherited.
2661 --
2662 -- call ADRs
2663 -- Bug 4922099
2664 --
2665 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2666 (NVL(l_actual_upg_option, 'N') = 'O') OR
2667 (NVL(l_enc_upg_option, 'N') = 'O')
2668 )
2669 THEN
2670 NULL;
2671 --
2672 --
2673
2674 l_ccid := AcctDerRule_4(
2675 p_application_id => p_application_id
2676 , p_ae_header_id => l_ae_header_id
2677 , p_source_4 => p_source_4
2678 , x_transaction_coa_id => l_adr_transaction_coa_id
2679 , x_accounting_coa_id => l_adr_accounting_coa_id
2680 , x_value_type_code => l_adr_value_type_code
2681 , p_side => 'NA'
2682 );
2683
2684 xla_ae_lines_pkg.set_ccid(
2685 p_code_combination_id => l_ccid
2686 , p_value_type_code => l_adr_value_type_code
2687 , p_transaction_coa_id => l_adr_transaction_coa_id
2688 , p_accounting_coa_id => l_adr_accounting_coa_id
2689 , p_adr_code => 'CST_DEFAULT'
2690 , p_adr_type_code => 'S'
2691 , p_component_type => l_component_type
2692 , p_component_code => l_component_code
2693 , p_component_type_code => l_component_type_code
2694 , p_component_appl_id => l_component_appl_id
2695 , p_amb_context_code => l_amb_context_code
2696 , p_side => 'NA'
2697 );
2698
2699
2700 --
2701 --
2702 END IF;
2703 --
2704 -- Bug 4922099
2705 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2706 (NVL(l_enc_upg_option, 'N') = 'O')
2707 ) AND
2708 (l_bflow_method_code = 'PRIOR_ENTRY')
2709 )
2710 THEN
2711 IF
2712 --
2713 1 = 2
2714 --
2715 THEN
2716 xla_accounting_err_pkg.build_message
2717 (p_appli_s_name => 'XLA'
2718 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2719 ,p_token_1 => 'LINE_NUMBER'
2720 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
2721 ,p_token_2 => 'LINE_TYPE_NAME'
2722 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
2723 l_component_type
2724 ,l_component_code
2725 ,l_component_type_code
2726 ,l_component_appl_id
2727 ,l_amb_context_code
2728 ,l_entity_code
2729 ,l_event_class_code
2730 )
2731 ,p_token_3 => 'OWNER'
2732 ,p_value_3 => xla_lookups_pkg.get_meaning(
2733 p_lookup_type => 'XLA_OWNER_TYPE'
2734 ,p_lookup_code => l_component_type_code
2735 )
2736 ,p_token_4 => 'PRODUCT_NAME'
2737 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2738 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2739 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2740 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2741 ,p_ae_header_id => NULL
2742 );
2743
2744 IF (C_LEVEL_ERROR>= g_log_level) THEN
2745 trace
2746 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2747 ,p_level => C_LEVEL_ERROR
2748 ,p_module => l_log_module);
2749 END IF;
2750 END IF;
2751 END IF;
2752 --
2753 --
2754 ------------------------------------------------------------------------------------------------
2755 -- 4219869 Business Flow
2756 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2757 -- Prior Entry. Currently, the following code is always generated.
2758 ------------------------------------------------------------------------------------------------
2759 XLA_AE_LINES_PKG.ValidateCurrentLine;
2760
2761 ------------------------------------------------------------------------------------
2762 -- 4219869 Business Flow
2763 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2764 ------------------------------------------------------------------------------------
2765 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2766
2767 ----------------------------------------------------------------------------------
2768 -- 4219869 Business Flow
2769 -- Update journal entry status -- Need to generate this within IF <condition>
2770 ----------------------------------------------------------------------------------
2771 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2772 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2773 ,p_balance_type_code => l_balance_type_code
2774 );
2775
2776 -------------------------------------------------------------------------------------------
2777 -- 4262811 - Generate the Accrual Reversal lines
2778 -------------------------------------------------------------------------------------------
2779 BEGIN
2780 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2781 (g_array_event(p_event_id).array_value_num('header_index'));
2782 IF l_acc_rev_flag IS NULL THEN
2783 l_acc_rev_flag := 'N';
2784 END IF;
2785 EXCEPTION
2786 WHEN OTHERS THEN
2787 l_acc_rev_flag := 'N';
2788 END;
2789 --
2790 IF (l_acc_rev_flag = 'Y') THEN
2791
2792 -- 4645092 ------------------------------------------------------------------------------
2793 -- To allow MPA report to determine if it should generate report process
2794 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2795 ------------------------------------------------------------------------------------------
2796
2797 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2798 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2799 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
2800 -- call ADRs
2801 -- Bug 4922099
2802 --
2803 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2804 (NVL(l_actual_upg_option, 'N') = 'O') OR
2805 (NVL(l_enc_upg_option, 'N') = 'O')
2806 )
2807 THEN
2808 NULL;
2809 --
2810 --
2811
2812 l_ccid := AcctDerRule_4(
2813 p_application_id => p_application_id
2814 , p_ae_header_id => l_ae_header_id
2815 , p_source_4 => p_source_4
2816 , x_transaction_coa_id => l_adr_transaction_coa_id
2817 , x_accounting_coa_id => l_adr_accounting_coa_id
2818 , x_value_type_code => l_adr_value_type_code
2819 , p_side => 'NA'
2820 );
2821
2822 xla_ae_lines_pkg.set_ccid(
2823 p_code_combination_id => l_ccid
2824 , p_value_type_code => l_adr_value_type_code
2825 , p_transaction_coa_id => l_adr_transaction_coa_id
2826 , p_accounting_coa_id => l_adr_accounting_coa_id
2827 , p_adr_code => 'CST_DEFAULT'
2828 , p_adr_type_code => 'S'
2829 , p_component_type => l_component_type
2830 , p_component_code => l_component_code
2831 , p_component_type_code => l_component_type_code
2832 , p_component_appl_id => l_component_appl_id
2833 , p_amb_context_code => l_amb_context_code
2834 , p_side => 'NA'
2835 );
2836
2837
2838 --
2839 --
2840 END IF;
2841
2842 --
2843 -- Update the line information that should be overwritten
2844 --
2845 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2846 p_header_num => 1);
2847 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
2848
2849 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2850
2851 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
2852 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2853 END IF;
2854
2855 --
2856 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2857 --
2858 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2859 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
2860 ELSE
2861 ---------------------------------------------------------------------------------------------------
2862 -- 4262811a Switch Sign
2863 ---------------------------------------------------------------------------------------------------
2864 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
2865 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2866 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2867 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2868 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2869 -- 5132302
2870 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2871 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2872
2873 END IF;
2874
2875 -- 4955764
2876 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2877 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2878
2879
2880 XLA_AE_LINES_PKG.ValidateCurrentLine;
2881 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2882
2883 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2884 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2885 ,p_balance_type_code => l_balance_type_code);
2886
2887 END IF;
2888
2889 -----------------------------------------------------------------------------------------
2890 -- 4262811 Multiperiod Accounting
2891 -----------------------------------------------------------------------------------------
2892 -- No MPA option is assigned.
2893
2894
2895 END IF;
2896 END IF;
2897 --
2898
2899 --
2900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2901 trace
2902 (p_msg => 'END of AcctLineType_8'
2903 ,p_level => C_LEVEL_PROCEDURE
2904 ,p_module => l_log_module);
2905 END IF;
2906 --
2907 EXCEPTION
2908 WHEN xla_exceptions_pkg.application_exception THEN
2909 RAISE;
2910 WHEN OTHERS THEN
2911 xla_exceptions_pkg.raise_message
2912 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_8');
2913 END AcctLineType_8;
2914 --
2915
2916 ---------------------------------------
2917 --
2918 -- PRIVATE FUNCTION
2919 -- AcctLineType_9
2920 --
2921 ---------------------------------------
2922 PROCEDURE AcctLineType_9 (
2923 p_application_id IN NUMBER
2924 ,p_event_id IN NUMBER
2925 ,p_calculate_acctd_flag IN VARCHAR2
2926 ,p_calculate_g_l_flag IN VARCHAR2
2927 ,p_actual_flag IN OUT VARCHAR2
2928 ,p_balance_type_code OUT VARCHAR2
2929 ,p_gain_or_loss_ref OUT VARCHAR2
2930
2931 --Cost Management Default Account
2932 , p_source_4 IN NUMBER
2933 --Receiving Accounting Line Type
2934 , p_source_5 IN VARCHAR2
2935 --DISTRIBUTION_IDENTIFIER
2936 , p_source_11 IN NUMBER
2937 --Distribution Type
2938 , p_source_12 IN VARCHAR2
2939 , p_source_12_meaning IN VARCHAR2
2940 --Entered Currency Code
2941 , p_source_15 IN VARCHAR2
2942 --Entered Amount
2943 , p_source_18 IN NUMBER
2944 --Currency Conversion Date
2945 , p_source_19 IN DATE
2946 --Currency Conversion Rate
2947 , p_source_20 IN NUMBER
2948 --Currency Conversion Type
2949 , p_source_21 IN VARCHAR2
2950 --Accounted Amount
2951 , p_source_22 IN NUMBER
2952 )
2953 IS
2954
2955 l_component_type VARCHAR2(80);
2956 l_component_code VARCHAR2(30);
2957 l_component_type_code VARCHAR2(1);
2958 l_component_appl_id INTEGER;
2959 l_amb_context_code VARCHAR2(30);
2960 l_entity_code VARCHAR2(30);
2961 l_event_class_code VARCHAR2(30);
2962 l_ae_header_id NUMBER;
2963 l_event_type_code VARCHAR2(30);
2964 l_line_definition_code VARCHAR2(30);
2965 l_line_definition_owner_code VARCHAR2(1);
2966 --
2967 -- adr variables
2968 l_segment VARCHAR2(30);
2969 l_ccid NUMBER;
2970 l_adr_transaction_coa_id NUMBER;
2971 l_adr_accounting_coa_id NUMBER;
2972 l_adr_flexfield_segment_code VARCHAR2(30);
2973 l_adr_flex_value_set_id NUMBER;
2974 l_adr_value_type_code VARCHAR2(30);
2975 l_adr_value_combination_id NUMBER;
2976 l_adr_value_segment_code VARCHAR2(30);
2977
2978 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
2979 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
2980 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
2981 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
2982
2983 -- 4262811 Variables ------------------------------------------------------------------------------------------
2984 l_entered_amt_idx NUMBER;
2985 l_accted_amt_idx NUMBER;
2986 l_acc_rev_flag VARCHAR2(1);
2987 l_accrual_line_num NUMBER;
2988 l_tmp_amt NUMBER;
2989 l_acc_rev_natural_side_code VARCHAR2(1);
2990
2991 l_num_entries NUMBER;
2992 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
2993 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
2994 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
2995 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
2996 l_recog_line_1 NUMBER;
2997 l_recog_line_2 NUMBER;
2998
2999 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
3000 l_bflow_applied_to_amt NUMBER; -- 5132302
3001 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
3002
3003 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3004
3005 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
3006 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
3007
3008 ---------------------------------------------------------------------------------------------------------------
3009
3010
3011 --
3012 -- bulk performance
3013 --
3014 l_balance_type_code VARCHAR2(1);
3015 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
3016 l_log_module VARCHAR2(240);
3017
3018 --
3019 -- Upgrade strategy
3020 --
3021 l_actual_upg_option VARCHAR2(1);
3022 l_enc_upg_option VARCHAR2(1);
3023
3024 --
3025 BEGIN
3026 --
3027 IF g_log_enabled THEN
3028 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
3029 END IF;
3030 --
3031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3032
3033 trace
3034 (p_msg => 'BEGIN of AcctLineType_9'
3035 ,p_level => C_LEVEL_PROCEDURE
3036 ,p_module => l_log_module);
3037
3038 END IF;
3039 --
3040 l_component_type := 'AMB_JLT';
3041 l_component_code := 'ACCRUAL';
3042 l_component_type_code := 'S';
3043 l_component_appl_id := 707;
3044 l_amb_context_code := 'DEFAULT';
3045 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
3046 l_event_class_code := 'RETR_PRICE_ADJ_RCV';
3047 l_event_type_code := 'RETR_PRICE_ADJ_RCV_ALL';
3048 l_line_definition_owner_code := 'S';
3049 l_line_definition_code := 'RETR_PRICE_ADJ_RCV';
3050 --
3051 l_balance_type_code := 'A';
3052 l_segment := NULL;
3053 l_ccid := NULL;
3054 l_adr_transaction_coa_id := NULL;
3055 l_adr_accounting_coa_id := NULL;
3056 l_adr_flexfield_segment_code := NULL;
3057 l_adr_flex_value_set_id := NULL;
3058 l_adr_value_type_code := NULL;
3059 l_adr_value_combination_id := NULL;
3060 l_adr_value_segment_code := NULL;
3061
3062 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
3063 l_bflow_class_code := ''; -- 4219869 Business Flow
3064 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
3065 l_budgetary_control_flag := 'N';
3066
3067 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3068 l_bflow_applied_to_amt := NULL; -- 5132302
3069 l_entered_amt_idx := NULL; -- 4262811
3070 l_accted_amt_idx := NULL; -- 4262811
3071 l_acc_rev_flag := NULL; -- 4262811
3072 l_accrual_line_num := NULL; -- 4262811
3073 l_tmp_amt := NULL; -- 4262811
3074 --
3075
3076 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3077 l_balance_type_code <> 'B' THEN
3078 IF NVL(p_source_5,'
3079 ') = 'Accrual'
3080 THEN
3081
3082 --
3083 XLA_AE_LINES_PKG.SetNewLine;
3084
3085 p_balance_type_code := l_balance_type_code;
3086 -- set the flag so later we will know whether the gain loss line needs to be created
3087
3088 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3089 p_actual_flag :='A';
3090 END IF;
3091
3092 --
3093 -- bulk performance
3094 --
3095 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3096 p_header_num => 0); -- 4262811
3097 --
3098 -- set accounting line options
3099 --
3100 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3101 p_natural_side_code => 'D'
3102 , p_gain_or_loss_flag => 'N'
3103 , p_gl_transfer_mode_code => 'S'
3104 , p_acct_entry_type_code => 'A'
3105 , p_switch_side_flag => 'Y'
3106 , p_merge_duplicate_code => 'N'
3107 );
3108 --
3109 l_acc_rev_natural_side_code := 'C'; -- 4262811
3110 --
3111 --
3112 -- set accounting line type info
3113 --
3114 xla_ae_lines_pkg.SetAcctLineType
3115 (p_component_type => l_component_type
3116 ,p_event_type_code => l_event_type_code
3117 ,p_line_definition_owner_code => l_line_definition_owner_code
3118 ,p_line_definition_code => l_line_definition_code
3119 ,p_accounting_line_code => l_component_code
3120 ,p_accounting_line_type_code => l_component_type_code
3121 ,p_accounting_line_appl_id => l_component_appl_id
3122 ,p_amb_context_code => l_amb_context_code
3123 ,p_entity_code => l_entity_code
3124 ,p_event_class_code => l_event_class_code);
3125 --
3126 -- set accounting class
3127 --
3128 xla_ae_lines_pkg.SetAcctClass(
3129 p_accounting_class_code => 'ACCRUAL'
3130 , p_ae_header_id => l_ae_header_id
3131 );
3132
3133 --
3134 -- set rounding class
3135 --
3136 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3137 'ACCRUAL';
3138
3139 --
3140 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3141 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3142 --
3143 -- bulk performance
3144 --
3145 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3146
3147 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3148 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3149
3150 -- 4955764
3151 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3152 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3153
3154 -- 4458381 Public Sector Enh
3155
3156 --
3157 -- set accounting attributes for the line type
3158 --
3159 l_entered_amt_idx := 3;
3160 l_accted_amt_idx := 8;
3161 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3162 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3163 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
3164 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3165 l_rec_acct_attrs.array_char_value(2) := p_source_12;
3166 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3167 l_rec_acct_attrs.array_num_value(3) := p_source_18;
3168 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3169 l_rec_acct_attrs.array_char_value(4) := p_source_15;
3170 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3171 l_rec_acct_attrs.array_date_value(5) := p_source_19;
3172 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3173 l_rec_acct_attrs.array_num_value(6) := p_source_20;
3174 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3175 l_rec_acct_attrs.array_char_value(7) := p_source_21;
3176 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
3177 l_rec_acct_attrs.array_num_value(8) := p_source_22;
3178
3179 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3180 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3181
3182 ---------------------------------------------------------------------------------------------------------------
3183 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3184 ---------------------------------------------------------------------------------------------------------------
3185 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3186
3187 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3188 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3189
3190 IF xla_accounting_cache_pkg.GetValueChar
3191 (p_source_code => 'LEDGER_CATEGORY_CODE'
3192 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3193 AND l_bflow_method_code = 'PRIOR_ENTRY'
3194 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3195 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3196 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3197 )
3198 THEN
3199 xla_ae_lines_pkg.BflowUpgEntry
3200 (p_business_method_code => l_bflow_method_code
3201 ,p_business_class_code => l_bflow_class_code
3202 ,p_balance_type => l_balance_type_code);
3203 ELSE
3204 NULL;
3205 -- No business flow processing for business flow method of NONE.
3206 END IF;
3207
3208 --
3209 -- call analytical criteria
3210 --
3211
3212 --
3213 -- call description
3214 --
3215 -- No description or it is inherited.
3216 --
3217 -- call ADRs
3218 -- Bug 4922099
3219 --
3220 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3221 (NVL(l_actual_upg_option, 'N') = 'O') OR
3222 (NVL(l_enc_upg_option, 'N') = 'O')
3223 )
3224 THEN
3225 NULL;
3226 --
3227 --
3228
3229 l_ccid := AcctDerRule_4(
3230 p_application_id => p_application_id
3231 , p_ae_header_id => l_ae_header_id
3232 , p_source_4 => p_source_4
3233 , x_transaction_coa_id => l_adr_transaction_coa_id
3234 , x_accounting_coa_id => l_adr_accounting_coa_id
3235 , x_value_type_code => l_adr_value_type_code
3236 , p_side => 'NA'
3237 );
3238
3239 xla_ae_lines_pkg.set_ccid(
3240 p_code_combination_id => l_ccid
3241 , p_value_type_code => l_adr_value_type_code
3242 , p_transaction_coa_id => l_adr_transaction_coa_id
3243 , p_accounting_coa_id => l_adr_accounting_coa_id
3244 , p_adr_code => 'CST_DEFAULT'
3245 , p_adr_type_code => 'S'
3246 , p_component_type => l_component_type
3247 , p_component_code => l_component_code
3248 , p_component_type_code => l_component_type_code
3249 , p_component_appl_id => l_component_appl_id
3250 , p_amb_context_code => l_amb_context_code
3251 , p_side => 'NA'
3252 );
3253
3254
3255 --
3256 --
3257 END IF;
3258 --
3259 -- Bug 4922099
3260 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3261 (NVL(l_enc_upg_option, 'N') = 'O')
3262 ) AND
3263 (l_bflow_method_code = 'PRIOR_ENTRY')
3264 )
3265 THEN
3266 IF
3267 --
3268 1 = 2
3269 --
3270 THEN
3271 xla_accounting_err_pkg.build_message
3272 (p_appli_s_name => 'XLA'
3273 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3274 ,p_token_1 => 'LINE_NUMBER'
3275 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
3276 ,p_token_2 => 'LINE_TYPE_NAME'
3277 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
3278 l_component_type
3279 ,l_component_code
3280 ,l_component_type_code
3281 ,l_component_appl_id
3282 ,l_amb_context_code
3283 ,l_entity_code
3284 ,l_event_class_code
3285 )
3286 ,p_token_3 => 'OWNER'
3287 ,p_value_3 => xla_lookups_pkg.get_meaning(
3288 p_lookup_type => 'XLA_OWNER_TYPE'
3289 ,p_lookup_code => l_component_type_code
3290 )
3291 ,p_token_4 => 'PRODUCT_NAME'
3292 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3293 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3294 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3295 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3296 ,p_ae_header_id => NULL
3297 );
3298
3299 IF (C_LEVEL_ERROR>= g_log_level) THEN
3300 trace
3301 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3302 ,p_level => C_LEVEL_ERROR
3303 ,p_module => l_log_module);
3304 END IF;
3305 END IF;
3306 END IF;
3307 --
3308 --
3309 ------------------------------------------------------------------------------------------------
3310 -- 4219869 Business Flow
3311 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3312 -- Prior Entry. Currently, the following code is always generated.
3313 ------------------------------------------------------------------------------------------------
3314 XLA_AE_LINES_PKG.ValidateCurrentLine;
3315
3316 ------------------------------------------------------------------------------------
3317 -- 4219869 Business Flow
3318 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3319 ------------------------------------------------------------------------------------
3320 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3321
3322 ----------------------------------------------------------------------------------
3323 -- 4219869 Business Flow
3324 -- Update journal entry status -- Need to generate this within IF <condition>
3325 ----------------------------------------------------------------------------------
3326 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3327 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3328 ,p_balance_type_code => l_balance_type_code
3329 );
3330
3331 -------------------------------------------------------------------------------------------
3332 -- 4262811 - Generate the Accrual Reversal lines
3333 -------------------------------------------------------------------------------------------
3334 BEGIN
3335 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3336 (g_array_event(p_event_id).array_value_num('header_index'));
3337 IF l_acc_rev_flag IS NULL THEN
3338 l_acc_rev_flag := 'N';
3339 END IF;
3340 EXCEPTION
3341 WHEN OTHERS THEN
3342 l_acc_rev_flag := 'N';
3343 END;
3344 --
3345 IF (l_acc_rev_flag = 'Y') THEN
3346
3347 -- 4645092 ------------------------------------------------------------------------------
3348 -- To allow MPA report to determine if it should generate report process
3349 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3350 ------------------------------------------------------------------------------------------
3351
3352 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3353 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3354 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
3355 -- call ADRs
3356 -- Bug 4922099
3357 --
3358 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3359 (NVL(l_actual_upg_option, 'N') = 'O') OR
3360 (NVL(l_enc_upg_option, 'N') = 'O')
3361 )
3362 THEN
3363 NULL;
3364 --
3365 --
3366
3367 l_ccid := AcctDerRule_4(
3368 p_application_id => p_application_id
3369 , p_ae_header_id => l_ae_header_id
3370 , p_source_4 => p_source_4
3371 , x_transaction_coa_id => l_adr_transaction_coa_id
3372 , x_accounting_coa_id => l_adr_accounting_coa_id
3373 , x_value_type_code => l_adr_value_type_code
3374 , p_side => 'NA'
3375 );
3376
3377 xla_ae_lines_pkg.set_ccid(
3378 p_code_combination_id => l_ccid
3379 , p_value_type_code => l_adr_value_type_code
3380 , p_transaction_coa_id => l_adr_transaction_coa_id
3381 , p_accounting_coa_id => l_adr_accounting_coa_id
3382 , p_adr_code => 'CST_DEFAULT'
3383 , p_adr_type_code => 'S'
3384 , p_component_type => l_component_type
3385 , p_component_code => l_component_code
3386 , p_component_type_code => l_component_type_code
3387 , p_component_appl_id => l_component_appl_id
3388 , p_amb_context_code => l_amb_context_code
3389 , p_side => 'NA'
3390 );
3391
3392
3393 --
3394 --
3395 END IF;
3396
3397 --
3398 -- Update the line information that should be overwritten
3399 --
3400 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3401 p_header_num => 1);
3402 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
3403
3404 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3405
3406 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
3407 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3408 END IF;
3409
3410 --
3411 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3412 --
3413 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3414 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
3415 ELSE
3416 ---------------------------------------------------------------------------------------------------
3417 -- 4262811a Switch Sign
3418 ---------------------------------------------------------------------------------------------------
3419 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
3420 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3421 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3422 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3423 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3424 -- 5132302
3425 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3426 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3427
3428 END IF;
3429
3430 -- 4955764
3431 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3432 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3433
3434
3435 XLA_AE_LINES_PKG.ValidateCurrentLine;
3436 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3437
3438 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3439 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3440 ,p_balance_type_code => l_balance_type_code);
3441
3442 END IF;
3443
3444 -----------------------------------------------------------------------------------------
3445 -- 4262811 Multiperiod Accounting
3446 -----------------------------------------------------------------------------------------
3447 -- No MPA option is assigned.
3448
3449
3450 END IF;
3451 END IF;
3452 --
3453
3454 --
3455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3456 trace
3457 (p_msg => 'END of AcctLineType_9'
3458 ,p_level => C_LEVEL_PROCEDURE
3459 ,p_module => l_log_module);
3460 END IF;
3461 --
3462 EXCEPTION
3463 WHEN xla_exceptions_pkg.application_exception THEN
3464 RAISE;
3465 WHEN OTHERS THEN
3466 xla_exceptions_pkg.raise_message
3467 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_9');
3468 END AcctLineType_9;
3469 --
3470
3471 ---------------------------------------
3472 --
3473 -- PRIVATE FUNCTION
3474 -- AcctLineType_10
3475 --
3476 ---------------------------------------
3477 PROCEDURE AcctLineType_10 (
3478 p_application_id IN NUMBER
3479 ,p_event_id IN NUMBER
3480 ,p_calculate_acctd_flag IN VARCHAR2
3481 ,p_calculate_g_l_flag IN VARCHAR2
3482 ,p_actual_flag IN OUT VARCHAR2
3483 ,p_balance_type_code OUT VARCHAR2
3484 ,p_gain_or_loss_ref OUT VARCHAR2
3485
3486 --Cost Management Default Account
3487 , p_source_4 IN NUMBER
3488 --Receiving Accounting Line Type
3489 , p_source_5 IN VARCHAR2
3490 --DISTRIBUTION_IDENTIFIER
3491 , p_source_11 IN NUMBER
3492 --Distribution Type
3493 , p_source_12 IN VARCHAR2
3494 , p_source_12_meaning IN VARCHAR2
3495 --Entered Currency Code
3496 , p_source_15 IN VARCHAR2
3497 --Entered Amount
3498 , p_source_18 IN NUMBER
3499 --Currency Conversion Date
3500 , p_source_19 IN DATE
3501 --Currency Conversion Rate
3502 , p_source_20 IN NUMBER
3503 --Currency Conversion Type
3504 , p_source_21 IN VARCHAR2
3505 --Accounted Amount
3506 , p_source_22 IN NUMBER
3507 )
3508 IS
3509
3510 l_component_type VARCHAR2(80);
3511 l_component_code VARCHAR2(30);
3512 l_component_type_code VARCHAR2(1);
3513 l_component_appl_id INTEGER;
3514 l_amb_context_code VARCHAR2(30);
3515 l_entity_code VARCHAR2(30);
3516 l_event_class_code VARCHAR2(30);
3517 l_ae_header_id NUMBER;
3518 l_event_type_code VARCHAR2(30);
3519 l_line_definition_code VARCHAR2(30);
3520 l_line_definition_owner_code VARCHAR2(1);
3521 --
3522 -- adr variables
3523 l_segment VARCHAR2(30);
3524 l_ccid NUMBER;
3525 l_adr_transaction_coa_id NUMBER;
3526 l_adr_accounting_coa_id NUMBER;
3527 l_adr_flexfield_segment_code VARCHAR2(30);
3528 l_adr_flex_value_set_id NUMBER;
3529 l_adr_value_type_code VARCHAR2(30);
3530 l_adr_value_combination_id NUMBER;
3531 l_adr_value_segment_code VARCHAR2(30);
3532
3533 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
3534 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
3535 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
3536 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
3537
3538 -- 4262811 Variables ------------------------------------------------------------------------------------------
3539 l_entered_amt_idx NUMBER;
3540 l_accted_amt_idx NUMBER;
3541 l_acc_rev_flag VARCHAR2(1);
3542 l_accrual_line_num NUMBER;
3543 l_tmp_amt NUMBER;
3544 l_acc_rev_natural_side_code VARCHAR2(1);
3545
3546 l_num_entries NUMBER;
3547 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
3548 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
3549 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
3550 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
3551 l_recog_line_1 NUMBER;
3552 l_recog_line_2 NUMBER;
3553
3554 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
3555 l_bflow_applied_to_amt NUMBER; -- 5132302
3556 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
3557
3558 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3559
3560 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
3561 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
3562
3563 ---------------------------------------------------------------------------------------------------------------
3564
3565
3566 --
3567 -- bulk performance
3568 --
3569 l_balance_type_code VARCHAR2(1);
3570 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
3571 l_log_module VARCHAR2(240);
3572
3573 --
3574 -- Upgrade strategy
3575 --
3576 l_actual_upg_option VARCHAR2(1);
3577 l_enc_upg_option VARCHAR2(1);
3578
3579 --
3580 BEGIN
3581 --
3582 IF g_log_enabled THEN
3583 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
3584 END IF;
3585 --
3586 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3587
3588 trace
3589 (p_msg => 'BEGIN of AcctLineType_10'
3590 ,p_level => C_LEVEL_PROCEDURE
3591 ,p_module => l_log_module);
3592
3593 END IF;
3594 --
3595 l_component_type := 'AMB_JLT';
3596 l_component_code := 'ACCRUAL';
3597 l_component_type_code := 'S';
3598 l_component_appl_id := 707;
3599 l_amb_context_code := 'DEFAULT';
3600 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
3601 l_event_class_code := 'RCPT_REC_INSP';
3602 l_event_type_code := 'RCPT_REC_INSP_ALL';
3603 l_line_definition_owner_code := 'S';
3604 l_line_definition_code := 'RCPT_REC_INSP';
3605 --
3606 l_balance_type_code := 'A';
3607 l_segment := NULL;
3608 l_ccid := NULL;
3609 l_adr_transaction_coa_id := NULL;
3610 l_adr_accounting_coa_id := NULL;
3611 l_adr_flexfield_segment_code := NULL;
3612 l_adr_flex_value_set_id := NULL;
3613 l_adr_value_type_code := NULL;
3614 l_adr_value_combination_id := NULL;
3615 l_adr_value_segment_code := NULL;
3616
3617 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
3618 l_bflow_class_code := ''; -- 4219869 Business Flow
3619 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
3620 l_budgetary_control_flag := 'N';
3621
3622 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3623 l_bflow_applied_to_amt := NULL; -- 5132302
3624 l_entered_amt_idx := NULL; -- 4262811
3625 l_accted_amt_idx := NULL; -- 4262811
3626 l_acc_rev_flag := NULL; -- 4262811
3627 l_accrual_line_num := NULL; -- 4262811
3628 l_tmp_amt := NULL; -- 4262811
3629 --
3630
3631 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3632 l_balance_type_code <> 'B' THEN
3633 IF NVL(p_source_5,'
3634 ') = 'Accrual'
3635 THEN
3636
3637 --
3638 XLA_AE_LINES_PKG.SetNewLine;
3639
3640 p_balance_type_code := l_balance_type_code;
3641 -- set the flag so later we will know whether the gain loss line needs to be created
3642
3643 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3644 p_actual_flag :='A';
3645 END IF;
3646
3647 --
3648 -- bulk performance
3649 --
3650 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3651 p_header_num => 0); -- 4262811
3652 --
3653 -- set accounting line options
3654 --
3655 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3656 p_natural_side_code => 'D'
3657 , p_gain_or_loss_flag => 'N'
3658 , p_gl_transfer_mode_code => 'S'
3659 , p_acct_entry_type_code => 'A'
3660 , p_switch_side_flag => 'Y'
3661 , p_merge_duplicate_code => 'N'
3662 );
3663 --
3664 l_acc_rev_natural_side_code := 'C'; -- 4262811
3665 --
3666 --
3667 -- set accounting line type info
3668 --
3669 xla_ae_lines_pkg.SetAcctLineType
3670 (p_component_type => l_component_type
3671 ,p_event_type_code => l_event_type_code
3672 ,p_line_definition_owner_code => l_line_definition_owner_code
3673 ,p_line_definition_code => l_line_definition_code
3674 ,p_accounting_line_code => l_component_code
3675 ,p_accounting_line_type_code => l_component_type_code
3676 ,p_accounting_line_appl_id => l_component_appl_id
3677 ,p_amb_context_code => l_amb_context_code
3678 ,p_entity_code => l_entity_code
3679 ,p_event_class_code => l_event_class_code);
3680 --
3681 -- set accounting class
3682 --
3683 xla_ae_lines_pkg.SetAcctClass(
3684 p_accounting_class_code => 'ACCRUAL'
3685 , p_ae_header_id => l_ae_header_id
3686 );
3687
3688 --
3689 -- set rounding class
3690 --
3691 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3692 'ACCRUAL';
3693
3694 --
3695 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3696 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3697 --
3698 -- bulk performance
3699 --
3700 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3701
3702 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3703 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3704
3705 -- 4955764
3706 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3707 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3708
3709 -- 4458381 Public Sector Enh
3710
3711 --
3712 -- set accounting attributes for the line type
3713 --
3714 l_entered_amt_idx := 3;
3715 l_accted_amt_idx := 8;
3716 l_bflow_applied_to_amt_idx := NULL; -- 5132302
3717 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3718 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
3719 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3720 l_rec_acct_attrs.array_char_value(2) := p_source_12;
3721 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3722 l_rec_acct_attrs.array_num_value(3) := p_source_18;
3723 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3724 l_rec_acct_attrs.array_char_value(4) := p_source_15;
3725 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3726 l_rec_acct_attrs.array_date_value(5) := p_source_19;
3727 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3728 l_rec_acct_attrs.array_num_value(6) := p_source_20;
3729 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3730 l_rec_acct_attrs.array_char_value(7) := p_source_21;
3731 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
3732 l_rec_acct_attrs.array_num_value(8) := p_source_22;
3733
3734 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3735 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3736
3737 ---------------------------------------------------------------------------------------------------------------
3738 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3739 ---------------------------------------------------------------------------------------------------------------
3740 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3741
3742 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3743 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3744
3745 IF xla_accounting_cache_pkg.GetValueChar
3746 (p_source_code => 'LEDGER_CATEGORY_CODE'
3747 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3748 AND l_bflow_method_code = 'PRIOR_ENTRY'
3749 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3750 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3751 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3752 )
3753 THEN
3754 xla_ae_lines_pkg.BflowUpgEntry
3755 (p_business_method_code => l_bflow_method_code
3756 ,p_business_class_code => l_bflow_class_code
3757 ,p_balance_type => l_balance_type_code);
3758 ELSE
3759 NULL;
3760 -- No business flow processing for business flow method of NONE.
3761 END IF;
3762
3763 --
3764 -- call analytical criteria
3765 --
3766
3767 --
3768 -- call description
3769 --
3770 -- No description or it is inherited.
3771 --
3772 -- call ADRs
3773 -- Bug 4922099
3774 --
3775 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3776 (NVL(l_actual_upg_option, 'N') = 'O') OR
3777 (NVL(l_enc_upg_option, 'N') = 'O')
3778 )
3779 THEN
3780 NULL;
3781 --
3782 --
3783
3784 l_ccid := AcctDerRule_4(
3785 p_application_id => p_application_id
3786 , p_ae_header_id => l_ae_header_id
3787 , p_source_4 => p_source_4
3788 , x_transaction_coa_id => l_adr_transaction_coa_id
3789 , x_accounting_coa_id => l_adr_accounting_coa_id
3790 , x_value_type_code => l_adr_value_type_code
3791 , p_side => 'NA'
3792 );
3793
3794 xla_ae_lines_pkg.set_ccid(
3795 p_code_combination_id => l_ccid
3796 , p_value_type_code => l_adr_value_type_code
3797 , p_transaction_coa_id => l_adr_transaction_coa_id
3798 , p_accounting_coa_id => l_adr_accounting_coa_id
3799 , p_adr_code => 'CST_DEFAULT'
3800 , p_adr_type_code => 'S'
3801 , p_component_type => l_component_type
3802 , p_component_code => l_component_code
3803 , p_component_type_code => l_component_type_code
3804 , p_component_appl_id => l_component_appl_id
3805 , p_amb_context_code => l_amb_context_code
3806 , p_side => 'NA'
3807 );
3808
3809
3810 --
3811 --
3812 END IF;
3813 --
3814 -- Bug 4922099
3815 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3816 (NVL(l_enc_upg_option, 'N') = 'O')
3817 ) AND
3818 (l_bflow_method_code = 'PRIOR_ENTRY')
3819 )
3820 THEN
3821 IF
3822 --
3823 1 = 2
3824 --
3825 THEN
3826 xla_accounting_err_pkg.build_message
3827 (p_appli_s_name => 'XLA'
3828 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3829 ,p_token_1 => 'LINE_NUMBER'
3830 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
3831 ,p_token_2 => 'LINE_TYPE_NAME'
3832 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
3833 l_component_type
3834 ,l_component_code
3835 ,l_component_type_code
3836 ,l_component_appl_id
3837 ,l_amb_context_code
3838 ,l_entity_code
3839 ,l_event_class_code
3840 )
3841 ,p_token_3 => 'OWNER'
3842 ,p_value_3 => xla_lookups_pkg.get_meaning(
3843 p_lookup_type => 'XLA_OWNER_TYPE'
3844 ,p_lookup_code => l_component_type_code
3845 )
3846 ,p_token_4 => 'PRODUCT_NAME'
3847 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3848 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3849 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3850 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3851 ,p_ae_header_id => NULL
3852 );
3853
3854 IF (C_LEVEL_ERROR>= g_log_level) THEN
3855 trace
3856 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3857 ,p_level => C_LEVEL_ERROR
3858 ,p_module => l_log_module);
3859 END IF;
3860 END IF;
3861 END IF;
3862 --
3863 --
3864 ------------------------------------------------------------------------------------------------
3865 -- 4219869 Business Flow
3866 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3867 -- Prior Entry. Currently, the following code is always generated.
3868 ------------------------------------------------------------------------------------------------
3869 XLA_AE_LINES_PKG.ValidateCurrentLine;
3870
3871 ------------------------------------------------------------------------------------
3872 -- 4219869 Business Flow
3873 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3874 ------------------------------------------------------------------------------------
3875 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3876
3877 ----------------------------------------------------------------------------------
3878 -- 4219869 Business Flow
3879 -- Update journal entry status -- Need to generate this within IF <condition>
3880 ----------------------------------------------------------------------------------
3881 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3882 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3883 ,p_balance_type_code => l_balance_type_code
3884 );
3885
3886 -------------------------------------------------------------------------------------------
3887 -- 4262811 - Generate the Accrual Reversal lines
3888 -------------------------------------------------------------------------------------------
3889 BEGIN
3890 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3891 (g_array_event(p_event_id).array_value_num('header_index'));
3892 IF l_acc_rev_flag IS NULL THEN
3893 l_acc_rev_flag := 'N';
3894 END IF;
3895 EXCEPTION
3896 WHEN OTHERS THEN
3897 l_acc_rev_flag := 'N';
3898 END;
3899 --
3900 IF (l_acc_rev_flag = 'Y') THEN
3901
3902 -- 4645092 ------------------------------------------------------------------------------
3903 -- To allow MPA report to determine if it should generate report process
3904 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3905 ------------------------------------------------------------------------------------------
3906
3907 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3908 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3909 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
3910 -- call ADRs
3911 -- Bug 4922099
3912 --
3913 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3914 (NVL(l_actual_upg_option, 'N') = 'O') OR
3915 (NVL(l_enc_upg_option, 'N') = 'O')
3916 )
3917 THEN
3918 NULL;
3919 --
3920 --
3921
3922 l_ccid := AcctDerRule_4(
3923 p_application_id => p_application_id
3924 , p_ae_header_id => l_ae_header_id
3925 , p_source_4 => p_source_4
3926 , x_transaction_coa_id => l_adr_transaction_coa_id
3927 , x_accounting_coa_id => l_adr_accounting_coa_id
3928 , x_value_type_code => l_adr_value_type_code
3929 , p_side => 'NA'
3930 );
3931
3932 xla_ae_lines_pkg.set_ccid(
3933 p_code_combination_id => l_ccid
3934 , p_value_type_code => l_adr_value_type_code
3935 , p_transaction_coa_id => l_adr_transaction_coa_id
3936 , p_accounting_coa_id => l_adr_accounting_coa_id
3937 , p_adr_code => 'CST_DEFAULT'
3938 , p_adr_type_code => 'S'
3939 , p_component_type => l_component_type
3940 , p_component_code => l_component_code
3941 , p_component_type_code => l_component_type_code
3942 , p_component_appl_id => l_component_appl_id
3943 , p_amb_context_code => l_amb_context_code
3944 , p_side => 'NA'
3945 );
3946
3947
3948 --
3949 --
3950 END IF;
3951
3952 --
3953 -- Update the line information that should be overwritten
3954 --
3955 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3956 p_header_num => 1);
3957 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
3958
3959 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3960
3961 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
3962 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3963 END IF;
3964
3965 --
3966 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3967 --
3968 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3969 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
3970 ELSE
3971 ---------------------------------------------------------------------------------------------------
3972 -- 4262811a Switch Sign
3973 ---------------------------------------------------------------------------------------------------
3974 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
3975 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3976 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3977 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3978 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3979 -- 5132302
3980 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3981 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3982
3983 END IF;
3984
3985 -- 4955764
3986 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3987 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3988
3989
3990 XLA_AE_LINES_PKG.ValidateCurrentLine;
3991 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3992
3993 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3994 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3995 ,p_balance_type_code => l_balance_type_code);
3996
3997 END IF;
3998
3999 -----------------------------------------------------------------------------------------
4000 -- 4262811 Multiperiod Accounting
4001 -----------------------------------------------------------------------------------------
4002 -- No MPA option is assigned.
4003
4004
4005 END IF;
4006 END IF;
4007 --
4008
4009 --
4010 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4011 trace
4012 (p_msg => 'END of AcctLineType_10'
4013 ,p_level => C_LEVEL_PROCEDURE
4014 ,p_module => l_log_module);
4015 END IF;
4016 --
4017 EXCEPTION
4018 WHEN xla_exceptions_pkg.application_exception THEN
4019 RAISE;
4020 WHEN OTHERS THEN
4021 xla_exceptions_pkg.raise_message
4022 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_10');
4023 END AcctLineType_10;
4024 --
4025
4026 ---------------------------------------
4027 --
4028 -- PRIVATE FUNCTION
4029 -- AcctLineType_11
4030 --
4031 ---------------------------------------
4032 PROCEDURE AcctLineType_11 (
4033 p_application_id IN NUMBER
4034 ,p_event_id IN NUMBER
4035 ,p_calculate_acctd_flag IN VARCHAR2
4036 ,p_calculate_g_l_flag IN VARCHAR2
4037 ,p_actual_flag IN OUT VARCHAR2
4038 ,p_balance_type_code OUT VARCHAR2
4039 ,p_gain_or_loss_ref OUT VARCHAR2
4040
4041 --Cost Management Default Account
4042 , p_source_4 IN NUMBER
4043 --Receiving Accounting Line Type
4044 , p_source_5 IN VARCHAR2
4045 --Applied to Application ID
4046 , p_source_6 IN NUMBER
4047 --Applied to Distribution Link Type
4048 , p_source_7 IN VARCHAR2
4049 --Applied to Entity Code
4050 , p_source_8 IN VARCHAR2
4051 --PO_DISTRIBUTION_ID
4052 , p_source_9 IN NUMBER
4053 --Applied To Purchase Document Identifier
4054 , p_source_10 IN NUMBER
4055 --DISTRIBUTION_IDENTIFIER
4056 , p_source_11 IN NUMBER
4057 --Distribution Type
4058 , p_source_12 IN VARCHAR2
4059 , p_source_12_meaning IN VARCHAR2
4060 --PO Budget Account
4061 , p_source_13 IN NUMBER
4062 --Encumbrance Reversal Amount Entered
4063 , p_source_14 IN NUMBER
4064 --Entered Currency Code
4065 , p_source_15 IN VARCHAR2
4066 --Transaction Encumbrance Reversal Amount
4067 , p_source_16 IN NUMBER
4068 --Costing Period End Accrual Encumbrance Upgrade Option
4069 , p_source_17 IN VARCHAR2
4070 --Entered Amount
4071 , p_source_18 IN NUMBER
4072 --Currency Conversion Date
4073 , p_source_19 IN DATE
4074 --Currency Conversion Rate
4075 , p_source_20 IN NUMBER
4076 --Currency Conversion Type
4077 , p_source_21 IN VARCHAR2
4078 --Accounted Amount
4079 , p_source_22 IN NUMBER
4080 --Purchasing Encumbrance Type Identifier
4081 , p_source_23 IN NUMBER
4082 )
4083 IS
4084
4085 l_component_type VARCHAR2(80);
4086 l_component_code VARCHAR2(30);
4087 l_component_type_code VARCHAR2(1);
4088 l_component_appl_id INTEGER;
4089 l_amb_context_code VARCHAR2(30);
4090 l_entity_code VARCHAR2(30);
4091 l_event_class_code VARCHAR2(30);
4092 l_ae_header_id NUMBER;
4093 l_event_type_code VARCHAR2(30);
4094 l_line_definition_code VARCHAR2(30);
4095 l_line_definition_owner_code VARCHAR2(1);
4096 --
4097 -- adr variables
4098 l_segment VARCHAR2(30);
4099 l_ccid NUMBER;
4100 l_adr_transaction_coa_id NUMBER;
4101 l_adr_accounting_coa_id NUMBER;
4102 l_adr_flexfield_segment_code VARCHAR2(30);
4103 l_adr_flex_value_set_id NUMBER;
4104 l_adr_value_type_code VARCHAR2(30);
4105 l_adr_value_combination_id NUMBER;
4106 l_adr_value_segment_code VARCHAR2(30);
4107
4108 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
4109 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
4110 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
4111 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
4112
4113 -- 4262811 Variables ------------------------------------------------------------------------------------------
4114 l_entered_amt_idx NUMBER;
4115 l_accted_amt_idx NUMBER;
4116 l_acc_rev_flag VARCHAR2(1);
4117 l_accrual_line_num NUMBER;
4118 l_tmp_amt NUMBER;
4119 l_acc_rev_natural_side_code VARCHAR2(1);
4120
4121 l_num_entries NUMBER;
4122 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
4123 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
4124 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
4125 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
4126 l_recog_line_1 NUMBER;
4127 l_recog_line_2 NUMBER;
4128
4129 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
4130 l_bflow_applied_to_amt NUMBER; -- 5132302
4131 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
4132
4133 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4134
4135 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
4136 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
4137
4138 ---------------------------------------------------------------------------------------------------------------
4139
4140
4141 --
4142 -- bulk performance
4143 --
4144 l_balance_type_code VARCHAR2(1);
4145 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
4146 l_log_module VARCHAR2(240);
4147
4148 --
4149 -- Upgrade strategy
4150 --
4151 l_actual_upg_option VARCHAR2(1);
4152 l_enc_upg_option VARCHAR2(1);
4153
4154 --
4155 BEGIN
4156 --
4157 IF g_log_enabled THEN
4158 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
4159 END IF;
4160 --
4161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4162
4163 trace
4164 (p_msg => 'BEGIN of AcctLineType_11'
4165 ,p_level => C_LEVEL_PROCEDURE
4166 ,p_module => l_log_module);
4167
4168 END IF;
4169 --
4170 l_component_type := 'AMB_JLT';
4171 l_component_code := 'CHARGE';
4172 l_component_type_code := 'S';
4173 l_component_appl_id := 707;
4174 l_amb_context_code := 'DEFAULT';
4175 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
4176 l_event_class_code := 'PERIOD_END_ACCRUAL';
4177 l_event_type_code := 'PERIOD_END_ACCRUAL_ALL';
4178 l_line_definition_owner_code := 'S';
4179 l_line_definition_code := 'PERIOD_END_ACCRUAL';
4180 --
4181 l_balance_type_code := 'A';
4182 l_segment := NULL;
4183 l_ccid := NULL;
4184 l_adr_transaction_coa_id := NULL;
4185 l_adr_accounting_coa_id := NULL;
4186 l_adr_flexfield_segment_code := NULL;
4187 l_adr_flex_value_set_id := NULL;
4188 l_adr_value_type_code := NULL;
4189 l_adr_value_combination_id := NULL;
4190 l_adr_value_segment_code := NULL;
4191
4192 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
4193 l_bflow_class_code := ''; -- 4219869 Business Flow
4194 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
4195 l_budgetary_control_flag := 'N';
4196
4197 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4198 l_bflow_applied_to_amt := NULL; -- 5132302
4199 l_entered_amt_idx := NULL; -- 4262811
4200 l_accted_amt_idx := NULL; -- 4262811
4201 l_acc_rev_flag := NULL; -- 4262811
4202 l_accrual_line_num := NULL; -- 4262811
4203 l_tmp_amt := NULL; -- 4262811
4204 --
4205
4206 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4207 l_balance_type_code <> 'B' THEN
4208 IF NVL(p_source_5,'
4209 ') = 'Charge'
4210 THEN
4211
4212 --
4213 XLA_AE_LINES_PKG.SetNewLine;
4214
4215 p_balance_type_code := l_balance_type_code;
4216 -- set the flag so later we will know whether the gain loss line needs to be created
4217
4218 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4219 p_actual_flag :='A';
4220 END IF;
4221
4222 --
4223 -- bulk performance
4224 --
4225 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4226 p_header_num => 0); -- 4262811
4227 --
4228 -- set accounting line options
4229 --
4230 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4231 p_natural_side_code => 'D'
4232 , p_gain_or_loss_flag => 'N'
4233 , p_gl_transfer_mode_code => 'S'
4234 , p_acct_entry_type_code => 'A'
4235 , p_switch_side_flag => 'Y'
4236 , p_merge_duplicate_code => 'N'
4237 );
4238 --
4239 l_acc_rev_natural_side_code := 'C'; -- 4262811
4240 --
4241 --
4242 -- set accounting line type info
4243 --
4244 xla_ae_lines_pkg.SetAcctLineType
4245 (p_component_type => l_component_type
4246 ,p_event_type_code => l_event_type_code
4247 ,p_line_definition_owner_code => l_line_definition_owner_code
4248 ,p_line_definition_code => l_line_definition_code
4249 ,p_accounting_line_code => l_component_code
4250 ,p_accounting_line_type_code => l_component_type_code
4251 ,p_accounting_line_appl_id => l_component_appl_id
4252 ,p_amb_context_code => l_amb_context_code
4253 ,p_entity_code => l_entity_code
4254 ,p_event_class_code => l_event_class_code);
4255 --
4256 -- set accounting class
4257 --
4258 xla_ae_lines_pkg.SetAcctClass(
4259 p_accounting_class_code => 'CHARGE'
4260 , p_ae_header_id => l_ae_header_id
4261 );
4262
4263 --
4264 -- set rounding class
4265 --
4266 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4267 'CHARGE';
4268
4269 --
4270 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4271 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4272 --
4273 -- bulk performance
4274 --
4275 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4276
4277 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4278 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4279
4280 -- 4955764
4281 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4282 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4283
4284 -- 4458381 Public Sector Enh
4285
4286 --
4287 -- set accounting attributes for the line type
4288 --
4289 l_entered_amt_idx := 17;
4290 l_accted_amt_idx := 22;
4291 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4292 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4293 l_rec_acct_attrs.array_num_value(1) := p_source_6;
4294 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4295 l_rec_acct_attrs.array_char_value(2) := p_source_7;
4296 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4297 l_rec_acct_attrs.array_char_value(3) := p_source_8;
4298 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4299 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_9);
4300 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4301 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
4302 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4303 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
4304 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4305 l_rec_acct_attrs.array_char_value(7) := p_source_12;
4306 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4307 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
4308 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4309 l_rec_acct_attrs.array_num_value(9) := p_source_14;
4310 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4311 l_rec_acct_attrs.array_char_value(10) := p_source_15;
4312 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4313 l_rec_acct_attrs.array_num_value(11) := p_source_16;
4314 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4315 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
4316 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4317 l_rec_acct_attrs.array_num_value(13) := p_source_14;
4318 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4319 l_rec_acct_attrs.array_char_value(14) := p_source_15;
4320 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4321 l_rec_acct_attrs.array_num_value(15) := p_source_16;
4322 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4323 l_rec_acct_attrs.array_char_value(16) := p_source_17;
4324 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4325 l_rec_acct_attrs.array_num_value(17) := p_source_18;
4326 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4327 l_rec_acct_attrs.array_char_value(18) := p_source_15;
4328 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
4329 l_rec_acct_attrs.array_date_value(19) := p_source_19;
4330 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
4331 l_rec_acct_attrs.array_num_value(20) := p_source_20;
4332 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
4333 l_rec_acct_attrs.array_char_value(21) := p_source_21;
4334 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
4335 l_rec_acct_attrs.array_num_value(22) := p_source_22;
4336 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
4337 l_rec_acct_attrs.array_num_value(23) := p_source_23;
4338 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
4339 l_rec_acct_attrs.array_num_value(24) := p_source_23;
4340
4341 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4342 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4343
4344 ---------------------------------------------------------------------------------------------------------------
4345 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4346 ---------------------------------------------------------------------------------------------------------------
4347 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4348
4349 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4350 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4351
4352 IF xla_accounting_cache_pkg.GetValueChar
4353 (p_source_code => 'LEDGER_CATEGORY_CODE'
4354 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4355 AND l_bflow_method_code = 'PRIOR_ENTRY'
4356 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4357 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4358 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4359 )
4360 THEN
4361 xla_ae_lines_pkg.BflowUpgEntry
4362 (p_business_method_code => l_bflow_method_code
4363 ,p_business_class_code => l_bflow_class_code
4364 ,p_balance_type => l_balance_type_code);
4365 ELSE
4366 NULL;
4367 -- No business flow processing for business flow method of NONE.
4368 END IF;
4369
4370 --
4371 -- call analytical criteria
4372 --
4373
4374 --
4375 -- call description
4376 --
4377 -- No description or it is inherited.
4378 --
4379 -- call ADRs
4380 -- Bug 4922099
4381 --
4382 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4383 (NVL(l_actual_upg_option, 'N') = 'O') OR
4384 (NVL(l_enc_upg_option, 'N') = 'O')
4385 )
4386 THEN
4387 NULL;
4388 --
4389 --
4390
4391 l_ccid := AcctDerRule_4(
4392 p_application_id => p_application_id
4393 , p_ae_header_id => l_ae_header_id
4394 , p_source_4 => p_source_4
4395 , x_transaction_coa_id => l_adr_transaction_coa_id
4396 , x_accounting_coa_id => l_adr_accounting_coa_id
4397 , x_value_type_code => l_adr_value_type_code
4398 , p_side => 'NA'
4399 );
4400
4401 xla_ae_lines_pkg.set_ccid(
4402 p_code_combination_id => l_ccid
4403 , p_value_type_code => l_adr_value_type_code
4404 , p_transaction_coa_id => l_adr_transaction_coa_id
4405 , p_accounting_coa_id => l_adr_accounting_coa_id
4406 , p_adr_code => 'CST_DEFAULT'
4407 , p_adr_type_code => 'S'
4408 , p_component_type => l_component_type
4409 , p_component_code => l_component_code
4410 , p_component_type_code => l_component_type_code
4411 , p_component_appl_id => l_component_appl_id
4412 , p_amb_context_code => l_amb_context_code
4413 , p_side => 'NA'
4414 );
4415
4416
4417 --
4418 --
4419 END IF;
4420 --
4421 -- Bug 4922099
4422 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4423 (NVL(l_enc_upg_option, 'N') = 'O')
4424 ) AND
4425 (l_bflow_method_code = 'PRIOR_ENTRY')
4426 )
4427 THEN
4428 IF
4429 --
4430 1 = 2
4431 --
4432 THEN
4433 xla_accounting_err_pkg.build_message
4434 (p_appli_s_name => 'XLA'
4435 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4436 ,p_token_1 => 'LINE_NUMBER'
4437 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
4438 ,p_token_2 => 'LINE_TYPE_NAME'
4439 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
4440 l_component_type
4441 ,l_component_code
4442 ,l_component_type_code
4443 ,l_component_appl_id
4444 ,l_amb_context_code
4445 ,l_entity_code
4446 ,l_event_class_code
4447 )
4448 ,p_token_3 => 'OWNER'
4449 ,p_value_3 => xla_lookups_pkg.get_meaning(
4450 p_lookup_type => 'XLA_OWNER_TYPE'
4451 ,p_lookup_code => l_component_type_code
4452 )
4453 ,p_token_4 => 'PRODUCT_NAME'
4454 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4455 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4456 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4457 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4458 ,p_ae_header_id => NULL
4459 );
4460
4461 IF (C_LEVEL_ERROR>= g_log_level) THEN
4462 trace
4463 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4464 ,p_level => C_LEVEL_ERROR
4465 ,p_module => l_log_module);
4466 END IF;
4467 END IF;
4468 END IF;
4469 --
4470 --
4471 ------------------------------------------------------------------------------------------------
4472 -- 4219869 Business Flow
4473 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4474 -- Prior Entry. Currently, the following code is always generated.
4475 ------------------------------------------------------------------------------------------------
4476 XLA_AE_LINES_PKG.ValidateCurrentLine;
4477
4478 ------------------------------------------------------------------------------------
4479 -- 4219869 Business Flow
4480 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4481 ------------------------------------------------------------------------------------
4482 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4483
4484 ----------------------------------------------------------------------------------
4485 -- 4219869 Business Flow
4486 -- Update journal entry status -- Need to generate this within IF <condition>
4487 ----------------------------------------------------------------------------------
4488 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4489 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4490 ,p_balance_type_code => l_balance_type_code
4491 );
4492
4493 -------------------------------------------------------------------------------------------
4494 -- 4262811 - Generate the Accrual Reversal lines
4495 -------------------------------------------------------------------------------------------
4496 BEGIN
4497 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4498 (g_array_event(p_event_id).array_value_num('header_index'));
4499 IF l_acc_rev_flag IS NULL THEN
4500 l_acc_rev_flag := 'N';
4501 END IF;
4502 EXCEPTION
4503 WHEN OTHERS THEN
4504 l_acc_rev_flag := 'N';
4505 END;
4506 --
4507 IF (l_acc_rev_flag = 'Y') THEN
4508
4509 -- 4645092 ------------------------------------------------------------------------------
4510 -- To allow MPA report to determine if it should generate report process
4511 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4512 ------------------------------------------------------------------------------------------
4513
4514 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4515 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4516 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
4517 -- call ADRs
4518 -- Bug 4922099
4519 --
4520 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4521 (NVL(l_actual_upg_option, 'N') = 'O') OR
4522 (NVL(l_enc_upg_option, 'N') = 'O')
4523 )
4524 THEN
4525 NULL;
4526 --
4527 --
4528
4529 l_ccid := AcctDerRule_4(
4530 p_application_id => p_application_id
4531 , p_ae_header_id => l_ae_header_id
4532 , p_source_4 => p_source_4
4533 , x_transaction_coa_id => l_adr_transaction_coa_id
4534 , x_accounting_coa_id => l_adr_accounting_coa_id
4535 , x_value_type_code => l_adr_value_type_code
4536 , p_side => 'NA'
4537 );
4538
4539 xla_ae_lines_pkg.set_ccid(
4540 p_code_combination_id => l_ccid
4541 , p_value_type_code => l_adr_value_type_code
4542 , p_transaction_coa_id => l_adr_transaction_coa_id
4543 , p_accounting_coa_id => l_adr_accounting_coa_id
4544 , p_adr_code => 'CST_DEFAULT'
4545 , p_adr_type_code => 'S'
4546 , p_component_type => l_component_type
4547 , p_component_code => l_component_code
4548 , p_component_type_code => l_component_type_code
4549 , p_component_appl_id => l_component_appl_id
4550 , p_amb_context_code => l_amb_context_code
4551 , p_side => 'NA'
4552 );
4553
4554
4555 --
4556 --
4557 END IF;
4558
4559 --
4560 -- Update the line information that should be overwritten
4561 --
4562 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4563 p_header_num => 1);
4564 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
4565
4566 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4567
4568 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
4569 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4570 END IF;
4571
4572 --
4573 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4574 --
4575 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4576 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
4577 ELSE
4578 ---------------------------------------------------------------------------------------------------
4579 -- 4262811a Switch Sign
4580 ---------------------------------------------------------------------------------------------------
4581 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
4582 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4583 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4584 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4585 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4586 -- 5132302
4587 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4588 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4589
4590 END IF;
4591
4592 -- 4955764
4593 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4594 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4595
4596
4597 XLA_AE_LINES_PKG.ValidateCurrentLine;
4598 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4599
4600 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4601 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4602 ,p_balance_type_code => l_balance_type_code);
4603
4604 END IF;
4605
4606 -----------------------------------------------------------------------------------------
4607 -- 4262811 Multiperiod Accounting
4608 -----------------------------------------------------------------------------------------
4609 -- No MPA option is assigned.
4610
4611
4612 END IF;
4613 END IF;
4614 --
4615
4616 --
4617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4618 trace
4619 (p_msg => 'END of AcctLineType_11'
4620 ,p_level => C_LEVEL_PROCEDURE
4621 ,p_module => l_log_module);
4622 END IF;
4623 --
4624 EXCEPTION
4625 WHEN xla_exceptions_pkg.application_exception THEN
4626 RAISE;
4627 WHEN OTHERS THEN
4628 xla_exceptions_pkg.raise_message
4629 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_11');
4630 END AcctLineType_11;
4631 --
4632
4633 ---------------------------------------
4634 --
4635 -- PRIVATE FUNCTION
4636 -- AcctLineType_12
4637 --
4638 ---------------------------------------
4639 PROCEDURE AcctLineType_12 (
4640 p_application_id IN NUMBER
4641 ,p_event_id IN NUMBER
4642 ,p_calculate_acctd_flag IN VARCHAR2
4643 ,p_calculate_g_l_flag IN VARCHAR2
4644 ,p_actual_flag IN OUT VARCHAR2
4645 ,p_balance_type_code OUT VARCHAR2
4646 ,p_gain_or_loss_ref OUT VARCHAR2
4647
4648 --Cost Management Default Account
4649 , p_source_4 IN NUMBER
4650 --Receiving Accounting Line Type
4651 , p_source_5 IN VARCHAR2
4652 --Applied to Application ID
4653 , p_source_6 IN NUMBER
4654 --Applied to Distribution Link Type
4655 , p_source_7 IN VARCHAR2
4656 --Applied to Entity Code
4657 , p_source_8 IN VARCHAR2
4658 --PO_DISTRIBUTION_ID
4659 , p_source_9 IN NUMBER
4660 --Applied To Purchase Document Identifier
4661 , p_source_10 IN NUMBER
4662 --DISTRIBUTION_IDENTIFIER
4663 , p_source_11 IN NUMBER
4664 --Distribution Type
4665 , p_source_12 IN VARCHAR2
4666 , p_source_12_meaning IN VARCHAR2
4667 --PO Budget Account
4668 , p_source_13 IN NUMBER
4669 --Encumbrance Reversal Amount Entered
4670 , p_source_14 IN NUMBER
4671 --Entered Currency Code
4672 , p_source_15 IN VARCHAR2
4673 --Transaction Encumbrance Reversal Amount
4674 , p_source_16 IN NUMBER
4675 --Entered Amount
4676 , p_source_18 IN NUMBER
4677 --Currency Conversion Date
4678 , p_source_19 IN DATE
4679 --Currency Conversion Rate
4680 , p_source_20 IN NUMBER
4681 --Currency Conversion Type
4682 , p_source_21 IN VARCHAR2
4683 --Accounted Amount
4684 , p_source_22 IN NUMBER
4685 --Purchasing Encumbrance Type Identifier
4686 , p_source_23 IN NUMBER
4687 --Costing Encumbrance Upgrade Option
4688 , p_source_27 IN VARCHAR2
4689 )
4690 IS
4691
4692 l_component_type VARCHAR2(80);
4693 l_component_code VARCHAR2(30);
4694 l_component_type_code VARCHAR2(1);
4695 l_component_appl_id INTEGER;
4696 l_amb_context_code VARCHAR2(30);
4697 l_entity_code VARCHAR2(30);
4698 l_event_class_code VARCHAR2(30);
4699 l_ae_header_id NUMBER;
4700 l_event_type_code VARCHAR2(30);
4701 l_line_definition_code VARCHAR2(30);
4702 l_line_definition_owner_code VARCHAR2(1);
4703 --
4704 -- adr variables
4705 l_segment VARCHAR2(30);
4706 l_ccid NUMBER;
4707 l_adr_transaction_coa_id NUMBER;
4708 l_adr_accounting_coa_id NUMBER;
4709 l_adr_flexfield_segment_code VARCHAR2(30);
4710 l_adr_flex_value_set_id NUMBER;
4711 l_adr_value_type_code VARCHAR2(30);
4712 l_adr_value_combination_id NUMBER;
4713 l_adr_value_segment_code VARCHAR2(30);
4714
4715 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
4716 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
4717 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
4718 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
4719
4720 -- 4262811 Variables ------------------------------------------------------------------------------------------
4721 l_entered_amt_idx NUMBER;
4722 l_accted_amt_idx NUMBER;
4723 l_acc_rev_flag VARCHAR2(1);
4724 l_accrual_line_num NUMBER;
4725 l_tmp_amt NUMBER;
4726 l_acc_rev_natural_side_code VARCHAR2(1);
4727
4728 l_num_entries NUMBER;
4729 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
4730 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
4731 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
4732 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
4733 l_recog_line_1 NUMBER;
4734 l_recog_line_2 NUMBER;
4735
4736 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
4737 l_bflow_applied_to_amt NUMBER; -- 5132302
4738 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
4739
4740 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4741
4742 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
4743 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
4744
4745 ---------------------------------------------------------------------------------------------------------------
4746
4747
4748 --
4749 -- bulk performance
4750 --
4751 l_balance_type_code VARCHAR2(1);
4752 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
4753 l_log_module VARCHAR2(240);
4754
4755 --
4756 -- Upgrade strategy
4757 --
4758 l_actual_upg_option VARCHAR2(1);
4759 l_enc_upg_option VARCHAR2(1);
4760
4761 --
4762 BEGIN
4763 --
4764 IF g_log_enabled THEN
4765 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
4766 END IF;
4767 --
4768 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4769
4770 trace
4771 (p_msg => 'BEGIN of AcctLineType_12'
4772 ,p_level => C_LEVEL_PROCEDURE
4773 ,p_module => l_log_module);
4774
4775 END IF;
4776 --
4777 l_component_type := 'AMB_JLT';
4778 l_component_code := 'CHARGE';
4779 l_component_type_code := 'S';
4780 l_component_appl_id := 707;
4781 l_amb_context_code := 'DEFAULT';
4782 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
4783 l_event_class_code := 'DELIVER_EXPENSE';
4784 l_event_type_code := 'DELIVER_EXPENSE_ALL';
4785 l_line_definition_owner_code := 'S';
4786 l_line_definition_code := 'DELIVER_EXPENSE';
4787 --
4788 l_balance_type_code := 'A';
4789 l_segment := NULL;
4790 l_ccid := NULL;
4791 l_adr_transaction_coa_id := NULL;
4792 l_adr_accounting_coa_id := NULL;
4793 l_adr_flexfield_segment_code := NULL;
4794 l_adr_flex_value_set_id := NULL;
4795 l_adr_value_type_code := NULL;
4796 l_adr_value_combination_id := NULL;
4797 l_adr_value_segment_code := NULL;
4798
4799 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
4800 l_bflow_class_code := ''; -- 4219869 Business Flow
4801 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
4802 l_budgetary_control_flag := 'N';
4803
4804 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4805 l_bflow_applied_to_amt := NULL; -- 5132302
4806 l_entered_amt_idx := NULL; -- 4262811
4807 l_accted_amt_idx := NULL; -- 4262811
4808 l_acc_rev_flag := NULL; -- 4262811
4809 l_accrual_line_num := NULL; -- 4262811
4810 l_tmp_amt := NULL; -- 4262811
4811 --
4812
4813 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4814 l_balance_type_code <> 'B' THEN
4815 IF NVL(p_source_5,'
4816 ') = 'Charge'
4817 THEN
4818
4819 --
4820 XLA_AE_LINES_PKG.SetNewLine;
4821
4822 p_balance_type_code := l_balance_type_code;
4823 -- set the flag so later we will know whether the gain loss line needs to be created
4824
4825 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4826 p_actual_flag :='A';
4827 END IF;
4828
4829 --
4830 -- bulk performance
4831 --
4832 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4833 p_header_num => 0); -- 4262811
4834 --
4835 -- set accounting line options
4836 --
4837 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4838 p_natural_side_code => 'D'
4839 , p_gain_or_loss_flag => 'N'
4840 , p_gl_transfer_mode_code => 'S'
4841 , p_acct_entry_type_code => 'A'
4842 , p_switch_side_flag => 'Y'
4843 , p_merge_duplicate_code => 'N'
4844 );
4845 --
4846 l_acc_rev_natural_side_code := 'C'; -- 4262811
4847 --
4848 --
4849 -- set accounting line type info
4850 --
4851 xla_ae_lines_pkg.SetAcctLineType
4852 (p_component_type => l_component_type
4853 ,p_event_type_code => l_event_type_code
4854 ,p_line_definition_owner_code => l_line_definition_owner_code
4855 ,p_line_definition_code => l_line_definition_code
4856 ,p_accounting_line_code => l_component_code
4857 ,p_accounting_line_type_code => l_component_type_code
4858 ,p_accounting_line_appl_id => l_component_appl_id
4859 ,p_amb_context_code => l_amb_context_code
4860 ,p_entity_code => l_entity_code
4861 ,p_event_class_code => l_event_class_code);
4862 --
4863 -- set accounting class
4864 --
4865 xla_ae_lines_pkg.SetAcctClass(
4866 p_accounting_class_code => 'CHARGE'
4867 , p_ae_header_id => l_ae_header_id
4868 );
4869
4870 --
4871 -- set rounding class
4872 --
4873 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4874 'CHARGE';
4875
4876 --
4877 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4878 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4879 --
4880 -- bulk performance
4881 --
4882 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4883
4884 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4885 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4886
4887 -- 4955764
4888 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4889 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4890
4891 -- 4458381 Public Sector Enh
4892
4893 --
4894 -- set accounting attributes for the line type
4895 --
4896 l_entered_amt_idx := 17;
4897 l_accted_amt_idx := 22;
4898 l_bflow_applied_to_amt_idx := NULL; -- 5132302
4899 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4900 l_rec_acct_attrs.array_num_value(1) := p_source_6;
4901 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4902 l_rec_acct_attrs.array_char_value(2) := p_source_7;
4903 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4904 l_rec_acct_attrs.array_char_value(3) := p_source_8;
4905 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4906 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_9);
4907 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4908 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
4909 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4910 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
4911 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4912 l_rec_acct_attrs.array_char_value(7) := p_source_12;
4913 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4914 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
4915 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4916 l_rec_acct_attrs.array_num_value(9) := p_source_14;
4917 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4918 l_rec_acct_attrs.array_char_value(10) := p_source_15;
4919 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4920 l_rec_acct_attrs.array_num_value(11) := p_source_16;
4921 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4922 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
4923 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4924 l_rec_acct_attrs.array_num_value(13) := p_source_14;
4925 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4926 l_rec_acct_attrs.array_char_value(14) := p_source_15;
4927 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4928 l_rec_acct_attrs.array_num_value(15) := p_source_16;
4929 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4930 l_rec_acct_attrs.array_char_value(16) := p_source_27;
4931 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4932 l_rec_acct_attrs.array_num_value(17) := p_source_18;
4933 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4934 l_rec_acct_attrs.array_char_value(18) := p_source_15;
4935 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
4936 l_rec_acct_attrs.array_date_value(19) := p_source_19;
4937 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
4938 l_rec_acct_attrs.array_num_value(20) := p_source_20;
4939 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
4940 l_rec_acct_attrs.array_char_value(21) := p_source_21;
4941 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
4942 l_rec_acct_attrs.array_num_value(22) := p_source_22;
4943 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
4944 l_rec_acct_attrs.array_num_value(23) := p_source_23;
4945 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
4946 l_rec_acct_attrs.array_num_value(24) := p_source_23;
4947
4948 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4949 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4950
4951 ---------------------------------------------------------------------------------------------------------------
4952 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4953 ---------------------------------------------------------------------------------------------------------------
4954 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4955
4956 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4957 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4958
4959 IF xla_accounting_cache_pkg.GetValueChar
4960 (p_source_code => 'LEDGER_CATEGORY_CODE'
4961 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4962 AND l_bflow_method_code = 'PRIOR_ENTRY'
4963 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4964 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4965 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4966 )
4967 THEN
4968 xla_ae_lines_pkg.BflowUpgEntry
4969 (p_business_method_code => l_bflow_method_code
4970 ,p_business_class_code => l_bflow_class_code
4971 ,p_balance_type => l_balance_type_code);
4972 ELSE
4973 NULL;
4974 -- No business flow processing for business flow method of NONE.
4975 END IF;
4976
4977 --
4978 -- call analytical criteria
4979 --
4980
4981 --
4982 -- call description
4983 --
4984 -- No description or it is inherited.
4985 --
4986 -- call ADRs
4987 -- Bug 4922099
4988 --
4989 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4990 (NVL(l_actual_upg_option, 'N') = 'O') OR
4991 (NVL(l_enc_upg_option, 'N') = 'O')
4992 )
4993 THEN
4994 NULL;
4995 --
4996 --
4997
4998 l_ccid := AcctDerRule_4(
4999 p_application_id => p_application_id
5000 , p_ae_header_id => l_ae_header_id
5001 , p_source_4 => p_source_4
5002 , x_transaction_coa_id => l_adr_transaction_coa_id
5003 , x_accounting_coa_id => l_adr_accounting_coa_id
5004 , x_value_type_code => l_adr_value_type_code
5005 , p_side => 'NA'
5006 );
5007
5008 xla_ae_lines_pkg.set_ccid(
5009 p_code_combination_id => l_ccid
5010 , p_value_type_code => l_adr_value_type_code
5011 , p_transaction_coa_id => l_adr_transaction_coa_id
5012 , p_accounting_coa_id => l_adr_accounting_coa_id
5013 , p_adr_code => 'CST_DEFAULT'
5014 , p_adr_type_code => 'S'
5015 , p_component_type => l_component_type
5016 , p_component_code => l_component_code
5017 , p_component_type_code => l_component_type_code
5018 , p_component_appl_id => l_component_appl_id
5019 , p_amb_context_code => l_amb_context_code
5020 , p_side => 'NA'
5021 );
5022
5023
5024 --
5025 --
5026 END IF;
5027 --
5028 -- Bug 4922099
5029 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5030 (NVL(l_enc_upg_option, 'N') = 'O')
5031 ) AND
5032 (l_bflow_method_code = 'PRIOR_ENTRY')
5033 )
5034 THEN
5035 IF
5036 --
5037 1 = 2
5038 --
5039 THEN
5040 xla_accounting_err_pkg.build_message
5041 (p_appli_s_name => 'XLA'
5042 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5043 ,p_token_1 => 'LINE_NUMBER'
5044 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
5045 ,p_token_2 => 'LINE_TYPE_NAME'
5046 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
5047 l_component_type
5048 ,l_component_code
5049 ,l_component_type_code
5050 ,l_component_appl_id
5051 ,l_amb_context_code
5052 ,l_entity_code
5053 ,l_event_class_code
5054 )
5055 ,p_token_3 => 'OWNER'
5056 ,p_value_3 => xla_lookups_pkg.get_meaning(
5057 p_lookup_type => 'XLA_OWNER_TYPE'
5058 ,p_lookup_code => l_component_type_code
5059 )
5060 ,p_token_4 => 'PRODUCT_NAME'
5061 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5062 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5063 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5064 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5065 ,p_ae_header_id => NULL
5066 );
5067
5068 IF (C_LEVEL_ERROR>= g_log_level) THEN
5069 trace
5070 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5071 ,p_level => C_LEVEL_ERROR
5072 ,p_module => l_log_module);
5073 END IF;
5074 END IF;
5075 END IF;
5076 --
5077 --
5078 ------------------------------------------------------------------------------------------------
5079 -- 4219869 Business Flow
5080 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5081 -- Prior Entry. Currently, the following code is always generated.
5082 ------------------------------------------------------------------------------------------------
5083 XLA_AE_LINES_PKG.ValidateCurrentLine;
5084
5085 ------------------------------------------------------------------------------------
5086 -- 4219869 Business Flow
5087 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5088 ------------------------------------------------------------------------------------
5089 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5090
5091 ----------------------------------------------------------------------------------
5092 -- 4219869 Business Flow
5093 -- Update journal entry status -- Need to generate this within IF <condition>
5094 ----------------------------------------------------------------------------------
5095 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5096 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5097 ,p_balance_type_code => l_balance_type_code
5098 );
5099
5100 -------------------------------------------------------------------------------------------
5101 -- 4262811 - Generate the Accrual Reversal lines
5102 -------------------------------------------------------------------------------------------
5103 BEGIN
5104 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5105 (g_array_event(p_event_id).array_value_num('header_index'));
5106 IF l_acc_rev_flag IS NULL THEN
5107 l_acc_rev_flag := 'N';
5108 END IF;
5109 EXCEPTION
5110 WHEN OTHERS THEN
5111 l_acc_rev_flag := 'N';
5112 END;
5113 --
5114 IF (l_acc_rev_flag = 'Y') THEN
5115
5116 -- 4645092 ------------------------------------------------------------------------------
5117 -- To allow MPA report to determine if it should generate report process
5118 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5119 ------------------------------------------------------------------------------------------
5120
5121 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5122 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5123 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
5124 -- call ADRs
5125 -- Bug 4922099
5126 --
5127 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5128 (NVL(l_actual_upg_option, 'N') = 'O') OR
5129 (NVL(l_enc_upg_option, 'N') = 'O')
5130 )
5131 THEN
5132 NULL;
5133 --
5134 --
5135
5136 l_ccid := AcctDerRule_4(
5137 p_application_id => p_application_id
5138 , p_ae_header_id => l_ae_header_id
5139 , p_source_4 => p_source_4
5140 , x_transaction_coa_id => l_adr_transaction_coa_id
5141 , x_accounting_coa_id => l_adr_accounting_coa_id
5142 , x_value_type_code => l_adr_value_type_code
5143 , p_side => 'NA'
5144 );
5145
5146 xla_ae_lines_pkg.set_ccid(
5147 p_code_combination_id => l_ccid
5148 , p_value_type_code => l_adr_value_type_code
5149 , p_transaction_coa_id => l_adr_transaction_coa_id
5150 , p_accounting_coa_id => l_adr_accounting_coa_id
5151 , p_adr_code => 'CST_DEFAULT'
5152 , p_adr_type_code => 'S'
5153 , p_component_type => l_component_type
5154 , p_component_code => l_component_code
5155 , p_component_type_code => l_component_type_code
5156 , p_component_appl_id => l_component_appl_id
5157 , p_amb_context_code => l_amb_context_code
5158 , p_side => 'NA'
5159 );
5160
5161
5162 --
5163 --
5164 END IF;
5165
5166 --
5167 -- Update the line information that should be overwritten
5168 --
5169 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5170 p_header_num => 1);
5171 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
5172
5173 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5174
5175 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
5176 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5177 END IF;
5178
5179 --
5180 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5181 --
5182 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5183 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
5184 ELSE
5185 ---------------------------------------------------------------------------------------------------
5186 -- 4262811a Switch Sign
5187 ---------------------------------------------------------------------------------------------------
5188 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
5189 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5190 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5191 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5192 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5193 -- 5132302
5194 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5195 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5196
5197 END IF;
5198
5199 -- 4955764
5200 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5201 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5202
5203
5204 XLA_AE_LINES_PKG.ValidateCurrentLine;
5205 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5206
5207 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5208 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5209 ,p_balance_type_code => l_balance_type_code);
5210
5211 END IF;
5212
5213 -----------------------------------------------------------------------------------------
5214 -- 4262811 Multiperiod Accounting
5215 -----------------------------------------------------------------------------------------
5216 -- No MPA option is assigned.
5217
5218
5219 END IF;
5220 END IF;
5221 --
5222
5223 --
5224 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5225 trace
5226 (p_msg => 'END of AcctLineType_12'
5227 ,p_level => C_LEVEL_PROCEDURE
5228 ,p_module => l_log_module);
5229 END IF;
5230 --
5231 EXCEPTION
5232 WHEN xla_exceptions_pkg.application_exception THEN
5233 RAISE;
5234 WHEN OTHERS THEN
5235 xla_exceptions_pkg.raise_message
5236 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_12');
5237 END AcctLineType_12;
5238 --
5239
5240 ---------------------------------------
5241 --
5242 -- PRIVATE FUNCTION
5243 -- AcctLineType_13
5244 --
5245 ---------------------------------------
5246 PROCEDURE AcctLineType_13 (
5247 p_application_id IN NUMBER
5248 ,p_event_id IN NUMBER
5249 ,p_calculate_acctd_flag IN VARCHAR2
5250 ,p_calculate_g_l_flag IN VARCHAR2
5251 ,p_actual_flag IN OUT VARCHAR2
5252 ,p_balance_type_code OUT VARCHAR2
5253 ,p_gain_or_loss_ref OUT VARCHAR2
5254
5255 --Cost Management Default Account
5256 , p_source_4 IN NUMBER
5257 --Receiving Accounting Line Type
5258 , p_source_5 IN VARCHAR2
5259 --DISTRIBUTION_IDENTIFIER
5260 , p_source_11 IN NUMBER
5261 --Distribution Type
5262 , p_source_12 IN VARCHAR2
5263 , p_source_12_meaning IN VARCHAR2
5264 --Entered Currency Code
5265 , p_source_15 IN VARCHAR2
5266 --Entered Amount
5267 , p_source_18 IN NUMBER
5268 --Currency Conversion Date
5269 , p_source_19 IN DATE
5270 --Currency Conversion Rate
5271 , p_source_20 IN NUMBER
5272 --Accounted Amount
5273 , p_source_22 IN NUMBER
5274 )
5275 IS
5276
5277 l_component_type VARCHAR2(80);
5278 l_component_code VARCHAR2(30);
5279 l_component_type_code VARCHAR2(1);
5280 l_component_appl_id INTEGER;
5281 l_amb_context_code VARCHAR2(30);
5282 l_entity_code VARCHAR2(30);
5283 l_event_class_code VARCHAR2(30);
5284 l_ae_header_id NUMBER;
5285 l_event_type_code VARCHAR2(30);
5286 l_line_definition_code VARCHAR2(30);
5287 l_line_definition_owner_code VARCHAR2(1);
5288 --
5289 -- adr variables
5290 l_segment VARCHAR2(30);
5291 l_ccid NUMBER;
5292 l_adr_transaction_coa_id NUMBER;
5293 l_adr_accounting_coa_id NUMBER;
5294 l_adr_flexfield_segment_code VARCHAR2(30);
5295 l_adr_flex_value_set_id NUMBER;
5296 l_adr_value_type_code VARCHAR2(30);
5297 l_adr_value_combination_id NUMBER;
5298 l_adr_value_segment_code VARCHAR2(30);
5299
5300 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
5301 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
5302 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
5303 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
5304
5305 -- 4262811 Variables ------------------------------------------------------------------------------------------
5306 l_entered_amt_idx NUMBER;
5307 l_accted_amt_idx NUMBER;
5308 l_acc_rev_flag VARCHAR2(1);
5309 l_accrual_line_num NUMBER;
5310 l_tmp_amt NUMBER;
5311 l_acc_rev_natural_side_code VARCHAR2(1);
5312
5313 l_num_entries NUMBER;
5314 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
5315 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
5316 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
5317 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
5318 l_recog_line_1 NUMBER;
5319 l_recog_line_2 NUMBER;
5320
5321 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
5322 l_bflow_applied_to_amt NUMBER; -- 5132302
5323 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
5324
5325 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5326
5327 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
5328 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
5329
5330 ---------------------------------------------------------------------------------------------------------------
5331
5332
5333 --
5334 -- bulk performance
5335 --
5336 l_balance_type_code VARCHAR2(1);
5337 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
5338 l_log_module VARCHAR2(240);
5339
5340 --
5341 -- Upgrade strategy
5342 --
5343 l_actual_upg_option VARCHAR2(1);
5344 l_enc_upg_option VARCHAR2(1);
5345
5346 --
5347 BEGIN
5348 --
5349 IF g_log_enabled THEN
5350 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
5351 END IF;
5352 --
5353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5354
5355 trace
5356 (p_msg => 'BEGIN of AcctLineType_13'
5357 ,p_level => C_LEVEL_PROCEDURE
5358 ,p_module => l_log_module);
5359
5360 END IF;
5361 --
5362 l_component_type := 'AMB_JLT';
5363 l_component_code := 'CHARGE';
5364 l_component_type_code := 'S';
5365 l_component_appl_id := 707;
5366 l_amb_context_code := 'DEFAULT';
5367 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
5368 l_event_class_code := 'RETR_PRICE_ADJ_DEL';
5369 l_event_type_code := 'RETR_PRICE_ADJ_DEL_ALL';
5370 l_line_definition_owner_code := 'S';
5371 l_line_definition_code := 'RETR_PRICE_ADJ_DEL';
5372 --
5373 l_balance_type_code := 'A';
5374 l_segment := NULL;
5375 l_ccid := NULL;
5376 l_adr_transaction_coa_id := NULL;
5377 l_adr_accounting_coa_id := NULL;
5378 l_adr_flexfield_segment_code := NULL;
5379 l_adr_flex_value_set_id := NULL;
5380 l_adr_value_type_code := NULL;
5381 l_adr_value_combination_id := NULL;
5382 l_adr_value_segment_code := NULL;
5383
5384 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
5385 l_bflow_class_code := ''; -- 4219869 Business Flow
5386 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
5387 l_budgetary_control_flag := 'N';
5388
5389 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5390 l_bflow_applied_to_amt := NULL; -- 5132302
5391 l_entered_amt_idx := NULL; -- 4262811
5392 l_accted_amt_idx := NULL; -- 4262811
5393 l_acc_rev_flag := NULL; -- 4262811
5394 l_accrual_line_num := NULL; -- 4262811
5395 l_tmp_amt := NULL; -- 4262811
5396 --
5397
5398 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5399 l_balance_type_code <> 'B' THEN
5400 IF NVL(p_source_5,'
5401 ') = 'Charge'
5402 THEN
5403
5404 --
5405 XLA_AE_LINES_PKG.SetNewLine;
5406
5407 p_balance_type_code := l_balance_type_code;
5408 -- set the flag so later we will know whether the gain loss line needs to be created
5409
5410 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5411 p_actual_flag :='A';
5412 END IF;
5413
5414 --
5415 -- bulk performance
5416 --
5417 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5418 p_header_num => 0); -- 4262811
5419 --
5420 -- set accounting line options
5421 --
5422 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5423 p_natural_side_code => 'D'
5424 , p_gain_or_loss_flag => 'N'
5425 , p_gl_transfer_mode_code => 'S'
5426 , p_acct_entry_type_code => 'A'
5427 , p_switch_side_flag => 'Y'
5428 , p_merge_duplicate_code => 'N'
5429 );
5430 --
5431 l_acc_rev_natural_side_code := 'C'; -- 4262811
5432 --
5433 --
5434 -- set accounting line type info
5435 --
5436 xla_ae_lines_pkg.SetAcctLineType
5437 (p_component_type => l_component_type
5438 ,p_event_type_code => l_event_type_code
5439 ,p_line_definition_owner_code => l_line_definition_owner_code
5440 ,p_line_definition_code => l_line_definition_code
5441 ,p_accounting_line_code => l_component_code
5442 ,p_accounting_line_type_code => l_component_type_code
5443 ,p_accounting_line_appl_id => l_component_appl_id
5444 ,p_amb_context_code => l_amb_context_code
5445 ,p_entity_code => l_entity_code
5446 ,p_event_class_code => l_event_class_code);
5447 --
5448 -- set accounting class
5449 --
5450 xla_ae_lines_pkg.SetAcctClass(
5451 p_accounting_class_code => 'CHARGE'
5452 , p_ae_header_id => l_ae_header_id
5453 );
5454
5455 --
5456 -- set rounding class
5457 --
5458 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5459 'CHARGE';
5460
5461 --
5462 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5463 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5464 --
5465 -- bulk performance
5466 --
5467 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5468
5469 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5470 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5471
5472 -- 4955764
5473 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5474 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5475
5476 -- 4458381 Public Sector Enh
5477
5478 --
5479 -- set accounting attributes for the line type
5480 --
5481 l_entered_amt_idx := 3;
5482 l_accted_amt_idx := 8;
5483 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5484 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5485 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
5486 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5487 l_rec_acct_attrs.array_char_value(2) := p_source_12;
5488 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5489 l_rec_acct_attrs.array_num_value(3) := p_source_18;
5490 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5491 l_rec_acct_attrs.array_char_value(4) := p_source_15;
5492 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5493 l_rec_acct_attrs.array_date_value(5) := p_source_19;
5494 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5495 l_rec_acct_attrs.array_num_value(6) := p_source_20;
5496 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5497 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
5498 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5499 l_rec_acct_attrs.array_num_value(8) := p_source_22;
5500
5501 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5502 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5503
5504 ---------------------------------------------------------------------------------------------------------------
5505 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5506 ---------------------------------------------------------------------------------------------------------------
5507 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5508
5509 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5510 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5511
5512 IF xla_accounting_cache_pkg.GetValueChar
5513 (p_source_code => 'LEDGER_CATEGORY_CODE'
5514 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5515 AND l_bflow_method_code = 'PRIOR_ENTRY'
5516 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5517 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5518 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5519 )
5520 THEN
5521 xla_ae_lines_pkg.BflowUpgEntry
5522 (p_business_method_code => l_bflow_method_code
5523 ,p_business_class_code => l_bflow_class_code
5524 ,p_balance_type => l_balance_type_code);
5525 ELSE
5526 NULL;
5527 -- No business flow processing for business flow method of NONE.
5528 END IF;
5529
5530 --
5531 -- call analytical criteria
5532 --
5533
5534 --
5535 -- call description
5536 --
5537 -- No description or it is inherited.
5538 --
5539 -- call ADRs
5540 -- Bug 4922099
5541 --
5542 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5543 (NVL(l_actual_upg_option, 'N') = 'O') OR
5544 (NVL(l_enc_upg_option, 'N') = 'O')
5545 )
5546 THEN
5547 NULL;
5548 --
5549 --
5550
5551 l_ccid := AcctDerRule_4(
5552 p_application_id => p_application_id
5553 , p_ae_header_id => l_ae_header_id
5554 , p_source_4 => p_source_4
5555 , x_transaction_coa_id => l_adr_transaction_coa_id
5556 , x_accounting_coa_id => l_adr_accounting_coa_id
5557 , x_value_type_code => l_adr_value_type_code
5558 , p_side => 'NA'
5559 );
5560
5561 xla_ae_lines_pkg.set_ccid(
5562 p_code_combination_id => l_ccid
5563 , p_value_type_code => l_adr_value_type_code
5564 , p_transaction_coa_id => l_adr_transaction_coa_id
5565 , p_accounting_coa_id => l_adr_accounting_coa_id
5566 , p_adr_code => 'CST_DEFAULT'
5567 , p_adr_type_code => 'S'
5568 , p_component_type => l_component_type
5569 , p_component_code => l_component_code
5570 , p_component_type_code => l_component_type_code
5571 , p_component_appl_id => l_component_appl_id
5572 , p_amb_context_code => l_amb_context_code
5573 , p_side => 'NA'
5574 );
5575
5576
5577 --
5578 --
5579 END IF;
5580 --
5581 -- Bug 4922099
5582 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5583 (NVL(l_enc_upg_option, 'N') = 'O')
5584 ) AND
5585 (l_bflow_method_code = 'PRIOR_ENTRY')
5586 )
5587 THEN
5588 IF
5589 --
5590 1 = 2
5591 --
5592 THEN
5593 xla_accounting_err_pkg.build_message
5594 (p_appli_s_name => 'XLA'
5595 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5596 ,p_token_1 => 'LINE_NUMBER'
5597 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
5598 ,p_token_2 => 'LINE_TYPE_NAME'
5599 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
5600 l_component_type
5601 ,l_component_code
5602 ,l_component_type_code
5603 ,l_component_appl_id
5604 ,l_amb_context_code
5605 ,l_entity_code
5606 ,l_event_class_code
5607 )
5608 ,p_token_3 => 'OWNER'
5609 ,p_value_3 => xla_lookups_pkg.get_meaning(
5610 p_lookup_type => 'XLA_OWNER_TYPE'
5611 ,p_lookup_code => l_component_type_code
5612 )
5613 ,p_token_4 => 'PRODUCT_NAME'
5614 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5615 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5616 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5617 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5618 ,p_ae_header_id => NULL
5619 );
5620
5621 IF (C_LEVEL_ERROR>= g_log_level) THEN
5622 trace
5623 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5624 ,p_level => C_LEVEL_ERROR
5625 ,p_module => l_log_module);
5626 END IF;
5627 END IF;
5628 END IF;
5629 --
5630 --
5631 ------------------------------------------------------------------------------------------------
5632 -- 4219869 Business Flow
5633 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5634 -- Prior Entry. Currently, the following code is always generated.
5635 ------------------------------------------------------------------------------------------------
5636 XLA_AE_LINES_PKG.ValidateCurrentLine;
5637
5638 ------------------------------------------------------------------------------------
5639 -- 4219869 Business Flow
5640 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5641 ------------------------------------------------------------------------------------
5642 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5643
5644 ----------------------------------------------------------------------------------
5645 -- 4219869 Business Flow
5646 -- Update journal entry status -- Need to generate this within IF <condition>
5647 ----------------------------------------------------------------------------------
5648 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5649 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5650 ,p_balance_type_code => l_balance_type_code
5651 );
5652
5653 -------------------------------------------------------------------------------------------
5654 -- 4262811 - Generate the Accrual Reversal lines
5655 -------------------------------------------------------------------------------------------
5656 BEGIN
5657 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5658 (g_array_event(p_event_id).array_value_num('header_index'));
5659 IF l_acc_rev_flag IS NULL THEN
5660 l_acc_rev_flag := 'N';
5661 END IF;
5662 EXCEPTION
5663 WHEN OTHERS THEN
5664 l_acc_rev_flag := 'N';
5665 END;
5666 --
5667 IF (l_acc_rev_flag = 'Y') THEN
5668
5669 -- 4645092 ------------------------------------------------------------------------------
5670 -- To allow MPA report to determine if it should generate report process
5671 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5672 ------------------------------------------------------------------------------------------
5673
5674 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5675 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5676 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
5677 -- call ADRs
5678 -- Bug 4922099
5679 --
5680 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5681 (NVL(l_actual_upg_option, 'N') = 'O') OR
5682 (NVL(l_enc_upg_option, 'N') = 'O')
5683 )
5684 THEN
5685 NULL;
5686 --
5687 --
5688
5689 l_ccid := AcctDerRule_4(
5690 p_application_id => p_application_id
5691 , p_ae_header_id => l_ae_header_id
5692 , p_source_4 => p_source_4
5693 , x_transaction_coa_id => l_adr_transaction_coa_id
5694 , x_accounting_coa_id => l_adr_accounting_coa_id
5695 , x_value_type_code => l_adr_value_type_code
5696 , p_side => 'NA'
5697 );
5698
5699 xla_ae_lines_pkg.set_ccid(
5700 p_code_combination_id => l_ccid
5701 , p_value_type_code => l_adr_value_type_code
5702 , p_transaction_coa_id => l_adr_transaction_coa_id
5703 , p_accounting_coa_id => l_adr_accounting_coa_id
5704 , p_adr_code => 'CST_DEFAULT'
5705 , p_adr_type_code => 'S'
5706 , p_component_type => l_component_type
5707 , p_component_code => l_component_code
5708 , p_component_type_code => l_component_type_code
5709 , p_component_appl_id => l_component_appl_id
5710 , p_amb_context_code => l_amb_context_code
5711 , p_side => 'NA'
5712 );
5713
5714
5715 --
5716 --
5717 END IF;
5718
5719 --
5720 -- Update the line information that should be overwritten
5721 --
5722 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5723 p_header_num => 1);
5724 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
5725
5726 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5727
5728 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
5729 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5730 END IF;
5731
5732 --
5733 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5734 --
5735 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5736 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
5737 ELSE
5738 ---------------------------------------------------------------------------------------------------
5739 -- 4262811a Switch Sign
5740 ---------------------------------------------------------------------------------------------------
5741 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
5742 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5743 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5744 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5745 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5746 -- 5132302
5747 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5748 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5749
5750 END IF;
5751
5752 -- 4955764
5753 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5754 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5755
5756
5757 XLA_AE_LINES_PKG.ValidateCurrentLine;
5758 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5759
5760 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5761 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5762 ,p_balance_type_code => l_balance_type_code);
5763
5764 END IF;
5765
5766 -----------------------------------------------------------------------------------------
5767 -- 4262811 Multiperiod Accounting
5768 -----------------------------------------------------------------------------------------
5769 -- No MPA option is assigned.
5770
5771
5772 END IF;
5773 END IF;
5774 --
5775
5776 --
5777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5778 trace
5779 (p_msg => 'END of AcctLineType_13'
5780 ,p_level => C_LEVEL_PROCEDURE
5781 ,p_module => l_log_module);
5782 END IF;
5783 --
5784 EXCEPTION
5785 WHEN xla_exceptions_pkg.application_exception THEN
5786 RAISE;
5787 WHEN OTHERS THEN
5788 xla_exceptions_pkg.raise_message
5789 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_13');
5790 END AcctLineType_13;
5791 --
5792
5793 ---------------------------------------
5794 --
5795 -- PRIVATE FUNCTION
5796 -- AcctLineType_14
5797 --
5798 ---------------------------------------
5799 PROCEDURE AcctLineType_14 (
5800 p_application_id IN NUMBER
5801 ,p_event_id IN NUMBER
5802 ,p_calculate_acctd_flag IN VARCHAR2
5803 ,p_calculate_g_l_flag IN VARCHAR2
5804 ,p_actual_flag IN OUT VARCHAR2
5805 ,p_balance_type_code OUT VARCHAR2
5806 ,p_gain_or_loss_ref OUT VARCHAR2
5807
5808 --Cost Management Default Account
5809 , p_source_4 IN NUMBER
5810 --Receiving Accounting Line Type
5811 , p_source_5 IN VARCHAR2
5812 --DISTRIBUTION_IDENTIFIER
5813 , p_source_11 IN NUMBER
5814 --Distribution Type
5815 , p_source_12 IN VARCHAR2
5816 , p_source_12_meaning IN VARCHAR2
5817 --Entered Currency Code
5818 , p_source_15 IN VARCHAR2
5819 --Entered Amount
5820 , p_source_18 IN NUMBER
5821 --Currency Conversion Date
5822 , p_source_19 IN DATE
5823 --Currency Conversion Rate
5824 , p_source_20 IN NUMBER
5825 --Currency Conversion Type
5826 , p_source_21 IN VARCHAR2
5827 --Accounted Amount
5828 , p_source_22 IN NUMBER
5829 )
5830 IS
5831
5832 l_component_type VARCHAR2(80);
5833 l_component_code VARCHAR2(30);
5834 l_component_type_code VARCHAR2(1);
5835 l_component_appl_id INTEGER;
5836 l_amb_context_code VARCHAR2(30);
5837 l_entity_code VARCHAR2(30);
5838 l_event_class_code VARCHAR2(30);
5839 l_ae_header_id NUMBER;
5840 l_event_type_code VARCHAR2(30);
5841 l_line_definition_code VARCHAR2(30);
5842 l_line_definition_owner_code VARCHAR2(1);
5843 --
5844 -- adr variables
5845 l_segment VARCHAR2(30);
5846 l_ccid NUMBER;
5847 l_adr_transaction_coa_id NUMBER;
5848 l_adr_accounting_coa_id NUMBER;
5849 l_adr_flexfield_segment_code VARCHAR2(30);
5850 l_adr_flex_value_set_id NUMBER;
5851 l_adr_value_type_code VARCHAR2(30);
5852 l_adr_value_combination_id NUMBER;
5853 l_adr_value_segment_code VARCHAR2(30);
5854
5855 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
5856 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
5857 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
5858 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
5859
5860 -- 4262811 Variables ------------------------------------------------------------------------------------------
5861 l_entered_amt_idx NUMBER;
5862 l_accted_amt_idx NUMBER;
5863 l_acc_rev_flag VARCHAR2(1);
5864 l_accrual_line_num NUMBER;
5865 l_tmp_amt NUMBER;
5866 l_acc_rev_natural_side_code VARCHAR2(1);
5867
5868 l_num_entries NUMBER;
5869 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
5870 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
5871 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
5872 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
5873 l_recog_line_1 NUMBER;
5874 l_recog_line_2 NUMBER;
5875
5876 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
5877 l_bflow_applied_to_amt NUMBER; -- 5132302
5878 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
5879
5880 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5881
5882 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
5883 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
5884
5885 ---------------------------------------------------------------------------------------------------------------
5886
5887
5888 --
5889 -- bulk performance
5890 --
5891 l_balance_type_code VARCHAR2(1);
5892 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
5893 l_log_module VARCHAR2(240);
5894
5895 --
5896 -- Upgrade strategy
5897 --
5898 l_actual_upg_option VARCHAR2(1);
5899 l_enc_upg_option VARCHAR2(1);
5900
5901 --
5902 BEGIN
5903 --
5904 IF g_log_enabled THEN
5905 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
5906 END IF;
5907 --
5908 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5909
5910 trace
5911 (p_msg => 'BEGIN of AcctLineType_14'
5912 ,p_level => C_LEVEL_PROCEDURE
5913 ,p_module => l_log_module);
5914
5915 END IF;
5916 --
5917 l_component_type := 'AMB_JLT';
5918 l_component_code := 'CLEARING';
5919 l_component_type_code := 'S';
5920 l_component_appl_id := 707;
5921 l_amb_context_code := 'DEFAULT';
5922 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
5923 l_event_class_code := 'RCPT_REC_INSP';
5924 l_event_type_code := 'RCPT_REC_INSP_ALL';
5925 l_line_definition_owner_code := 'S';
5926 l_line_definition_code := 'RCPT_REC_INSP';
5927 --
5928 l_balance_type_code := 'A';
5929 l_segment := NULL;
5930 l_ccid := NULL;
5931 l_adr_transaction_coa_id := NULL;
5932 l_adr_accounting_coa_id := NULL;
5933 l_adr_flexfield_segment_code := NULL;
5934 l_adr_flex_value_set_id := NULL;
5935 l_adr_value_type_code := NULL;
5936 l_adr_value_combination_id := NULL;
5937 l_adr_value_segment_code := NULL;
5938
5939 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
5940 l_bflow_class_code := ''; -- 4219869 Business Flow
5941 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
5942 l_budgetary_control_flag := 'N';
5943
5944 l_bflow_applied_to_amt_idx := NULL; -- 5132302
5945 l_bflow_applied_to_amt := NULL; -- 5132302
5946 l_entered_amt_idx := NULL; -- 4262811
5947 l_accted_amt_idx := NULL; -- 4262811
5948 l_acc_rev_flag := NULL; -- 4262811
5949 l_accrual_line_num := NULL; -- 4262811
5950 l_tmp_amt := NULL; -- 4262811
5951 --
5952
5953 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5954 l_balance_type_code <> 'B' THEN
5955 IF NVL(p_source_5,'
5956 ') = 'Clearing'
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_000005_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_000005_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 := 'CLEARING';
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 := 'LOG_INTERCOMPANY';
7085 l_event_type_code := 'LOG_INTERCOMPANY_ALL';
7086 l_line_definition_owner_code := 'S';
7087 l_line_definition_code := 'LOG_INTERCOMPANY';
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) = 31
7117 THEN
7118
7119 --
7120 XLA_AE_LINES_PKG.SetNewLine;
7121
7122 p_balance_type_code := l_balance_type_code;
7123 -- set the flag so later we will know whether the gain loss line needs to be created
7124
7125 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7126 p_actual_flag :='A';
7127 END IF;
7128
7129 --
7130 -- bulk performance
7131 --
7132 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7133 p_header_num => 0); -- 4262811
7134 --
7135 -- set accounting line options
7136 --
7137 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7138 p_natural_side_code => 'D'
7139 , p_gain_or_loss_flag => 'N'
7140 , p_gl_transfer_mode_code => 'S'
7141 , p_acct_entry_type_code => 'A'
7142 , p_switch_side_flag => 'Y'
7143 , p_merge_duplicate_code => 'N'
7144 );
7145 --
7146 l_acc_rev_natural_side_code := 'C'; -- 4262811
7147 --
7148 --
7149 -- set accounting line type info
7150 --
7151 xla_ae_lines_pkg.SetAcctLineType
7152 (p_component_type => l_component_type
7153 ,p_event_type_code => l_event_type_code
7154 ,p_line_definition_owner_code => l_line_definition_owner_code
7155 ,p_line_definition_code => l_line_definition_code
7156 ,p_accounting_line_code => l_component_code
7157 ,p_accounting_line_type_code => l_component_type_code
7158 ,p_accounting_line_appl_id => l_component_appl_id
7159 ,p_amb_context_code => l_amb_context_code
7160 ,p_entity_code => l_entity_code
7161 ,p_event_class_code => l_event_class_code);
7162 --
7163 -- set accounting class
7164 --
7165 xla_ae_lines_pkg.SetAcctClass(
7166 p_accounting_class_code => 'CLEARING'
7167 , p_ae_header_id => l_ae_header_id
7168 );
7169
7170 --
7171 -- set rounding class
7172 --
7173 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7174 'CLEARING';
7175
7176 --
7177 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7178 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7179 --
7180 -- bulk performance
7181 --
7182 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7183
7184 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7185 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7186
7187 -- 4955764
7188 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7189 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7190
7191 -- 4458381 Public Sector Enh
7192
7193 --
7194 -- set accounting attributes for the line type
7195 --
7196 l_entered_amt_idx := 3;
7197 l_accted_amt_idx := 8;
7198 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7199 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7200 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
7201 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7202 l_rec_acct_attrs.array_char_value(2) := p_source_12;
7203 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7204 l_rec_acct_attrs.array_num_value(3) := p_source_18;
7205 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7206 l_rec_acct_attrs.array_char_value(4) := p_source_15;
7207 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7208 l_rec_acct_attrs.array_date_value(5) := p_source_19;
7209 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7210 l_rec_acct_attrs.array_num_value(6) := p_source_20;
7211 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7212 l_rec_acct_attrs.array_char_value(7) := p_source_21;
7213 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7214 l_rec_acct_attrs.array_num_value(8) := p_source_22;
7215
7216 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7217 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7218
7219 ---------------------------------------------------------------------------------------------------------------
7220 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7221 ---------------------------------------------------------------------------------------------------------------
7222 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7223
7224 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7225 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7226
7227 IF xla_accounting_cache_pkg.GetValueChar
7228 (p_source_code => 'LEDGER_CATEGORY_CODE'
7229 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7230 AND l_bflow_method_code = 'PRIOR_ENTRY'
7231 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7232 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7233 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7234 )
7235 THEN
7236 xla_ae_lines_pkg.BflowUpgEntry
7237 (p_business_method_code => l_bflow_method_code
7238 ,p_business_class_code => l_bflow_class_code
7239 ,p_balance_type => l_balance_type_code);
7240 ELSE
7241 NULL;
7242 -- No business flow processing for business flow method of NONE.
7243 END IF;
7244
7245 --
7246 -- call analytical criteria
7247 --
7248
7249 --
7250 -- call description
7251 --
7252 -- No description or it is inherited.
7253 --
7254 -- call ADRs
7255 -- Bug 4922099
7256 --
7257 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7258 (NVL(l_actual_upg_option, 'N') = 'O') OR
7259 (NVL(l_enc_upg_option, 'N') = 'O')
7260 )
7261 THEN
7262 NULL;
7263 --
7264 --
7265
7266 l_ccid := AcctDerRule_4(
7267 p_application_id => p_application_id
7268 , p_ae_header_id => l_ae_header_id
7269 , p_source_4 => p_source_4
7270 , x_transaction_coa_id => l_adr_transaction_coa_id
7271 , x_accounting_coa_id => l_adr_accounting_coa_id
7272 , x_value_type_code => l_adr_value_type_code
7273 , p_side => 'NA'
7274 );
7275
7276 xla_ae_lines_pkg.set_ccid(
7277 p_code_combination_id => l_ccid
7278 , p_value_type_code => l_adr_value_type_code
7279 , p_transaction_coa_id => l_adr_transaction_coa_id
7280 , p_accounting_coa_id => l_adr_accounting_coa_id
7281 , p_adr_code => 'CST_DEFAULT'
7282 , p_adr_type_code => 'S'
7283 , p_component_type => l_component_type
7284 , p_component_code => l_component_code
7285 , p_component_type_code => l_component_type_code
7286 , p_component_appl_id => l_component_appl_id
7287 , p_amb_context_code => l_amb_context_code
7288 , p_side => 'NA'
7289 );
7290
7291
7292 --
7293 --
7294 END IF;
7295 --
7296 -- Bug 4922099
7297 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7298 (NVL(l_enc_upg_option, 'N') = 'O')
7299 ) AND
7300 (l_bflow_method_code = 'PRIOR_ENTRY')
7301 )
7302 THEN
7303 IF
7304 --
7305 1 = 2
7306 --
7307 THEN
7308 xla_accounting_err_pkg.build_message
7309 (p_appli_s_name => 'XLA'
7310 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7311 ,p_token_1 => 'LINE_NUMBER'
7312 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
7313 ,p_token_2 => 'LINE_TYPE_NAME'
7314 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
7315 l_component_type
7316 ,l_component_code
7317 ,l_component_type_code
7318 ,l_component_appl_id
7319 ,l_amb_context_code
7320 ,l_entity_code
7321 ,l_event_class_code
7322 )
7323 ,p_token_3 => 'OWNER'
7324 ,p_value_3 => xla_lookups_pkg.get_meaning(
7325 p_lookup_type => 'XLA_OWNER_TYPE'
7326 ,p_lookup_code => l_component_type_code
7327 )
7328 ,p_token_4 => 'PRODUCT_NAME'
7329 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7330 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7331 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7332 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7333 ,p_ae_header_id => NULL
7334 );
7335
7336 IF (C_LEVEL_ERROR>= g_log_level) THEN
7337 trace
7338 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7339 ,p_level => C_LEVEL_ERROR
7340 ,p_module => l_log_module);
7341 END IF;
7342 END IF;
7343 END IF;
7344 --
7345 --
7346 ------------------------------------------------------------------------------------------------
7347 -- 4219869 Business Flow
7348 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7349 -- Prior Entry. Currently, the following code is always generated.
7350 ------------------------------------------------------------------------------------------------
7351 XLA_AE_LINES_PKG.ValidateCurrentLine;
7352
7353 ------------------------------------------------------------------------------------
7354 -- 4219869 Business Flow
7355 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7356 ------------------------------------------------------------------------------------
7357 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7358
7359 ----------------------------------------------------------------------------------
7360 -- 4219869 Business Flow
7361 -- Update journal entry status -- Need to generate this within IF <condition>
7362 ----------------------------------------------------------------------------------
7363 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7364 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7365 ,p_balance_type_code => l_balance_type_code
7366 );
7367
7368 -------------------------------------------------------------------------------------------
7369 -- 4262811 - Generate the Accrual Reversal lines
7370 -------------------------------------------------------------------------------------------
7371 BEGIN
7372 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7373 (g_array_event(p_event_id).array_value_num('header_index'));
7374 IF l_acc_rev_flag IS NULL THEN
7375 l_acc_rev_flag := 'N';
7376 END IF;
7377 EXCEPTION
7378 WHEN OTHERS THEN
7379 l_acc_rev_flag := 'N';
7380 END;
7381 --
7382 IF (l_acc_rev_flag = 'Y') THEN
7383
7384 -- 4645092 ------------------------------------------------------------------------------
7385 -- To allow MPA report to determine if it should generate report process
7386 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7387 ------------------------------------------------------------------------------------------
7388
7389 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7390 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7391 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
7392 -- call ADRs
7393 -- Bug 4922099
7394 --
7395 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7396 (NVL(l_actual_upg_option, 'N') = 'O') OR
7397 (NVL(l_enc_upg_option, 'N') = 'O')
7398 )
7399 THEN
7400 NULL;
7401 --
7402 --
7403
7404 l_ccid := AcctDerRule_4(
7405 p_application_id => p_application_id
7406 , p_ae_header_id => l_ae_header_id
7407 , p_source_4 => p_source_4
7408 , x_transaction_coa_id => l_adr_transaction_coa_id
7409 , x_accounting_coa_id => l_adr_accounting_coa_id
7410 , x_value_type_code => l_adr_value_type_code
7411 , p_side => 'NA'
7412 );
7413
7414 xla_ae_lines_pkg.set_ccid(
7415 p_code_combination_id => l_ccid
7416 , p_value_type_code => l_adr_value_type_code
7417 , p_transaction_coa_id => l_adr_transaction_coa_id
7418 , p_accounting_coa_id => l_adr_accounting_coa_id
7419 , p_adr_code => 'CST_DEFAULT'
7420 , p_adr_type_code => 'S'
7421 , p_component_type => l_component_type
7422 , p_component_code => l_component_code
7423 , p_component_type_code => l_component_type_code
7424 , p_component_appl_id => l_component_appl_id
7425 , p_amb_context_code => l_amb_context_code
7426 , p_side => 'NA'
7427 );
7428
7429
7430 --
7431 --
7432 END IF;
7433
7434 --
7435 -- Update the line information that should be overwritten
7436 --
7437 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7438 p_header_num => 1);
7439 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
7440
7441 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7442
7443 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
7444 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7445 END IF;
7446
7447 --
7448 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7449 --
7450 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7451 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
7452 ELSE
7453 ---------------------------------------------------------------------------------------------------
7454 -- 4262811a Switch Sign
7455 ---------------------------------------------------------------------------------------------------
7456 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
7457 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7458 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7459 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7460 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7461 -- 5132302
7462 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7463 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7464
7465 END IF;
7466
7467 -- 4955764
7468 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7469 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7470
7471
7472 XLA_AE_LINES_PKG.ValidateCurrentLine;
7473 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7474
7475 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7476 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7477 ,p_balance_type_code => l_balance_type_code);
7478
7479 END IF;
7480
7481 -----------------------------------------------------------------------------------------
7482 -- 4262811 Multiperiod Accounting
7483 -----------------------------------------------------------------------------------------
7484 -- No MPA option is assigned.
7485
7486
7487 END IF;
7488 END IF;
7489 --
7490
7491 --
7492 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7493 trace
7494 (p_msg => 'END of AcctLineType_16'
7495 ,p_level => C_LEVEL_PROCEDURE
7496 ,p_module => l_log_module);
7497 END IF;
7498 --
7499 EXCEPTION
7500 WHEN xla_exceptions_pkg.application_exception THEN
7501 RAISE;
7502 WHEN OTHERS THEN
7503 xla_exceptions_pkg.raise_message
7504 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_16');
7505 END AcctLineType_16;
7506 --
7507
7508 ---------------------------------------
7509 --
7510 -- PRIVATE FUNCTION
7511 -- AcctLineType_17
7512 --
7513 ---------------------------------------
7514 PROCEDURE AcctLineType_17 (
7515 p_application_id IN NUMBER
7516 ,p_event_id IN NUMBER
7517 ,p_calculate_acctd_flag IN VARCHAR2
7518 ,p_calculate_g_l_flag IN VARCHAR2
7519 ,p_actual_flag IN OUT VARCHAR2
7520 ,p_balance_type_code OUT VARCHAR2
7521 ,p_gain_or_loss_ref OUT VARCHAR2
7522
7523 --Cost Management Default Account
7524 , p_source_4 IN NUMBER
7525 --DISTRIBUTION_IDENTIFIER
7526 , p_source_11 IN NUMBER
7527 --Distribution Type
7528 , p_source_12 IN VARCHAR2
7529 , p_source_12_meaning IN VARCHAR2
7530 --Entered Currency Code
7531 , p_source_15 IN VARCHAR2
7532 --Entered Amount
7533 , p_source_18 IN NUMBER
7534 --Currency Conversion Date
7535 , p_source_19 IN DATE
7536 --Currency Conversion Rate
7537 , p_source_20 IN NUMBER
7538 --Currency Conversion Type
7539 , p_source_21 IN VARCHAR2
7540 --Accounted Amount
7541 , p_source_22 IN NUMBER
7542 --Accounting Line Type
7543 , p_source_24 IN NUMBER
7544 )
7545 IS
7546
7547 l_component_type VARCHAR2(80);
7548 l_component_code VARCHAR2(30);
7549 l_component_type_code VARCHAR2(1);
7550 l_component_appl_id INTEGER;
7551 l_amb_context_code VARCHAR2(30);
7552 l_entity_code VARCHAR2(30);
7553 l_event_class_code VARCHAR2(30);
7554 l_ae_header_id NUMBER;
7555 l_event_type_code VARCHAR2(30);
7556 l_line_definition_code VARCHAR2(30);
7557 l_line_definition_owner_code VARCHAR2(1);
7558 --
7559 -- adr variables
7560 l_segment VARCHAR2(30);
7561 l_ccid NUMBER;
7562 l_adr_transaction_coa_id NUMBER;
7563 l_adr_accounting_coa_id NUMBER;
7564 l_adr_flexfield_segment_code VARCHAR2(30);
7565 l_adr_flex_value_set_id NUMBER;
7566 l_adr_value_type_code VARCHAR2(30);
7567 l_adr_value_combination_id NUMBER;
7568 l_adr_value_segment_code VARCHAR2(30);
7569
7570 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
7571 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
7572 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
7573 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
7574
7575 -- 4262811 Variables ------------------------------------------------------------------------------------------
7576 l_entered_amt_idx NUMBER;
7577 l_accted_amt_idx NUMBER;
7578 l_acc_rev_flag VARCHAR2(1);
7579 l_accrual_line_num NUMBER;
7580 l_tmp_amt NUMBER;
7581 l_acc_rev_natural_side_code VARCHAR2(1);
7582
7583 l_num_entries NUMBER;
7584 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
7585 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
7586 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
7587 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
7588 l_recog_line_1 NUMBER;
7589 l_recog_line_2 NUMBER;
7590
7591 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
7592 l_bflow_applied_to_amt NUMBER; -- 5132302
7593 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
7594
7595 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7596
7597 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
7598 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
7599
7600 ---------------------------------------------------------------------------------------------------------------
7601
7602
7603 --
7604 -- bulk performance
7605 --
7606 l_balance_type_code VARCHAR2(1);
7607 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
7608 l_log_module VARCHAR2(240);
7609
7610 --
7611 -- Upgrade strategy
7612 --
7613 l_actual_upg_option VARCHAR2(1);
7614 l_enc_upg_option VARCHAR2(1);
7615
7616 --
7617 BEGIN
7618 --
7619 IF g_log_enabled THEN
7620 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
7621 END IF;
7622 --
7623 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7624
7625 trace
7626 (p_msg => 'BEGIN of AcctLineType_17'
7627 ,p_level => C_LEVEL_PROCEDURE
7628 ,p_module => l_log_module);
7629
7630 END IF;
7631 --
7632 l_component_type := 'AMB_JLT';
7633 l_component_code := 'COST_OF_GOODS_SOLD';
7634 l_component_type_code := 'S';
7635 l_component_appl_id := 707;
7636 l_amb_context_code := 'DEFAULT';
7637 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
7638 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
7639 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
7640 l_line_definition_owner_code := 'S';
7641 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
7642 --
7643 l_balance_type_code := 'A';
7644 l_segment := NULL;
7645 l_ccid := NULL;
7646 l_adr_transaction_coa_id := NULL;
7647 l_adr_accounting_coa_id := NULL;
7648 l_adr_flexfield_segment_code := NULL;
7649 l_adr_flex_value_set_id := NULL;
7650 l_adr_value_type_code := NULL;
7651 l_adr_value_combination_id := NULL;
7652 l_adr_value_segment_code := NULL;
7653
7654 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
7655 l_bflow_class_code := ''; -- 4219869 Business Flow
7656 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
7657 l_budgetary_control_flag := 'N';
7658
7659 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7660 l_bflow_applied_to_amt := NULL; -- 5132302
7661 l_entered_amt_idx := NULL; -- 4262811
7662 l_accted_amt_idx := NULL; -- 4262811
7663 l_acc_rev_flag := NULL; -- 4262811
7664 l_accrual_line_num := NULL; -- 4262811
7665 l_tmp_amt := NULL; -- 4262811
7666 --
7667
7668 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7669 l_balance_type_code <> 'B' THEN
7670 IF NVL(p_source_24,9E125) = 2 AND
7671 p_source_22 > 0
7672 THEN
7673
7674 --
7675 XLA_AE_LINES_PKG.SetNewLine;
7676
7677 p_balance_type_code := l_balance_type_code;
7678 -- set the flag so later we will know whether the gain loss line needs to be created
7679
7680 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7681 p_actual_flag :='A';
7682 END IF;
7683
7684 --
7685 -- bulk performance
7686 --
7687 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7688 p_header_num => 0); -- 4262811
7689 --
7690 -- set accounting line options
7691 --
7692 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7693 p_natural_side_code => 'D'
7694 , p_gain_or_loss_flag => 'N'
7695 , p_gl_transfer_mode_code => 'S'
7696 , p_acct_entry_type_code => 'A'
7697 , p_switch_side_flag => 'Y'
7698 , p_merge_duplicate_code => 'N'
7699 );
7700 --
7701 l_acc_rev_natural_side_code := 'C'; -- 4262811
7702 --
7703 --
7704 -- set accounting line type info
7705 --
7706 xla_ae_lines_pkg.SetAcctLineType
7707 (p_component_type => l_component_type
7708 ,p_event_type_code => l_event_type_code
7709 ,p_line_definition_owner_code => l_line_definition_owner_code
7710 ,p_line_definition_code => l_line_definition_code
7711 ,p_accounting_line_code => l_component_code
7712 ,p_accounting_line_type_code => l_component_type_code
7713 ,p_accounting_line_appl_id => l_component_appl_id
7714 ,p_amb_context_code => l_amb_context_code
7715 ,p_entity_code => l_entity_code
7716 ,p_event_class_code => l_event_class_code);
7717 --
7718 -- set accounting class
7719 --
7720 xla_ae_lines_pkg.SetAcctClass(
7721 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
7722 , p_ae_header_id => l_ae_header_id
7723 );
7724
7725 --
7726 -- set rounding class
7727 --
7728 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7729 'COST_OF_GOODS_SOLD';
7730
7731 --
7732 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7733 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7734 --
7735 -- bulk performance
7736 --
7737 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7738
7739 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7740 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7741
7742 -- 4955764
7743 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7744 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7745
7746 -- 4458381 Public Sector Enh
7747
7748 --
7749 -- set accounting attributes for the line type
7750 --
7751 l_entered_amt_idx := 3;
7752 l_accted_amt_idx := 8;
7753 l_bflow_applied_to_amt_idx := NULL; -- 5132302
7754 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7755 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
7756 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7757 l_rec_acct_attrs.array_char_value(2) := p_source_12;
7758 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7759 l_rec_acct_attrs.array_num_value(3) := p_source_18;
7760 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7761 l_rec_acct_attrs.array_char_value(4) := p_source_15;
7762 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7763 l_rec_acct_attrs.array_date_value(5) := p_source_19;
7764 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7765 l_rec_acct_attrs.array_num_value(6) := p_source_20;
7766 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7767 l_rec_acct_attrs.array_char_value(7) := p_source_21;
7768 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7769 l_rec_acct_attrs.array_num_value(8) := p_source_22;
7770
7771 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7772 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7773
7774 ---------------------------------------------------------------------------------------------------------------
7775 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7776 ---------------------------------------------------------------------------------------------------------------
7777 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7778
7779 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7780 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7781
7782 IF xla_accounting_cache_pkg.GetValueChar
7783 (p_source_code => 'LEDGER_CATEGORY_CODE'
7784 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7785 AND l_bflow_method_code = 'PRIOR_ENTRY'
7786 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7787 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7788 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7789 )
7790 THEN
7791 xla_ae_lines_pkg.BflowUpgEntry
7792 (p_business_method_code => l_bflow_method_code
7793 ,p_business_class_code => l_bflow_class_code
7794 ,p_balance_type => l_balance_type_code);
7795 ELSE
7796 NULL;
7797 -- No business flow processing for business flow method of NONE.
7798 END IF;
7799
7800 --
7801 -- call analytical criteria
7802 --
7803
7804 --
7805 -- call description
7806 --
7807 -- No description or it is inherited.
7808 --
7809 -- call ADRs
7810 -- Bug 4922099
7811 --
7812 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7813 (NVL(l_actual_upg_option, 'N') = 'O') OR
7814 (NVL(l_enc_upg_option, 'N') = 'O')
7815 )
7816 THEN
7817 NULL;
7818 --
7819 --
7820
7821 l_ccid := AcctDerRule_4(
7822 p_application_id => p_application_id
7823 , p_ae_header_id => l_ae_header_id
7824 , p_source_4 => p_source_4
7825 , x_transaction_coa_id => l_adr_transaction_coa_id
7826 , x_accounting_coa_id => l_adr_accounting_coa_id
7827 , x_value_type_code => l_adr_value_type_code
7828 , p_side => 'NA'
7829 );
7830
7831 xla_ae_lines_pkg.set_ccid(
7832 p_code_combination_id => l_ccid
7833 , p_value_type_code => l_adr_value_type_code
7834 , p_transaction_coa_id => l_adr_transaction_coa_id
7835 , p_accounting_coa_id => l_adr_accounting_coa_id
7836 , p_adr_code => 'CST_DEFAULT'
7837 , p_adr_type_code => 'S'
7838 , p_component_type => l_component_type
7839 , p_component_code => l_component_code
7840 , p_component_type_code => l_component_type_code
7841 , p_component_appl_id => l_component_appl_id
7842 , p_amb_context_code => l_amb_context_code
7843 , p_side => 'NA'
7844 );
7845
7846
7847 --
7848 --
7849 END IF;
7850 --
7851 -- Bug 4922099
7852 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7853 (NVL(l_enc_upg_option, 'N') = 'O')
7854 ) AND
7855 (l_bflow_method_code = 'PRIOR_ENTRY')
7856 )
7857 THEN
7858 IF
7859 --
7860 1 = 2
7861 --
7862 THEN
7863 xla_accounting_err_pkg.build_message
7864 (p_appli_s_name => 'XLA'
7865 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7866 ,p_token_1 => 'LINE_NUMBER'
7867 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
7868 ,p_token_2 => 'LINE_TYPE_NAME'
7869 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
7870 l_component_type
7871 ,l_component_code
7872 ,l_component_type_code
7873 ,l_component_appl_id
7874 ,l_amb_context_code
7875 ,l_entity_code
7876 ,l_event_class_code
7877 )
7878 ,p_token_3 => 'OWNER'
7879 ,p_value_3 => xla_lookups_pkg.get_meaning(
7880 p_lookup_type => 'XLA_OWNER_TYPE'
7881 ,p_lookup_code => l_component_type_code
7882 )
7883 ,p_token_4 => 'PRODUCT_NAME'
7884 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7885 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7886 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7887 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7888 ,p_ae_header_id => NULL
7889 );
7890
7891 IF (C_LEVEL_ERROR>= g_log_level) THEN
7892 trace
7893 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7894 ,p_level => C_LEVEL_ERROR
7895 ,p_module => l_log_module);
7896 END IF;
7897 END IF;
7898 END IF;
7899 --
7900 --
7901 ------------------------------------------------------------------------------------------------
7902 -- 4219869 Business Flow
7903 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7904 -- Prior Entry. Currently, the following code is always generated.
7905 ------------------------------------------------------------------------------------------------
7906 XLA_AE_LINES_PKG.ValidateCurrentLine;
7907
7908 ------------------------------------------------------------------------------------
7909 -- 4219869 Business Flow
7910 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7911 ------------------------------------------------------------------------------------
7912 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7913
7914 ----------------------------------------------------------------------------------
7915 -- 4219869 Business Flow
7916 -- Update journal entry status -- Need to generate this within IF <condition>
7917 ----------------------------------------------------------------------------------
7918 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7919 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7920 ,p_balance_type_code => l_balance_type_code
7921 );
7922
7923 -------------------------------------------------------------------------------------------
7924 -- 4262811 - Generate the Accrual Reversal lines
7925 -------------------------------------------------------------------------------------------
7926 BEGIN
7927 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7928 (g_array_event(p_event_id).array_value_num('header_index'));
7929 IF l_acc_rev_flag IS NULL THEN
7930 l_acc_rev_flag := 'N';
7931 END IF;
7932 EXCEPTION
7933 WHEN OTHERS THEN
7934 l_acc_rev_flag := 'N';
7935 END;
7936 --
7937 IF (l_acc_rev_flag = 'Y') THEN
7938
7939 -- 4645092 ------------------------------------------------------------------------------
7940 -- To allow MPA report to determine if it should generate report process
7941 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7942 ------------------------------------------------------------------------------------------
7943
7944 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7945 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7946 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
7947 -- call ADRs
7948 -- Bug 4922099
7949 --
7950 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7951 (NVL(l_actual_upg_option, 'N') = 'O') OR
7952 (NVL(l_enc_upg_option, 'N') = 'O')
7953 )
7954 THEN
7955 NULL;
7956 --
7957 --
7958
7959 l_ccid := AcctDerRule_4(
7960 p_application_id => p_application_id
7961 , p_ae_header_id => l_ae_header_id
7962 , p_source_4 => p_source_4
7963 , x_transaction_coa_id => l_adr_transaction_coa_id
7964 , x_accounting_coa_id => l_adr_accounting_coa_id
7965 , x_value_type_code => l_adr_value_type_code
7966 , p_side => 'NA'
7967 );
7968
7969 xla_ae_lines_pkg.set_ccid(
7970 p_code_combination_id => l_ccid
7971 , p_value_type_code => l_adr_value_type_code
7972 , p_transaction_coa_id => l_adr_transaction_coa_id
7973 , p_accounting_coa_id => l_adr_accounting_coa_id
7974 , p_adr_code => 'CST_DEFAULT'
7975 , p_adr_type_code => 'S'
7976 , p_component_type => l_component_type
7977 , p_component_code => l_component_code
7978 , p_component_type_code => l_component_type_code
7979 , p_component_appl_id => l_component_appl_id
7980 , p_amb_context_code => l_amb_context_code
7981 , p_side => 'NA'
7982 );
7983
7984
7985 --
7986 --
7987 END IF;
7988
7989 --
7990 -- Update the line information that should be overwritten
7991 --
7992 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7993 p_header_num => 1);
7994 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
7995
7996 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7997
7998 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
7999 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8000 END IF;
8001
8002 --
8003 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8004 --
8005 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8006 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
8007 ELSE
8008 ---------------------------------------------------------------------------------------------------
8009 -- 4262811a Switch Sign
8010 ---------------------------------------------------------------------------------------------------
8011 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
8012 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8013 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8014 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8015 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8016 -- 5132302
8017 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8018 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8019
8020 END IF;
8021
8022 -- 4955764
8023 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8024 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8025
8026
8027 XLA_AE_LINES_PKG.ValidateCurrentLine;
8028 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8029
8030 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8031 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8032 ,p_balance_type_code => l_balance_type_code);
8033
8034 END IF;
8035
8036 -----------------------------------------------------------------------------------------
8037 -- 4262811 Multiperiod Accounting
8038 -----------------------------------------------------------------------------------------
8039 -- No MPA option is assigned.
8040
8041
8042 END IF;
8043 END IF;
8044 --
8045
8046 --
8047 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8048 trace
8049 (p_msg => 'END of AcctLineType_17'
8050 ,p_level => C_LEVEL_PROCEDURE
8051 ,p_module => l_log_module);
8052 END IF;
8053 --
8054 EXCEPTION
8055 WHEN xla_exceptions_pkg.application_exception THEN
8056 RAISE;
8057 WHEN OTHERS THEN
8058 xla_exceptions_pkg.raise_message
8059 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_17');
8060 END AcctLineType_17;
8061 --
8062
8063 ---------------------------------------
8064 --
8065 -- PRIVATE FUNCTION
8066 -- AcctLineType_18
8067 --
8068 ---------------------------------------
8069 PROCEDURE AcctLineType_18 (
8070 p_application_id IN NUMBER
8071 ,p_event_id IN NUMBER
8072 ,p_calculate_acctd_flag IN VARCHAR2
8073 ,p_calculate_g_l_flag IN VARCHAR2
8074 ,p_actual_flag IN OUT VARCHAR2
8075 ,p_balance_type_code OUT VARCHAR2
8076 ,p_gain_or_loss_ref OUT VARCHAR2
8077
8078 --Cost Management Default Account
8079 , p_source_4 IN NUMBER
8080 --DISTRIBUTION_IDENTIFIER
8081 , p_source_11 IN NUMBER
8082 --Distribution Type
8083 , p_source_12 IN VARCHAR2
8084 , p_source_12_meaning IN VARCHAR2
8085 --Entered Currency Code
8086 , p_source_15 IN VARCHAR2
8087 --Entered Amount
8088 , p_source_18 IN NUMBER
8089 --Currency Conversion Date
8090 , p_source_19 IN DATE
8091 --Currency Conversion Rate
8092 , p_source_20 IN NUMBER
8093 --Currency Conversion Type
8094 , p_source_21 IN VARCHAR2
8095 --Accounted Amount
8096 , p_source_22 IN NUMBER
8097 --Accounting Line Type
8098 , p_source_24 IN NUMBER
8099 )
8100 IS
8101
8102 l_component_type VARCHAR2(80);
8103 l_component_code VARCHAR2(30);
8104 l_component_type_code VARCHAR2(1);
8105 l_component_appl_id INTEGER;
8106 l_amb_context_code VARCHAR2(30);
8107 l_entity_code VARCHAR2(30);
8108 l_event_class_code VARCHAR2(30);
8109 l_ae_header_id NUMBER;
8110 l_event_type_code VARCHAR2(30);
8111 l_line_definition_code VARCHAR2(30);
8112 l_line_definition_owner_code VARCHAR2(1);
8113 --
8114 -- adr variables
8115 l_segment VARCHAR2(30);
8116 l_ccid NUMBER;
8117 l_adr_transaction_coa_id NUMBER;
8118 l_adr_accounting_coa_id NUMBER;
8119 l_adr_flexfield_segment_code VARCHAR2(30);
8120 l_adr_flex_value_set_id NUMBER;
8121 l_adr_value_type_code VARCHAR2(30);
8122 l_adr_value_combination_id NUMBER;
8123 l_adr_value_segment_code VARCHAR2(30);
8124
8125 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
8126 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
8127 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
8128 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
8129
8130 -- 4262811 Variables ------------------------------------------------------------------------------------------
8131 l_entered_amt_idx NUMBER;
8132 l_accted_amt_idx NUMBER;
8133 l_acc_rev_flag VARCHAR2(1);
8134 l_accrual_line_num NUMBER;
8135 l_tmp_amt NUMBER;
8136 l_acc_rev_natural_side_code VARCHAR2(1);
8137
8138 l_num_entries NUMBER;
8139 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
8140 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
8141 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
8142 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
8143 l_recog_line_1 NUMBER;
8144 l_recog_line_2 NUMBER;
8145
8146 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
8147 l_bflow_applied_to_amt NUMBER; -- 5132302
8148 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
8149
8150 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8151
8152 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
8153 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
8154
8155 ---------------------------------------------------------------------------------------------------------------
8156
8157
8158 --
8159 -- bulk performance
8160 --
8161 l_balance_type_code VARCHAR2(1);
8162 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
8163 l_log_module VARCHAR2(240);
8164
8165 --
8166 -- Upgrade strategy
8167 --
8168 l_actual_upg_option VARCHAR2(1);
8169 l_enc_upg_option VARCHAR2(1);
8170
8171 --
8172 BEGIN
8173 --
8174 IF g_log_enabled THEN
8175 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
8176 END IF;
8177 --
8178 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8179
8180 trace
8181 (p_msg => 'BEGIN of AcctLineType_18'
8182 ,p_level => C_LEVEL_PROCEDURE
8183 ,p_module => l_log_module);
8184
8185 END IF;
8186 --
8187 l_component_type := 'AMB_JLT';
8188 l_component_code := 'COST_OF_GOODS_SOLD';
8189 l_component_type_code := 'S';
8190 l_component_appl_id := 707;
8191 l_amb_context_code := 'DEFAULT';
8192 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
8193 l_event_class_code := 'USER_DEFINE';
8194 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_TP';
8195 l_line_definition_owner_code := 'S';
8196 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
8197 --
8198 l_balance_type_code := 'A';
8199 l_segment := NULL;
8200 l_ccid := NULL;
8201 l_adr_transaction_coa_id := NULL;
8202 l_adr_accounting_coa_id := NULL;
8203 l_adr_flexfield_segment_code := NULL;
8204 l_adr_flex_value_set_id := NULL;
8205 l_adr_value_type_code := NULL;
8206 l_adr_value_combination_id := NULL;
8207 l_adr_value_segment_code := NULL;
8208
8209 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
8210 l_bflow_class_code := ''; -- 4219869 Business Flow
8211 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
8212 l_budgetary_control_flag := 'N';
8213
8214 l_bflow_applied_to_amt_idx := NULL; -- 5132302
8215 l_bflow_applied_to_amt := NULL; -- 5132302
8216 l_entered_amt_idx := NULL; -- 4262811
8217 l_accted_amt_idx := NULL; -- 4262811
8218 l_acc_rev_flag := NULL; -- 4262811
8219 l_accrual_line_num := NULL; -- 4262811
8220 l_tmp_amt := NULL; -- 4262811
8221 --
8222
8223 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8224 l_balance_type_code <> 'B' THEN
8225 IF NVL(p_source_24,9E125) = 2 AND
8226 p_source_22 > 0
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_000005_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 := 'FOB_RCPT_SENDER_RCPT';
8749 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
8750 l_line_definition_owner_code := 'S';
8751 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
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_000005_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 := 'SALES_ORDER';
9304 l_event_type_code := 'SALES_ORDER_ALL';
9305 l_line_definition_owner_code := 'S';
9306 l_line_definition_code := 'SALES_ORDER';
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) = 35
9336 THEN
9337
9338 --
9339 XLA_AE_LINES_PKG.SetNewLine;
9340
9341 p_balance_type_code := l_balance_type_code;
9342 -- set the flag so later we will know whether the gain loss line needs to be created
9343
9344 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9345 p_actual_flag :='A';
9346 END IF;
9347
9348 --
9349 -- bulk performance
9350 --
9351 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9352 p_header_num => 0); -- 4262811
9353 --
9354 -- set accounting line options
9355 --
9356 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9357 p_natural_side_code => 'D'
9358 , p_gain_or_loss_flag => 'N'
9359 , p_gl_transfer_mode_code => 'S'
9360 , p_acct_entry_type_code => 'A'
9361 , p_switch_side_flag => 'Y'
9362 , p_merge_duplicate_code => 'N'
9363 );
9364 --
9365 l_acc_rev_natural_side_code := 'C'; -- 4262811
9366 --
9367 --
9368 -- set accounting line type info
9369 --
9370 xla_ae_lines_pkg.SetAcctLineType
9371 (p_component_type => l_component_type
9372 ,p_event_type_code => l_event_type_code
9373 ,p_line_definition_owner_code => l_line_definition_owner_code
9374 ,p_line_definition_code => l_line_definition_code
9375 ,p_accounting_line_code => l_component_code
9376 ,p_accounting_line_type_code => l_component_type_code
9377 ,p_accounting_line_appl_id => l_component_appl_id
9378 ,p_amb_context_code => l_amb_context_code
9379 ,p_entity_code => l_entity_code
9380 ,p_event_class_code => l_event_class_code);
9381 --
9382 -- set accounting class
9383 --
9384 xla_ae_lines_pkg.SetAcctClass(
9385 p_accounting_class_code => 'COST_OF_GOODS_SOLD'
9386 , p_ae_header_id => l_ae_header_id
9387 );
9388
9389 --
9390 -- set rounding class
9391 --
9392 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9393 'COST_OF_GOODS_SOLD';
9394
9395 --
9396 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9397 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9398 --
9399 -- bulk performance
9400 --
9401 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9402
9403 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9404 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9405
9406 -- 4955764
9407 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9408 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9409
9410 -- 4458381 Public Sector Enh
9411
9412 --
9413 -- set accounting attributes for the line type
9414 --
9415 l_entered_amt_idx := 3;
9416 l_accted_amt_idx := 8;
9417 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9418 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9419 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
9420 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9421 l_rec_acct_attrs.array_char_value(2) := p_source_12;
9422 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9423 l_rec_acct_attrs.array_num_value(3) := p_source_18;
9424 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9425 l_rec_acct_attrs.array_char_value(4) := p_source_15;
9426 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9427 l_rec_acct_attrs.array_date_value(5) := p_source_19;
9428 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9429 l_rec_acct_attrs.array_num_value(6) := p_source_20;
9430 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9431 l_rec_acct_attrs.array_char_value(7) := p_source_21;
9432 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9433 l_rec_acct_attrs.array_num_value(8) := p_source_22;
9434
9435 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9436 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9437
9438 ---------------------------------------------------------------------------------------------------------------
9439 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9440 ---------------------------------------------------------------------------------------------------------------
9441 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9442
9443 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9444 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9445
9446 IF xla_accounting_cache_pkg.GetValueChar
9447 (p_source_code => 'LEDGER_CATEGORY_CODE'
9448 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9449 AND l_bflow_method_code = 'PRIOR_ENTRY'
9450 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9451 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9452 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9453 )
9454 THEN
9455 xla_ae_lines_pkg.BflowUpgEntry
9456 (p_business_method_code => l_bflow_method_code
9457 ,p_business_class_code => l_bflow_class_code
9458 ,p_balance_type => l_balance_type_code);
9459 ELSE
9460 NULL;
9461 -- No business flow processing for business flow method of NONE.
9462 END IF;
9463
9464 --
9465 -- call analytical criteria
9466 --
9467
9468 --
9469 -- call description
9470 --
9471 -- No description or it is inherited.
9472 --
9473 -- call ADRs
9474 -- Bug 4922099
9475 --
9476 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9477 (NVL(l_actual_upg_option, 'N') = 'O') OR
9478 (NVL(l_enc_upg_option, 'N') = 'O')
9479 )
9480 THEN
9481 NULL;
9482 --
9483 --
9484
9485 l_ccid := AcctDerRule_4(
9486 p_application_id => p_application_id
9487 , p_ae_header_id => l_ae_header_id
9488 , p_source_4 => p_source_4
9489 , x_transaction_coa_id => l_adr_transaction_coa_id
9490 , x_accounting_coa_id => l_adr_accounting_coa_id
9491 , x_value_type_code => l_adr_value_type_code
9492 , p_side => 'NA'
9493 );
9494
9495 xla_ae_lines_pkg.set_ccid(
9496 p_code_combination_id => l_ccid
9497 , p_value_type_code => l_adr_value_type_code
9498 , p_transaction_coa_id => l_adr_transaction_coa_id
9499 , p_accounting_coa_id => l_adr_accounting_coa_id
9500 , p_adr_code => 'CST_DEFAULT'
9501 , p_adr_type_code => 'S'
9502 , p_component_type => l_component_type
9503 , p_component_code => l_component_code
9504 , p_component_type_code => l_component_type_code
9505 , p_component_appl_id => l_component_appl_id
9506 , p_amb_context_code => l_amb_context_code
9507 , p_side => 'NA'
9508 );
9509
9510
9511 --
9512 --
9513 END IF;
9514 --
9515 -- Bug 4922099
9516 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9517 (NVL(l_enc_upg_option, 'N') = 'O')
9518 ) AND
9519 (l_bflow_method_code = 'PRIOR_ENTRY')
9520 )
9521 THEN
9522 IF
9523 --
9524 1 = 2
9525 --
9526 THEN
9527 xla_accounting_err_pkg.build_message
9528 (p_appli_s_name => 'XLA'
9529 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9530 ,p_token_1 => 'LINE_NUMBER'
9531 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
9532 ,p_token_2 => 'LINE_TYPE_NAME'
9533 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
9534 l_component_type
9535 ,l_component_code
9536 ,l_component_type_code
9537 ,l_component_appl_id
9538 ,l_amb_context_code
9539 ,l_entity_code
9540 ,l_event_class_code
9541 )
9542 ,p_token_3 => 'OWNER'
9543 ,p_value_3 => xla_lookups_pkg.get_meaning(
9544 p_lookup_type => 'XLA_OWNER_TYPE'
9545 ,p_lookup_code => l_component_type_code
9546 )
9547 ,p_token_4 => 'PRODUCT_NAME'
9548 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9549 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9550 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9551 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9552 ,p_ae_header_id => NULL
9553 );
9554
9555 IF (C_LEVEL_ERROR>= g_log_level) THEN
9556 trace
9557 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9558 ,p_level => C_LEVEL_ERROR
9559 ,p_module => l_log_module);
9560 END IF;
9561 END IF;
9562 END IF;
9563 --
9564 --
9565 ------------------------------------------------------------------------------------------------
9566 -- 4219869 Business Flow
9567 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9568 -- Prior Entry. Currently, the following code is always generated.
9569 ------------------------------------------------------------------------------------------------
9570 XLA_AE_LINES_PKG.ValidateCurrentLine;
9571
9572 ------------------------------------------------------------------------------------
9573 -- 4219869 Business Flow
9574 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9575 ------------------------------------------------------------------------------------
9576 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9577
9578 ----------------------------------------------------------------------------------
9579 -- 4219869 Business Flow
9580 -- Update journal entry status -- Need to generate this within IF <condition>
9581 ----------------------------------------------------------------------------------
9582 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9583 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9584 ,p_balance_type_code => l_balance_type_code
9585 );
9586
9587 -------------------------------------------------------------------------------------------
9588 -- 4262811 - Generate the Accrual Reversal lines
9589 -------------------------------------------------------------------------------------------
9590 BEGIN
9591 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9592 (g_array_event(p_event_id).array_value_num('header_index'));
9593 IF l_acc_rev_flag IS NULL THEN
9594 l_acc_rev_flag := 'N';
9595 END IF;
9596 EXCEPTION
9597 WHEN OTHERS THEN
9598 l_acc_rev_flag := 'N';
9599 END;
9600 --
9601 IF (l_acc_rev_flag = 'Y') THEN
9602
9603 -- 4645092 ------------------------------------------------------------------------------
9604 -- To allow MPA report to determine if it should generate report process
9605 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9606 ------------------------------------------------------------------------------------------
9607
9608 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9609 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9610 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
9611 -- call ADRs
9612 -- Bug 4922099
9613 --
9614 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9615 (NVL(l_actual_upg_option, 'N') = 'O') OR
9616 (NVL(l_enc_upg_option, 'N') = 'O')
9617 )
9618 THEN
9619 NULL;
9620 --
9621 --
9622
9623 l_ccid := AcctDerRule_4(
9624 p_application_id => p_application_id
9625 , p_ae_header_id => l_ae_header_id
9626 , p_source_4 => p_source_4
9627 , x_transaction_coa_id => l_adr_transaction_coa_id
9628 , x_accounting_coa_id => l_adr_accounting_coa_id
9629 , x_value_type_code => l_adr_value_type_code
9630 , p_side => 'NA'
9631 );
9632
9633 xla_ae_lines_pkg.set_ccid(
9634 p_code_combination_id => l_ccid
9635 , p_value_type_code => l_adr_value_type_code
9636 , p_transaction_coa_id => l_adr_transaction_coa_id
9637 , p_accounting_coa_id => l_adr_accounting_coa_id
9638 , p_adr_code => 'CST_DEFAULT'
9639 , p_adr_type_code => 'S'
9640 , p_component_type => l_component_type
9641 , p_component_code => l_component_code
9642 , p_component_type_code => l_component_type_code
9643 , p_component_appl_id => l_component_appl_id
9644 , p_amb_context_code => l_amb_context_code
9645 , p_side => 'NA'
9646 );
9647
9648
9649 --
9650 --
9651 END IF;
9652
9653 --
9654 -- Update the line information that should be overwritten
9655 --
9656 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9657 p_header_num => 1);
9658 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
9659
9660 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9661
9662 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
9663 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9664 END IF;
9665
9666 --
9667 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9668 --
9669 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9670 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
9671 ELSE
9672 ---------------------------------------------------------------------------------------------------
9673 -- 4262811a Switch Sign
9674 ---------------------------------------------------------------------------------------------------
9675 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
9676 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9677 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9678 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9679 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9680 -- 5132302
9681 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9682 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9683
9684 END IF;
9685
9686 -- 4955764
9687 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9688 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9689
9690
9691 XLA_AE_LINES_PKG.ValidateCurrentLine;
9692 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9693
9694 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9695 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9696 ,p_balance_type_code => l_balance_type_code);
9697
9698 END IF;
9699
9700 -----------------------------------------------------------------------------------------
9701 -- 4262811 Multiperiod Accounting
9702 -----------------------------------------------------------------------------------------
9703 -- No MPA option is assigned.
9704
9705
9706 END IF;
9707 END IF;
9708 --
9709
9710 --
9711 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9712 trace
9713 (p_msg => 'END of AcctLineType_20'
9714 ,p_level => C_LEVEL_PROCEDURE
9715 ,p_module => l_log_module);
9716 END IF;
9717 --
9718 EXCEPTION
9719 WHEN xla_exceptions_pkg.application_exception THEN
9720 RAISE;
9721 WHEN OTHERS THEN
9722 xla_exceptions_pkg.raise_message
9723 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_20');
9724 END AcctLineType_20;
9725 --
9726
9727 ---------------------------------------
9728 --
9729 -- PRIVATE FUNCTION
9730 -- AcctLineType_21
9731 --
9732 ---------------------------------------
9733 PROCEDURE AcctLineType_21 (
9734 p_application_id IN NUMBER
9735 ,p_event_id IN NUMBER
9736 ,p_calculate_acctd_flag IN VARCHAR2
9737 ,p_calculate_g_l_flag IN VARCHAR2
9738 ,p_actual_flag IN OUT VARCHAR2
9739 ,p_balance_type_code OUT VARCHAR2
9740 ,p_gain_or_loss_ref OUT VARCHAR2
9741
9742 --Cost Management Default Account
9743 , p_source_4 IN NUMBER
9744 --DISTRIBUTION_IDENTIFIER
9745 , p_source_11 IN NUMBER
9746 --Distribution Type
9747 , p_source_12 IN VARCHAR2
9748 , p_source_12_meaning IN VARCHAR2
9749 --Entered Currency Code
9750 , p_source_15 IN VARCHAR2
9751 --Entered Amount
9752 , p_source_18 IN NUMBER
9753 --Currency Conversion Date
9754 , p_source_19 IN DATE
9755 --Currency Conversion Rate
9756 , p_source_20 IN NUMBER
9757 --Currency Conversion Type
9758 , p_source_21 IN VARCHAR2
9759 --Accounted Amount
9760 , p_source_22 IN NUMBER
9761 --Accounting Line Type
9762 , p_source_24 IN NUMBER
9763 )
9764 IS
9765
9766 l_component_type VARCHAR2(80);
9767 l_component_code VARCHAR2(30);
9768 l_component_type_code VARCHAR2(1);
9769 l_component_appl_id INTEGER;
9770 l_amb_context_code VARCHAR2(30);
9771 l_entity_code VARCHAR2(30);
9772 l_event_class_code VARCHAR2(30);
9773 l_ae_header_id NUMBER;
9774 l_event_type_code VARCHAR2(30);
9775 l_line_definition_code VARCHAR2(30);
9776 l_line_definition_owner_code VARCHAR2(1);
9777 --
9778 -- adr variables
9779 l_segment VARCHAR2(30);
9780 l_ccid NUMBER;
9781 l_adr_transaction_coa_id NUMBER;
9782 l_adr_accounting_coa_id NUMBER;
9783 l_adr_flexfield_segment_code VARCHAR2(30);
9784 l_adr_flex_value_set_id NUMBER;
9785 l_adr_value_type_code VARCHAR2(30);
9786 l_adr_value_combination_id NUMBER;
9787 l_adr_value_segment_code VARCHAR2(30);
9788
9789 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
9790 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
9791 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
9792 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
9793
9794 -- 4262811 Variables ------------------------------------------------------------------------------------------
9795 l_entered_amt_idx NUMBER;
9796 l_accted_amt_idx NUMBER;
9797 l_acc_rev_flag VARCHAR2(1);
9798 l_accrual_line_num NUMBER;
9799 l_tmp_amt NUMBER;
9800 l_acc_rev_natural_side_code VARCHAR2(1);
9801
9802 l_num_entries NUMBER;
9803 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
9804 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
9805 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
9806 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
9807 l_recog_line_1 NUMBER;
9808 l_recog_line_2 NUMBER;
9809
9810 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
9811 l_bflow_applied_to_amt NUMBER; -- 5132302
9812 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
9813
9814 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9815
9816 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
9817 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
9818
9819 ---------------------------------------------------------------------------------------------------------------
9820
9821
9822 --
9823 -- bulk performance
9824 --
9825 l_balance_type_code VARCHAR2(1);
9826 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
9827 l_log_module VARCHAR2(240);
9828
9829 --
9830 -- Upgrade strategy
9831 --
9832 l_actual_upg_option VARCHAR2(1);
9833 l_enc_upg_option VARCHAR2(1);
9834
9835 --
9836 BEGIN
9837 --
9838 IF g_log_enabled THEN
9839 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
9840 END IF;
9841 --
9842 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9843
9844 trace
9845 (p_msg => 'BEGIN of AcctLineType_21'
9846 ,p_level => C_LEVEL_PROCEDURE
9847 ,p_module => l_log_module);
9848
9849 END IF;
9850 --
9851 l_component_type := 'AMB_JLT';
9852 l_component_code := 'COST_OF_GOODS_SOLD';
9853 l_component_type_code := 'S';
9854 l_component_appl_id := 707;
9855 l_amb_context_code := 'DEFAULT';
9856 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
9857 l_event_class_code := 'USER_DEFINE';
9858 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
9859 l_line_definition_owner_code := 'S';
9860 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
9861 --
9862 l_balance_type_code := 'A';
9863 l_segment := NULL;
9864 l_ccid := NULL;
9865 l_adr_transaction_coa_id := NULL;
9866 l_adr_accounting_coa_id := NULL;
9867 l_adr_flexfield_segment_code := NULL;
9868 l_adr_flex_value_set_id := NULL;
9869 l_adr_value_type_code := NULL;
9870 l_adr_value_combination_id := NULL;
9871 l_adr_value_segment_code := NULL;
9872
9873 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
9874 l_bflow_class_code := ''; -- 4219869 Business Flow
9875 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
9876 l_budgetary_control_flag := 'N';
9877
9878 l_bflow_applied_to_amt_idx := NULL; -- 5132302
9879 l_bflow_applied_to_amt := NULL; -- 5132302
9880 l_entered_amt_idx := NULL; -- 4262811
9881 l_accted_amt_idx := NULL; -- 4262811
9882 l_acc_rev_flag := NULL; -- 4262811
9883 l_accrual_line_num := NULL; -- 4262811
9884 l_tmp_amt := NULL; -- 4262811
9885 --
9886
9887 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9888 l_balance_type_code <> 'B' THEN
9889 IF NVL(p_source_24,9E125) = 2 AND
9890 p_source_22 > 0
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_OF_GOODS_SOLD'
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_OF_GOODS_SOLD';
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_000005_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 := 'WIP_ACCOUNTING_EVENTS';
10412 l_event_class_code := 'WIP_COST_UPD';
10413 l_event_type_code := 'WIP_COST_UPD_ALL';
10414 l_line_definition_owner_code := 'S';
10415 l_line_definition_code := 'COST_UPDATE';
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_000005_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 := 'USER_DEFINE';
10967 l_event_type_code := 'UIPV_TXFR';
10968 l_line_definition_owner_code := 'S';
10969 l_line_definition_code := 'USER_IPV_TXFR';
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) = 2
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_000005_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_000005_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_UPDATE_ADJUSTMENT';
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 := 'MTL_COST_UPD';
12075 l_event_type_code := 'MTL_COST_UPD_ALL';
12076 l_line_definition_owner_code := 'S';
12077 l_line_definition_code := 'MTL_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) = 2
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_UPDATE_ADJUSTMENT'
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_UPDATE_ADJUSTMENT';
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_000005_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_UPDATE_ADJUSTMENT';
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 := 'SALES_ORDER';
12629 l_event_type_code := 'SALES_ORDER_ALL';
12630 l_line_definition_owner_code := 'S';
12631 l_line_definition_code := 'SALES_ORDER';
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) = 37
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_UPDATE_ADJUSTMENT'
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_UPDATE_ADJUSTMENT';
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_000005_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 --DISTRIBUTION_IDENTIFIER
13070 , p_source_11 IN NUMBER
13071 --Distribution Type
13072 , p_source_12 IN VARCHAR2
13073 , p_source_12_meaning IN VARCHAR2
13074 --Entered Currency Code
13075 , p_source_15 IN VARCHAR2
13076 --Entered Amount
13077 , p_source_18 IN NUMBER
13078 --Currency Conversion Date
13079 , p_source_19 IN DATE
13080 --Currency Conversion Rate
13081 , p_source_20 IN NUMBER
13082 --Currency Conversion Type
13083 , p_source_21 IN VARCHAR2
13084 --Accounted Amount
13085 , p_source_22 IN NUMBER
13086 --Accounting Line Type
13087 , p_source_24 IN NUMBER
13088 )
13089 IS
13090
13091 l_component_type VARCHAR2(80);
13092 l_component_code VARCHAR2(30);
13093 l_component_type_code VARCHAR2(1);
13094 l_component_appl_id INTEGER;
13095 l_amb_context_code VARCHAR2(30);
13096 l_entity_code VARCHAR2(30);
13097 l_event_class_code VARCHAR2(30);
13098 l_ae_header_id NUMBER;
13099 l_event_type_code VARCHAR2(30);
13100 l_line_definition_code VARCHAR2(30);
13101 l_line_definition_owner_code VARCHAR2(1);
13102 --
13103 -- adr variables
13104 l_segment VARCHAR2(30);
13105 l_ccid NUMBER;
13106 l_adr_transaction_coa_id NUMBER;
13107 l_adr_accounting_coa_id NUMBER;
13108 l_adr_flexfield_segment_code VARCHAR2(30);
13109 l_adr_flex_value_set_id NUMBER;
13110 l_adr_value_type_code VARCHAR2(30);
13111 l_adr_value_combination_id NUMBER;
13112 l_adr_value_segment_code VARCHAR2(30);
13113
13114 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
13115 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
13116 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
13117 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
13118
13119 -- 4262811 Variables ------------------------------------------------------------------------------------------
13120 l_entered_amt_idx NUMBER;
13121 l_accted_amt_idx NUMBER;
13122 l_acc_rev_flag VARCHAR2(1);
13123 l_accrual_line_num NUMBER;
13124 l_tmp_amt NUMBER;
13125 l_acc_rev_natural_side_code VARCHAR2(1);
13126
13127 l_num_entries NUMBER;
13128 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
13129 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
13130 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
13131 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
13132 l_recog_line_1 NUMBER;
13133 l_recog_line_2 NUMBER;
13134
13135 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
13136 l_bflow_applied_to_amt NUMBER; -- 5132302
13137 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
13138
13139 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13140
13141 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
13142 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
13143
13144 ---------------------------------------------------------------------------------------------------------------
13145
13146
13147 --
13148 -- bulk performance
13149 --
13150 l_balance_type_code VARCHAR2(1);
13151 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
13152 l_log_module VARCHAR2(240);
13153
13154 --
13155 -- Upgrade strategy
13156 --
13157 l_actual_upg_option VARCHAR2(1);
13158 l_enc_upg_option VARCHAR2(1);
13159
13160 --
13161 BEGIN
13162 --
13163 IF g_log_enabled THEN
13164 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
13165 END IF;
13166 --
13167 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13168
13169 trace
13170 (p_msg => 'BEGIN of AcctLineType_27'
13171 ,p_level => C_LEVEL_PROCEDURE
13172 ,p_module => l_log_module);
13173
13174 END IF;
13175 --
13176 l_component_type := 'AMB_JLT';
13177 l_component_code := 'COST_VARIANCE';
13178 l_component_type_code := 'S';
13179 l_component_appl_id := 707;
13180 l_amb_context_code := 'DEFAULT';
13181 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
13182 l_event_class_code := 'USER_DEFINE';
13183 l_event_type_code := 'UAVG_COST_UPD';
13184 l_line_definition_owner_code := 'S';
13185 l_line_definition_code := 'USER_COST_UPD';
13186 --
13187 l_balance_type_code := 'A';
13188 l_segment := NULL;
13189 l_ccid := NULL;
13190 l_adr_transaction_coa_id := NULL;
13191 l_adr_accounting_coa_id := NULL;
13192 l_adr_flexfield_segment_code := NULL;
13193 l_adr_flex_value_set_id := NULL;
13194 l_adr_value_type_code := NULL;
13195 l_adr_value_combination_id := NULL;
13196 l_adr_value_segment_code := NULL;
13197
13198 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
13199 l_bflow_class_code := ''; -- 4219869 Business Flow
13200 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
13201 l_budgetary_control_flag := 'N';
13202
13203 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13204 l_bflow_applied_to_amt := NULL; -- 5132302
13205 l_entered_amt_idx := NULL; -- 4262811
13206 l_accted_amt_idx := NULL; -- 4262811
13207 l_acc_rev_flag := NULL; -- 4262811
13208 l_accrual_line_num := NULL; -- 4262811
13209 l_tmp_amt := NULL; -- 4262811
13210 --
13211
13212 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13213 l_balance_type_code <> 'B' THEN
13214 IF NVL(p_source_24,9E125) = 13
13215 THEN
13216
13217 --
13218 XLA_AE_LINES_PKG.SetNewLine;
13219
13220 p_balance_type_code := l_balance_type_code;
13221 -- set the flag so later we will know whether the gain loss line needs to be created
13222
13223 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13224 p_actual_flag :='A';
13225 END IF;
13226
13227 --
13228 -- bulk performance
13229 --
13230 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13231 p_header_num => 0); -- 4262811
13232 --
13233 -- set accounting line options
13234 --
13235 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13236 p_natural_side_code => 'D'
13237 , p_gain_or_loss_flag => 'N'
13238 , p_gl_transfer_mode_code => 'S'
13239 , p_acct_entry_type_code => 'A'
13240 , p_switch_side_flag => 'Y'
13241 , p_merge_duplicate_code => 'N'
13242 );
13243 --
13244 l_acc_rev_natural_side_code := 'C'; -- 4262811
13245 --
13246 --
13247 -- set accounting line type info
13248 --
13249 xla_ae_lines_pkg.SetAcctLineType
13250 (p_component_type => l_component_type
13251 ,p_event_type_code => l_event_type_code
13252 ,p_line_definition_owner_code => l_line_definition_owner_code
13253 ,p_line_definition_code => l_line_definition_code
13254 ,p_accounting_line_code => l_component_code
13255 ,p_accounting_line_type_code => l_component_type_code
13256 ,p_accounting_line_appl_id => l_component_appl_id
13257 ,p_amb_context_code => l_amb_context_code
13258 ,p_entity_code => l_entity_code
13259 ,p_event_class_code => l_event_class_code);
13260 --
13261 -- set accounting class
13262 --
13263 xla_ae_lines_pkg.SetAcctClass(
13264 p_accounting_class_code => 'COST_VARIANCE'
13265 , p_ae_header_id => l_ae_header_id
13266 );
13267
13268 --
13269 -- set rounding class
13270 --
13271 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13272 'COST_VARIANCE';
13273
13274 --
13275 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13276 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13277 --
13278 -- bulk performance
13279 --
13280 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13281
13282 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13283 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13284
13285 -- 4955764
13286 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13287 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13288
13289 -- 4458381 Public Sector Enh
13290
13291 --
13292 -- set accounting attributes for the line type
13293 --
13294 l_entered_amt_idx := 3;
13295 l_accted_amt_idx := 8;
13296 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13297 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13298 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
13299 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13300 l_rec_acct_attrs.array_char_value(2) := p_source_12;
13301 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13302 l_rec_acct_attrs.array_num_value(3) := p_source_18;
13303 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13304 l_rec_acct_attrs.array_char_value(4) := p_source_15;
13305 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13306 l_rec_acct_attrs.array_date_value(5) := p_source_19;
13307 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13308 l_rec_acct_attrs.array_num_value(6) := p_source_20;
13309 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13310 l_rec_acct_attrs.array_char_value(7) := p_source_21;
13311 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13312 l_rec_acct_attrs.array_num_value(8) := p_source_22;
13313
13314 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13315 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13316
13317 ---------------------------------------------------------------------------------------------------------------
13318 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13319 ---------------------------------------------------------------------------------------------------------------
13320 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13321
13322 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13323 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13324
13325 IF xla_accounting_cache_pkg.GetValueChar
13326 (p_source_code => 'LEDGER_CATEGORY_CODE'
13327 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13328 AND l_bflow_method_code = 'PRIOR_ENTRY'
13329 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13330 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13331 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13332 )
13333 THEN
13334 xla_ae_lines_pkg.BflowUpgEntry
13335 (p_business_method_code => l_bflow_method_code
13336 ,p_business_class_code => l_bflow_class_code
13337 ,p_balance_type => l_balance_type_code);
13338 ELSE
13339 NULL;
13340 -- No business flow processing for business flow method of NONE.
13341 END IF;
13342
13343 --
13344 -- call analytical criteria
13345 --
13346
13347 --
13348 -- call description
13349 --
13350 -- No description or it is inherited.
13351 --
13352 -- call ADRs
13353 -- Bug 4922099
13354 --
13355 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13356 (NVL(l_actual_upg_option, 'N') = 'O') OR
13357 (NVL(l_enc_upg_option, 'N') = 'O')
13358 )
13359 THEN
13360 NULL;
13361 --
13362 --
13363
13364 l_ccid := AcctDerRule_4(
13365 p_application_id => p_application_id
13366 , p_ae_header_id => l_ae_header_id
13367 , p_source_4 => p_source_4
13368 , x_transaction_coa_id => l_adr_transaction_coa_id
13369 , x_accounting_coa_id => l_adr_accounting_coa_id
13370 , x_value_type_code => l_adr_value_type_code
13371 , p_side => 'NA'
13372 );
13373
13374 xla_ae_lines_pkg.set_ccid(
13375 p_code_combination_id => l_ccid
13376 , p_value_type_code => l_adr_value_type_code
13377 , p_transaction_coa_id => l_adr_transaction_coa_id
13378 , p_accounting_coa_id => l_adr_accounting_coa_id
13379 , p_adr_code => 'CST_DEFAULT'
13380 , p_adr_type_code => 'S'
13381 , p_component_type => l_component_type
13382 , p_component_code => l_component_code
13383 , p_component_type_code => l_component_type_code
13384 , p_component_appl_id => l_component_appl_id
13385 , p_amb_context_code => l_amb_context_code
13386 , p_side => 'NA'
13387 );
13388
13389
13390 --
13391 --
13392 END IF;
13393 --
13394 -- Bug 4922099
13395 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13396 (NVL(l_enc_upg_option, 'N') = 'O')
13397 ) AND
13398 (l_bflow_method_code = 'PRIOR_ENTRY')
13399 )
13400 THEN
13401 IF
13402 --
13403 1 = 2
13404 --
13405 THEN
13406 xla_accounting_err_pkg.build_message
13407 (p_appli_s_name => 'XLA'
13408 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13409 ,p_token_1 => 'LINE_NUMBER'
13410 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
13411 ,p_token_2 => 'LINE_TYPE_NAME'
13412 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
13413 l_component_type
13414 ,l_component_code
13415 ,l_component_type_code
13416 ,l_component_appl_id
13417 ,l_amb_context_code
13418 ,l_entity_code
13419 ,l_event_class_code
13420 )
13421 ,p_token_3 => 'OWNER'
13422 ,p_value_3 => xla_lookups_pkg.get_meaning(
13423 p_lookup_type => 'XLA_OWNER_TYPE'
13424 ,p_lookup_code => l_component_type_code
13425 )
13426 ,p_token_4 => 'PRODUCT_NAME'
13427 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13428 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13429 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13430 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13431 ,p_ae_header_id => NULL
13432 );
13433
13434 IF (C_LEVEL_ERROR>= g_log_level) THEN
13435 trace
13436 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13437 ,p_level => C_LEVEL_ERROR
13438 ,p_module => l_log_module);
13439 END IF;
13440 END IF;
13441 END IF;
13442 --
13443 --
13444 ------------------------------------------------------------------------------------------------
13445 -- 4219869 Business Flow
13446 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13447 -- Prior Entry. Currently, the following code is always generated.
13448 ------------------------------------------------------------------------------------------------
13449 XLA_AE_LINES_PKG.ValidateCurrentLine;
13450
13451 ------------------------------------------------------------------------------------
13452 -- 4219869 Business Flow
13453 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13454 ------------------------------------------------------------------------------------
13455 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13456
13457 ----------------------------------------------------------------------------------
13458 -- 4219869 Business Flow
13459 -- Update journal entry status -- Need to generate this within IF <condition>
13460 ----------------------------------------------------------------------------------
13461 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13462 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13463 ,p_balance_type_code => l_balance_type_code
13464 );
13465
13466 -------------------------------------------------------------------------------------------
13467 -- 4262811 - Generate the Accrual Reversal lines
13468 -------------------------------------------------------------------------------------------
13469 BEGIN
13470 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13471 (g_array_event(p_event_id).array_value_num('header_index'));
13472 IF l_acc_rev_flag IS NULL THEN
13473 l_acc_rev_flag := 'N';
13474 END IF;
13475 EXCEPTION
13476 WHEN OTHERS THEN
13477 l_acc_rev_flag := 'N';
13478 END;
13479 --
13480 IF (l_acc_rev_flag = 'Y') THEN
13481
13482 -- 4645092 ------------------------------------------------------------------------------
13483 -- To allow MPA report to determine if it should generate report process
13484 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13485 ------------------------------------------------------------------------------------------
13486
13487 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13488 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13489 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
13490 -- call ADRs
13491 -- Bug 4922099
13492 --
13493 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13494 (NVL(l_actual_upg_option, 'N') = 'O') OR
13495 (NVL(l_enc_upg_option, 'N') = 'O')
13496 )
13497 THEN
13498 NULL;
13499 --
13500 --
13501
13502 l_ccid := AcctDerRule_4(
13503 p_application_id => p_application_id
13504 , p_ae_header_id => l_ae_header_id
13505 , p_source_4 => p_source_4
13506 , x_transaction_coa_id => l_adr_transaction_coa_id
13507 , x_accounting_coa_id => l_adr_accounting_coa_id
13508 , x_value_type_code => l_adr_value_type_code
13509 , p_side => 'NA'
13510 );
13511
13512 xla_ae_lines_pkg.set_ccid(
13513 p_code_combination_id => l_ccid
13514 , p_value_type_code => l_adr_value_type_code
13515 , p_transaction_coa_id => l_adr_transaction_coa_id
13516 , p_accounting_coa_id => l_adr_accounting_coa_id
13517 , p_adr_code => 'CST_DEFAULT'
13518 , p_adr_type_code => 'S'
13519 , p_component_type => l_component_type
13520 , p_component_code => l_component_code
13521 , p_component_type_code => l_component_type_code
13522 , p_component_appl_id => l_component_appl_id
13523 , p_amb_context_code => l_amb_context_code
13524 , p_side => 'NA'
13525 );
13526
13527
13528 --
13529 --
13530 END IF;
13531
13532 --
13533 -- Update the line information that should be overwritten
13534 --
13535 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13536 p_header_num => 1);
13537 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
13538
13539 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13540
13541 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
13542 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13543 END IF;
13544
13545 --
13546 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13547 --
13548 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13549 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
13550 ELSE
13551 ---------------------------------------------------------------------------------------------------
13552 -- 4262811a Switch Sign
13553 ---------------------------------------------------------------------------------------------------
13554 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
13555 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13556 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13557 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13558 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13559 -- 5132302
13560 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13561 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13562
13563 END IF;
13564
13565 -- 4955764
13566 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13567 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13568
13569
13570 XLA_AE_LINES_PKG.ValidateCurrentLine;
13571 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13572
13573 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13574 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13575 ,p_balance_type_code => l_balance_type_code);
13576
13577 END IF;
13578
13579 -----------------------------------------------------------------------------------------
13580 -- 4262811 Multiperiod Accounting
13581 -----------------------------------------------------------------------------------------
13582 -- No MPA option is assigned.
13583
13584
13585 END IF;
13586 END IF;
13587 --
13588
13589 --
13590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13591 trace
13592 (p_msg => 'END of AcctLineType_27'
13593 ,p_level => C_LEVEL_PROCEDURE
13594 ,p_module => l_log_module);
13595 END IF;
13596 --
13597 EXCEPTION
13598 WHEN xla_exceptions_pkg.application_exception THEN
13599 RAISE;
13600 WHEN OTHERS THEN
13601 xla_exceptions_pkg.raise_message
13602 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_27');
13603 END AcctLineType_27;
13604 --
13605
13606 ---------------------------------------
13607 --
13608 -- PRIVATE FUNCTION
13609 -- AcctLineType_28
13610 --
13611 ---------------------------------------
13612 PROCEDURE AcctLineType_28 (
13613 p_application_id IN NUMBER
13614 ,p_event_id IN NUMBER
13615 ,p_calculate_acctd_flag IN VARCHAR2
13616 ,p_calculate_g_l_flag IN VARCHAR2
13617 ,p_actual_flag IN OUT VARCHAR2
13618 ,p_balance_type_code OUT VARCHAR2
13619 ,p_gain_or_loss_ref OUT VARCHAR2
13620
13621 --Cost Management Default Account
13622 , p_source_4 IN NUMBER
13623 --DISTRIBUTION_IDENTIFIER
13624 , p_source_11 IN NUMBER
13625 --Distribution Type
13626 , p_source_12 IN VARCHAR2
13627 , p_source_12_meaning IN VARCHAR2
13628 --Entered Currency Code
13629 , p_source_15 IN VARCHAR2
13630 --Entered Amount
13631 , p_source_18 IN NUMBER
13632 --Currency Conversion Date
13633 , p_source_19 IN DATE
13634 --Currency Conversion Rate
13635 , p_source_20 IN NUMBER
13636 --Currency Conversion Type
13637 , p_source_21 IN VARCHAR2
13638 --Accounted Amount
13639 , p_source_22 IN NUMBER
13640 --Accounting Line Type
13641 , p_source_24 IN NUMBER
13642 )
13643 IS
13644
13645 l_component_type VARCHAR2(80);
13646 l_component_code VARCHAR2(30);
13647 l_component_type_code VARCHAR2(1);
13648 l_component_appl_id INTEGER;
13649 l_amb_context_code VARCHAR2(30);
13650 l_entity_code VARCHAR2(30);
13651 l_event_class_code VARCHAR2(30);
13652 l_ae_header_id NUMBER;
13653 l_event_type_code VARCHAR2(30);
13654 l_line_definition_code VARCHAR2(30);
13655 l_line_definition_owner_code VARCHAR2(1);
13656 --
13657 -- adr variables
13658 l_segment VARCHAR2(30);
13659 l_ccid NUMBER;
13660 l_adr_transaction_coa_id NUMBER;
13661 l_adr_accounting_coa_id NUMBER;
13662 l_adr_flexfield_segment_code VARCHAR2(30);
13663 l_adr_flex_value_set_id NUMBER;
13664 l_adr_value_type_code VARCHAR2(30);
13665 l_adr_value_combination_id NUMBER;
13666 l_adr_value_segment_code VARCHAR2(30);
13667
13668 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
13669 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
13670 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
13671 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
13672
13673 -- 4262811 Variables ------------------------------------------------------------------------------------------
13674 l_entered_amt_idx NUMBER;
13675 l_accted_amt_idx NUMBER;
13676 l_acc_rev_flag VARCHAR2(1);
13677 l_accrual_line_num NUMBER;
13678 l_tmp_amt NUMBER;
13679 l_acc_rev_natural_side_code VARCHAR2(1);
13680
13681 l_num_entries NUMBER;
13682 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
13683 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
13684 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
13685 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
13686 l_recog_line_1 NUMBER;
13687 l_recog_line_2 NUMBER;
13688
13689 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
13690 l_bflow_applied_to_amt NUMBER; -- 5132302
13691 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
13692
13693 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13694
13695 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
13696 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
13697
13698 ---------------------------------------------------------------------------------------------------------------
13699
13700
13701 --
13702 -- bulk performance
13703 --
13704 l_balance_type_code VARCHAR2(1);
13705 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
13706 l_log_module VARCHAR2(240);
13707
13708 --
13709 -- Upgrade strategy
13710 --
13711 l_actual_upg_option VARCHAR2(1);
13712 l_enc_upg_option VARCHAR2(1);
13713
13714 --
13715 BEGIN
13716 --
13717 IF g_log_enabled THEN
13718 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
13719 END IF;
13720 --
13721 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13722
13723 trace
13724 (p_msg => 'BEGIN of AcctLineType_28'
13725 ,p_level => C_LEVEL_PROCEDURE
13726 ,p_module => l_log_module);
13727
13728 END IF;
13729 --
13730 l_component_type := 'AMB_JLT';
13731 l_component_code := 'COST_VARIANCE';
13732 l_component_type_code := 'S';
13733 l_component_appl_id := 707;
13734 l_amb_context_code := 'DEFAULT';
13735 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
13736 l_event_class_code := 'USER_DEFINE';
13737 l_event_type_code := 'UMISC_ISSUE';
13738 l_line_definition_owner_code := 'S';
13739 l_line_definition_code := 'USER_ISSUE';
13740 --
13741 l_balance_type_code := 'A';
13742 l_segment := NULL;
13743 l_ccid := NULL;
13744 l_adr_transaction_coa_id := NULL;
13745 l_adr_accounting_coa_id := NULL;
13746 l_adr_flexfield_segment_code := NULL;
13747 l_adr_flex_value_set_id := NULL;
13748 l_adr_value_type_code := NULL;
13749 l_adr_value_combination_id := NULL;
13750 l_adr_value_segment_code := NULL;
13751
13752 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
13753 l_bflow_class_code := ''; -- 4219869 Business Flow
13754 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
13755 l_budgetary_control_flag := 'N';
13756
13757 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13758 l_bflow_applied_to_amt := NULL; -- 5132302
13759 l_entered_amt_idx := NULL; -- 4262811
13760 l_accted_amt_idx := NULL; -- 4262811
13761 l_acc_rev_flag := NULL; -- 4262811
13762 l_accrual_line_num := NULL; -- 4262811
13763 l_tmp_amt := NULL; -- 4262811
13764 --
13765
13766 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13767 l_balance_type_code <> 'B' THEN
13768 IF NVL(p_source_24,9E125) = 13
13769 THEN
13770
13771 --
13772 XLA_AE_LINES_PKG.SetNewLine;
13773
13774 p_balance_type_code := l_balance_type_code;
13775 -- set the flag so later we will know whether the gain loss line needs to be created
13776
13777 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13778 p_actual_flag :='A';
13779 END IF;
13780
13781 --
13782 -- bulk performance
13783 --
13784 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13785 p_header_num => 0); -- 4262811
13786 --
13787 -- set accounting line options
13788 --
13789 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13790 p_natural_side_code => 'D'
13791 , p_gain_or_loss_flag => 'N'
13792 , p_gl_transfer_mode_code => 'S'
13793 , p_acct_entry_type_code => 'A'
13794 , p_switch_side_flag => 'Y'
13795 , p_merge_duplicate_code => 'N'
13796 );
13797 --
13798 l_acc_rev_natural_side_code := 'C'; -- 4262811
13799 --
13800 --
13801 -- set accounting line type info
13802 --
13803 xla_ae_lines_pkg.SetAcctLineType
13804 (p_component_type => l_component_type
13805 ,p_event_type_code => l_event_type_code
13806 ,p_line_definition_owner_code => l_line_definition_owner_code
13807 ,p_line_definition_code => l_line_definition_code
13808 ,p_accounting_line_code => l_component_code
13809 ,p_accounting_line_type_code => l_component_type_code
13810 ,p_accounting_line_appl_id => l_component_appl_id
13811 ,p_amb_context_code => l_amb_context_code
13812 ,p_entity_code => l_entity_code
13813 ,p_event_class_code => l_event_class_code);
13814 --
13815 -- set accounting class
13816 --
13817 xla_ae_lines_pkg.SetAcctClass(
13818 p_accounting_class_code => 'COST_VARIANCE'
13819 , p_ae_header_id => l_ae_header_id
13820 );
13821
13822 --
13823 -- set rounding class
13824 --
13825 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13826 'COST_VARIANCE';
13827
13828 --
13829 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13830 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13831 --
13832 -- bulk performance
13833 --
13834 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13835
13836 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13837 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13838
13839 -- 4955764
13840 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13841 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13842
13843 -- 4458381 Public Sector Enh
13844
13845 --
13846 -- set accounting attributes for the line type
13847 --
13848 l_entered_amt_idx := 3;
13849 l_accted_amt_idx := 8;
13850 l_bflow_applied_to_amt_idx := NULL; -- 5132302
13851 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13852 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
13853 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13854 l_rec_acct_attrs.array_char_value(2) := p_source_12;
13855 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13856 l_rec_acct_attrs.array_num_value(3) := p_source_18;
13857 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13858 l_rec_acct_attrs.array_char_value(4) := p_source_15;
13859 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13860 l_rec_acct_attrs.array_date_value(5) := p_source_19;
13861 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13862 l_rec_acct_attrs.array_num_value(6) := p_source_20;
13863 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13864 l_rec_acct_attrs.array_char_value(7) := p_source_21;
13865 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13866 l_rec_acct_attrs.array_num_value(8) := p_source_22;
13867
13868 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13869 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13870
13871 ---------------------------------------------------------------------------------------------------------------
13872 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13873 ---------------------------------------------------------------------------------------------------------------
13874 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13875
13876 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13877 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13878
13879 IF xla_accounting_cache_pkg.GetValueChar
13880 (p_source_code => 'LEDGER_CATEGORY_CODE'
13881 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13882 AND l_bflow_method_code = 'PRIOR_ENTRY'
13883 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13884 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13885 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13886 )
13887 THEN
13888 xla_ae_lines_pkg.BflowUpgEntry
13889 (p_business_method_code => l_bflow_method_code
13890 ,p_business_class_code => l_bflow_class_code
13891 ,p_balance_type => l_balance_type_code);
13892 ELSE
13893 NULL;
13894 -- No business flow processing for business flow method of NONE.
13895 END IF;
13896
13897 --
13898 -- call analytical criteria
13899 --
13900
13901 --
13902 -- call description
13903 --
13904 -- No description or it is inherited.
13905 --
13906 -- call ADRs
13907 -- Bug 4922099
13908 --
13909 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13910 (NVL(l_actual_upg_option, 'N') = 'O') OR
13911 (NVL(l_enc_upg_option, 'N') = 'O')
13912 )
13913 THEN
13914 NULL;
13915 --
13916 --
13917
13918 l_ccid := AcctDerRule_4(
13919 p_application_id => p_application_id
13920 , p_ae_header_id => l_ae_header_id
13921 , p_source_4 => p_source_4
13922 , x_transaction_coa_id => l_adr_transaction_coa_id
13923 , x_accounting_coa_id => l_adr_accounting_coa_id
13924 , x_value_type_code => l_adr_value_type_code
13925 , p_side => 'NA'
13926 );
13927
13928 xla_ae_lines_pkg.set_ccid(
13929 p_code_combination_id => l_ccid
13930 , p_value_type_code => l_adr_value_type_code
13931 , p_transaction_coa_id => l_adr_transaction_coa_id
13932 , p_accounting_coa_id => l_adr_accounting_coa_id
13933 , p_adr_code => 'CST_DEFAULT'
13934 , p_adr_type_code => 'S'
13935 , p_component_type => l_component_type
13936 , p_component_code => l_component_code
13937 , p_component_type_code => l_component_type_code
13938 , p_component_appl_id => l_component_appl_id
13939 , p_amb_context_code => l_amb_context_code
13940 , p_side => 'NA'
13941 );
13942
13943
13944 --
13945 --
13946 END IF;
13947 --
13948 -- Bug 4922099
13949 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13950 (NVL(l_enc_upg_option, 'N') = 'O')
13951 ) AND
13952 (l_bflow_method_code = 'PRIOR_ENTRY')
13953 )
13954 THEN
13955 IF
13956 --
13957 1 = 2
13958 --
13959 THEN
13960 xla_accounting_err_pkg.build_message
13961 (p_appli_s_name => 'XLA'
13962 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13963 ,p_token_1 => 'LINE_NUMBER'
13964 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
13965 ,p_token_2 => 'LINE_TYPE_NAME'
13966 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
13967 l_component_type
13968 ,l_component_code
13969 ,l_component_type_code
13970 ,l_component_appl_id
13971 ,l_amb_context_code
13972 ,l_entity_code
13973 ,l_event_class_code
13974 )
13975 ,p_token_3 => 'OWNER'
13976 ,p_value_3 => xla_lookups_pkg.get_meaning(
13977 p_lookup_type => 'XLA_OWNER_TYPE'
13978 ,p_lookup_code => l_component_type_code
13979 )
13980 ,p_token_4 => 'PRODUCT_NAME'
13981 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13982 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13983 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13984 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13985 ,p_ae_header_id => NULL
13986 );
13987
13988 IF (C_LEVEL_ERROR>= g_log_level) THEN
13989 trace
13990 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13991 ,p_level => C_LEVEL_ERROR
13992 ,p_module => l_log_module);
13993 END IF;
13994 END IF;
13995 END IF;
13996 --
13997 --
13998 ------------------------------------------------------------------------------------------------
13999 -- 4219869 Business Flow
14000 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14001 -- Prior Entry. Currently, the following code is always generated.
14002 ------------------------------------------------------------------------------------------------
14003 XLA_AE_LINES_PKG.ValidateCurrentLine;
14004
14005 ------------------------------------------------------------------------------------
14006 -- 4219869 Business Flow
14007 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14008 ------------------------------------------------------------------------------------
14009 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14010
14011 ----------------------------------------------------------------------------------
14012 -- 4219869 Business Flow
14013 -- Update journal entry status -- Need to generate this within IF <condition>
14014 ----------------------------------------------------------------------------------
14015 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14016 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14017 ,p_balance_type_code => l_balance_type_code
14018 );
14019
14020 -------------------------------------------------------------------------------------------
14021 -- 4262811 - Generate the Accrual Reversal lines
14022 -------------------------------------------------------------------------------------------
14023 BEGIN
14024 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14025 (g_array_event(p_event_id).array_value_num('header_index'));
14026 IF l_acc_rev_flag IS NULL THEN
14027 l_acc_rev_flag := 'N';
14028 END IF;
14029 EXCEPTION
14030 WHEN OTHERS THEN
14031 l_acc_rev_flag := 'N';
14032 END;
14033 --
14034 IF (l_acc_rev_flag = 'Y') THEN
14035
14036 -- 4645092 ------------------------------------------------------------------------------
14037 -- To allow MPA report to determine if it should generate report process
14038 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14039 ------------------------------------------------------------------------------------------
14040
14041 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14042 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14043 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
14044 -- call ADRs
14045 -- Bug 4922099
14046 --
14047 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14048 (NVL(l_actual_upg_option, 'N') = 'O') OR
14049 (NVL(l_enc_upg_option, 'N') = 'O')
14050 )
14051 THEN
14052 NULL;
14053 --
14054 --
14055
14056 l_ccid := AcctDerRule_4(
14057 p_application_id => p_application_id
14058 , p_ae_header_id => l_ae_header_id
14059 , p_source_4 => p_source_4
14060 , x_transaction_coa_id => l_adr_transaction_coa_id
14061 , x_accounting_coa_id => l_adr_accounting_coa_id
14062 , x_value_type_code => l_adr_value_type_code
14063 , p_side => 'NA'
14064 );
14065
14066 xla_ae_lines_pkg.set_ccid(
14067 p_code_combination_id => l_ccid
14068 , p_value_type_code => l_adr_value_type_code
14069 , p_transaction_coa_id => l_adr_transaction_coa_id
14070 , p_accounting_coa_id => l_adr_accounting_coa_id
14071 , p_adr_code => 'CST_DEFAULT'
14072 , p_adr_type_code => 'S'
14073 , p_component_type => l_component_type
14074 , p_component_code => l_component_code
14075 , p_component_type_code => l_component_type_code
14076 , p_component_appl_id => l_component_appl_id
14077 , p_amb_context_code => l_amb_context_code
14078 , p_side => 'NA'
14079 );
14080
14081
14082 --
14083 --
14084 END IF;
14085
14086 --
14087 -- Update the line information that should be overwritten
14088 --
14089 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14090 p_header_num => 1);
14091 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
14092
14093 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14094
14095 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
14096 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14097 END IF;
14098
14099 --
14100 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14101 --
14102 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14103 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
14104 ELSE
14105 ---------------------------------------------------------------------------------------------------
14106 -- 4262811a Switch Sign
14107 ---------------------------------------------------------------------------------------------------
14108 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
14109 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14110 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14111 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14112 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14113 -- 5132302
14114 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14115 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14116
14117 END IF;
14118
14119 -- 4955764
14120 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14121 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14122
14123
14124 XLA_AE_LINES_PKG.ValidateCurrentLine;
14125 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14126
14127 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14128 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14129 ,p_balance_type_code => l_balance_type_code);
14130
14131 END IF;
14132
14133 -----------------------------------------------------------------------------------------
14134 -- 4262811 Multiperiod Accounting
14135 -----------------------------------------------------------------------------------------
14136 -- No MPA option is assigned.
14137
14138
14139 END IF;
14140 END IF;
14141 --
14142
14143 --
14144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14145 trace
14146 (p_msg => 'END of AcctLineType_28'
14147 ,p_level => C_LEVEL_PROCEDURE
14148 ,p_module => l_log_module);
14149 END IF;
14150 --
14151 EXCEPTION
14152 WHEN xla_exceptions_pkg.application_exception THEN
14153 RAISE;
14154 WHEN OTHERS THEN
14155 xla_exceptions_pkg.raise_message
14156 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_28');
14157 END AcctLineType_28;
14158 --
14159
14160 ---------------------------------------
14161 --
14162 -- PRIVATE FUNCTION
14163 -- AcctLineType_29
14164 --
14165 ---------------------------------------
14166 PROCEDURE AcctLineType_29 (
14167 p_application_id IN NUMBER
14168 ,p_event_id IN NUMBER
14169 ,p_calculate_acctd_flag IN VARCHAR2
14170 ,p_calculate_g_l_flag IN VARCHAR2
14171 ,p_actual_flag IN OUT VARCHAR2
14172 ,p_balance_type_code OUT VARCHAR2
14173 ,p_gain_or_loss_ref OUT VARCHAR2
14174
14175 --Cost Management Default Account
14176 , p_source_4 IN NUMBER
14177 --Applied to Application ID
14178 , p_source_6 IN NUMBER
14179 --Applied to Distribution Link Type
14180 , p_source_7 IN VARCHAR2
14181 --Applied to Entity Code
14182 , p_source_8 IN VARCHAR2
14183 --DISTRIBUTION_IDENTIFIER
14184 , p_source_11 IN NUMBER
14185 --Distribution Type
14186 , p_source_12 IN VARCHAR2
14187 , p_source_12_meaning IN VARCHAR2
14188 --Encumbrance Reversal Amount Entered
14189 , p_source_14 IN NUMBER
14190 --Entered Currency Code
14191 , p_source_15 IN VARCHAR2
14192 --Transaction Encumbrance Reversal Amount
14193 , p_source_16 IN NUMBER
14194 --Entered Amount
14195 , p_source_18 IN NUMBER
14196 --Currency Conversion Date
14197 , p_source_19 IN DATE
14198 --Currency Conversion Rate
14199 , p_source_20 IN NUMBER
14200 --Currency Conversion Type
14201 , p_source_21 IN VARCHAR2
14202 --Accounted Amount
14203 , p_source_22 IN NUMBER
14204 --Accounting Line Type
14205 , p_source_24 IN NUMBER
14206 --Costing Encumbrance Upgrade Option
14207 , p_source_27 IN VARCHAR2
14208 --TXN_PO_DISTRIBUTION_ID
14209 , p_source_28 IN NUMBER
14210 --TXN_PO_HEADER_ID
14211 , p_source_29 IN NUMBER
14212 --Requisition Budget Account
14213 , p_source_30 IN NUMBER
14214 --Requisition Encumbrance Type Identifier
14215 , p_source_31 IN NUMBER
14216 )
14217 IS
14218
14219 l_component_type VARCHAR2(80);
14220 l_component_code VARCHAR2(30);
14221 l_component_type_code VARCHAR2(1);
14222 l_component_appl_id INTEGER;
14223 l_amb_context_code VARCHAR2(30);
14224 l_entity_code VARCHAR2(30);
14225 l_event_class_code VARCHAR2(30);
14226 l_ae_header_id NUMBER;
14227 l_event_type_code VARCHAR2(30);
14228 l_line_definition_code VARCHAR2(30);
14229 l_line_definition_owner_code VARCHAR2(1);
14230 --
14231 -- adr variables
14232 l_segment VARCHAR2(30);
14233 l_ccid NUMBER;
14234 l_adr_transaction_coa_id NUMBER;
14235 l_adr_accounting_coa_id NUMBER;
14236 l_adr_flexfield_segment_code VARCHAR2(30);
14237 l_adr_flex_value_set_id NUMBER;
14238 l_adr_value_type_code VARCHAR2(30);
14239 l_adr_value_combination_id NUMBER;
14240 l_adr_value_segment_code VARCHAR2(30);
14241
14242 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
14243 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
14244 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
14245 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
14246
14247 -- 4262811 Variables ------------------------------------------------------------------------------------------
14248 l_entered_amt_idx NUMBER;
14249 l_accted_amt_idx NUMBER;
14250 l_acc_rev_flag VARCHAR2(1);
14251 l_accrual_line_num NUMBER;
14252 l_tmp_amt NUMBER;
14253 l_acc_rev_natural_side_code VARCHAR2(1);
14254
14255 l_num_entries NUMBER;
14256 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
14257 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
14258 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
14259 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
14260 l_recog_line_1 NUMBER;
14261 l_recog_line_2 NUMBER;
14262
14263 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
14264 l_bflow_applied_to_amt NUMBER; -- 5132302
14265 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
14266
14267 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14268
14269 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
14270 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
14271
14272 ---------------------------------------------------------------------------------------------------------------
14273
14274
14275 --
14276 -- bulk performance
14277 --
14278 l_balance_type_code VARCHAR2(1);
14279 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
14280 l_log_module VARCHAR2(240);
14281
14282 --
14283 -- Upgrade strategy
14284 --
14285 l_actual_upg_option VARCHAR2(1);
14286 l_enc_upg_option VARCHAR2(1);
14287
14288 --
14289 BEGIN
14290 --
14291 IF g_log_enabled THEN
14292 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
14293 END IF;
14294 --
14295 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14296
14297 trace
14298 (p_msg => 'BEGIN of AcctLineType_29'
14299 ,p_level => C_LEVEL_PROCEDURE
14300 ,p_module => l_log_module);
14301
14302 END IF;
14303 --
14304 l_component_type := 'AMB_JLT';
14305 l_component_code := 'COST_VARIANCE';
14306 l_component_type_code := 'S';
14307 l_component_appl_id := 707;
14308 l_amb_context_code := 'DEFAULT';
14309 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
14310 l_event_class_code := 'DIR_INTERORG_RCPT';
14311 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
14312 l_line_definition_owner_code := 'S';
14313 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
14314 --
14315 l_balance_type_code := 'A';
14316 l_segment := NULL;
14317 l_ccid := NULL;
14318 l_adr_transaction_coa_id := NULL;
14319 l_adr_accounting_coa_id := NULL;
14320 l_adr_flexfield_segment_code := NULL;
14321 l_adr_flex_value_set_id := NULL;
14322 l_adr_value_type_code := NULL;
14323 l_adr_value_combination_id := NULL;
14324 l_adr_value_segment_code := NULL;
14325
14326 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
14327 l_bflow_class_code := ''; -- 4219869 Business Flow
14328 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
14329 l_budgetary_control_flag := 'N';
14330
14331 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14332 l_bflow_applied_to_amt := NULL; -- 5132302
14333 l_entered_amt_idx := NULL; -- 4262811
14334 l_accted_amt_idx := NULL; -- 4262811
14335 l_acc_rev_flag := NULL; -- 4262811
14336 l_accrual_line_num := NULL; -- 4262811
14337 l_tmp_amt := NULL; -- 4262811
14338 --
14339
14340 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14341 l_balance_type_code <> 'B' THEN
14342 IF NVL(p_source_24,9E125) = 13
14343 THEN
14344
14345 --
14346 XLA_AE_LINES_PKG.SetNewLine;
14347
14348 p_balance_type_code := l_balance_type_code;
14349 -- set the flag so later we will know whether the gain loss line needs to be created
14350
14351 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14352 p_actual_flag :='A';
14353 END IF;
14354
14355 --
14356 -- bulk performance
14357 --
14358 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14359 p_header_num => 0); -- 4262811
14360 --
14361 -- set accounting line options
14362 --
14363 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14364 p_natural_side_code => 'D'
14365 , p_gain_or_loss_flag => 'N'
14366 , p_gl_transfer_mode_code => 'S'
14367 , p_acct_entry_type_code => 'A'
14368 , p_switch_side_flag => 'Y'
14369 , p_merge_duplicate_code => 'N'
14370 );
14371 --
14372 l_acc_rev_natural_side_code := 'C'; -- 4262811
14373 --
14374 --
14375 -- set accounting line type info
14376 --
14377 xla_ae_lines_pkg.SetAcctLineType
14378 (p_component_type => l_component_type
14379 ,p_event_type_code => l_event_type_code
14380 ,p_line_definition_owner_code => l_line_definition_owner_code
14381 ,p_line_definition_code => l_line_definition_code
14382 ,p_accounting_line_code => l_component_code
14383 ,p_accounting_line_type_code => l_component_type_code
14384 ,p_accounting_line_appl_id => l_component_appl_id
14385 ,p_amb_context_code => l_amb_context_code
14386 ,p_entity_code => l_entity_code
14387 ,p_event_class_code => l_event_class_code);
14388 --
14389 -- set accounting class
14390 --
14391 xla_ae_lines_pkg.SetAcctClass(
14392 p_accounting_class_code => 'COST_VARIANCE'
14393 , p_ae_header_id => l_ae_header_id
14394 );
14395
14396 --
14397 -- set rounding class
14398 --
14399 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14400 'COST_VARIANCE';
14401
14402 --
14403 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14404 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14405 --
14406 -- bulk performance
14407 --
14408 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14409
14410 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14411 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14412
14413 -- 4955764
14414 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14415 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14416
14417 -- 4458381 Public Sector Enh
14418
14419 --
14420 -- set accounting attributes for the line type
14421 --
14422 l_entered_amt_idx := 17;
14423 l_accted_amt_idx := 22;
14424 l_bflow_applied_to_amt_idx := NULL; -- 5132302
14425 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
14426 l_rec_acct_attrs.array_num_value(1) := p_source_6;
14427 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
14428 l_rec_acct_attrs.array_char_value(2) := p_source_7;
14429 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
14430 l_rec_acct_attrs.array_char_value(3) := p_source_8;
14431 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
14432 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
14433 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
14434 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
14435 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
14436 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
14437 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
14438 l_rec_acct_attrs.array_char_value(7) := p_source_12;
14439 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
14440 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
14441 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
14442 l_rec_acct_attrs.array_num_value(9) := p_source_14;
14443 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
14444 l_rec_acct_attrs.array_char_value(10) := p_source_15;
14445 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
14446 l_rec_acct_attrs.array_num_value(11) := p_source_16;
14447 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
14448 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
14449 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
14450 l_rec_acct_attrs.array_num_value(13) := p_source_14;
14451 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
14452 l_rec_acct_attrs.array_char_value(14) := p_source_15;
14453 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
14454 l_rec_acct_attrs.array_num_value(15) := p_source_16;
14455 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
14456 l_rec_acct_attrs.array_char_value(16) := p_source_27;
14457 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
14458 l_rec_acct_attrs.array_num_value(17) := p_source_18;
14459 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
14460 l_rec_acct_attrs.array_char_value(18) := p_source_15;
14461 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
14462 l_rec_acct_attrs.array_date_value(19) := p_source_19;
14463 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
14464 l_rec_acct_attrs.array_num_value(20) := p_source_20;
14465 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
14466 l_rec_acct_attrs.array_char_value(21) := p_source_21;
14467 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
14468 l_rec_acct_attrs.array_num_value(22) := p_source_22;
14469 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
14470 l_rec_acct_attrs.array_num_value(23) := p_source_31;
14471 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
14472 l_rec_acct_attrs.array_num_value(24) := p_source_31;
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_000005_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 := 'FOB_SHIP_RECIPIENT_SHIP';
14897 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
14898 l_line_definition_owner_code := 'S';
14899 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
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_000005_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 := 'INTRAORG_TXFR';
15451 l_event_type_code := 'INTRAORG_TXFR_ALL';
15452 l_line_definition_owner_code := 'S';
15453 l_line_definition_code := 'INTRAORG_TXFR';
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_000005_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 := 'USER_DEFINE';
16005 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
16006 l_line_definition_owner_code := 'S';
16007 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
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_000005_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 := 'USER_DEFINE';
16559 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
16560 l_line_definition_owner_code := 'S';
16561 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
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_000005_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 --DISTRIBUTION_IDENTIFIER
17000 , p_source_11 IN NUMBER
17001 --Distribution Type
17002 , p_source_12 IN VARCHAR2
17003 , p_source_12_meaning IN VARCHAR2
17004 --Entered Currency Code
17005 , p_source_15 IN VARCHAR2
17006 --Entered Amount
17007 , p_source_18 IN NUMBER
17008 --Currency Conversion Date
17009 , p_source_19 IN DATE
17010 --Currency Conversion Rate
17011 , p_source_20 IN NUMBER
17012 --Currency Conversion Type
17013 , p_source_21 IN VARCHAR2
17014 --Accounted Amount
17015 , p_source_22 IN NUMBER
17016 --Accounting Line Type
17017 , p_source_24 IN NUMBER
17018 )
17019 IS
17020
17021 l_component_type VARCHAR2(80);
17022 l_component_code VARCHAR2(30);
17023 l_component_type_code VARCHAR2(1);
17024 l_component_appl_id INTEGER;
17025 l_amb_context_code VARCHAR2(30);
17026 l_entity_code VARCHAR2(30);
17027 l_event_class_code VARCHAR2(30);
17028 l_ae_header_id NUMBER;
17029 l_event_type_code VARCHAR2(30);
17030 l_line_definition_code VARCHAR2(30);
17031 l_line_definition_owner_code VARCHAR2(1);
17032 --
17033 -- adr variables
17034 l_segment VARCHAR2(30);
17035 l_ccid NUMBER;
17036 l_adr_transaction_coa_id NUMBER;
17037 l_adr_accounting_coa_id NUMBER;
17038 l_adr_flexfield_segment_code VARCHAR2(30);
17039 l_adr_flex_value_set_id NUMBER;
17040 l_adr_value_type_code VARCHAR2(30);
17041 l_adr_value_combination_id NUMBER;
17042 l_adr_value_segment_code VARCHAR2(30);
17043
17044 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
17045 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
17046 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
17047 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
17048
17049 -- 4262811 Variables ------------------------------------------------------------------------------------------
17050 l_entered_amt_idx NUMBER;
17051 l_accted_amt_idx NUMBER;
17052 l_acc_rev_flag VARCHAR2(1);
17053 l_accrual_line_num NUMBER;
17054 l_tmp_amt NUMBER;
17055 l_acc_rev_natural_side_code VARCHAR2(1);
17056
17057 l_num_entries NUMBER;
17058 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
17059 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
17060 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
17061 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
17062 l_recog_line_1 NUMBER;
17063 l_recog_line_2 NUMBER;
17064
17065 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
17066 l_bflow_applied_to_amt NUMBER; -- 5132302
17067 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
17068
17069 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17070
17071 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
17072 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
17073
17074 ---------------------------------------------------------------------------------------------------------------
17075
17076
17077 --
17078 -- bulk performance
17079 --
17080 l_balance_type_code VARCHAR2(1);
17081 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
17082 l_log_module VARCHAR2(240);
17083
17084 --
17085 -- Upgrade strategy
17086 --
17087 l_actual_upg_option VARCHAR2(1);
17088 l_enc_upg_option VARCHAR2(1);
17089
17090 --
17091 BEGIN
17092 --
17093 IF g_log_enabled THEN
17094 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_34';
17095 END IF;
17096 --
17097 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17098
17099 trace
17100 (p_msg => 'BEGIN of AcctLineType_34'
17101 ,p_level => C_LEVEL_PROCEDURE
17102 ,p_module => l_log_module);
17103
17104 END IF;
17105 --
17106 l_component_type := 'AMB_JLT';
17107 l_component_code := 'COST_VARIANCE';
17108 l_component_type_code := 'S';
17109 l_component_appl_id := 707;
17110 l_amb_context_code := 'DEFAULT';
17111 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
17112 l_event_class_code := 'SALES_ORDER';
17113 l_event_type_code := 'SALES_ORDER_ALL';
17114 l_line_definition_owner_code := 'S';
17115 l_line_definition_code := 'SALES_ORDER';
17116 --
17117 l_balance_type_code := 'A';
17118 l_segment := NULL;
17119 l_ccid := NULL;
17120 l_adr_transaction_coa_id := NULL;
17121 l_adr_accounting_coa_id := NULL;
17122 l_adr_flexfield_segment_code := NULL;
17123 l_adr_flex_value_set_id := NULL;
17124 l_adr_value_type_code := NULL;
17125 l_adr_value_combination_id := NULL;
17126 l_adr_value_segment_code := NULL;
17127
17128 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
17129 l_bflow_class_code := ''; -- 4219869 Business Flow
17130 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
17131 l_budgetary_control_flag := 'N';
17132
17133 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17134 l_bflow_applied_to_amt := NULL; -- 5132302
17135 l_entered_amt_idx := NULL; -- 4262811
17136 l_accted_amt_idx := NULL; -- 4262811
17137 l_acc_rev_flag := NULL; -- 4262811
17138 l_accrual_line_num := NULL; -- 4262811
17139 l_tmp_amt := NULL; -- 4262811
17140 --
17141
17142 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17143 l_balance_type_code <> 'B' THEN
17144 IF NVL(p_source_24,9E125) = 13
17145 THEN
17146
17147 --
17148 XLA_AE_LINES_PKG.SetNewLine;
17149
17150 p_balance_type_code := l_balance_type_code;
17151 -- set the flag so later we will know whether the gain loss line needs to be created
17152
17153 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17154 p_actual_flag :='A';
17155 END IF;
17156
17157 --
17158 -- bulk performance
17159 --
17160 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17161 p_header_num => 0); -- 4262811
17162 --
17163 -- set accounting line options
17164 --
17165 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17166 p_natural_side_code => 'D'
17167 , p_gain_or_loss_flag => 'N'
17168 , p_gl_transfer_mode_code => 'S'
17169 , p_acct_entry_type_code => 'A'
17170 , p_switch_side_flag => 'Y'
17171 , p_merge_duplicate_code => 'N'
17172 );
17173 --
17174 l_acc_rev_natural_side_code := 'C'; -- 4262811
17175 --
17176 --
17177 -- set accounting line type info
17178 --
17179 xla_ae_lines_pkg.SetAcctLineType
17180 (p_component_type => l_component_type
17181 ,p_event_type_code => l_event_type_code
17182 ,p_line_definition_owner_code => l_line_definition_owner_code
17183 ,p_line_definition_code => l_line_definition_code
17184 ,p_accounting_line_code => l_component_code
17185 ,p_accounting_line_type_code => l_component_type_code
17186 ,p_accounting_line_appl_id => l_component_appl_id
17187 ,p_amb_context_code => l_amb_context_code
17188 ,p_entity_code => l_entity_code
17189 ,p_event_class_code => l_event_class_code);
17190 --
17191 -- set accounting class
17192 --
17193 xla_ae_lines_pkg.SetAcctClass(
17194 p_accounting_class_code => 'COST_VARIANCE'
17195 , p_ae_header_id => l_ae_header_id
17196 );
17197
17198 --
17199 -- set rounding class
17200 --
17201 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17202 'COST_VARIANCE';
17203
17204 --
17205 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17206 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17207 --
17208 -- bulk performance
17209 --
17210 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17211
17212 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17213 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17214
17215 -- 4955764
17216 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17217 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17218
17219 -- 4458381 Public Sector Enh
17220
17221 --
17222 -- set accounting attributes for the line type
17223 --
17224 l_entered_amt_idx := 3;
17225 l_accted_amt_idx := 8;
17226 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17227 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17228 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
17229 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17230 l_rec_acct_attrs.array_char_value(2) := p_source_12;
17231 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17232 l_rec_acct_attrs.array_num_value(3) := p_source_18;
17233 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17234 l_rec_acct_attrs.array_char_value(4) := p_source_15;
17235 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17236 l_rec_acct_attrs.array_date_value(5) := p_source_19;
17237 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17238 l_rec_acct_attrs.array_num_value(6) := p_source_20;
17239 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17240 l_rec_acct_attrs.array_char_value(7) := p_source_21;
17241 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17242 l_rec_acct_attrs.array_num_value(8) := p_source_22;
17243
17244 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17245 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17246
17247 ---------------------------------------------------------------------------------------------------------------
17248 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17249 ---------------------------------------------------------------------------------------------------------------
17250 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17251
17252 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17253 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17254
17255 IF xla_accounting_cache_pkg.GetValueChar
17256 (p_source_code => 'LEDGER_CATEGORY_CODE'
17257 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17258 AND l_bflow_method_code = 'PRIOR_ENTRY'
17259 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17260 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17261 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17262 )
17263 THEN
17264 xla_ae_lines_pkg.BflowUpgEntry
17265 (p_business_method_code => l_bflow_method_code
17266 ,p_business_class_code => l_bflow_class_code
17267 ,p_balance_type => l_balance_type_code);
17268 ELSE
17269 NULL;
17270 -- No business flow processing for business flow method of NONE.
17271 END IF;
17272
17273 --
17274 -- call analytical criteria
17275 --
17276
17277 --
17278 -- call description
17279 --
17280 -- No description or it is inherited.
17281 --
17282 -- call ADRs
17283 -- Bug 4922099
17284 --
17285 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17286 (NVL(l_actual_upg_option, 'N') = 'O') OR
17287 (NVL(l_enc_upg_option, 'N') = 'O')
17288 )
17289 THEN
17290 NULL;
17291 --
17292 --
17293
17294 l_ccid := AcctDerRule_4(
17295 p_application_id => p_application_id
17296 , p_ae_header_id => l_ae_header_id
17297 , p_source_4 => p_source_4
17298 , x_transaction_coa_id => l_adr_transaction_coa_id
17299 , x_accounting_coa_id => l_adr_accounting_coa_id
17300 , x_value_type_code => l_adr_value_type_code
17301 , p_side => 'NA'
17302 );
17303
17304 xla_ae_lines_pkg.set_ccid(
17305 p_code_combination_id => l_ccid
17306 , p_value_type_code => l_adr_value_type_code
17307 , p_transaction_coa_id => l_adr_transaction_coa_id
17308 , p_accounting_coa_id => l_adr_accounting_coa_id
17309 , p_adr_code => 'CST_DEFAULT'
17310 , p_adr_type_code => 'S'
17311 , p_component_type => l_component_type
17312 , p_component_code => l_component_code
17313 , p_component_type_code => l_component_type_code
17314 , p_component_appl_id => l_component_appl_id
17315 , p_amb_context_code => l_amb_context_code
17316 , p_side => 'NA'
17317 );
17318
17319
17320 --
17321 --
17322 END IF;
17323 --
17324 -- Bug 4922099
17325 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17326 (NVL(l_enc_upg_option, 'N') = 'O')
17327 ) AND
17328 (l_bflow_method_code = 'PRIOR_ENTRY')
17329 )
17330 THEN
17331 IF
17332 --
17333 1 = 2
17334 --
17335 THEN
17336 xla_accounting_err_pkg.build_message
17337 (p_appli_s_name => 'XLA'
17338 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17339 ,p_token_1 => 'LINE_NUMBER'
17340 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
17341 ,p_token_2 => 'LINE_TYPE_NAME'
17342 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
17343 l_component_type
17344 ,l_component_code
17345 ,l_component_type_code
17346 ,l_component_appl_id
17347 ,l_amb_context_code
17348 ,l_entity_code
17349 ,l_event_class_code
17350 )
17351 ,p_token_3 => 'OWNER'
17352 ,p_value_3 => xla_lookups_pkg.get_meaning(
17353 p_lookup_type => 'XLA_OWNER_TYPE'
17354 ,p_lookup_code => l_component_type_code
17355 )
17356 ,p_token_4 => 'PRODUCT_NAME'
17357 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17358 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17359 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17360 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17361 ,p_ae_header_id => NULL
17362 );
17363
17364 IF (C_LEVEL_ERROR>= g_log_level) THEN
17365 trace
17366 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17367 ,p_level => C_LEVEL_ERROR
17368 ,p_module => l_log_module);
17369 END IF;
17370 END IF;
17371 END IF;
17372 --
17373 --
17374 ------------------------------------------------------------------------------------------------
17375 -- 4219869 Business Flow
17376 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17377 -- Prior Entry. Currently, the following code is always generated.
17378 ------------------------------------------------------------------------------------------------
17379 XLA_AE_LINES_PKG.ValidateCurrentLine;
17380
17381 ------------------------------------------------------------------------------------
17382 -- 4219869 Business Flow
17383 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17384 ------------------------------------------------------------------------------------
17385 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17386
17387 ----------------------------------------------------------------------------------
17388 -- 4219869 Business Flow
17389 -- Update journal entry status -- Need to generate this within IF <condition>
17390 ----------------------------------------------------------------------------------
17391 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17392 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17393 ,p_balance_type_code => l_balance_type_code
17394 );
17395
17396 -------------------------------------------------------------------------------------------
17397 -- 4262811 - Generate the Accrual Reversal lines
17398 -------------------------------------------------------------------------------------------
17399 BEGIN
17400 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17401 (g_array_event(p_event_id).array_value_num('header_index'));
17402 IF l_acc_rev_flag IS NULL THEN
17403 l_acc_rev_flag := 'N';
17404 END IF;
17405 EXCEPTION
17406 WHEN OTHERS THEN
17407 l_acc_rev_flag := 'N';
17408 END;
17409 --
17410 IF (l_acc_rev_flag = 'Y') THEN
17411
17412 -- 4645092 ------------------------------------------------------------------------------
17413 -- To allow MPA report to determine if it should generate report process
17414 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17415 ------------------------------------------------------------------------------------------
17416
17417 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17418 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17419 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
17420 -- call ADRs
17421 -- Bug 4922099
17422 --
17423 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17424 (NVL(l_actual_upg_option, 'N') = 'O') OR
17425 (NVL(l_enc_upg_option, 'N') = 'O')
17426 )
17427 THEN
17428 NULL;
17429 --
17430 --
17431
17432 l_ccid := AcctDerRule_4(
17433 p_application_id => p_application_id
17434 , p_ae_header_id => l_ae_header_id
17435 , p_source_4 => p_source_4
17436 , x_transaction_coa_id => l_adr_transaction_coa_id
17437 , x_accounting_coa_id => l_adr_accounting_coa_id
17438 , x_value_type_code => l_adr_value_type_code
17439 , p_side => 'NA'
17440 );
17441
17442 xla_ae_lines_pkg.set_ccid(
17443 p_code_combination_id => l_ccid
17444 , p_value_type_code => l_adr_value_type_code
17445 , p_transaction_coa_id => l_adr_transaction_coa_id
17446 , p_accounting_coa_id => l_adr_accounting_coa_id
17447 , p_adr_code => 'CST_DEFAULT'
17448 , p_adr_type_code => 'S'
17449 , p_component_type => l_component_type
17450 , p_component_code => l_component_code
17451 , p_component_type_code => l_component_type_code
17452 , p_component_appl_id => l_component_appl_id
17453 , p_amb_context_code => l_amb_context_code
17454 , p_side => 'NA'
17455 );
17456
17457
17458 --
17459 --
17460 END IF;
17461
17462 --
17463 -- Update the line information that should be overwritten
17464 --
17465 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17466 p_header_num => 1);
17467 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
17468
17469 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17470
17471 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
17472 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17473 END IF;
17474
17475 --
17476 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17477 --
17478 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17479 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
17480 ELSE
17481 ---------------------------------------------------------------------------------------------------
17482 -- 4262811a Switch Sign
17483 ---------------------------------------------------------------------------------------------------
17484 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
17485 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17486 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17487 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17488 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17489 -- 5132302
17490 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17491 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17492
17493 END IF;
17494
17495 -- 4955764
17496 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17497 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17498
17499
17500 XLA_AE_LINES_PKG.ValidateCurrentLine;
17501 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17502
17503 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17504 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17505 ,p_balance_type_code => l_balance_type_code);
17506
17507 END IF;
17508
17509 -----------------------------------------------------------------------------------------
17510 -- 4262811 Multiperiod Accounting
17511 -----------------------------------------------------------------------------------------
17512 -- No MPA option is assigned.
17513
17514
17515 END IF;
17516 END IF;
17517 --
17518
17519 --
17520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17521 trace
17522 (p_msg => 'END of AcctLineType_34'
17523 ,p_level => C_LEVEL_PROCEDURE
17524 ,p_module => l_log_module);
17525 END IF;
17526 --
17527 EXCEPTION
17528 WHEN xla_exceptions_pkg.application_exception THEN
17529 RAISE;
17530 WHEN OTHERS THEN
17531 xla_exceptions_pkg.raise_message
17532 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_34');
17533 END AcctLineType_34;
17534 --
17535
17536 ---------------------------------------
17537 --
17538 -- PRIVATE FUNCTION
17539 -- AcctLineType_35
17540 --
17541 ---------------------------------------
17542 PROCEDURE AcctLineType_35 (
17543 p_application_id IN NUMBER
17544 ,p_event_id IN NUMBER
17545 ,p_calculate_acctd_flag IN VARCHAR2
17546 ,p_calculate_g_l_flag IN VARCHAR2
17547 ,p_actual_flag IN OUT VARCHAR2
17548 ,p_balance_type_code OUT VARCHAR2
17549 ,p_gain_or_loss_ref OUT VARCHAR2
17550
17551 --Cost Management Default Account
17552 , p_source_4 IN NUMBER
17553 --DISTRIBUTION_IDENTIFIER
17554 , p_source_11 IN NUMBER
17555 --Distribution Type
17556 , p_source_12 IN VARCHAR2
17557 , p_source_12_meaning IN VARCHAR2
17558 --Entered Currency Code
17559 , p_source_15 IN VARCHAR2
17560 --Entered Amount
17561 , p_source_18 IN NUMBER
17562 --Currency Conversion Date
17563 , p_source_19 IN DATE
17564 --Currency Conversion Rate
17565 , p_source_20 IN NUMBER
17566 --Currency Conversion Type
17567 , p_source_21 IN VARCHAR2
17568 --Accounted Amount
17569 , p_source_22 IN NUMBER
17570 --Accounting Line Type
17571 , p_source_24 IN NUMBER
17572 )
17573 IS
17574
17575 l_component_type VARCHAR2(80);
17576 l_component_code VARCHAR2(30);
17577 l_component_type_code VARCHAR2(1);
17578 l_component_appl_id INTEGER;
17579 l_amb_context_code VARCHAR2(30);
17580 l_entity_code VARCHAR2(30);
17581 l_event_class_code VARCHAR2(30);
17582 l_ae_header_id NUMBER;
17583 l_event_type_code VARCHAR2(30);
17584 l_line_definition_code VARCHAR2(30);
17585 l_line_definition_owner_code VARCHAR2(1);
17586 --
17587 -- adr variables
17588 l_segment VARCHAR2(30);
17589 l_ccid NUMBER;
17590 l_adr_transaction_coa_id NUMBER;
17591 l_adr_accounting_coa_id NUMBER;
17592 l_adr_flexfield_segment_code VARCHAR2(30);
17593 l_adr_flex_value_set_id NUMBER;
17594 l_adr_value_type_code VARCHAR2(30);
17595 l_adr_value_combination_id NUMBER;
17596 l_adr_value_segment_code VARCHAR2(30);
17597
17598 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
17599 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
17600 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
17601 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
17602
17603 -- 4262811 Variables ------------------------------------------------------------------------------------------
17604 l_entered_amt_idx NUMBER;
17605 l_accted_amt_idx NUMBER;
17606 l_acc_rev_flag VARCHAR2(1);
17607 l_accrual_line_num NUMBER;
17608 l_tmp_amt NUMBER;
17609 l_acc_rev_natural_side_code VARCHAR2(1);
17610
17611 l_num_entries NUMBER;
17612 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
17613 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
17614 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
17615 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
17616 l_recog_line_1 NUMBER;
17617 l_recog_line_2 NUMBER;
17618
17619 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
17620 l_bflow_applied_to_amt NUMBER; -- 5132302
17621 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
17622
17623 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17624
17625 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
17626 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
17627
17628 ---------------------------------------------------------------------------------------------------------------
17629
17630
17631 --
17632 -- bulk performance
17633 --
17634 l_balance_type_code VARCHAR2(1);
17635 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
17636 l_log_module VARCHAR2(240);
17637
17638 --
17639 -- Upgrade strategy
17640 --
17641 l_actual_upg_option VARCHAR2(1);
17642 l_enc_upg_option VARCHAR2(1);
17643
17644 --
17645 BEGIN
17646 --
17647 IF g_log_enabled THEN
17648 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_35';
17649 END IF;
17650 --
17651 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17652
17653 trace
17654 (p_msg => 'BEGIN of AcctLineType_35'
17655 ,p_level => C_LEVEL_PROCEDURE
17656 ,p_module => l_log_module);
17657
17658 END IF;
17659 --
17660 l_component_type := 'AMB_JLT';
17661 l_component_code := 'COST_VARIANCE';
17662 l_component_type_code := 'S';
17663 l_component_appl_id := 707;
17664 l_amb_context_code := 'DEFAULT';
17665 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
17666 l_event_class_code := 'MISC_ISSUE_RCPT';
17667 l_event_type_code := 'MISC_ISSUE_RCPT_ALL';
17668 l_line_definition_owner_code := 'S';
17669 l_line_definition_code := 'MISC_ISSUE_RCPT';
17670 --
17671 l_balance_type_code := 'A';
17672 l_segment := NULL;
17673 l_ccid := NULL;
17674 l_adr_transaction_coa_id := NULL;
17675 l_adr_accounting_coa_id := NULL;
17676 l_adr_flexfield_segment_code := NULL;
17677 l_adr_flex_value_set_id := NULL;
17678 l_adr_value_type_code := NULL;
17679 l_adr_value_combination_id := NULL;
17680 l_adr_value_segment_code := NULL;
17681
17682 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
17683 l_bflow_class_code := ''; -- 4219869 Business Flow
17684 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
17685 l_budgetary_control_flag := 'N';
17686
17687 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17688 l_bflow_applied_to_amt := NULL; -- 5132302
17689 l_entered_amt_idx := NULL; -- 4262811
17690 l_accted_amt_idx := NULL; -- 4262811
17691 l_acc_rev_flag := NULL; -- 4262811
17692 l_accrual_line_num := NULL; -- 4262811
17693 l_tmp_amt := NULL; -- 4262811
17694 --
17695
17696 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17697 l_balance_type_code <> 'B' THEN
17698 IF NVL(p_source_24,9E125) = 13
17699 THEN
17700
17701 --
17702 XLA_AE_LINES_PKG.SetNewLine;
17703
17704 p_balance_type_code := l_balance_type_code;
17705 -- set the flag so later we will know whether the gain loss line needs to be created
17706
17707 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17708 p_actual_flag :='A';
17709 END IF;
17710
17711 --
17712 -- bulk performance
17713 --
17714 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17715 p_header_num => 0); -- 4262811
17716 --
17717 -- set accounting line options
17718 --
17719 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17720 p_natural_side_code => 'D'
17721 , p_gain_or_loss_flag => 'N'
17722 , p_gl_transfer_mode_code => 'S'
17723 , p_acct_entry_type_code => 'A'
17724 , p_switch_side_flag => 'Y'
17725 , p_merge_duplicate_code => 'N'
17726 );
17727 --
17728 l_acc_rev_natural_side_code := 'C'; -- 4262811
17729 --
17730 --
17731 -- set accounting line type info
17732 --
17733 xla_ae_lines_pkg.SetAcctLineType
17734 (p_component_type => l_component_type
17735 ,p_event_type_code => l_event_type_code
17736 ,p_line_definition_owner_code => l_line_definition_owner_code
17737 ,p_line_definition_code => l_line_definition_code
17738 ,p_accounting_line_code => l_component_code
17739 ,p_accounting_line_type_code => l_component_type_code
17740 ,p_accounting_line_appl_id => l_component_appl_id
17741 ,p_amb_context_code => l_amb_context_code
17742 ,p_entity_code => l_entity_code
17743 ,p_event_class_code => l_event_class_code);
17744 --
17745 -- set accounting class
17746 --
17747 xla_ae_lines_pkg.SetAcctClass(
17748 p_accounting_class_code => 'COST_VARIANCE'
17749 , p_ae_header_id => l_ae_header_id
17750 );
17751
17752 --
17753 -- set rounding class
17754 --
17755 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17756 'COST_VARIANCE';
17757
17758 --
17759 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17760 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17761 --
17762 -- bulk performance
17763 --
17764 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17765
17766 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17767 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17768
17769 -- 4955764
17770 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17771 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17772
17773 -- 4458381 Public Sector Enh
17774
17775 --
17776 -- set accounting attributes for the line type
17777 --
17778 l_entered_amt_idx := 3;
17779 l_accted_amt_idx := 8;
17780 l_bflow_applied_to_amt_idx := NULL; -- 5132302
17781 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17782 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
17783 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17784 l_rec_acct_attrs.array_char_value(2) := p_source_12;
17785 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17786 l_rec_acct_attrs.array_num_value(3) := p_source_18;
17787 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17788 l_rec_acct_attrs.array_char_value(4) := p_source_15;
17789 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17790 l_rec_acct_attrs.array_date_value(5) := p_source_19;
17791 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17792 l_rec_acct_attrs.array_num_value(6) := p_source_20;
17793 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17794 l_rec_acct_attrs.array_char_value(7) := p_source_21;
17795 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
17796 l_rec_acct_attrs.array_num_value(8) := p_source_22;
17797
17798 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17799 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17800
17801 ---------------------------------------------------------------------------------------------------------------
17802 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17803 ---------------------------------------------------------------------------------------------------------------
17804 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17805
17806 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17807 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17808
17809 IF xla_accounting_cache_pkg.GetValueChar
17810 (p_source_code => 'LEDGER_CATEGORY_CODE'
17811 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17812 AND l_bflow_method_code = 'PRIOR_ENTRY'
17813 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17814 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17815 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17816 )
17817 THEN
17818 xla_ae_lines_pkg.BflowUpgEntry
17819 (p_business_method_code => l_bflow_method_code
17820 ,p_business_class_code => l_bflow_class_code
17821 ,p_balance_type => l_balance_type_code);
17822 ELSE
17823 NULL;
17824 -- No business flow processing for business flow method of NONE.
17825 END IF;
17826
17827 --
17828 -- call analytical criteria
17829 --
17830
17831 --
17832 -- call description
17833 --
17834 -- No description or it is inherited.
17835 --
17836 -- call ADRs
17837 -- Bug 4922099
17838 --
17839 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17840 (NVL(l_actual_upg_option, 'N') = 'O') OR
17841 (NVL(l_enc_upg_option, 'N') = 'O')
17842 )
17843 THEN
17844 NULL;
17845 --
17846 --
17847
17848 l_ccid := AcctDerRule_4(
17849 p_application_id => p_application_id
17850 , p_ae_header_id => l_ae_header_id
17851 , p_source_4 => p_source_4
17852 , x_transaction_coa_id => l_adr_transaction_coa_id
17853 , x_accounting_coa_id => l_adr_accounting_coa_id
17854 , x_value_type_code => l_adr_value_type_code
17855 , p_side => 'NA'
17856 );
17857
17858 xla_ae_lines_pkg.set_ccid(
17859 p_code_combination_id => l_ccid
17860 , p_value_type_code => l_adr_value_type_code
17861 , p_transaction_coa_id => l_adr_transaction_coa_id
17862 , p_accounting_coa_id => l_adr_accounting_coa_id
17863 , p_adr_code => 'CST_DEFAULT'
17864 , p_adr_type_code => 'S'
17865 , p_component_type => l_component_type
17866 , p_component_code => l_component_code
17867 , p_component_type_code => l_component_type_code
17868 , p_component_appl_id => l_component_appl_id
17869 , p_amb_context_code => l_amb_context_code
17870 , p_side => 'NA'
17871 );
17872
17873
17874 --
17875 --
17876 END IF;
17877 --
17878 -- Bug 4922099
17879 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17880 (NVL(l_enc_upg_option, 'N') = 'O')
17881 ) AND
17882 (l_bflow_method_code = 'PRIOR_ENTRY')
17883 )
17884 THEN
17885 IF
17886 --
17887 1 = 2
17888 --
17889 THEN
17890 xla_accounting_err_pkg.build_message
17891 (p_appli_s_name => 'XLA'
17892 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17893 ,p_token_1 => 'LINE_NUMBER'
17894 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
17895 ,p_token_2 => 'LINE_TYPE_NAME'
17896 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
17897 l_component_type
17898 ,l_component_code
17899 ,l_component_type_code
17900 ,l_component_appl_id
17901 ,l_amb_context_code
17902 ,l_entity_code
17903 ,l_event_class_code
17904 )
17905 ,p_token_3 => 'OWNER'
17906 ,p_value_3 => xla_lookups_pkg.get_meaning(
17907 p_lookup_type => 'XLA_OWNER_TYPE'
17908 ,p_lookup_code => l_component_type_code
17909 )
17910 ,p_token_4 => 'PRODUCT_NAME'
17911 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17912 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17913 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17914 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17915 ,p_ae_header_id => NULL
17916 );
17917
17918 IF (C_LEVEL_ERROR>= g_log_level) THEN
17919 trace
17920 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17921 ,p_level => C_LEVEL_ERROR
17922 ,p_module => l_log_module);
17923 END IF;
17924 END IF;
17925 END IF;
17926 --
17927 --
17928 ------------------------------------------------------------------------------------------------
17929 -- 4219869 Business Flow
17930 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17931 -- Prior Entry. Currently, the following code is always generated.
17932 ------------------------------------------------------------------------------------------------
17933 XLA_AE_LINES_PKG.ValidateCurrentLine;
17934
17935 ------------------------------------------------------------------------------------
17936 -- 4219869 Business Flow
17937 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17938 ------------------------------------------------------------------------------------
17939 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17940
17941 ----------------------------------------------------------------------------------
17942 -- 4219869 Business Flow
17943 -- Update journal entry status -- Need to generate this within IF <condition>
17944 ----------------------------------------------------------------------------------
17945 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17946 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17947 ,p_balance_type_code => l_balance_type_code
17948 );
17949
17950 -------------------------------------------------------------------------------------------
17951 -- 4262811 - Generate the Accrual Reversal lines
17952 -------------------------------------------------------------------------------------------
17953 BEGIN
17954 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17955 (g_array_event(p_event_id).array_value_num('header_index'));
17956 IF l_acc_rev_flag IS NULL THEN
17957 l_acc_rev_flag := 'N';
17958 END IF;
17959 EXCEPTION
17960 WHEN OTHERS THEN
17961 l_acc_rev_flag := 'N';
17962 END;
17963 --
17964 IF (l_acc_rev_flag = 'Y') THEN
17965
17966 -- 4645092 ------------------------------------------------------------------------------
17967 -- To allow MPA report to determine if it should generate report process
17968 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17969 ------------------------------------------------------------------------------------------
17970
17971 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17972 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17973 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
17974 -- call ADRs
17975 -- Bug 4922099
17976 --
17977 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17978 (NVL(l_actual_upg_option, 'N') = 'O') OR
17979 (NVL(l_enc_upg_option, 'N') = 'O')
17980 )
17981 THEN
17982 NULL;
17983 --
17984 --
17985
17986 l_ccid := AcctDerRule_4(
17987 p_application_id => p_application_id
17988 , p_ae_header_id => l_ae_header_id
17989 , p_source_4 => p_source_4
17990 , x_transaction_coa_id => l_adr_transaction_coa_id
17991 , x_accounting_coa_id => l_adr_accounting_coa_id
17992 , x_value_type_code => l_adr_value_type_code
17993 , p_side => 'NA'
17994 );
17995
17996 xla_ae_lines_pkg.set_ccid(
17997 p_code_combination_id => l_ccid
17998 , p_value_type_code => l_adr_value_type_code
17999 , p_transaction_coa_id => l_adr_transaction_coa_id
18000 , p_accounting_coa_id => l_adr_accounting_coa_id
18001 , p_adr_code => 'CST_DEFAULT'
18002 , p_adr_type_code => 'S'
18003 , p_component_type => l_component_type
18004 , p_component_code => l_component_code
18005 , p_component_type_code => l_component_type_code
18006 , p_component_appl_id => l_component_appl_id
18007 , p_amb_context_code => l_amb_context_code
18008 , p_side => 'NA'
18009 );
18010
18011
18012 --
18013 --
18014 END IF;
18015
18016 --
18017 -- Update the line information that should be overwritten
18018 --
18019 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18020 p_header_num => 1);
18021 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
18022
18023 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18024
18025 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
18026 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18027 END IF;
18028
18029 --
18030 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18031 --
18032 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18033 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
18034 ELSE
18035 ---------------------------------------------------------------------------------------------------
18036 -- 4262811a Switch Sign
18037 ---------------------------------------------------------------------------------------------------
18038 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
18039 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18040 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18041 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18042 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18043 -- 5132302
18044 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18045 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18046
18047 END IF;
18048
18049 -- 4955764
18050 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18051 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18052
18053
18054 XLA_AE_LINES_PKG.ValidateCurrentLine;
18055 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18056
18057 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18058 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18059 ,p_balance_type_code => l_balance_type_code);
18060
18061 END IF;
18062
18063 -----------------------------------------------------------------------------------------
18064 -- 4262811 Multiperiod Accounting
18065 -----------------------------------------------------------------------------------------
18066 -- No MPA option is assigned.
18067
18068
18069 END IF;
18070 END IF;
18071 --
18072
18073 --
18074 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18075 trace
18076 (p_msg => 'END of AcctLineType_35'
18077 ,p_level => C_LEVEL_PROCEDURE
18078 ,p_module => l_log_module);
18079 END IF;
18080 --
18081 EXCEPTION
18082 WHEN xla_exceptions_pkg.application_exception THEN
18083 RAISE;
18084 WHEN OTHERS THEN
18085 xla_exceptions_pkg.raise_message
18086 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_35');
18087 END AcctLineType_35;
18088 --
18089
18090 ---------------------------------------
18091 --
18092 -- PRIVATE FUNCTION
18093 -- AcctLineType_36
18094 --
18095 ---------------------------------------
18096 PROCEDURE AcctLineType_36 (
18097 p_application_id IN NUMBER
18098 ,p_event_id IN NUMBER
18099 ,p_calculate_acctd_flag IN VARCHAR2
18100 ,p_calculate_g_l_flag IN VARCHAR2
18101 ,p_actual_flag IN OUT VARCHAR2
18102 ,p_balance_type_code OUT VARCHAR2
18103 ,p_gain_or_loss_ref OUT VARCHAR2
18104
18105 --Cost Management Default Account
18106 , p_source_4 IN NUMBER
18107 --Applied to Application ID
18108 , p_source_6 IN NUMBER
18109 --Applied to Distribution Link Type
18110 , p_source_7 IN VARCHAR2
18111 --Applied to Entity Code
18112 , p_source_8 IN VARCHAR2
18113 --DISTRIBUTION_IDENTIFIER
18114 , p_source_11 IN NUMBER
18115 --Distribution Type
18116 , p_source_12 IN VARCHAR2
18117 , p_source_12_meaning IN VARCHAR2
18118 --Encumbrance Reversal Amount Entered
18119 , p_source_14 IN NUMBER
18120 --Entered Currency Code
18121 , p_source_15 IN VARCHAR2
18122 --Transaction Encumbrance Reversal Amount
18123 , p_source_16 IN NUMBER
18124 --Entered Amount
18125 , p_source_18 IN NUMBER
18126 --Currency Conversion Date
18127 , p_source_19 IN DATE
18128 --Currency Conversion Rate
18129 , p_source_20 IN NUMBER
18130 --Currency Conversion Type
18131 , p_source_21 IN VARCHAR2
18132 --Accounted Amount
18133 , p_source_22 IN NUMBER
18134 --Accounting Line Type
18135 , p_source_24 IN NUMBER
18136 --Costing Encumbrance Upgrade Option
18137 , p_source_27 IN VARCHAR2
18138 --TXN_PO_DISTRIBUTION_ID
18139 , p_source_28 IN NUMBER
18140 --TXN_PO_HEADER_ID
18141 , p_source_29 IN NUMBER
18142 --Requisition Budget Account
18143 , p_source_30 IN NUMBER
18144 --Requisition Encumbrance Type Identifier
18145 , p_source_31 IN NUMBER
18146 )
18147 IS
18148
18149 l_component_type VARCHAR2(80);
18150 l_component_code VARCHAR2(30);
18151 l_component_type_code VARCHAR2(1);
18152 l_component_appl_id INTEGER;
18153 l_amb_context_code VARCHAR2(30);
18154 l_entity_code VARCHAR2(30);
18155 l_event_class_code VARCHAR2(30);
18156 l_ae_header_id NUMBER;
18157 l_event_type_code VARCHAR2(30);
18158 l_line_definition_code VARCHAR2(30);
18159 l_line_definition_owner_code VARCHAR2(1);
18160 --
18161 -- adr variables
18162 l_segment VARCHAR2(30);
18163 l_ccid NUMBER;
18164 l_adr_transaction_coa_id NUMBER;
18165 l_adr_accounting_coa_id NUMBER;
18166 l_adr_flexfield_segment_code VARCHAR2(30);
18167 l_adr_flex_value_set_id NUMBER;
18168 l_adr_value_type_code VARCHAR2(30);
18169 l_adr_value_combination_id NUMBER;
18170 l_adr_value_segment_code VARCHAR2(30);
18171
18172 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
18173 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
18174 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
18175 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
18176
18177 -- 4262811 Variables ------------------------------------------------------------------------------------------
18178 l_entered_amt_idx NUMBER;
18179 l_accted_amt_idx NUMBER;
18180 l_acc_rev_flag VARCHAR2(1);
18181 l_accrual_line_num NUMBER;
18182 l_tmp_amt NUMBER;
18183 l_acc_rev_natural_side_code VARCHAR2(1);
18184
18185 l_num_entries NUMBER;
18186 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
18187 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
18188 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
18189 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
18190 l_recog_line_1 NUMBER;
18191 l_recog_line_2 NUMBER;
18192
18193 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
18194 l_bflow_applied_to_amt NUMBER; -- 5132302
18195 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
18196
18197 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18198
18199 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
18200 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
18201
18202 ---------------------------------------------------------------------------------------------------------------
18203
18204
18205 --
18206 -- bulk performance
18207 --
18208 l_balance_type_code VARCHAR2(1);
18209 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
18210 l_log_module VARCHAR2(240);
18211
18212 --
18213 -- Upgrade strategy
18214 --
18215 l_actual_upg_option VARCHAR2(1);
18216 l_enc_upg_option VARCHAR2(1);
18217
18218 --
18219 BEGIN
18220 --
18221 IF g_log_enabled THEN
18222 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
18223 END IF;
18224 --
18225 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18226
18227 trace
18228 (p_msg => 'BEGIN of AcctLineType_36'
18229 ,p_level => C_LEVEL_PROCEDURE
18230 ,p_module => l_log_module);
18231
18232 END IF;
18233 --
18234 l_component_type := 'AMB_JLT';
18235 l_component_code := 'COST_VARIANCE';
18236 l_component_type_code := 'S';
18237 l_component_appl_id := 707;
18238 l_amb_context_code := 'DEFAULT';
18239 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
18240 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
18241 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
18242 l_line_definition_owner_code := 'S';
18243 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
18244 --
18245 l_balance_type_code := 'A';
18246 l_segment := NULL;
18247 l_ccid := NULL;
18248 l_adr_transaction_coa_id := NULL;
18249 l_adr_accounting_coa_id := NULL;
18250 l_adr_flexfield_segment_code := NULL;
18251 l_adr_flex_value_set_id := NULL;
18252 l_adr_value_type_code := NULL;
18253 l_adr_value_combination_id := NULL;
18254 l_adr_value_segment_code := NULL;
18255
18256 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
18257 l_bflow_class_code := ''; -- 4219869 Business Flow
18258 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
18259 l_budgetary_control_flag := 'N';
18260
18261 l_bflow_applied_to_amt_idx := NULL; -- 5132302
18262 l_bflow_applied_to_amt := NULL; -- 5132302
18263 l_entered_amt_idx := NULL; -- 4262811
18264 l_accted_amt_idx := NULL; -- 4262811
18265 l_acc_rev_flag := NULL; -- 4262811
18266 l_accrual_line_num := NULL; -- 4262811
18267 l_tmp_amt := NULL; -- 4262811
18268 --
18269
18270 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18271 l_balance_type_code <> 'B' THEN
18272 IF NVL(p_source_24,9E125) = 13
18273 THEN
18274
18275 --
18276 XLA_AE_LINES_PKG.SetNewLine;
18277
18278 p_balance_type_code := l_balance_type_code;
18279 -- set the flag so later we will know whether the gain loss line needs to be created
18280
18281 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18282 p_actual_flag :='A';
18283 END IF;
18284
18285 --
18286 -- bulk performance
18287 --
18288 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18289 p_header_num => 0); -- 4262811
18290 --
18291 -- set accounting line options
18292 --
18293 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18294 p_natural_side_code => 'D'
18295 , p_gain_or_loss_flag => 'N'
18296 , p_gl_transfer_mode_code => 'S'
18297 , p_acct_entry_type_code => 'A'
18298 , p_switch_side_flag => 'Y'
18299 , p_merge_duplicate_code => 'N'
18300 );
18301 --
18302 l_acc_rev_natural_side_code := 'C'; -- 4262811
18303 --
18304 --
18305 -- set accounting line type info
18306 --
18307 xla_ae_lines_pkg.SetAcctLineType
18308 (p_component_type => l_component_type
18309 ,p_event_type_code => l_event_type_code
18310 ,p_line_definition_owner_code => l_line_definition_owner_code
18311 ,p_line_definition_code => l_line_definition_code
18312 ,p_accounting_line_code => l_component_code
18313 ,p_accounting_line_type_code => l_component_type_code
18314 ,p_accounting_line_appl_id => l_component_appl_id
18315 ,p_amb_context_code => l_amb_context_code
18316 ,p_entity_code => l_entity_code
18317 ,p_event_class_code => l_event_class_code);
18318 --
18319 -- set accounting class
18320 --
18321 xla_ae_lines_pkg.SetAcctClass(
18322 p_accounting_class_code => 'COST_VARIANCE'
18323 , p_ae_header_id => l_ae_header_id
18324 );
18325
18326 --
18327 -- set rounding class
18328 --
18329 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18330 'COST_VARIANCE';
18331
18332 --
18333 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18334 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18335 --
18336 -- bulk performance
18337 --
18338 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18339
18340 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18341 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18342
18343 -- 4955764
18344 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18345 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18346
18347 -- 4458381 Public Sector Enh
18348
18349 --
18350 -- set accounting attributes for the line type
18351 --
18352 l_entered_amt_idx := 17;
18353 l_accted_amt_idx := 22;
18354 l_bflow_applied_to_amt_idx := NULL; -- 5132302
18355 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
18356 l_rec_acct_attrs.array_num_value(1) := p_source_6;
18357 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
18358 l_rec_acct_attrs.array_char_value(2) := p_source_7;
18359 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
18360 l_rec_acct_attrs.array_char_value(3) := p_source_8;
18361 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
18362 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
18363 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
18364 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
18365 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
18366 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
18367 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
18368 l_rec_acct_attrs.array_char_value(7) := p_source_12;
18369 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
18370 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
18371 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
18372 l_rec_acct_attrs.array_num_value(9) := p_source_14;
18373 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
18374 l_rec_acct_attrs.array_char_value(10) := p_source_15;
18375 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
18376 l_rec_acct_attrs.array_num_value(11) := p_source_16;
18377 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
18378 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
18379 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
18380 l_rec_acct_attrs.array_num_value(13) := p_source_14;
18381 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
18382 l_rec_acct_attrs.array_char_value(14) := p_source_15;
18383 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
18384 l_rec_acct_attrs.array_num_value(15) := p_source_16;
18385 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
18386 l_rec_acct_attrs.array_char_value(16) := p_source_27;
18387 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
18388 l_rec_acct_attrs.array_num_value(17) := p_source_18;
18389 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
18390 l_rec_acct_attrs.array_char_value(18) := p_source_15;
18391 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
18392 l_rec_acct_attrs.array_date_value(19) := p_source_19;
18393 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
18394 l_rec_acct_attrs.array_num_value(20) := p_source_20;
18395 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
18396 l_rec_acct_attrs.array_char_value(21) := p_source_21;
18397 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
18398 l_rec_acct_attrs.array_num_value(22) := p_source_22;
18399 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
18400 l_rec_acct_attrs.array_num_value(23) := p_source_31;
18401 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
18402 l_rec_acct_attrs.array_num_value(24) := p_source_31;
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_000005_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 := 'USUB_TXFR';
18828 l_line_definition_owner_code := 'S';
18829 l_line_definition_code := 'USER_SUB_TXFR';
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_000005_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 --DISTRIBUTION_IDENTIFIER
19268 , p_source_11 IN NUMBER
19269 --Distribution Type
19270 , p_source_12 IN VARCHAR2
19271 , p_source_12_meaning IN VARCHAR2
19272 --Entered Currency Code
19273 , p_source_15 IN VARCHAR2
19274 --Entered Amount
19275 , p_source_18 IN NUMBER
19276 --Currency Conversion Date
19277 , p_source_19 IN DATE
19278 --Currency Conversion Rate
19279 , p_source_20 IN NUMBER
19280 --Currency Conversion Type
19281 , p_source_21 IN VARCHAR2
19282 --Accounted Amount
19283 , p_source_22 IN NUMBER
19284 --Accounting Line Type
19285 , p_source_24 IN NUMBER
19286 )
19287 IS
19288
19289 l_component_type VARCHAR2(80);
19290 l_component_code VARCHAR2(30);
19291 l_component_type_code VARCHAR2(1);
19292 l_component_appl_id INTEGER;
19293 l_amb_context_code VARCHAR2(30);
19294 l_entity_code VARCHAR2(30);
19295 l_event_class_code VARCHAR2(30);
19296 l_ae_header_id NUMBER;
19297 l_event_type_code VARCHAR2(30);
19298 l_line_definition_code VARCHAR2(30);
19299 l_line_definition_owner_code VARCHAR2(1);
19300 --
19301 -- adr variables
19302 l_segment VARCHAR2(30);
19303 l_ccid NUMBER;
19304 l_adr_transaction_coa_id NUMBER;
19305 l_adr_accounting_coa_id NUMBER;
19306 l_adr_flexfield_segment_code VARCHAR2(30);
19307 l_adr_flex_value_set_id NUMBER;
19308 l_adr_value_type_code VARCHAR2(30);
19309 l_adr_value_combination_id NUMBER;
19310 l_adr_value_segment_code VARCHAR2(30);
19311
19312 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
19313 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
19314 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
19315 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
19316
19317 -- 4262811 Variables ------------------------------------------------------------------------------------------
19318 l_entered_amt_idx NUMBER;
19319 l_accted_amt_idx NUMBER;
19320 l_acc_rev_flag VARCHAR2(1);
19321 l_accrual_line_num NUMBER;
19322 l_tmp_amt NUMBER;
19323 l_acc_rev_natural_side_code VARCHAR2(1);
19324
19325 l_num_entries NUMBER;
19326 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
19327 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
19328 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
19329 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
19330 l_recog_line_1 NUMBER;
19331 l_recog_line_2 NUMBER;
19332
19333 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
19334 l_bflow_applied_to_amt NUMBER; -- 5132302
19335 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
19336
19337 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19338
19339 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
19340 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
19341
19342 ---------------------------------------------------------------------------------------------------------------
19343
19344
19345 --
19346 -- bulk performance
19347 --
19348 l_balance_type_code VARCHAR2(1);
19349 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
19350 l_log_module VARCHAR2(240);
19351
19352 --
19353 -- Upgrade strategy
19354 --
19355 l_actual_upg_option VARCHAR2(1);
19356 l_enc_upg_option VARCHAR2(1);
19357
19358 --
19359 BEGIN
19360 --
19361 IF g_log_enabled THEN
19362 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
19363 END IF;
19364 --
19365 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19366
19367 trace
19368 (p_msg => 'BEGIN of AcctLineType_38'
19369 ,p_level => C_LEVEL_PROCEDURE
19370 ,p_module => l_log_module);
19371
19372 END IF;
19373 --
19374 l_component_type := 'AMB_JLT';
19375 l_component_code := 'COST_VARIANCE';
19376 l_component_type_code := 'S';
19377 l_component_appl_id := 707;
19378 l_amb_context_code := 'DEFAULT';
19379 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
19380 l_event_class_code := 'USER_DEFINE';
19381 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
19382 l_line_definition_owner_code := 'S';
19383 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
19384 --
19385 l_balance_type_code := 'A';
19386 l_segment := NULL;
19387 l_ccid := NULL;
19388 l_adr_transaction_coa_id := NULL;
19389 l_adr_accounting_coa_id := NULL;
19390 l_adr_flexfield_segment_code := NULL;
19391 l_adr_flex_value_set_id := NULL;
19392 l_adr_value_type_code := NULL;
19393 l_adr_value_combination_id := NULL;
19394 l_adr_value_segment_code := NULL;
19395
19396 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
19397 l_bflow_class_code := ''; -- 4219869 Business Flow
19398 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
19399 l_budgetary_control_flag := 'N';
19400
19401 l_bflow_applied_to_amt_idx := NULL; -- 5132302
19402 l_bflow_applied_to_amt := NULL; -- 5132302
19403 l_entered_amt_idx := NULL; -- 4262811
19404 l_accted_amt_idx := NULL; -- 4262811
19405 l_acc_rev_flag := NULL; -- 4262811
19406 l_accrual_line_num := NULL; -- 4262811
19407 l_tmp_amt := NULL; -- 4262811
19408 --
19409
19410 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19411 l_balance_type_code <> 'B' THEN
19412 IF NVL(p_source_24,9E125) = 13
19413 THEN
19414
19415 --
19416 XLA_AE_LINES_PKG.SetNewLine;
19417
19418 p_balance_type_code := l_balance_type_code;
19419 -- set the flag so later we will know whether the gain loss line needs to be created
19420
19421 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19422 p_actual_flag :='A';
19423 END IF;
19424
19425 --
19426 -- bulk performance
19427 --
19428 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19429 p_header_num => 0); -- 4262811
19430 --
19431 -- set accounting line options
19432 --
19433 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19434 p_natural_side_code => 'D'
19435 , p_gain_or_loss_flag => 'N'
19436 , p_gl_transfer_mode_code => 'S'
19437 , p_acct_entry_type_code => 'A'
19438 , p_switch_side_flag => 'Y'
19439 , p_merge_duplicate_code => 'N'
19440 );
19441 --
19442 l_acc_rev_natural_side_code := 'C'; -- 4262811
19443 --
19444 --
19445 -- set accounting line type info
19446 --
19447 xla_ae_lines_pkg.SetAcctLineType
19448 (p_component_type => l_component_type
19449 ,p_event_type_code => l_event_type_code
19450 ,p_line_definition_owner_code => l_line_definition_owner_code
19451 ,p_line_definition_code => l_line_definition_code
19452 ,p_accounting_line_code => l_component_code
19453 ,p_accounting_line_type_code => l_component_type_code
19454 ,p_accounting_line_appl_id => l_component_appl_id
19455 ,p_amb_context_code => l_amb_context_code
19456 ,p_entity_code => l_entity_code
19457 ,p_event_class_code => l_event_class_code);
19458 --
19459 -- set accounting class
19460 --
19461 xla_ae_lines_pkg.SetAcctClass(
19462 p_accounting_class_code => 'COST_VARIANCE'
19463 , p_ae_header_id => l_ae_header_id
19464 );
19465
19466 --
19467 -- set rounding class
19468 --
19469 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19470 'COST_VARIANCE';
19471
19472 --
19473 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19474 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19475 --
19476 -- bulk performance
19477 --
19478 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19479
19480 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19481 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19482
19483 -- 4955764
19484 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19485 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19486
19487 -- 4458381 Public Sector Enh
19488
19489 --
19490 -- set accounting attributes for the line type
19491 --
19492 l_entered_amt_idx := 3;
19493 l_accted_amt_idx := 8;
19494 l_bflow_applied_to_amt_idx := NULL; -- 5132302
19495 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19496 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
19497 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19498 l_rec_acct_attrs.array_char_value(2) := p_source_12;
19499 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
19500 l_rec_acct_attrs.array_num_value(3) := p_source_18;
19501 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
19502 l_rec_acct_attrs.array_char_value(4) := p_source_15;
19503 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
19504 l_rec_acct_attrs.array_date_value(5) := p_source_19;
19505 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
19506 l_rec_acct_attrs.array_num_value(6) := p_source_20;
19507 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
19508 l_rec_acct_attrs.array_char_value(7) := p_source_21;
19509 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
19510 l_rec_acct_attrs.array_num_value(8) := p_source_22;
19511
19512 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19513 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19514
19515 ---------------------------------------------------------------------------------------------------------------
19516 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19517 ---------------------------------------------------------------------------------------------------------------
19518 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19519
19520 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19521 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19522
19523 IF xla_accounting_cache_pkg.GetValueChar
19524 (p_source_code => 'LEDGER_CATEGORY_CODE'
19525 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19526 AND l_bflow_method_code = 'PRIOR_ENTRY'
19527 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19528 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19529 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19530 )
19531 THEN
19532 xla_ae_lines_pkg.BflowUpgEntry
19533 (p_business_method_code => l_bflow_method_code
19534 ,p_business_class_code => l_bflow_class_code
19535 ,p_balance_type => l_balance_type_code);
19536 ELSE
19537 NULL;
19538 -- No business flow processing for business flow method of NONE.
19539 END IF;
19540
19541 --
19542 -- call analytical criteria
19543 --
19544
19545 --
19546 -- call description
19547 --
19548 -- No description or it is inherited.
19549 --
19550 -- call ADRs
19551 -- Bug 4922099
19552 --
19553 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19554 (NVL(l_actual_upg_option, 'N') = 'O') OR
19555 (NVL(l_enc_upg_option, 'N') = 'O')
19556 )
19557 THEN
19558 NULL;
19559 --
19560 --
19561
19562 l_ccid := AcctDerRule_4(
19563 p_application_id => p_application_id
19564 , p_ae_header_id => l_ae_header_id
19565 , p_source_4 => p_source_4
19566 , x_transaction_coa_id => l_adr_transaction_coa_id
19567 , x_accounting_coa_id => l_adr_accounting_coa_id
19568 , x_value_type_code => l_adr_value_type_code
19569 , p_side => 'NA'
19570 );
19571
19572 xla_ae_lines_pkg.set_ccid(
19573 p_code_combination_id => l_ccid
19574 , p_value_type_code => l_adr_value_type_code
19575 , p_transaction_coa_id => l_adr_transaction_coa_id
19576 , p_accounting_coa_id => l_adr_accounting_coa_id
19577 , p_adr_code => 'CST_DEFAULT'
19578 , p_adr_type_code => 'S'
19579 , p_component_type => l_component_type
19580 , p_component_code => l_component_code
19581 , p_component_type_code => l_component_type_code
19582 , p_component_appl_id => l_component_appl_id
19583 , p_amb_context_code => l_amb_context_code
19584 , p_side => 'NA'
19585 );
19586
19587
19588 --
19589 --
19590 END IF;
19591 --
19592 -- Bug 4922099
19593 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19594 (NVL(l_enc_upg_option, 'N') = 'O')
19595 ) AND
19596 (l_bflow_method_code = 'PRIOR_ENTRY')
19597 )
19598 THEN
19599 IF
19600 --
19601 1 = 2
19602 --
19603 THEN
19604 xla_accounting_err_pkg.build_message
19605 (p_appli_s_name => 'XLA'
19606 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19607 ,p_token_1 => 'LINE_NUMBER'
19608 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
19609 ,p_token_2 => 'LINE_TYPE_NAME'
19610 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
19611 l_component_type
19612 ,l_component_code
19613 ,l_component_type_code
19614 ,l_component_appl_id
19615 ,l_amb_context_code
19616 ,l_entity_code
19617 ,l_event_class_code
19618 )
19619 ,p_token_3 => 'OWNER'
19620 ,p_value_3 => xla_lookups_pkg.get_meaning(
19621 p_lookup_type => 'XLA_OWNER_TYPE'
19622 ,p_lookup_code => l_component_type_code
19623 )
19624 ,p_token_4 => 'PRODUCT_NAME'
19625 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19626 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19627 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19628 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19629 ,p_ae_header_id => NULL
19630 );
19631
19632 IF (C_LEVEL_ERROR>= g_log_level) THEN
19633 trace
19634 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19635 ,p_level => C_LEVEL_ERROR
19636 ,p_module => l_log_module);
19637 END IF;
19638 END IF;
19639 END IF;
19640 --
19641 --
19642 ------------------------------------------------------------------------------------------------
19643 -- 4219869 Business Flow
19644 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19645 -- Prior Entry. Currently, the following code is always generated.
19646 ------------------------------------------------------------------------------------------------
19647 XLA_AE_LINES_PKG.ValidateCurrentLine;
19648
19649 ------------------------------------------------------------------------------------
19650 -- 4219869 Business Flow
19651 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19652 ------------------------------------------------------------------------------------
19653 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19654
19655 ----------------------------------------------------------------------------------
19656 -- 4219869 Business Flow
19657 -- Update journal entry status -- Need to generate this within IF <condition>
19658 ----------------------------------------------------------------------------------
19659 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19660 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19661 ,p_balance_type_code => l_balance_type_code
19662 );
19663
19664 -------------------------------------------------------------------------------------------
19665 -- 4262811 - Generate the Accrual Reversal lines
19666 -------------------------------------------------------------------------------------------
19667 BEGIN
19668 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19669 (g_array_event(p_event_id).array_value_num('header_index'));
19670 IF l_acc_rev_flag IS NULL THEN
19671 l_acc_rev_flag := 'N';
19672 END IF;
19673 EXCEPTION
19674 WHEN OTHERS THEN
19675 l_acc_rev_flag := 'N';
19676 END;
19677 --
19678 IF (l_acc_rev_flag = 'Y') THEN
19679
19680 -- 4645092 ------------------------------------------------------------------------------
19681 -- To allow MPA report to determine if it should generate report process
19682 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19683 ------------------------------------------------------------------------------------------
19684
19685 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19686 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19687 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
19688 -- call ADRs
19689 -- Bug 4922099
19690 --
19691 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19692 (NVL(l_actual_upg_option, 'N') = 'O') OR
19693 (NVL(l_enc_upg_option, 'N') = 'O')
19694 )
19695 THEN
19696 NULL;
19697 --
19698 --
19699
19700 l_ccid := AcctDerRule_4(
19701 p_application_id => p_application_id
19702 , p_ae_header_id => l_ae_header_id
19703 , p_source_4 => p_source_4
19704 , x_transaction_coa_id => l_adr_transaction_coa_id
19705 , x_accounting_coa_id => l_adr_accounting_coa_id
19706 , x_value_type_code => l_adr_value_type_code
19707 , p_side => 'NA'
19708 );
19709
19710 xla_ae_lines_pkg.set_ccid(
19711 p_code_combination_id => l_ccid
19712 , p_value_type_code => l_adr_value_type_code
19713 , p_transaction_coa_id => l_adr_transaction_coa_id
19714 , p_accounting_coa_id => l_adr_accounting_coa_id
19715 , p_adr_code => 'CST_DEFAULT'
19716 , p_adr_type_code => 'S'
19717 , p_component_type => l_component_type
19718 , p_component_code => l_component_code
19719 , p_component_type_code => l_component_type_code
19720 , p_component_appl_id => l_component_appl_id
19721 , p_amb_context_code => l_amb_context_code
19722 , p_side => 'NA'
19723 );
19724
19725
19726 --
19727 --
19728 END IF;
19729
19730 --
19731 -- Update the line information that should be overwritten
19732 --
19733 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19734 p_header_num => 1);
19735 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
19736
19737 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19738
19739 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
19740 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19741 END IF;
19742
19743 --
19744 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19745 --
19746 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19747 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
19748 ELSE
19749 ---------------------------------------------------------------------------------------------------
19750 -- 4262811a Switch Sign
19751 ---------------------------------------------------------------------------------------------------
19752 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
19753 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19754 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19755 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19756 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19757 -- 5132302
19758 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19759 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19760
19761 END IF;
19762
19763 -- 4955764
19764 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19765 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19766
19767
19768 XLA_AE_LINES_PKG.ValidateCurrentLine;
19769 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19770
19771 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19772 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19773 ,p_balance_type_code => l_balance_type_code);
19774
19775 END IF;
19776
19777 -----------------------------------------------------------------------------------------
19778 -- 4262811 Multiperiod Accounting
19779 -----------------------------------------------------------------------------------------
19780 -- No MPA option is assigned.
19781
19782
19783 END IF;
19784 END IF;
19785 --
19786
19787 --
19788 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19789 trace
19790 (p_msg => 'END of AcctLineType_38'
19791 ,p_level => C_LEVEL_PROCEDURE
19792 ,p_module => l_log_module);
19793 END IF;
19794 --
19795 EXCEPTION
19796 WHEN xla_exceptions_pkg.application_exception THEN
19797 RAISE;
19798 WHEN OTHERS THEN
19799 xla_exceptions_pkg.raise_message
19800 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_38');
19801 END AcctLineType_38;
19802 --
19803
19804 ---------------------------------------
19805 --
19806 -- PRIVATE FUNCTION
19807 -- AcctLineType_39
19808 --
19809 ---------------------------------------
19810 PROCEDURE AcctLineType_39 (
19811 p_application_id IN NUMBER
19812 ,p_event_id IN NUMBER
19813 ,p_calculate_acctd_flag IN VARCHAR2
19814 ,p_calculate_g_l_flag IN VARCHAR2
19815 ,p_actual_flag IN OUT VARCHAR2
19816 ,p_balance_type_code OUT VARCHAR2
19817 ,p_gain_or_loss_ref OUT VARCHAR2
19818
19819 --Cost Management Default Account
19820 , p_source_4 IN NUMBER
19821 --DISTRIBUTION_IDENTIFIER
19822 , p_source_11 IN NUMBER
19823 --Distribution Type
19824 , p_source_12 IN VARCHAR2
19825 , p_source_12_meaning IN VARCHAR2
19826 --Entered Currency Code
19827 , p_source_15 IN VARCHAR2
19828 --Entered Amount
19829 , p_source_18 IN NUMBER
19830 --Currency Conversion Date
19831 , p_source_19 IN DATE
19832 --Currency Conversion Rate
19833 , p_source_20 IN NUMBER
19834 --Currency Conversion Type
19835 , p_source_21 IN VARCHAR2
19836 --Accounted Amount
19837 , p_source_22 IN NUMBER
19838 --Accounting Line Type
19839 , p_source_24 IN NUMBER
19840 )
19841 IS
19842
19843 l_component_type VARCHAR2(80);
19844 l_component_code VARCHAR2(30);
19845 l_component_type_code VARCHAR2(1);
19846 l_component_appl_id INTEGER;
19847 l_amb_context_code VARCHAR2(30);
19848 l_entity_code VARCHAR2(30);
19849 l_event_class_code VARCHAR2(30);
19850 l_ae_header_id NUMBER;
19851 l_event_type_code VARCHAR2(30);
19852 l_line_definition_code VARCHAR2(30);
19853 l_line_definition_owner_code VARCHAR2(1);
19854 --
19855 -- adr variables
19856 l_segment VARCHAR2(30);
19857 l_ccid NUMBER;
19858 l_adr_transaction_coa_id NUMBER;
19859 l_adr_accounting_coa_id NUMBER;
19860 l_adr_flexfield_segment_code VARCHAR2(30);
19861 l_adr_flex_value_set_id NUMBER;
19862 l_adr_value_type_code VARCHAR2(30);
19863 l_adr_value_combination_id NUMBER;
19864 l_adr_value_segment_code VARCHAR2(30);
19865
19866 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
19867 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
19868 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
19869 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
19870
19871 -- 4262811 Variables ------------------------------------------------------------------------------------------
19872 l_entered_amt_idx NUMBER;
19873 l_accted_amt_idx NUMBER;
19874 l_acc_rev_flag VARCHAR2(1);
19875 l_accrual_line_num NUMBER;
19876 l_tmp_amt NUMBER;
19877 l_acc_rev_natural_side_code VARCHAR2(1);
19878
19879 l_num_entries NUMBER;
19880 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
19881 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
19882 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
19883 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
19884 l_recog_line_1 NUMBER;
19885 l_recog_line_2 NUMBER;
19886
19887 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
19888 l_bflow_applied_to_amt NUMBER; -- 5132302
19889 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
19890
19891 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19892
19893 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
19894 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
19895
19896 ---------------------------------------------------------------------------------------------------------------
19897
19898
19899 --
19900 -- bulk performance
19901 --
19902 l_balance_type_code VARCHAR2(1);
19903 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
19904 l_log_module VARCHAR2(240);
19905
19906 --
19907 -- Upgrade strategy
19908 --
19909 l_actual_upg_option VARCHAR2(1);
19910 l_enc_upg_option VARCHAR2(1);
19911
19912 --
19913 BEGIN
19914 --
19915 IF g_log_enabled THEN
19916 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
19917 END IF;
19918 --
19919 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19920
19921 trace
19922 (p_msg => 'BEGIN of AcctLineType_39'
19923 ,p_level => C_LEVEL_PROCEDURE
19924 ,p_module => l_log_module);
19925
19926 END IF;
19927 --
19928 l_component_type := 'AMB_JLT';
19929 l_component_code := 'COST_VARIANCE';
19930 l_component_type_code := 'S';
19931 l_component_appl_id := 707;
19932 l_amb_context_code := 'DEFAULT';
19933 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
19934 l_event_class_code := 'USER_DEFINE';
19935 l_event_type_code := 'UDIR_INTERORG_RCPT';
19936 l_line_definition_owner_code := 'S';
19937 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
19938 --
19939 l_balance_type_code := 'A';
19940 l_segment := NULL;
19941 l_ccid := NULL;
19942 l_adr_transaction_coa_id := NULL;
19943 l_adr_accounting_coa_id := NULL;
19944 l_adr_flexfield_segment_code := NULL;
19945 l_adr_flex_value_set_id := NULL;
19946 l_adr_value_type_code := NULL;
19947 l_adr_value_combination_id := NULL;
19948 l_adr_value_segment_code := NULL;
19949
19950 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
19951 l_bflow_class_code := ''; -- 4219869 Business Flow
19952 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
19953 l_budgetary_control_flag := 'N';
19954
19955 l_bflow_applied_to_amt_idx := NULL; -- 5132302
19956 l_bflow_applied_to_amt := NULL; -- 5132302
19957 l_entered_amt_idx := NULL; -- 4262811
19958 l_accted_amt_idx := NULL; -- 4262811
19959 l_acc_rev_flag := NULL; -- 4262811
19960 l_accrual_line_num := NULL; -- 4262811
19961 l_tmp_amt := NULL; -- 4262811
19962 --
19963
19964 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19965 l_balance_type_code <> 'B' THEN
19966 IF NVL(p_source_24,9E125) = 13
19967 THEN
19968
19969 --
19970 XLA_AE_LINES_PKG.SetNewLine;
19971
19972 p_balance_type_code := l_balance_type_code;
19973 -- set the flag so later we will know whether the gain loss line needs to be created
19974
19975 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19976 p_actual_flag :='A';
19977 END IF;
19978
19979 --
19980 -- bulk performance
19981 --
19982 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19983 p_header_num => 0); -- 4262811
19984 --
19985 -- set accounting line options
19986 --
19987 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19988 p_natural_side_code => 'D'
19989 , p_gain_or_loss_flag => 'N'
19990 , p_gl_transfer_mode_code => 'S'
19991 , p_acct_entry_type_code => 'A'
19992 , p_switch_side_flag => 'Y'
19993 , p_merge_duplicate_code => 'N'
19994 );
19995 --
19996 l_acc_rev_natural_side_code := 'C'; -- 4262811
19997 --
19998 --
19999 -- set accounting line type info
20000 --
20001 xla_ae_lines_pkg.SetAcctLineType
20002 (p_component_type => l_component_type
20003 ,p_event_type_code => l_event_type_code
20004 ,p_line_definition_owner_code => l_line_definition_owner_code
20005 ,p_line_definition_code => l_line_definition_code
20006 ,p_accounting_line_code => l_component_code
20007 ,p_accounting_line_type_code => l_component_type_code
20008 ,p_accounting_line_appl_id => l_component_appl_id
20009 ,p_amb_context_code => l_amb_context_code
20010 ,p_entity_code => l_entity_code
20011 ,p_event_class_code => l_event_class_code);
20012 --
20013 -- set accounting class
20014 --
20015 xla_ae_lines_pkg.SetAcctClass(
20016 p_accounting_class_code => 'COST_VARIANCE'
20017 , p_ae_header_id => l_ae_header_id
20018 );
20019
20020 --
20021 -- set rounding class
20022 --
20023 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20024 'COST_VARIANCE';
20025
20026 --
20027 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20028 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20029 --
20030 -- bulk performance
20031 --
20032 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20033
20034 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20035 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20036
20037 -- 4955764
20038 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20039 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20040
20041 -- 4458381 Public Sector Enh
20042
20043 --
20044 -- set accounting attributes for the line type
20045 --
20046 l_entered_amt_idx := 3;
20047 l_accted_amt_idx := 8;
20048 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20049 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20050 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
20051 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20052 l_rec_acct_attrs.array_char_value(2) := p_source_12;
20053 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20054 l_rec_acct_attrs.array_num_value(3) := p_source_18;
20055 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20056 l_rec_acct_attrs.array_char_value(4) := p_source_15;
20057 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20058 l_rec_acct_attrs.array_date_value(5) := p_source_19;
20059 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20060 l_rec_acct_attrs.array_num_value(6) := p_source_20;
20061 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20062 l_rec_acct_attrs.array_char_value(7) := p_source_21;
20063 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
20064 l_rec_acct_attrs.array_num_value(8) := p_source_22;
20065
20066 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20067 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20068
20069 ---------------------------------------------------------------------------------------------------------------
20070 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20071 ---------------------------------------------------------------------------------------------------------------
20072 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20073
20074 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20075 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20076
20077 IF xla_accounting_cache_pkg.GetValueChar
20078 (p_source_code => 'LEDGER_CATEGORY_CODE'
20079 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20080 AND l_bflow_method_code = 'PRIOR_ENTRY'
20081 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20082 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20083 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20084 )
20085 THEN
20086 xla_ae_lines_pkg.BflowUpgEntry
20087 (p_business_method_code => l_bflow_method_code
20088 ,p_business_class_code => l_bflow_class_code
20089 ,p_balance_type => l_balance_type_code);
20090 ELSE
20091 NULL;
20092 -- No business flow processing for business flow method of NONE.
20093 END IF;
20094
20095 --
20096 -- call analytical criteria
20097 --
20098
20099 --
20100 -- call description
20101 --
20102 -- No description or it is inherited.
20103 --
20104 -- call ADRs
20105 -- Bug 4922099
20106 --
20107 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20108 (NVL(l_actual_upg_option, 'N') = 'O') OR
20109 (NVL(l_enc_upg_option, 'N') = 'O')
20110 )
20111 THEN
20112 NULL;
20113 --
20114 --
20115
20116 l_ccid := AcctDerRule_4(
20117 p_application_id => p_application_id
20118 , p_ae_header_id => l_ae_header_id
20119 , p_source_4 => p_source_4
20120 , x_transaction_coa_id => l_adr_transaction_coa_id
20121 , x_accounting_coa_id => l_adr_accounting_coa_id
20122 , x_value_type_code => l_adr_value_type_code
20123 , p_side => 'NA'
20124 );
20125
20126 xla_ae_lines_pkg.set_ccid(
20127 p_code_combination_id => l_ccid
20128 , p_value_type_code => l_adr_value_type_code
20129 , p_transaction_coa_id => l_adr_transaction_coa_id
20130 , p_accounting_coa_id => l_adr_accounting_coa_id
20131 , p_adr_code => 'CST_DEFAULT'
20132 , p_adr_type_code => 'S'
20133 , p_component_type => l_component_type
20134 , p_component_code => l_component_code
20135 , p_component_type_code => l_component_type_code
20136 , p_component_appl_id => l_component_appl_id
20137 , p_amb_context_code => l_amb_context_code
20138 , p_side => 'NA'
20139 );
20140
20141
20142 --
20143 --
20144 END IF;
20145 --
20146 -- Bug 4922099
20147 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20148 (NVL(l_enc_upg_option, 'N') = 'O')
20149 ) AND
20150 (l_bflow_method_code = 'PRIOR_ENTRY')
20151 )
20152 THEN
20153 IF
20154 --
20155 1 = 2
20156 --
20157 THEN
20158 xla_accounting_err_pkg.build_message
20159 (p_appli_s_name => 'XLA'
20160 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20161 ,p_token_1 => 'LINE_NUMBER'
20162 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
20163 ,p_token_2 => 'LINE_TYPE_NAME'
20164 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
20165 l_component_type
20166 ,l_component_code
20167 ,l_component_type_code
20168 ,l_component_appl_id
20169 ,l_amb_context_code
20170 ,l_entity_code
20171 ,l_event_class_code
20172 )
20173 ,p_token_3 => 'OWNER'
20174 ,p_value_3 => xla_lookups_pkg.get_meaning(
20175 p_lookup_type => 'XLA_OWNER_TYPE'
20176 ,p_lookup_code => l_component_type_code
20177 )
20178 ,p_token_4 => 'PRODUCT_NAME'
20179 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20180 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20181 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20182 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20183 ,p_ae_header_id => NULL
20184 );
20185
20186 IF (C_LEVEL_ERROR>= g_log_level) THEN
20187 trace
20188 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20189 ,p_level => C_LEVEL_ERROR
20190 ,p_module => l_log_module);
20191 END IF;
20192 END IF;
20193 END IF;
20194 --
20195 --
20196 ------------------------------------------------------------------------------------------------
20197 -- 4219869 Business Flow
20198 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20199 -- Prior Entry. Currently, the following code is always generated.
20200 ------------------------------------------------------------------------------------------------
20201 XLA_AE_LINES_PKG.ValidateCurrentLine;
20202
20203 ------------------------------------------------------------------------------------
20204 -- 4219869 Business Flow
20205 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20206 ------------------------------------------------------------------------------------
20207 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20208
20209 ----------------------------------------------------------------------------------
20210 -- 4219869 Business Flow
20211 -- Update journal entry status -- Need to generate this within IF <condition>
20212 ----------------------------------------------------------------------------------
20213 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20214 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20215 ,p_balance_type_code => l_balance_type_code
20216 );
20217
20218 -------------------------------------------------------------------------------------------
20219 -- 4262811 - Generate the Accrual Reversal lines
20220 -------------------------------------------------------------------------------------------
20221 BEGIN
20222 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20223 (g_array_event(p_event_id).array_value_num('header_index'));
20224 IF l_acc_rev_flag IS NULL THEN
20225 l_acc_rev_flag := 'N';
20226 END IF;
20227 EXCEPTION
20228 WHEN OTHERS THEN
20229 l_acc_rev_flag := 'N';
20230 END;
20231 --
20232 IF (l_acc_rev_flag = 'Y') THEN
20233
20234 -- 4645092 ------------------------------------------------------------------------------
20235 -- To allow MPA report to determine if it should generate report process
20236 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20237 ------------------------------------------------------------------------------------------
20238
20239 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20240 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20241 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
20242 -- call ADRs
20243 -- Bug 4922099
20244 --
20245 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20246 (NVL(l_actual_upg_option, 'N') = 'O') OR
20247 (NVL(l_enc_upg_option, 'N') = 'O')
20248 )
20249 THEN
20250 NULL;
20251 --
20252 --
20253
20254 l_ccid := AcctDerRule_4(
20255 p_application_id => p_application_id
20256 , p_ae_header_id => l_ae_header_id
20257 , p_source_4 => p_source_4
20258 , x_transaction_coa_id => l_adr_transaction_coa_id
20259 , x_accounting_coa_id => l_adr_accounting_coa_id
20260 , x_value_type_code => l_adr_value_type_code
20261 , p_side => 'NA'
20262 );
20263
20264 xla_ae_lines_pkg.set_ccid(
20265 p_code_combination_id => l_ccid
20266 , p_value_type_code => l_adr_value_type_code
20267 , p_transaction_coa_id => l_adr_transaction_coa_id
20268 , p_accounting_coa_id => l_adr_accounting_coa_id
20269 , p_adr_code => 'CST_DEFAULT'
20270 , p_adr_type_code => 'S'
20271 , p_component_type => l_component_type
20272 , p_component_code => l_component_code
20273 , p_component_type_code => l_component_type_code
20274 , p_component_appl_id => l_component_appl_id
20275 , p_amb_context_code => l_amb_context_code
20276 , p_side => 'NA'
20277 );
20278
20279
20280 --
20281 --
20282 END IF;
20283
20284 --
20285 -- Update the line information that should be overwritten
20286 --
20287 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20288 p_header_num => 1);
20289 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
20290
20291 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20292
20293 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
20294 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20295 END IF;
20296
20297 --
20298 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20299 --
20300 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20301 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
20302 ELSE
20303 ---------------------------------------------------------------------------------------------------
20304 -- 4262811a Switch Sign
20305 ---------------------------------------------------------------------------------------------------
20306 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
20307 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20308 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20309 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20310 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20311 -- 5132302
20312 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20313 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20314
20315 END IF;
20316
20317 -- 4955764
20318 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20319 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20320
20321
20322 XLA_AE_LINES_PKG.ValidateCurrentLine;
20323 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20324
20325 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20326 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20327 ,p_balance_type_code => l_balance_type_code);
20328
20329 END IF;
20330
20331 -----------------------------------------------------------------------------------------
20332 -- 4262811 Multiperiod Accounting
20333 -----------------------------------------------------------------------------------------
20334 -- No MPA option is assigned.
20335
20336
20337 END IF;
20338 END IF;
20339 --
20340
20341 --
20342 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20343 trace
20344 (p_msg => 'END of AcctLineType_39'
20345 ,p_level => C_LEVEL_PROCEDURE
20346 ,p_module => l_log_module);
20347 END IF;
20348 --
20349 EXCEPTION
20350 WHEN xla_exceptions_pkg.application_exception THEN
20351 RAISE;
20352 WHEN OTHERS THEN
20353 xla_exceptions_pkg.raise_message
20354 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_39');
20355 END AcctLineType_39;
20356 --
20357
20358 ---------------------------------------
20359 --
20360 -- PRIVATE FUNCTION
20361 -- AcctLineType_40
20362 --
20363 ---------------------------------------
20364 PROCEDURE AcctLineType_40 (
20365 p_application_id IN NUMBER
20366 ,p_event_id IN NUMBER
20367 ,p_calculate_acctd_flag IN VARCHAR2
20368 ,p_calculate_g_l_flag IN VARCHAR2
20369 ,p_actual_flag IN OUT VARCHAR2
20370 ,p_balance_type_code OUT VARCHAR2
20371 ,p_gain_or_loss_ref OUT VARCHAR2
20372
20373 --Cost Management Default Account
20374 , p_source_4 IN NUMBER
20375 --Applied to Application ID
20376 , p_source_6 IN NUMBER
20377 --Applied to Distribution Link Type
20378 , p_source_7 IN VARCHAR2
20379 --Applied to Entity Code
20380 , p_source_8 IN VARCHAR2
20381 --Applied To Purchase Document Identifier
20382 , p_source_10 IN NUMBER
20383 --DISTRIBUTION_IDENTIFIER
20384 , p_source_11 IN NUMBER
20385 --Distribution Type
20386 , p_source_12 IN VARCHAR2
20387 , p_source_12_meaning IN VARCHAR2
20388 --PO Budget Account
20389 , p_source_13 IN NUMBER
20390 --Encumbrance Reversal Amount Entered
20391 , p_source_14 IN NUMBER
20392 --Entered Currency Code
20393 , p_source_15 IN VARCHAR2
20394 --Transaction Encumbrance Reversal Amount
20395 , p_source_16 IN NUMBER
20396 --Entered Amount
20397 , p_source_18 IN NUMBER
20398 --Currency Conversion Date
20399 , p_source_19 IN DATE
20400 --Currency Conversion Rate
20401 , p_source_20 IN NUMBER
20402 --Currency Conversion Type
20403 , p_source_21 IN VARCHAR2
20404 --Accounted Amount
20405 , p_source_22 IN NUMBER
20406 --Purchasing Encumbrance Type Identifier
20407 , p_source_23 IN NUMBER
20408 --Accounting Line Type
20409 , p_source_24 IN NUMBER
20410 --Costing Encumbrance Upgrade Option
20411 , p_source_27 IN VARCHAR2
20412 --TXN_PO_DISTRIBUTION_ID
20413 , p_source_28 IN NUMBER
20414 )
20415 IS
20416
20417 l_component_type VARCHAR2(80);
20418 l_component_code VARCHAR2(30);
20419 l_component_type_code VARCHAR2(1);
20420 l_component_appl_id INTEGER;
20421 l_amb_context_code VARCHAR2(30);
20422 l_entity_code VARCHAR2(30);
20423 l_event_class_code VARCHAR2(30);
20424 l_ae_header_id NUMBER;
20425 l_event_type_code VARCHAR2(30);
20426 l_line_definition_code VARCHAR2(30);
20427 l_line_definition_owner_code VARCHAR2(1);
20428 --
20429 -- adr variables
20430 l_segment VARCHAR2(30);
20431 l_ccid NUMBER;
20432 l_adr_transaction_coa_id NUMBER;
20433 l_adr_accounting_coa_id NUMBER;
20434 l_adr_flexfield_segment_code VARCHAR2(30);
20435 l_adr_flex_value_set_id NUMBER;
20436 l_adr_value_type_code VARCHAR2(30);
20437 l_adr_value_combination_id NUMBER;
20438 l_adr_value_segment_code VARCHAR2(30);
20439
20440 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
20441 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
20442 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
20443 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
20444
20445 -- 4262811 Variables ------------------------------------------------------------------------------------------
20446 l_entered_amt_idx NUMBER;
20447 l_accted_amt_idx NUMBER;
20448 l_acc_rev_flag VARCHAR2(1);
20449 l_accrual_line_num NUMBER;
20450 l_tmp_amt NUMBER;
20451 l_acc_rev_natural_side_code VARCHAR2(1);
20452
20453 l_num_entries NUMBER;
20454 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
20455 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
20456 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
20457 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
20458 l_recog_line_1 NUMBER;
20459 l_recog_line_2 NUMBER;
20460
20461 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
20462 l_bflow_applied_to_amt NUMBER; -- 5132302
20463 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
20464
20465 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20466
20467 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
20468 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
20469
20470 ---------------------------------------------------------------------------------------------------------------
20471
20472
20473 --
20474 -- bulk performance
20475 --
20476 l_balance_type_code VARCHAR2(1);
20477 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
20478 l_log_module VARCHAR2(240);
20479
20480 --
20481 -- Upgrade strategy
20482 --
20483 l_actual_upg_option VARCHAR2(1);
20484 l_enc_upg_option VARCHAR2(1);
20485
20486 --
20487 BEGIN
20488 --
20489 IF g_log_enabled THEN
20490 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
20491 END IF;
20492 --
20493 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20494
20495 trace
20496 (p_msg => 'BEGIN of AcctLineType_40'
20497 ,p_level => C_LEVEL_PROCEDURE
20498 ,p_module => l_log_module);
20499
20500 END IF;
20501 --
20502 l_component_type := 'AMB_JLT';
20503 l_component_code := 'COST_VARIANCE';
20504 l_component_type_code := 'S';
20505 l_component_appl_id := 707;
20506 l_amb_context_code := 'DEFAULT';
20507 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
20508 l_event_class_code := 'PURCHASE_ORDER';
20509 l_event_type_code := 'PURCHASE_ORDER_ALL';
20510 l_line_definition_owner_code := 'S';
20511 l_line_definition_code := 'PURCHASE_ORDER';
20512 --
20513 l_balance_type_code := 'A';
20514 l_segment := NULL;
20515 l_ccid := NULL;
20516 l_adr_transaction_coa_id := NULL;
20517 l_adr_accounting_coa_id := NULL;
20518 l_adr_flexfield_segment_code := NULL;
20519 l_adr_flex_value_set_id := NULL;
20520 l_adr_value_type_code := NULL;
20521 l_adr_value_combination_id := NULL;
20522 l_adr_value_segment_code := NULL;
20523
20524 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
20525 l_bflow_class_code := ''; -- 4219869 Business Flow
20526 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
20527 l_budgetary_control_flag := 'N';
20528
20529 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20530 l_bflow_applied_to_amt := NULL; -- 5132302
20531 l_entered_amt_idx := NULL; -- 4262811
20532 l_accted_amt_idx := NULL; -- 4262811
20533 l_acc_rev_flag := NULL; -- 4262811
20534 l_accrual_line_num := NULL; -- 4262811
20535 l_tmp_amt := NULL; -- 4262811
20536 --
20537
20538 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20539 l_balance_type_code <> 'B' THEN
20540 IF NVL(p_source_24,9E125) = 13
20541 THEN
20542
20543 --
20544 XLA_AE_LINES_PKG.SetNewLine;
20545
20546 p_balance_type_code := l_balance_type_code;
20547 -- set the flag so later we will know whether the gain loss line needs to be created
20548
20549 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20550 p_actual_flag :='A';
20551 END IF;
20552
20553 --
20554 -- bulk performance
20555 --
20556 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20557 p_header_num => 0); -- 4262811
20558 --
20559 -- set accounting line options
20560 --
20561 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20562 p_natural_side_code => 'D'
20563 , p_gain_or_loss_flag => 'N'
20564 , p_gl_transfer_mode_code => 'S'
20565 , p_acct_entry_type_code => 'A'
20566 , p_switch_side_flag => 'Y'
20567 , p_merge_duplicate_code => 'N'
20568 );
20569 --
20570 l_acc_rev_natural_side_code := 'C'; -- 4262811
20571 --
20572 --
20573 -- set accounting line type info
20574 --
20575 xla_ae_lines_pkg.SetAcctLineType
20576 (p_component_type => l_component_type
20577 ,p_event_type_code => l_event_type_code
20578 ,p_line_definition_owner_code => l_line_definition_owner_code
20579 ,p_line_definition_code => l_line_definition_code
20580 ,p_accounting_line_code => l_component_code
20581 ,p_accounting_line_type_code => l_component_type_code
20582 ,p_accounting_line_appl_id => l_component_appl_id
20583 ,p_amb_context_code => l_amb_context_code
20584 ,p_entity_code => l_entity_code
20585 ,p_event_class_code => l_event_class_code);
20586 --
20587 -- set accounting class
20588 --
20589 xla_ae_lines_pkg.SetAcctClass(
20590 p_accounting_class_code => 'COST_VARIANCE'
20591 , p_ae_header_id => l_ae_header_id
20592 );
20593
20594 --
20595 -- set rounding class
20596 --
20597 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20598 'COST_VARIANCE';
20599
20600 --
20601 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20602 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20603 --
20604 -- bulk performance
20605 --
20606 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20607
20608 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20609 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20610
20611 -- 4955764
20612 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20613 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20614
20615 -- 4458381 Public Sector Enh
20616
20617 --
20618 -- set accounting attributes for the line type
20619 --
20620 l_entered_amt_idx := 17;
20621 l_accted_amt_idx := 22;
20622 l_bflow_applied_to_amt_idx := NULL; -- 5132302
20623 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
20624 l_rec_acct_attrs.array_num_value(1) := p_source_6;
20625 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
20626 l_rec_acct_attrs.array_char_value(2) := p_source_7;
20627 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
20628 l_rec_acct_attrs.array_char_value(3) := p_source_8;
20629 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
20630 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
20631 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
20632 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
20633 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
20634 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
20635 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
20636 l_rec_acct_attrs.array_char_value(7) := p_source_12;
20637 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
20638 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
20639 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
20640 l_rec_acct_attrs.array_num_value(9) := p_source_14;
20641 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
20642 l_rec_acct_attrs.array_char_value(10) := p_source_15;
20643 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
20644 l_rec_acct_attrs.array_num_value(11) := p_source_16;
20645 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
20646 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
20647 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
20648 l_rec_acct_attrs.array_num_value(13) := p_source_14;
20649 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
20650 l_rec_acct_attrs.array_char_value(14) := p_source_15;
20651 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
20652 l_rec_acct_attrs.array_num_value(15) := p_source_16;
20653 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
20654 l_rec_acct_attrs.array_char_value(16) := p_source_27;
20655 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
20656 l_rec_acct_attrs.array_num_value(17) := p_source_18;
20657 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
20658 l_rec_acct_attrs.array_char_value(18) := p_source_15;
20659 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
20660 l_rec_acct_attrs.array_date_value(19) := p_source_19;
20661 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
20662 l_rec_acct_attrs.array_num_value(20) := p_source_20;
20663 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
20664 l_rec_acct_attrs.array_char_value(21) := p_source_21;
20665 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
20666 l_rec_acct_attrs.array_num_value(22) := p_source_22;
20667 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
20668 l_rec_acct_attrs.array_num_value(23) := p_source_23;
20669 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
20670 l_rec_acct_attrs.array_num_value(24) := p_source_23;
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_000005_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 := 'MTL_COST_UPD';
21095 l_event_type_code := 'MTL_COST_UPD_ALL';
21096 l_line_definition_owner_code := 'S';
21097 l_line_definition_code := 'MTL_COST_UPD';
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_000005_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 := 'WIP_MTL';
21649 l_event_type_code := 'WIP_MTL_ALL';
21650 l_line_definition_owner_code := 'S';
21651 l_line_definition_code := 'WIP_MTL';
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_000005_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 := 'UIPV_TXFR';
22204 l_line_definition_owner_code := 'S';
22205 l_line_definition_code := 'USER_IPV_TXFR';
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_000005_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 := 'UCG_TXFR';
22758 l_line_definition_owner_code := 'S';
22759 l_line_definition_code := 'USER_CG_TXFR';
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_000005_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 := 'COST_VARIANCE';
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 := 'CON_INV_OWNR_TXFR';
23311 l_event_type_code := 'CON_INV_OWNR_TXFR_ALL';
23312 l_line_definition_owner_code := 'S';
23313 l_line_definition_code := 'CON_INV_OWNR_TXFR';
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) = 13
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 => 'COST_VARIANCE'
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 'COST_VARIANCE';
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_000005_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 := 'COST_VARIANCE';
23860 l_component_type_code := 'S';
23861 l_component_appl_id := 707;
23862 l_amb_context_code := 'DEFAULT';
23863 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
23864 l_event_class_code := 'USER_DEFINE';
23865 l_event_type_code := 'UMISC_RCPT';
23866 l_line_definition_owner_code := 'S';
23867 l_line_definition_code := 'USER_RCPT';
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) = 13
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 => 'COST_VARIANCE'
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 'COST_VARIANCE';
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_000005_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 := 'COST_VARIANCE';
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 := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
24420 l_line_definition_owner_code := 'S';
24421 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
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) = 13
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 => 'COST_VARIANCE'
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 'COST_VARIANCE';
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_000005_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 --DISTRIBUTION_IDENTIFIER
24860 , p_source_11 IN NUMBER
24861 --Distribution Type
24862 , p_source_12 IN VARCHAR2
24863 , p_source_12_meaning IN VARCHAR2
24864 --Entered Currency Code
24865 , p_source_15 IN VARCHAR2
24866 --Entered Amount
24867 , p_source_18 IN NUMBER
24868 --Currency Conversion Date
24869 , p_source_19 IN DATE
24870 --Currency Conversion Rate
24871 , p_source_20 IN NUMBER
24872 --Currency Conversion Type
24873 , p_source_21 IN VARCHAR2
24874 --Accounted Amount
24875 , p_source_22 IN NUMBER
24876 --Accounting Line Type
24877 , p_source_24 IN NUMBER
24878 )
24879 IS
24880
24881 l_component_type VARCHAR2(80);
24882 l_component_code VARCHAR2(30);
24883 l_component_type_code VARCHAR2(1);
24884 l_component_appl_id INTEGER;
24885 l_amb_context_code VARCHAR2(30);
24886 l_entity_code VARCHAR2(30);
24887 l_event_class_code VARCHAR2(30);
24888 l_ae_header_id NUMBER;
24889 l_event_type_code VARCHAR2(30);
24890 l_line_definition_code VARCHAR2(30);
24891 l_line_definition_owner_code VARCHAR2(1);
24892 --
24893 -- adr variables
24894 l_segment VARCHAR2(30);
24895 l_ccid NUMBER;
24896 l_adr_transaction_coa_id NUMBER;
24897 l_adr_accounting_coa_id NUMBER;
24898 l_adr_flexfield_segment_code VARCHAR2(30);
24899 l_adr_flex_value_set_id NUMBER;
24900 l_adr_value_type_code VARCHAR2(30);
24901 l_adr_value_combination_id NUMBER;
24902 l_adr_value_segment_code VARCHAR2(30);
24903
24904 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
24905 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
24906 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
24907 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
24908
24909 -- 4262811 Variables ------------------------------------------------------------------------------------------
24910 l_entered_amt_idx NUMBER;
24911 l_accted_amt_idx NUMBER;
24912 l_acc_rev_flag VARCHAR2(1);
24913 l_accrual_line_num NUMBER;
24914 l_tmp_amt NUMBER;
24915 l_acc_rev_natural_side_code VARCHAR2(1);
24916
24917 l_num_entries NUMBER;
24918 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
24919 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
24920 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
24921 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
24922 l_recog_line_1 NUMBER;
24923 l_recog_line_2 NUMBER;
24924
24925 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
24926 l_bflow_applied_to_amt NUMBER; -- 5132302
24927 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
24928
24929 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24930
24931 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
24932 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
24933
24934 ---------------------------------------------------------------------------------------------------------------
24935
24936
24937 --
24938 -- bulk performance
24939 --
24940 l_balance_type_code VARCHAR2(1);
24941 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
24942 l_log_module VARCHAR2(240);
24943
24944 --
24945 -- Upgrade strategy
24946 --
24947 l_actual_upg_option VARCHAR2(1);
24948 l_enc_upg_option VARCHAR2(1);
24949
24950 --
24951 BEGIN
24952 --
24953 IF g_log_enabled THEN
24954 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
24955 END IF;
24956 --
24957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24958
24959 trace
24960 (p_msg => 'BEGIN of AcctLineType_48'
24961 ,p_level => C_LEVEL_PROCEDURE
24962 ,p_module => l_log_module);
24963
24964 END IF;
24965 --
24966 l_component_type := 'AMB_JLT';
24967 l_component_code := 'DEFERRED_COGS';
24968 l_component_type_code := 'S';
24969 l_component_appl_id := 707;
24970 l_amb_context_code := 'DEFAULT';
24971 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
24972 l_event_class_code := 'SALES_ORDER';
24973 l_event_type_code := 'SALES_ORDER_ALL';
24974 l_line_definition_owner_code := 'S';
24975 l_line_definition_code := 'SALES_ORDER';
24976 --
24977 l_balance_type_code := 'A';
24978 l_segment := NULL;
24979 l_ccid := NULL;
24980 l_adr_transaction_coa_id := NULL;
24981 l_adr_accounting_coa_id := NULL;
24982 l_adr_flexfield_segment_code := NULL;
24983 l_adr_flex_value_set_id := NULL;
24984 l_adr_value_type_code := NULL;
24985 l_adr_value_combination_id := NULL;
24986 l_adr_value_segment_code := NULL;
24987
24988 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
24989 l_bflow_class_code := ''; -- 4219869 Business Flow
24990 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
24991 l_budgetary_control_flag := 'N';
24992
24993 l_bflow_applied_to_amt_idx := NULL; -- 5132302
24994 l_bflow_applied_to_amt := NULL; -- 5132302
24995 l_entered_amt_idx := NULL; -- 4262811
24996 l_accted_amt_idx := NULL; -- 4262811
24997 l_acc_rev_flag := NULL; -- 4262811
24998 l_accrual_line_num := NULL; -- 4262811
24999 l_tmp_amt := NULL; -- 4262811
25000 --
25001
25002 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25003 l_balance_type_code <> 'B' THEN
25004 IF NVL(p_source_24,9E125) = 36
25005 THEN
25006
25007 --
25008 XLA_AE_LINES_PKG.SetNewLine;
25009
25010 p_balance_type_code := l_balance_type_code;
25011 -- set the flag so later we will know whether the gain loss line needs to be created
25012
25013 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25014 p_actual_flag :='A';
25015 END IF;
25016
25017 --
25018 -- bulk performance
25019 --
25020 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25021 p_header_num => 0); -- 4262811
25022 --
25023 -- set accounting line options
25024 --
25025 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25026 p_natural_side_code => 'D'
25027 , p_gain_or_loss_flag => 'N'
25028 , p_gl_transfer_mode_code => 'S'
25029 , p_acct_entry_type_code => 'A'
25030 , p_switch_side_flag => 'Y'
25031 , p_merge_duplicate_code => 'N'
25032 );
25033 --
25034 l_acc_rev_natural_side_code := 'C'; -- 4262811
25035 --
25036 --
25037 -- set accounting line type info
25038 --
25039 xla_ae_lines_pkg.SetAcctLineType
25040 (p_component_type => l_component_type
25041 ,p_event_type_code => l_event_type_code
25042 ,p_line_definition_owner_code => l_line_definition_owner_code
25043 ,p_line_definition_code => l_line_definition_code
25044 ,p_accounting_line_code => l_component_code
25045 ,p_accounting_line_type_code => l_component_type_code
25046 ,p_accounting_line_appl_id => l_component_appl_id
25047 ,p_amb_context_code => l_amb_context_code
25048 ,p_entity_code => l_entity_code
25049 ,p_event_class_code => l_event_class_code);
25050 --
25051 -- set accounting class
25052 --
25053 xla_ae_lines_pkg.SetAcctClass(
25054 p_accounting_class_code => 'DEFERRED_COGS'
25055 , p_ae_header_id => l_ae_header_id
25056 );
25057
25058 --
25059 -- set rounding class
25060 --
25061 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25062 'DEFERRED_COGS';
25063
25064 --
25065 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25066 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25067 --
25068 -- bulk performance
25069 --
25070 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25071
25072 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25073 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25074
25075 -- 4955764
25076 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25077 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25078
25079 -- 4458381 Public Sector Enh
25080
25081 --
25082 -- set accounting attributes for the line type
25083 --
25084 l_entered_amt_idx := 3;
25085 l_accted_amt_idx := 8;
25086 l_bflow_applied_to_amt_idx := NULL; -- 5132302
25087 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25088 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
25089 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25090 l_rec_acct_attrs.array_char_value(2) := p_source_12;
25091 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25092 l_rec_acct_attrs.array_num_value(3) := p_source_18;
25093 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25094 l_rec_acct_attrs.array_char_value(4) := p_source_15;
25095 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25096 l_rec_acct_attrs.array_date_value(5) := p_source_19;
25097 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25098 l_rec_acct_attrs.array_num_value(6) := p_source_20;
25099 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25100 l_rec_acct_attrs.array_char_value(7) := p_source_21;
25101 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25102 l_rec_acct_attrs.array_num_value(8) := p_source_22;
25103
25104 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25105 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25106
25107 ---------------------------------------------------------------------------------------------------------------
25108 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25109 ---------------------------------------------------------------------------------------------------------------
25110 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25111
25112 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25113 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25114
25115 IF xla_accounting_cache_pkg.GetValueChar
25116 (p_source_code => 'LEDGER_CATEGORY_CODE'
25117 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25118 AND l_bflow_method_code = 'PRIOR_ENTRY'
25119 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25120 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25121 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25122 )
25123 THEN
25124 xla_ae_lines_pkg.BflowUpgEntry
25125 (p_business_method_code => l_bflow_method_code
25126 ,p_business_class_code => l_bflow_class_code
25127 ,p_balance_type => l_balance_type_code);
25128 ELSE
25129 NULL;
25130 -- No business flow processing for business flow method of NONE.
25131 END IF;
25132
25133 --
25134 -- call analytical criteria
25135 --
25136
25137 --
25138 -- call description
25139 --
25140 -- No description or it is inherited.
25141 --
25142 -- call ADRs
25143 -- Bug 4922099
25144 --
25145 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25146 (NVL(l_actual_upg_option, 'N') = 'O') OR
25147 (NVL(l_enc_upg_option, 'N') = 'O')
25148 )
25149 THEN
25150 NULL;
25151 --
25152 --
25153
25154 l_ccid := AcctDerRule_4(
25155 p_application_id => p_application_id
25156 , p_ae_header_id => l_ae_header_id
25157 , p_source_4 => p_source_4
25158 , x_transaction_coa_id => l_adr_transaction_coa_id
25159 , x_accounting_coa_id => l_adr_accounting_coa_id
25160 , x_value_type_code => l_adr_value_type_code
25161 , p_side => 'NA'
25162 );
25163
25164 xla_ae_lines_pkg.set_ccid(
25165 p_code_combination_id => l_ccid
25166 , p_value_type_code => l_adr_value_type_code
25167 , p_transaction_coa_id => l_adr_transaction_coa_id
25168 , p_accounting_coa_id => l_adr_accounting_coa_id
25169 , p_adr_code => 'CST_DEFAULT'
25170 , p_adr_type_code => 'S'
25171 , p_component_type => l_component_type
25172 , p_component_code => l_component_code
25173 , p_component_type_code => l_component_type_code
25174 , p_component_appl_id => l_component_appl_id
25175 , p_amb_context_code => l_amb_context_code
25176 , p_side => 'NA'
25177 );
25178
25179
25180 --
25181 --
25182 END IF;
25183 --
25184 -- Bug 4922099
25185 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25186 (NVL(l_enc_upg_option, 'N') = 'O')
25187 ) AND
25188 (l_bflow_method_code = 'PRIOR_ENTRY')
25189 )
25190 THEN
25191 IF
25192 --
25193 1 = 2
25194 --
25195 THEN
25196 xla_accounting_err_pkg.build_message
25197 (p_appli_s_name => 'XLA'
25198 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25199 ,p_token_1 => 'LINE_NUMBER'
25200 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
25201 ,p_token_2 => 'LINE_TYPE_NAME'
25202 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
25203 l_component_type
25204 ,l_component_code
25205 ,l_component_type_code
25206 ,l_component_appl_id
25207 ,l_amb_context_code
25208 ,l_entity_code
25209 ,l_event_class_code
25210 )
25211 ,p_token_3 => 'OWNER'
25212 ,p_value_3 => xla_lookups_pkg.get_meaning(
25213 p_lookup_type => 'XLA_OWNER_TYPE'
25214 ,p_lookup_code => l_component_type_code
25215 )
25216 ,p_token_4 => 'PRODUCT_NAME'
25217 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25218 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25219 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25220 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25221 ,p_ae_header_id => NULL
25222 );
25223
25224 IF (C_LEVEL_ERROR>= g_log_level) THEN
25225 trace
25226 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25227 ,p_level => C_LEVEL_ERROR
25228 ,p_module => l_log_module);
25229 END IF;
25230 END IF;
25231 END IF;
25232 --
25233 --
25234 ------------------------------------------------------------------------------------------------
25235 -- 4219869 Business Flow
25236 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25237 -- Prior Entry. Currently, the following code is always generated.
25238 ------------------------------------------------------------------------------------------------
25239 XLA_AE_LINES_PKG.ValidateCurrentLine;
25240
25241 ------------------------------------------------------------------------------------
25242 -- 4219869 Business Flow
25243 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25244 ------------------------------------------------------------------------------------
25245 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25246
25247 ----------------------------------------------------------------------------------
25248 -- 4219869 Business Flow
25249 -- Update journal entry status -- Need to generate this within IF <condition>
25250 ----------------------------------------------------------------------------------
25251 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25252 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25253 ,p_balance_type_code => l_balance_type_code
25254 );
25255
25256 -------------------------------------------------------------------------------------------
25257 -- 4262811 - Generate the Accrual Reversal lines
25258 -------------------------------------------------------------------------------------------
25259 BEGIN
25260 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25261 (g_array_event(p_event_id).array_value_num('header_index'));
25262 IF l_acc_rev_flag IS NULL THEN
25263 l_acc_rev_flag := 'N';
25264 END IF;
25265 EXCEPTION
25266 WHEN OTHERS THEN
25267 l_acc_rev_flag := 'N';
25268 END;
25269 --
25270 IF (l_acc_rev_flag = 'Y') THEN
25271
25272 -- 4645092 ------------------------------------------------------------------------------
25273 -- To allow MPA report to determine if it should generate report process
25274 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25275 ------------------------------------------------------------------------------------------
25276
25277 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25278 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25279 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
25280 -- call ADRs
25281 -- Bug 4922099
25282 --
25283 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25284 (NVL(l_actual_upg_option, 'N') = 'O') OR
25285 (NVL(l_enc_upg_option, 'N') = 'O')
25286 )
25287 THEN
25288 NULL;
25289 --
25290 --
25291
25292 l_ccid := AcctDerRule_4(
25293 p_application_id => p_application_id
25294 , p_ae_header_id => l_ae_header_id
25295 , p_source_4 => p_source_4
25296 , x_transaction_coa_id => l_adr_transaction_coa_id
25297 , x_accounting_coa_id => l_adr_accounting_coa_id
25298 , x_value_type_code => l_adr_value_type_code
25299 , p_side => 'NA'
25300 );
25301
25302 xla_ae_lines_pkg.set_ccid(
25303 p_code_combination_id => l_ccid
25304 , p_value_type_code => l_adr_value_type_code
25305 , p_transaction_coa_id => l_adr_transaction_coa_id
25306 , p_accounting_coa_id => l_adr_accounting_coa_id
25307 , p_adr_code => 'CST_DEFAULT'
25308 , p_adr_type_code => 'S'
25309 , p_component_type => l_component_type
25310 , p_component_code => l_component_code
25311 , p_component_type_code => l_component_type_code
25312 , p_component_appl_id => l_component_appl_id
25313 , p_amb_context_code => l_amb_context_code
25314 , p_side => 'NA'
25315 );
25316
25317
25318 --
25319 --
25320 END IF;
25321
25322 --
25323 -- Update the line information that should be overwritten
25324 --
25325 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25326 p_header_num => 1);
25327 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
25328
25329 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25330
25331 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
25332 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25333 END IF;
25334
25335 --
25336 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25337 --
25338 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25339 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
25340 ELSE
25341 ---------------------------------------------------------------------------------------------------
25342 -- 4262811a Switch Sign
25343 ---------------------------------------------------------------------------------------------------
25344 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
25345 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25346 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25347 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25348 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25349 -- 5132302
25350 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25351 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25352
25353 END IF;
25354
25355 -- 4955764
25356 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25357 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25358
25359
25360 XLA_AE_LINES_PKG.ValidateCurrentLine;
25361 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25362
25363 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25364 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25365 ,p_balance_type_code => l_balance_type_code);
25366
25367 END IF;
25368
25369 -----------------------------------------------------------------------------------------
25370 -- 4262811 Multiperiod Accounting
25371 -----------------------------------------------------------------------------------------
25372 -- No MPA option is assigned.
25373
25374
25375 END IF;
25376 END IF;
25377 --
25378
25379 --
25380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25381 trace
25382 (p_msg => 'END of AcctLineType_48'
25383 ,p_level => C_LEVEL_PROCEDURE
25384 ,p_module => l_log_module);
25385 END IF;
25386 --
25387 EXCEPTION
25388 WHEN xla_exceptions_pkg.application_exception THEN
25389 RAISE;
25390 WHEN OTHERS THEN
25391 xla_exceptions_pkg.raise_message
25392 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_48');
25393 END AcctLineType_48;
25394 --
25395
25396 ---------------------------------------
25397 --
25398 -- PRIVATE FUNCTION
25399 -- AcctLineType_49
25400 --
25401 ---------------------------------------
25402 PROCEDURE AcctLineType_49 (
25403 p_application_id IN NUMBER
25404 ,p_event_id IN NUMBER
25405 ,p_calculate_acctd_flag IN VARCHAR2
25406 ,p_calculate_g_l_flag IN VARCHAR2
25407 ,p_actual_flag IN OUT VARCHAR2
25408 ,p_balance_type_code OUT VARCHAR2
25409 ,p_gain_or_loss_ref OUT VARCHAR2
25410
25411 --Cost Management Default Account
25412 , p_source_4 IN NUMBER
25413 --DISTRIBUTION_IDENTIFIER
25414 , p_source_11 IN NUMBER
25415 --Distribution Type
25416 , p_source_12 IN VARCHAR2
25417 , p_source_12_meaning IN VARCHAR2
25418 --Entered Currency Code
25419 , p_source_15 IN VARCHAR2
25420 --Entered Amount
25421 , p_source_18 IN NUMBER
25422 --Currency Conversion Date
25423 , p_source_19 IN DATE
25424 --Currency Conversion Rate
25425 , p_source_20 IN NUMBER
25426 --Currency Conversion Type
25427 , p_source_21 IN VARCHAR2
25428 --Accounted Amount
25429 , p_source_22 IN NUMBER
25430 --Accounting Line Type
25431 , p_source_24 IN NUMBER
25432 )
25433 IS
25434
25435 l_component_type VARCHAR2(80);
25436 l_component_code VARCHAR2(30);
25437 l_component_type_code VARCHAR2(1);
25438 l_component_appl_id INTEGER;
25439 l_amb_context_code VARCHAR2(30);
25440 l_entity_code VARCHAR2(30);
25441 l_event_class_code VARCHAR2(30);
25442 l_ae_header_id NUMBER;
25443 l_event_type_code VARCHAR2(30);
25444 l_line_definition_code VARCHAR2(30);
25445 l_line_definition_owner_code VARCHAR2(1);
25446 --
25447 -- adr variables
25448 l_segment VARCHAR2(30);
25449 l_ccid NUMBER;
25450 l_adr_transaction_coa_id NUMBER;
25451 l_adr_accounting_coa_id NUMBER;
25452 l_adr_flexfield_segment_code VARCHAR2(30);
25453 l_adr_flex_value_set_id NUMBER;
25454 l_adr_value_type_code VARCHAR2(30);
25455 l_adr_value_combination_id NUMBER;
25456 l_adr_value_segment_code VARCHAR2(30);
25457
25458 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
25459 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
25460 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
25461 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
25462
25463 -- 4262811 Variables ------------------------------------------------------------------------------------------
25464 l_entered_amt_idx NUMBER;
25465 l_accted_amt_idx NUMBER;
25466 l_acc_rev_flag VARCHAR2(1);
25467 l_accrual_line_num NUMBER;
25468 l_tmp_amt NUMBER;
25469 l_acc_rev_natural_side_code VARCHAR2(1);
25470
25471 l_num_entries NUMBER;
25472 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
25473 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
25474 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
25475 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
25476 l_recog_line_1 NUMBER;
25477 l_recog_line_2 NUMBER;
25478
25479 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
25480 l_bflow_applied_to_amt NUMBER; -- 5132302
25481 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
25482
25483 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25484
25485 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
25486 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
25487
25488 ---------------------------------------------------------------------------------------------------------------
25489
25490
25491 --
25492 -- bulk performance
25493 --
25494 l_balance_type_code VARCHAR2(1);
25495 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
25496 l_log_module VARCHAR2(240);
25497
25498 --
25499 -- Upgrade strategy
25500 --
25501 l_actual_upg_option VARCHAR2(1);
25502 l_enc_upg_option VARCHAR2(1);
25503
25504 --
25505 BEGIN
25506 --
25507 IF g_log_enabled THEN
25508 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
25509 END IF;
25510 --
25511 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25512
25513 trace
25514 (p_msg => 'BEGIN of AcctLineType_49'
25515 ,p_level => C_LEVEL_PROCEDURE
25516 ,p_module => l_log_module);
25517
25518 END IF;
25519 --
25520 l_component_type := 'AMB_JLT';
25521 l_component_code := 'EST_SCRAP_ABSORPTION';
25522 l_component_type_code := 'S';
25523 l_component_appl_id := 707;
25524 l_amb_context_code := 'DEFAULT';
25525 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
25526 l_event_class_code := 'ABSORPTION';
25527 l_event_type_code := 'ABSORPTION_ALL';
25528 l_line_definition_owner_code := 'S';
25529 l_line_definition_code := 'ABSORPTION';
25530 --
25531 l_balance_type_code := 'A';
25532 l_segment := NULL;
25533 l_ccid := NULL;
25534 l_adr_transaction_coa_id := NULL;
25535 l_adr_accounting_coa_id := NULL;
25536 l_adr_flexfield_segment_code := NULL;
25537 l_adr_flex_value_set_id := NULL;
25538 l_adr_value_type_code := NULL;
25539 l_adr_value_combination_id := NULL;
25540 l_adr_value_segment_code := NULL;
25541
25542 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
25543 l_bflow_class_code := ''; -- 4219869 Business Flow
25544 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
25545 l_budgetary_control_flag := 'N';
25546
25547 l_bflow_applied_to_amt_idx := NULL; -- 5132302
25548 l_bflow_applied_to_amt := NULL; -- 5132302
25549 l_entered_amt_idx := NULL; -- 4262811
25550 l_accted_amt_idx := NULL; -- 4262811
25551 l_acc_rev_flag := NULL; -- 4262811
25552 l_accrual_line_num := NULL; -- 4262811
25553 l_tmp_amt := NULL; -- 4262811
25554 --
25555
25556 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25557 l_balance_type_code <> 'B' THEN
25558 IF NVL(p_source_24,9E125) = 29
25559 THEN
25560
25561 --
25562 XLA_AE_LINES_PKG.SetNewLine;
25563
25564 p_balance_type_code := l_balance_type_code;
25565 -- set the flag so later we will know whether the gain loss line needs to be created
25566
25567 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25568 p_actual_flag :='A';
25569 END IF;
25570
25571 --
25572 -- bulk performance
25573 --
25574 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25575 p_header_num => 0); -- 4262811
25576 --
25577 -- set accounting line options
25578 --
25579 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25580 p_natural_side_code => 'D'
25581 , p_gain_or_loss_flag => 'N'
25582 , p_gl_transfer_mode_code => 'S'
25583 , p_acct_entry_type_code => 'A'
25584 , p_switch_side_flag => 'Y'
25585 , p_merge_duplicate_code => 'N'
25586 );
25587 --
25588 l_acc_rev_natural_side_code := 'C'; -- 4262811
25589 --
25590 --
25591 -- set accounting line type info
25592 --
25593 xla_ae_lines_pkg.SetAcctLineType
25594 (p_component_type => l_component_type
25595 ,p_event_type_code => l_event_type_code
25596 ,p_line_definition_owner_code => l_line_definition_owner_code
25597 ,p_line_definition_code => l_line_definition_code
25598 ,p_accounting_line_code => l_component_code
25599 ,p_accounting_line_type_code => l_component_type_code
25600 ,p_accounting_line_appl_id => l_component_appl_id
25601 ,p_amb_context_code => l_amb_context_code
25602 ,p_entity_code => l_entity_code
25603 ,p_event_class_code => l_event_class_code);
25604 --
25605 -- set accounting class
25606 --
25607 xla_ae_lines_pkg.SetAcctClass(
25608 p_accounting_class_code => 'ESTIMATED_SCRAP_ABSORPTION'
25609 , p_ae_header_id => l_ae_header_id
25610 );
25611
25612 --
25613 -- set rounding class
25614 --
25615 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25616 'ESTIMATED_SCRAP_ABSORPTION';
25617
25618 --
25619 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25620 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25621 --
25622 -- bulk performance
25623 --
25624 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25625
25626 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25627 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25628
25629 -- 4955764
25630 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25631 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25632
25633 -- 4458381 Public Sector Enh
25634
25635 --
25636 -- set accounting attributes for the line type
25637 --
25638 l_entered_amt_idx := 3;
25639 l_accted_amt_idx := 8;
25640 l_bflow_applied_to_amt_idx := NULL; -- 5132302
25641 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25642 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
25643 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25644 l_rec_acct_attrs.array_char_value(2) := p_source_12;
25645 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25646 l_rec_acct_attrs.array_num_value(3) := p_source_18;
25647 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25648 l_rec_acct_attrs.array_char_value(4) := p_source_15;
25649 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25650 l_rec_acct_attrs.array_date_value(5) := p_source_19;
25651 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25652 l_rec_acct_attrs.array_num_value(6) := p_source_20;
25653 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25654 l_rec_acct_attrs.array_char_value(7) := p_source_21;
25655 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25656 l_rec_acct_attrs.array_num_value(8) := p_source_22;
25657
25658 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25659 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25660
25661 ---------------------------------------------------------------------------------------------------------------
25662 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25663 ---------------------------------------------------------------------------------------------------------------
25664 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25665
25666 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25667 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25668
25669 IF xla_accounting_cache_pkg.GetValueChar
25670 (p_source_code => 'LEDGER_CATEGORY_CODE'
25671 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25672 AND l_bflow_method_code = 'PRIOR_ENTRY'
25673 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25674 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25675 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25676 )
25677 THEN
25678 xla_ae_lines_pkg.BflowUpgEntry
25679 (p_business_method_code => l_bflow_method_code
25680 ,p_business_class_code => l_bflow_class_code
25681 ,p_balance_type => l_balance_type_code);
25682 ELSE
25683 NULL;
25684 -- No business flow processing for business flow method of NONE.
25685 END IF;
25686
25687 --
25688 -- call analytical criteria
25689 --
25690
25691 --
25692 -- call description
25693 --
25694 -- No description or it is inherited.
25695 --
25696 -- call ADRs
25697 -- Bug 4922099
25698 --
25699 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25700 (NVL(l_actual_upg_option, 'N') = 'O') OR
25701 (NVL(l_enc_upg_option, 'N') = 'O')
25702 )
25703 THEN
25704 NULL;
25705 --
25706 --
25707
25708 l_ccid := AcctDerRule_4(
25709 p_application_id => p_application_id
25710 , p_ae_header_id => l_ae_header_id
25711 , p_source_4 => p_source_4
25712 , x_transaction_coa_id => l_adr_transaction_coa_id
25713 , x_accounting_coa_id => l_adr_accounting_coa_id
25714 , x_value_type_code => l_adr_value_type_code
25715 , p_side => 'NA'
25716 );
25717
25718 xla_ae_lines_pkg.set_ccid(
25719 p_code_combination_id => l_ccid
25720 , p_value_type_code => l_adr_value_type_code
25721 , p_transaction_coa_id => l_adr_transaction_coa_id
25722 , p_accounting_coa_id => l_adr_accounting_coa_id
25723 , p_adr_code => 'CST_DEFAULT'
25724 , p_adr_type_code => 'S'
25725 , p_component_type => l_component_type
25726 , p_component_code => l_component_code
25727 , p_component_type_code => l_component_type_code
25728 , p_component_appl_id => l_component_appl_id
25729 , p_amb_context_code => l_amb_context_code
25730 , p_side => 'NA'
25731 );
25732
25733
25734 --
25735 --
25736 END IF;
25737 --
25738 -- Bug 4922099
25739 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25740 (NVL(l_enc_upg_option, 'N') = 'O')
25741 ) AND
25742 (l_bflow_method_code = 'PRIOR_ENTRY')
25743 )
25744 THEN
25745 IF
25746 --
25747 1 = 2
25748 --
25749 THEN
25750 xla_accounting_err_pkg.build_message
25751 (p_appli_s_name => 'XLA'
25752 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25753 ,p_token_1 => 'LINE_NUMBER'
25754 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
25755 ,p_token_2 => 'LINE_TYPE_NAME'
25756 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
25757 l_component_type
25758 ,l_component_code
25759 ,l_component_type_code
25760 ,l_component_appl_id
25761 ,l_amb_context_code
25762 ,l_entity_code
25763 ,l_event_class_code
25764 )
25765 ,p_token_3 => 'OWNER'
25766 ,p_value_3 => xla_lookups_pkg.get_meaning(
25767 p_lookup_type => 'XLA_OWNER_TYPE'
25768 ,p_lookup_code => l_component_type_code
25769 )
25770 ,p_token_4 => 'PRODUCT_NAME'
25771 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25772 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25773 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25774 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25775 ,p_ae_header_id => NULL
25776 );
25777
25778 IF (C_LEVEL_ERROR>= g_log_level) THEN
25779 trace
25780 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25781 ,p_level => C_LEVEL_ERROR
25782 ,p_module => l_log_module);
25783 END IF;
25784 END IF;
25785 END IF;
25786 --
25787 --
25788 ------------------------------------------------------------------------------------------------
25789 -- 4219869 Business Flow
25790 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25791 -- Prior Entry. Currently, the following code is always generated.
25792 ------------------------------------------------------------------------------------------------
25793 XLA_AE_LINES_PKG.ValidateCurrentLine;
25794
25795 ------------------------------------------------------------------------------------
25796 -- 4219869 Business Flow
25797 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25798 ------------------------------------------------------------------------------------
25799 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25800
25801 ----------------------------------------------------------------------------------
25802 -- 4219869 Business Flow
25803 -- Update journal entry status -- Need to generate this within IF <condition>
25804 ----------------------------------------------------------------------------------
25805 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25806 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25807 ,p_balance_type_code => l_balance_type_code
25808 );
25809
25810 -------------------------------------------------------------------------------------------
25811 -- 4262811 - Generate the Accrual Reversal lines
25812 -------------------------------------------------------------------------------------------
25813 BEGIN
25814 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25815 (g_array_event(p_event_id).array_value_num('header_index'));
25816 IF l_acc_rev_flag IS NULL THEN
25817 l_acc_rev_flag := 'N';
25818 END IF;
25819 EXCEPTION
25820 WHEN OTHERS THEN
25821 l_acc_rev_flag := 'N';
25822 END;
25823 --
25824 IF (l_acc_rev_flag = 'Y') THEN
25825
25826 -- 4645092 ------------------------------------------------------------------------------
25827 -- To allow MPA report to determine if it should generate report process
25828 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25829 ------------------------------------------------------------------------------------------
25830
25831 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25832 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25833 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
25834 -- call ADRs
25835 -- Bug 4922099
25836 --
25837 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25838 (NVL(l_actual_upg_option, 'N') = 'O') OR
25839 (NVL(l_enc_upg_option, 'N') = 'O')
25840 )
25841 THEN
25842 NULL;
25843 --
25844 --
25845
25846 l_ccid := AcctDerRule_4(
25847 p_application_id => p_application_id
25848 , p_ae_header_id => l_ae_header_id
25849 , p_source_4 => p_source_4
25850 , x_transaction_coa_id => l_adr_transaction_coa_id
25851 , x_accounting_coa_id => l_adr_accounting_coa_id
25852 , x_value_type_code => l_adr_value_type_code
25853 , p_side => 'NA'
25854 );
25855
25856 xla_ae_lines_pkg.set_ccid(
25857 p_code_combination_id => l_ccid
25858 , p_value_type_code => l_adr_value_type_code
25859 , p_transaction_coa_id => l_adr_transaction_coa_id
25860 , p_accounting_coa_id => l_adr_accounting_coa_id
25861 , p_adr_code => 'CST_DEFAULT'
25862 , p_adr_type_code => 'S'
25863 , p_component_type => l_component_type
25864 , p_component_code => l_component_code
25865 , p_component_type_code => l_component_type_code
25866 , p_component_appl_id => l_component_appl_id
25867 , p_amb_context_code => l_amb_context_code
25868 , p_side => 'NA'
25869 );
25870
25871
25872 --
25873 --
25874 END IF;
25875
25876 --
25877 -- Update the line information that should be overwritten
25878 --
25879 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25880 p_header_num => 1);
25881 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
25882
25883 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25884
25885 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
25886 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25887 END IF;
25888
25889 --
25890 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25891 --
25892 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25893 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
25894 ELSE
25895 ---------------------------------------------------------------------------------------------------
25896 -- 4262811a Switch Sign
25897 ---------------------------------------------------------------------------------------------------
25898 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
25899 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25900 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25901 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25902 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25903 -- 5132302
25904 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25905 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25906
25907 END IF;
25908
25909 -- 4955764
25910 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25911 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25912
25913
25914 XLA_AE_LINES_PKG.ValidateCurrentLine;
25915 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25916
25917 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25918 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25919 ,p_balance_type_code => l_balance_type_code);
25920
25921 END IF;
25922
25923 -----------------------------------------------------------------------------------------
25924 -- 4262811 Multiperiod Accounting
25925 -----------------------------------------------------------------------------------------
25926 -- No MPA option is assigned.
25927
25928
25929 END IF;
25930 END IF;
25931 --
25932
25933 --
25934 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25935 trace
25936 (p_msg => 'END of AcctLineType_49'
25937 ,p_level => C_LEVEL_PROCEDURE
25938 ,p_module => l_log_module);
25939 END IF;
25940 --
25941 EXCEPTION
25942 WHEN xla_exceptions_pkg.application_exception THEN
25943 RAISE;
25944 WHEN OTHERS THEN
25945 xla_exceptions_pkg.raise_message
25946 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_49');
25947 END AcctLineType_49;
25948 --
25949
25950 ---------------------------------------
25951 --
25952 -- PRIVATE FUNCTION
25953 -- AcctLineType_50
25954 --
25955 ---------------------------------------
25956 PROCEDURE AcctLineType_50 (
25957 p_application_id IN NUMBER
25958 ,p_event_id IN NUMBER
25959 ,p_calculate_acctd_flag IN VARCHAR2
25960 ,p_calculate_g_l_flag IN VARCHAR2
25961 ,p_actual_flag IN OUT VARCHAR2
25962 ,p_balance_type_code OUT VARCHAR2
25963 ,p_gain_or_loss_ref OUT VARCHAR2
25964
25965 --Cost Management Default Account
25966 , p_source_4 IN NUMBER
25967 --Receiving Accounting Line Type
25968 , p_source_5 IN VARCHAR2
25969 --DISTRIBUTION_IDENTIFIER
25970 , p_source_11 IN NUMBER
25971 --Distribution Type
25972 , p_source_12 IN VARCHAR2
25973 , p_source_12_meaning IN VARCHAR2
25974 --Entered Amount
25975 , p_source_18 IN NUMBER
25976 --Accounted Amount
25977 , p_source_22 IN NUMBER
25978 --Entered Currency Code
25979 , p_source_32 IN VARCHAR2
25980 --Currency Conversion Date
25981 , p_source_33 IN DATE
25982 --Currency Conversion Rate
25983 , p_source_34 IN NUMBER
25984 )
25985 IS
25986
25987 l_component_type VARCHAR2(80);
25988 l_component_code VARCHAR2(30);
25989 l_component_type_code VARCHAR2(1);
25990 l_component_appl_id INTEGER;
25991 l_amb_context_code VARCHAR2(30);
25992 l_entity_code VARCHAR2(30);
25993 l_event_class_code VARCHAR2(30);
25994 l_ae_header_id NUMBER;
25995 l_event_type_code VARCHAR2(30);
25996 l_line_definition_code VARCHAR2(30);
25997 l_line_definition_owner_code VARCHAR2(1);
25998 --
25999 -- adr variables
26000 l_segment VARCHAR2(30);
26001 l_ccid NUMBER;
26002 l_adr_transaction_coa_id NUMBER;
26003 l_adr_accounting_coa_id NUMBER;
26004 l_adr_flexfield_segment_code VARCHAR2(30);
26005 l_adr_flex_value_set_id NUMBER;
26006 l_adr_value_type_code VARCHAR2(30);
26007 l_adr_value_combination_id NUMBER;
26008 l_adr_value_segment_code VARCHAR2(30);
26009
26010 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
26011 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
26012 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
26013 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
26014
26015 -- 4262811 Variables ------------------------------------------------------------------------------------------
26016 l_entered_amt_idx NUMBER;
26017 l_accted_amt_idx NUMBER;
26018 l_acc_rev_flag VARCHAR2(1);
26019 l_accrual_line_num NUMBER;
26020 l_tmp_amt NUMBER;
26021 l_acc_rev_natural_side_code VARCHAR2(1);
26022
26023 l_num_entries NUMBER;
26024 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
26025 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
26026 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
26027 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
26028 l_recog_line_1 NUMBER;
26029 l_recog_line_2 NUMBER;
26030
26031 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
26032 l_bflow_applied_to_amt NUMBER; -- 5132302
26033 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
26034
26035 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26036
26037 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
26038 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
26039
26040 ---------------------------------------------------------------------------------------------------------------
26041
26042
26043 --
26044 -- bulk performance
26045 --
26046 l_balance_type_code VARCHAR2(1);
26047 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
26048 l_log_module VARCHAR2(240);
26049
26050 --
26051 -- Upgrade strategy
26052 --
26053 l_actual_upg_option VARCHAR2(1);
26054 l_enc_upg_option VARCHAR2(1);
26055
26056 --
26057 BEGIN
26058 --
26059 IF g_log_enabled THEN
26060 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
26061 END IF;
26062 --
26063 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26064
26065 trace
26066 (p_msg => 'BEGIN of AcctLineType_50'
26067 ,p_level => C_LEVEL_PROCEDURE
26068 ,p_module => l_log_module);
26069
26070 END IF;
26071 --
26072 l_component_type := 'AMB_JLT';
26073 l_component_code := 'EXPENSE';
26074 l_component_type_code := 'S';
26075 l_component_appl_id := 707;
26076 l_amb_context_code := 'DEFAULT';
26077 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
26078 l_event_class_code := 'LDD_COST_ADJ_DEL';
26079 l_event_type_code := 'LDD_COST_ADJ_DEL_ALL';
26080 l_line_definition_owner_code := 'S';
26081 l_line_definition_code := 'LDD_COST_ADJ_DEL';
26082 --
26083 l_balance_type_code := 'A';
26084 l_segment := NULL;
26085 l_ccid := NULL;
26086 l_adr_transaction_coa_id := NULL;
26087 l_adr_accounting_coa_id := NULL;
26088 l_adr_flexfield_segment_code := NULL;
26089 l_adr_flex_value_set_id := NULL;
26090 l_adr_value_type_code := NULL;
26091 l_adr_value_combination_id := NULL;
26092 l_adr_value_segment_code := NULL;
26093
26094 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
26095 l_bflow_class_code := ''; -- 4219869 Business Flow
26096 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
26097 l_budgetary_control_flag := 'N';
26098
26099 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26100 l_bflow_applied_to_amt := NULL; -- 5132302
26101 l_entered_amt_idx := NULL; -- 4262811
26102 l_accted_amt_idx := NULL; -- 4262811
26103 l_acc_rev_flag := NULL; -- 4262811
26104 l_accrual_line_num := NULL; -- 4262811
26105 l_tmp_amt := NULL; -- 4262811
26106 --
26107
26108 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26109 l_balance_type_code <> 'B' THEN
26110 IF NVL(p_source_5,'
26111 ') = 'Expense'
26112 THEN
26113
26114 --
26115 XLA_AE_LINES_PKG.SetNewLine;
26116
26117 p_balance_type_code := l_balance_type_code;
26118 -- set the flag so later we will know whether the gain loss line needs to be created
26119
26120 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26121 p_actual_flag :='A';
26122 END IF;
26123
26124 --
26125 -- bulk performance
26126 --
26127 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26128 p_header_num => 0); -- 4262811
26129 --
26130 -- set accounting line options
26131 --
26132 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26133 p_natural_side_code => 'D'
26134 , p_gain_or_loss_flag => 'N'
26135 , p_gl_transfer_mode_code => 'S'
26136 , p_acct_entry_type_code => 'A'
26137 , p_switch_side_flag => 'Y'
26138 , p_merge_duplicate_code => 'N'
26139 );
26140 --
26141 l_acc_rev_natural_side_code := 'C'; -- 4262811
26142 --
26143 --
26144 -- set accounting line type info
26145 --
26146 xla_ae_lines_pkg.SetAcctLineType
26147 (p_component_type => l_component_type
26148 ,p_event_type_code => l_event_type_code
26149 ,p_line_definition_owner_code => l_line_definition_owner_code
26150 ,p_line_definition_code => l_line_definition_code
26151 ,p_accounting_line_code => l_component_code
26152 ,p_accounting_line_type_code => l_component_type_code
26153 ,p_accounting_line_appl_id => l_component_appl_id
26154 ,p_amb_context_code => l_amb_context_code
26155 ,p_entity_code => l_entity_code
26156 ,p_event_class_code => l_event_class_code);
26157 --
26158 -- set accounting class
26159 --
26160 xla_ae_lines_pkg.SetAcctClass(
26161 p_accounting_class_code => 'EXPENSE'
26162 , p_ae_header_id => l_ae_header_id
26163 );
26164
26165 --
26166 -- set rounding class
26167 --
26168 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26169 'EXPENSE';
26170
26171 --
26172 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26173 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26174 --
26175 -- bulk performance
26176 --
26177 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26178
26179 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26180 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26181
26182 -- 4955764
26183 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26184 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26185
26186 -- 4458381 Public Sector Enh
26187
26188 --
26189 -- set accounting attributes for the line type
26190 --
26191 l_entered_amt_idx := 3;
26192 l_accted_amt_idx := 7;
26193 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26194 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26195 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
26196 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26197 l_rec_acct_attrs.array_char_value(2) := p_source_12;
26198 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26199 l_rec_acct_attrs.array_num_value(3) := p_source_18;
26200 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26201 l_rec_acct_attrs.array_char_value(4) := p_source_32;
26202 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26203 l_rec_acct_attrs.array_date_value(5) := p_source_33;
26204 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26205 l_rec_acct_attrs.array_num_value(6) := p_source_34;
26206 l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
26207 l_rec_acct_attrs.array_num_value(7) := p_source_22;
26208
26209 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26210 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26211
26212 ---------------------------------------------------------------------------------------------------------------
26213 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26214 ---------------------------------------------------------------------------------------------------------------
26215 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26216
26217 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26218 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26219
26220 IF xla_accounting_cache_pkg.GetValueChar
26221 (p_source_code => 'LEDGER_CATEGORY_CODE'
26222 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26223 AND l_bflow_method_code = 'PRIOR_ENTRY'
26224 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26225 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26226 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26227 )
26228 THEN
26229 xla_ae_lines_pkg.BflowUpgEntry
26230 (p_business_method_code => l_bflow_method_code
26231 ,p_business_class_code => l_bflow_class_code
26232 ,p_balance_type => l_balance_type_code);
26233 ELSE
26234 NULL;
26235 -- No business flow processing for business flow method of NONE.
26236 END IF;
26237
26238 --
26239 -- call analytical criteria
26240 --
26241
26242 --
26243 -- call description
26244 --
26245 -- No description or it is inherited.
26246 --
26247 -- call ADRs
26248 -- Bug 4922099
26249 --
26250 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26251 (NVL(l_actual_upg_option, 'N') = 'O') OR
26252 (NVL(l_enc_upg_option, 'N') = 'O')
26253 )
26254 THEN
26255 NULL;
26256 --
26257 --
26258
26259 l_ccid := AcctDerRule_4(
26260 p_application_id => p_application_id
26261 , p_ae_header_id => l_ae_header_id
26262 , p_source_4 => p_source_4
26263 , x_transaction_coa_id => l_adr_transaction_coa_id
26264 , x_accounting_coa_id => l_adr_accounting_coa_id
26265 , x_value_type_code => l_adr_value_type_code
26266 , p_side => 'NA'
26267 );
26268
26269 xla_ae_lines_pkg.set_ccid(
26270 p_code_combination_id => l_ccid
26271 , p_value_type_code => l_adr_value_type_code
26272 , p_transaction_coa_id => l_adr_transaction_coa_id
26273 , p_accounting_coa_id => l_adr_accounting_coa_id
26274 , p_adr_code => 'CST_DEFAULT'
26275 , p_adr_type_code => 'S'
26276 , p_component_type => l_component_type
26277 , p_component_code => l_component_code
26278 , p_component_type_code => l_component_type_code
26279 , p_component_appl_id => l_component_appl_id
26280 , p_amb_context_code => l_amb_context_code
26281 , p_side => 'NA'
26282 );
26283
26284
26285 --
26286 --
26287 END IF;
26288 --
26289 -- Bug 4922099
26290 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26291 (NVL(l_enc_upg_option, 'N') = 'O')
26292 ) AND
26293 (l_bflow_method_code = 'PRIOR_ENTRY')
26294 )
26295 THEN
26296 IF
26297 --
26298 1 = 2
26299 --
26300 THEN
26301 xla_accounting_err_pkg.build_message
26302 (p_appli_s_name => 'XLA'
26303 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26304 ,p_token_1 => 'LINE_NUMBER'
26305 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
26306 ,p_token_2 => 'LINE_TYPE_NAME'
26307 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
26308 l_component_type
26309 ,l_component_code
26310 ,l_component_type_code
26311 ,l_component_appl_id
26312 ,l_amb_context_code
26313 ,l_entity_code
26314 ,l_event_class_code
26315 )
26316 ,p_token_3 => 'OWNER'
26317 ,p_value_3 => xla_lookups_pkg.get_meaning(
26318 p_lookup_type => 'XLA_OWNER_TYPE'
26319 ,p_lookup_code => l_component_type_code
26320 )
26321 ,p_token_4 => 'PRODUCT_NAME'
26322 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26323 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26324 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26325 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26326 ,p_ae_header_id => NULL
26327 );
26328
26329 IF (C_LEVEL_ERROR>= g_log_level) THEN
26330 trace
26331 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26332 ,p_level => C_LEVEL_ERROR
26333 ,p_module => l_log_module);
26334 END IF;
26335 END IF;
26336 END IF;
26337 --
26338 --
26339 ------------------------------------------------------------------------------------------------
26340 -- 4219869 Business Flow
26341 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26342 -- Prior Entry. Currently, the following code is always generated.
26343 ------------------------------------------------------------------------------------------------
26344 XLA_AE_LINES_PKG.ValidateCurrentLine;
26345
26346 ------------------------------------------------------------------------------------
26347 -- 4219869 Business Flow
26348 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26349 ------------------------------------------------------------------------------------
26350 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26351
26352 ----------------------------------------------------------------------------------
26353 -- 4219869 Business Flow
26354 -- Update journal entry status -- Need to generate this within IF <condition>
26355 ----------------------------------------------------------------------------------
26356 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26357 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26358 ,p_balance_type_code => l_balance_type_code
26359 );
26360
26361 -------------------------------------------------------------------------------------------
26362 -- 4262811 - Generate the Accrual Reversal lines
26363 -------------------------------------------------------------------------------------------
26364 BEGIN
26365 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26366 (g_array_event(p_event_id).array_value_num('header_index'));
26367 IF l_acc_rev_flag IS NULL THEN
26368 l_acc_rev_flag := 'N';
26369 END IF;
26370 EXCEPTION
26371 WHEN OTHERS THEN
26372 l_acc_rev_flag := 'N';
26373 END;
26374 --
26375 IF (l_acc_rev_flag = 'Y') THEN
26376
26377 -- 4645092 ------------------------------------------------------------------------------
26378 -- To allow MPA report to determine if it should generate report process
26379 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26380 ------------------------------------------------------------------------------------------
26381
26382 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26383 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26384 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
26385 -- call ADRs
26386 -- Bug 4922099
26387 --
26388 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26389 (NVL(l_actual_upg_option, 'N') = 'O') OR
26390 (NVL(l_enc_upg_option, 'N') = 'O')
26391 )
26392 THEN
26393 NULL;
26394 --
26395 --
26396
26397 l_ccid := AcctDerRule_4(
26398 p_application_id => p_application_id
26399 , p_ae_header_id => l_ae_header_id
26400 , p_source_4 => p_source_4
26401 , x_transaction_coa_id => l_adr_transaction_coa_id
26402 , x_accounting_coa_id => l_adr_accounting_coa_id
26403 , x_value_type_code => l_adr_value_type_code
26404 , p_side => 'NA'
26405 );
26406
26407 xla_ae_lines_pkg.set_ccid(
26408 p_code_combination_id => l_ccid
26409 , p_value_type_code => l_adr_value_type_code
26410 , p_transaction_coa_id => l_adr_transaction_coa_id
26411 , p_accounting_coa_id => l_adr_accounting_coa_id
26412 , p_adr_code => 'CST_DEFAULT'
26413 , p_adr_type_code => 'S'
26414 , p_component_type => l_component_type
26415 , p_component_code => l_component_code
26416 , p_component_type_code => l_component_type_code
26417 , p_component_appl_id => l_component_appl_id
26418 , p_amb_context_code => l_amb_context_code
26419 , p_side => 'NA'
26420 );
26421
26422
26423 --
26424 --
26425 END IF;
26426
26427 --
26428 -- Update the line information that should be overwritten
26429 --
26430 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26431 p_header_num => 1);
26432 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
26433
26434 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26435
26436 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
26437 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26438 END IF;
26439
26440 --
26441 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26442 --
26443 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26444 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
26445 ELSE
26446 ---------------------------------------------------------------------------------------------------
26447 -- 4262811a Switch Sign
26448 ---------------------------------------------------------------------------------------------------
26449 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
26450 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26451 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26452 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26453 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26454 -- 5132302
26455 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26456 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26457
26458 END IF;
26459
26460 -- 4955764
26461 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26462 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26463
26464
26465 XLA_AE_LINES_PKG.ValidateCurrentLine;
26466 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26467
26468 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26469 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26470 ,p_balance_type_code => l_balance_type_code);
26471
26472 END IF;
26473
26474 -----------------------------------------------------------------------------------------
26475 -- 4262811 Multiperiod Accounting
26476 -----------------------------------------------------------------------------------------
26477 -- No MPA option is assigned.
26478
26479
26480 END IF;
26481 END IF;
26482 --
26483
26484 --
26485 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26486 trace
26487 (p_msg => 'END of AcctLineType_50'
26488 ,p_level => C_LEVEL_PROCEDURE
26489 ,p_module => l_log_module);
26490 END IF;
26491 --
26492 EXCEPTION
26493 WHEN xla_exceptions_pkg.application_exception THEN
26494 RAISE;
26495 WHEN OTHERS THEN
26496 xla_exceptions_pkg.raise_message
26497 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_50');
26498 END AcctLineType_50;
26499 --
26500
26501 ---------------------------------------
26502 --
26503 -- PRIVATE FUNCTION
26504 -- AcctLineType_51
26505 --
26506 ---------------------------------------
26507 PROCEDURE AcctLineType_51 (
26508 p_application_id IN NUMBER
26509 ,p_event_id IN NUMBER
26510 ,p_calculate_acctd_flag IN VARCHAR2
26511 ,p_calculate_g_l_flag IN VARCHAR2
26512 ,p_actual_flag IN OUT VARCHAR2
26513 ,p_balance_type_code OUT VARCHAR2
26514 ,p_gain_or_loss_ref OUT VARCHAR2
26515
26516 --Cost Management Default Account
26517 , p_source_4 IN NUMBER
26518 --DISTRIBUTION_IDENTIFIER
26519 , p_source_11 IN NUMBER
26520 --Distribution Type
26521 , p_source_12 IN VARCHAR2
26522 , p_source_12_meaning IN VARCHAR2
26523 --Entered Currency Code
26524 , p_source_15 IN VARCHAR2
26525 --Entered Amount
26526 , p_source_18 IN NUMBER
26527 --Currency Conversion Date
26528 , p_source_19 IN DATE
26529 --Currency Conversion Rate
26530 , p_source_20 IN NUMBER
26531 --Currency Conversion Type
26532 , p_source_21 IN VARCHAR2
26533 --Accounted Amount
26534 , p_source_22 IN NUMBER
26535 --Accounting Line Type
26536 , p_source_24 IN NUMBER
26537 )
26538 IS
26539
26540 l_component_type VARCHAR2(80);
26541 l_component_code VARCHAR2(30);
26542 l_component_type_code VARCHAR2(1);
26543 l_component_appl_id INTEGER;
26544 l_amb_context_code VARCHAR2(30);
26545 l_entity_code VARCHAR2(30);
26546 l_event_class_code VARCHAR2(30);
26547 l_ae_header_id NUMBER;
26548 l_event_type_code VARCHAR2(30);
26549 l_line_definition_code VARCHAR2(30);
26550 l_line_definition_owner_code VARCHAR2(1);
26551 --
26552 -- adr variables
26553 l_segment VARCHAR2(30);
26554 l_ccid NUMBER;
26555 l_adr_transaction_coa_id NUMBER;
26556 l_adr_accounting_coa_id NUMBER;
26557 l_adr_flexfield_segment_code VARCHAR2(30);
26558 l_adr_flex_value_set_id NUMBER;
26559 l_adr_value_type_code VARCHAR2(30);
26560 l_adr_value_combination_id NUMBER;
26561 l_adr_value_segment_code VARCHAR2(30);
26562
26563 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
26564 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
26565 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
26566 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
26567
26568 -- 4262811 Variables ------------------------------------------------------------------------------------------
26569 l_entered_amt_idx NUMBER;
26570 l_accted_amt_idx NUMBER;
26571 l_acc_rev_flag VARCHAR2(1);
26572 l_accrual_line_num NUMBER;
26573 l_tmp_amt NUMBER;
26574 l_acc_rev_natural_side_code VARCHAR2(1);
26575
26576 l_num_entries NUMBER;
26577 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
26578 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
26579 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
26580 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
26581 l_recog_line_1 NUMBER;
26582 l_recog_line_2 NUMBER;
26583
26584 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
26585 l_bflow_applied_to_amt NUMBER; -- 5132302
26586 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
26587
26588 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26589
26590 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
26591 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
26592
26593 ---------------------------------------------------------------------------------------------------------------
26594
26595
26596 --
26597 -- bulk performance
26598 --
26599 l_balance_type_code VARCHAR2(1);
26600 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
26601 l_log_module VARCHAR2(240);
26602
26603 --
26604 -- Upgrade strategy
26605 --
26606 l_actual_upg_option VARCHAR2(1);
26607 l_enc_upg_option VARCHAR2(1);
26608
26609 --
26610 BEGIN
26611 --
26612 IF g_log_enabled THEN
26613 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
26614 END IF;
26615 --
26616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26617
26618 trace
26619 (p_msg => 'BEGIN of AcctLineType_51'
26620 ,p_level => C_LEVEL_PROCEDURE
26621 ,p_module => l_log_module);
26622
26623 END IF;
26624 --
26625 l_component_type := 'AMB_JLT';
26626 l_component_code := 'EXPENSE';
26627 l_component_type_code := 'S';
26628 l_component_appl_id := 707;
26629 l_amb_context_code := 'DEFAULT';
26630 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
26631 l_event_class_code := 'USER_DEFINE';
26632 l_event_type_code := 'UAVG_COST_UPD';
26633 l_line_definition_owner_code := 'S';
26634 l_line_definition_code := 'USER_COST_UPD';
26635 --
26636 l_balance_type_code := 'A';
26637 l_segment := NULL;
26638 l_ccid := NULL;
26639 l_adr_transaction_coa_id := NULL;
26640 l_adr_accounting_coa_id := NULL;
26641 l_adr_flexfield_segment_code := NULL;
26642 l_adr_flex_value_set_id := NULL;
26643 l_adr_value_type_code := NULL;
26644 l_adr_value_combination_id := NULL;
26645 l_adr_value_segment_code := NULL;
26646
26647 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
26648 l_bflow_class_code := ''; -- 4219869 Business Flow
26649 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
26650 l_budgetary_control_flag := 'N';
26651
26652 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26653 l_bflow_applied_to_amt := NULL; -- 5132302
26654 l_entered_amt_idx := NULL; -- 4262811
26655 l_accted_amt_idx := NULL; -- 4262811
26656 l_acc_rev_flag := NULL; -- 4262811
26657 l_accrual_line_num := NULL; -- 4262811
26658 l_tmp_amt := NULL; -- 4262811
26659 --
26660
26661 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26662 l_balance_type_code <> 'B' THEN
26663 IF NVL(p_source_24,9E125) = 20
26664 THEN
26665
26666 --
26667 XLA_AE_LINES_PKG.SetNewLine;
26668
26669 p_balance_type_code := l_balance_type_code;
26670 -- set the flag so later we will know whether the gain loss line needs to be created
26671
26672 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26673 p_actual_flag :='A';
26674 END IF;
26675
26676 --
26677 -- bulk performance
26678 --
26679 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26680 p_header_num => 0); -- 4262811
26681 --
26682 -- set accounting line options
26683 --
26684 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26685 p_natural_side_code => 'D'
26686 , p_gain_or_loss_flag => 'N'
26687 , p_gl_transfer_mode_code => 'S'
26688 , p_acct_entry_type_code => 'A'
26689 , p_switch_side_flag => 'Y'
26690 , p_merge_duplicate_code => 'N'
26691 );
26692 --
26693 l_acc_rev_natural_side_code := 'C'; -- 4262811
26694 --
26695 --
26696 -- set accounting line type info
26697 --
26698 xla_ae_lines_pkg.SetAcctLineType
26699 (p_component_type => l_component_type
26700 ,p_event_type_code => l_event_type_code
26701 ,p_line_definition_owner_code => l_line_definition_owner_code
26702 ,p_line_definition_code => l_line_definition_code
26703 ,p_accounting_line_code => l_component_code
26704 ,p_accounting_line_type_code => l_component_type_code
26705 ,p_accounting_line_appl_id => l_component_appl_id
26706 ,p_amb_context_code => l_amb_context_code
26707 ,p_entity_code => l_entity_code
26708 ,p_event_class_code => l_event_class_code);
26709 --
26710 -- set accounting class
26711 --
26712 xla_ae_lines_pkg.SetAcctClass(
26713 p_accounting_class_code => 'EXPENSE'
26714 , p_ae_header_id => l_ae_header_id
26715 );
26716
26717 --
26718 -- set rounding class
26719 --
26720 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26721 'EXPENSE';
26722
26723 --
26724 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26725 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26726 --
26727 -- bulk performance
26728 --
26729 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26730
26731 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26732 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26733
26734 -- 4955764
26735 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26736 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26737
26738 -- 4458381 Public Sector Enh
26739
26740 --
26741 -- set accounting attributes for the line type
26742 --
26743 l_entered_amt_idx := 3;
26744 l_accted_amt_idx := 8;
26745 l_bflow_applied_to_amt_idx := NULL; -- 5132302
26746 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26747 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
26748 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26749 l_rec_acct_attrs.array_char_value(2) := p_source_12;
26750 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26751 l_rec_acct_attrs.array_num_value(3) := p_source_18;
26752 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26753 l_rec_acct_attrs.array_char_value(4) := p_source_15;
26754 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26755 l_rec_acct_attrs.array_date_value(5) := p_source_19;
26756 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26757 l_rec_acct_attrs.array_num_value(6) := p_source_20;
26758 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26759 l_rec_acct_attrs.array_char_value(7) := p_source_21;
26760 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26761 l_rec_acct_attrs.array_num_value(8) := p_source_22;
26762
26763 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26764 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26765
26766 ---------------------------------------------------------------------------------------------------------------
26767 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26768 ---------------------------------------------------------------------------------------------------------------
26769 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26770
26771 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26772 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26773
26774 IF xla_accounting_cache_pkg.GetValueChar
26775 (p_source_code => 'LEDGER_CATEGORY_CODE'
26776 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26777 AND l_bflow_method_code = 'PRIOR_ENTRY'
26778 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26779 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26780 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26781 )
26782 THEN
26783 xla_ae_lines_pkg.BflowUpgEntry
26784 (p_business_method_code => l_bflow_method_code
26785 ,p_business_class_code => l_bflow_class_code
26786 ,p_balance_type => l_balance_type_code);
26787 ELSE
26788 NULL;
26789 -- No business flow processing for business flow method of NONE.
26790 END IF;
26791
26792 --
26793 -- call analytical criteria
26794 --
26795
26796 --
26797 -- call description
26798 --
26799 -- No description or it is inherited.
26800 --
26801 -- call ADRs
26802 -- Bug 4922099
26803 --
26804 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26805 (NVL(l_actual_upg_option, 'N') = 'O') OR
26806 (NVL(l_enc_upg_option, 'N') = 'O')
26807 )
26808 THEN
26809 NULL;
26810 --
26811 --
26812
26813 l_ccid := AcctDerRule_4(
26814 p_application_id => p_application_id
26815 , p_ae_header_id => l_ae_header_id
26816 , p_source_4 => p_source_4
26817 , x_transaction_coa_id => l_adr_transaction_coa_id
26818 , x_accounting_coa_id => l_adr_accounting_coa_id
26819 , x_value_type_code => l_adr_value_type_code
26820 , p_side => 'NA'
26821 );
26822
26823 xla_ae_lines_pkg.set_ccid(
26824 p_code_combination_id => l_ccid
26825 , p_value_type_code => l_adr_value_type_code
26826 , p_transaction_coa_id => l_adr_transaction_coa_id
26827 , p_accounting_coa_id => l_adr_accounting_coa_id
26828 , p_adr_code => 'CST_DEFAULT'
26829 , p_adr_type_code => 'S'
26830 , p_component_type => l_component_type
26831 , p_component_code => l_component_code
26832 , p_component_type_code => l_component_type_code
26833 , p_component_appl_id => l_component_appl_id
26834 , p_amb_context_code => l_amb_context_code
26835 , p_side => 'NA'
26836 );
26837
26838
26839 --
26840 --
26841 END IF;
26842 --
26843 -- Bug 4922099
26844 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26845 (NVL(l_enc_upg_option, 'N') = 'O')
26846 ) AND
26847 (l_bflow_method_code = 'PRIOR_ENTRY')
26848 )
26849 THEN
26850 IF
26851 --
26852 1 = 2
26853 --
26854 THEN
26855 xla_accounting_err_pkg.build_message
26856 (p_appli_s_name => 'XLA'
26857 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26858 ,p_token_1 => 'LINE_NUMBER'
26859 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
26860 ,p_token_2 => 'LINE_TYPE_NAME'
26861 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
26862 l_component_type
26863 ,l_component_code
26864 ,l_component_type_code
26865 ,l_component_appl_id
26866 ,l_amb_context_code
26867 ,l_entity_code
26868 ,l_event_class_code
26869 )
26870 ,p_token_3 => 'OWNER'
26871 ,p_value_3 => xla_lookups_pkg.get_meaning(
26872 p_lookup_type => 'XLA_OWNER_TYPE'
26873 ,p_lookup_code => l_component_type_code
26874 )
26875 ,p_token_4 => 'PRODUCT_NAME'
26876 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26877 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26878 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26879 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26880 ,p_ae_header_id => NULL
26881 );
26882
26883 IF (C_LEVEL_ERROR>= g_log_level) THEN
26884 trace
26885 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26886 ,p_level => C_LEVEL_ERROR
26887 ,p_module => l_log_module);
26888 END IF;
26889 END IF;
26890 END IF;
26891 --
26892 --
26893 ------------------------------------------------------------------------------------------------
26894 -- 4219869 Business Flow
26895 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26896 -- Prior Entry. Currently, the following code is always generated.
26897 ------------------------------------------------------------------------------------------------
26898 XLA_AE_LINES_PKG.ValidateCurrentLine;
26899
26900 ------------------------------------------------------------------------------------
26901 -- 4219869 Business Flow
26902 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26903 ------------------------------------------------------------------------------------
26904 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26905
26906 ----------------------------------------------------------------------------------
26907 -- 4219869 Business Flow
26908 -- Update journal entry status -- Need to generate this within IF <condition>
26909 ----------------------------------------------------------------------------------
26910 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26911 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26912 ,p_balance_type_code => l_balance_type_code
26913 );
26914
26915 -------------------------------------------------------------------------------------------
26916 -- 4262811 - Generate the Accrual Reversal lines
26917 -------------------------------------------------------------------------------------------
26918 BEGIN
26919 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26920 (g_array_event(p_event_id).array_value_num('header_index'));
26921 IF l_acc_rev_flag IS NULL THEN
26922 l_acc_rev_flag := 'N';
26923 END IF;
26924 EXCEPTION
26925 WHEN OTHERS THEN
26926 l_acc_rev_flag := 'N';
26927 END;
26928 --
26929 IF (l_acc_rev_flag = 'Y') THEN
26930
26931 -- 4645092 ------------------------------------------------------------------------------
26932 -- To allow MPA report to determine if it should generate report process
26933 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26934 ------------------------------------------------------------------------------------------
26935
26936 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26937 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26938 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
26939 -- call ADRs
26940 -- Bug 4922099
26941 --
26942 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26943 (NVL(l_actual_upg_option, 'N') = 'O') OR
26944 (NVL(l_enc_upg_option, 'N') = 'O')
26945 )
26946 THEN
26947 NULL;
26948 --
26949 --
26950
26951 l_ccid := AcctDerRule_4(
26952 p_application_id => p_application_id
26953 , p_ae_header_id => l_ae_header_id
26954 , p_source_4 => p_source_4
26955 , x_transaction_coa_id => l_adr_transaction_coa_id
26956 , x_accounting_coa_id => l_adr_accounting_coa_id
26957 , x_value_type_code => l_adr_value_type_code
26958 , p_side => 'NA'
26959 );
26960
26961 xla_ae_lines_pkg.set_ccid(
26962 p_code_combination_id => l_ccid
26963 , p_value_type_code => l_adr_value_type_code
26964 , p_transaction_coa_id => l_adr_transaction_coa_id
26965 , p_accounting_coa_id => l_adr_accounting_coa_id
26966 , p_adr_code => 'CST_DEFAULT'
26967 , p_adr_type_code => 'S'
26968 , p_component_type => l_component_type
26969 , p_component_code => l_component_code
26970 , p_component_type_code => l_component_type_code
26971 , p_component_appl_id => l_component_appl_id
26972 , p_amb_context_code => l_amb_context_code
26973 , p_side => 'NA'
26974 );
26975
26976
26977 --
26978 --
26979 END IF;
26980
26981 --
26982 -- Update the line information that should be overwritten
26983 --
26984 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26985 p_header_num => 1);
26986 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
26987
26988 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26989
26990 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
26991 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26992 END IF;
26993
26994 --
26995 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26996 --
26997 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26998 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
26999 ELSE
27000 ---------------------------------------------------------------------------------------------------
27001 -- 4262811a Switch Sign
27002 ---------------------------------------------------------------------------------------------------
27003 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
27004 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27005 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27006 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27007 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27008 -- 5132302
27009 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27010 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27011
27012 END IF;
27013
27014 -- 4955764
27015 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27016 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27017
27018
27019 XLA_AE_LINES_PKG.ValidateCurrentLine;
27020 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27021
27022 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27023 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27024 ,p_balance_type_code => l_balance_type_code);
27025
27026 END IF;
27027
27028 -----------------------------------------------------------------------------------------
27029 -- 4262811 Multiperiod Accounting
27030 -----------------------------------------------------------------------------------------
27031 -- No MPA option is assigned.
27032
27033
27034 END IF;
27035 END IF;
27036 --
27037
27038 --
27039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27040 trace
27041 (p_msg => 'END of AcctLineType_51'
27042 ,p_level => C_LEVEL_PROCEDURE
27043 ,p_module => l_log_module);
27044 END IF;
27045 --
27046 EXCEPTION
27047 WHEN xla_exceptions_pkg.application_exception THEN
27048 RAISE;
27049 WHEN OTHERS THEN
27050 xla_exceptions_pkg.raise_message
27051 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_51');
27052 END AcctLineType_51;
27053 --
27054
27055 ---------------------------------------
27056 --
27057 -- PRIVATE FUNCTION
27058 -- AcctLineType_52
27059 --
27060 ---------------------------------------
27061 PROCEDURE AcctLineType_52 (
27062 p_application_id IN NUMBER
27063 ,p_event_id IN NUMBER
27064 ,p_calculate_acctd_flag IN VARCHAR2
27065 ,p_calculate_g_l_flag IN VARCHAR2
27066 ,p_actual_flag IN OUT VARCHAR2
27067 ,p_balance_type_code OUT VARCHAR2
27068 ,p_gain_or_loss_ref OUT VARCHAR2
27069
27070 --Cost Management Default Account
27071 , p_source_4 IN NUMBER
27072 --DISTRIBUTION_IDENTIFIER
27073 , p_source_11 IN NUMBER
27074 --Distribution Type
27075 , p_source_12 IN VARCHAR2
27076 , p_source_12_meaning IN VARCHAR2
27077 --Entered Currency Code
27078 , p_source_15 IN VARCHAR2
27079 --Entered Amount
27080 , p_source_18 IN NUMBER
27081 --Currency Conversion Date
27082 , p_source_19 IN DATE
27083 --Currency Conversion Rate
27084 , p_source_20 IN NUMBER
27085 --Currency Conversion Type
27086 , p_source_21 IN VARCHAR2
27087 --Accounted Amount
27088 , p_source_22 IN NUMBER
27089 --Accounting Line Type
27090 , p_source_24 IN NUMBER
27091 )
27092 IS
27093
27094 l_component_type VARCHAR2(80);
27095 l_component_code VARCHAR2(30);
27096 l_component_type_code VARCHAR2(1);
27097 l_component_appl_id INTEGER;
27098 l_amb_context_code VARCHAR2(30);
27099 l_entity_code VARCHAR2(30);
27100 l_event_class_code VARCHAR2(30);
27101 l_ae_header_id NUMBER;
27102 l_event_type_code VARCHAR2(30);
27103 l_line_definition_code VARCHAR2(30);
27104 l_line_definition_owner_code VARCHAR2(1);
27105 --
27106 -- adr variables
27107 l_segment VARCHAR2(30);
27108 l_ccid NUMBER;
27109 l_adr_transaction_coa_id NUMBER;
27110 l_adr_accounting_coa_id NUMBER;
27111 l_adr_flexfield_segment_code VARCHAR2(30);
27112 l_adr_flex_value_set_id NUMBER;
27113 l_adr_value_type_code VARCHAR2(30);
27114 l_adr_value_combination_id NUMBER;
27115 l_adr_value_segment_code VARCHAR2(30);
27116
27117 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
27118 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
27119 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
27120 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
27121
27122 -- 4262811 Variables ------------------------------------------------------------------------------------------
27123 l_entered_amt_idx NUMBER;
27124 l_accted_amt_idx NUMBER;
27125 l_acc_rev_flag VARCHAR2(1);
27126 l_accrual_line_num NUMBER;
27127 l_tmp_amt NUMBER;
27128 l_acc_rev_natural_side_code VARCHAR2(1);
27129
27130 l_num_entries NUMBER;
27131 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
27132 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
27133 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
27134 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
27135 l_recog_line_1 NUMBER;
27136 l_recog_line_2 NUMBER;
27137
27138 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
27139 l_bflow_applied_to_amt NUMBER; -- 5132302
27140 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
27141
27142 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27143
27144 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
27145 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
27146
27147 ---------------------------------------------------------------------------------------------------------------
27148
27149
27150 --
27151 -- bulk performance
27152 --
27153 l_balance_type_code VARCHAR2(1);
27154 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
27155 l_log_module VARCHAR2(240);
27156
27157 --
27158 -- Upgrade strategy
27159 --
27160 l_actual_upg_option VARCHAR2(1);
27161 l_enc_upg_option VARCHAR2(1);
27162
27163 --
27164 BEGIN
27165 --
27166 IF g_log_enabled THEN
27167 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
27168 END IF;
27169 --
27170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27171
27172 trace
27173 (p_msg => 'BEGIN of AcctLineType_52'
27174 ,p_level => C_LEVEL_PROCEDURE
27175 ,p_module => l_log_module);
27176
27177 END IF;
27178 --
27179 l_component_type := 'AMB_JLT';
27180 l_component_code := 'EXPENSE';
27181 l_component_type_code := 'S';
27182 l_component_appl_id := 707;
27183 l_amb_context_code := 'DEFAULT';
27184 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
27185 l_event_class_code := 'MTL_COST_UPD';
27186 l_event_type_code := 'MTL_COST_UPD_ALL';
27187 l_line_definition_owner_code := 'S';
27188 l_line_definition_code := 'MTL_COST_UPD';
27189 --
27190 l_balance_type_code := 'A';
27191 l_segment := NULL;
27192 l_ccid := NULL;
27193 l_adr_transaction_coa_id := NULL;
27194 l_adr_accounting_coa_id := NULL;
27195 l_adr_flexfield_segment_code := NULL;
27196 l_adr_flex_value_set_id := NULL;
27197 l_adr_value_type_code := NULL;
27198 l_adr_value_combination_id := NULL;
27199 l_adr_value_segment_code := NULL;
27200
27201 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
27202 l_bflow_class_code := ''; -- 4219869 Business Flow
27203 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
27204 l_budgetary_control_flag := 'N';
27205
27206 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27207 l_bflow_applied_to_amt := NULL; -- 5132302
27208 l_entered_amt_idx := NULL; -- 4262811
27209 l_accted_amt_idx := NULL; -- 4262811
27210 l_acc_rev_flag := NULL; -- 4262811
27211 l_accrual_line_num := NULL; -- 4262811
27212 l_tmp_amt := NULL; -- 4262811
27213 --
27214
27215 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27216 l_balance_type_code <> 'B' THEN
27217 IF NVL(p_source_24,9E125) = 20
27218 THEN
27219
27220 --
27221 XLA_AE_LINES_PKG.SetNewLine;
27222
27223 p_balance_type_code := l_balance_type_code;
27224 -- set the flag so later we will know whether the gain loss line needs to be created
27225
27226 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27227 p_actual_flag :='A';
27228 END IF;
27229
27230 --
27231 -- bulk performance
27232 --
27233 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27234 p_header_num => 0); -- 4262811
27235 --
27236 -- set accounting line options
27237 --
27238 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27239 p_natural_side_code => 'D'
27240 , p_gain_or_loss_flag => 'N'
27241 , p_gl_transfer_mode_code => 'S'
27242 , p_acct_entry_type_code => 'A'
27243 , p_switch_side_flag => 'Y'
27244 , p_merge_duplicate_code => 'N'
27245 );
27246 --
27247 l_acc_rev_natural_side_code := 'C'; -- 4262811
27248 --
27249 --
27250 -- set accounting line type info
27251 --
27252 xla_ae_lines_pkg.SetAcctLineType
27253 (p_component_type => l_component_type
27254 ,p_event_type_code => l_event_type_code
27255 ,p_line_definition_owner_code => l_line_definition_owner_code
27256 ,p_line_definition_code => l_line_definition_code
27257 ,p_accounting_line_code => l_component_code
27258 ,p_accounting_line_type_code => l_component_type_code
27259 ,p_accounting_line_appl_id => l_component_appl_id
27260 ,p_amb_context_code => l_amb_context_code
27261 ,p_entity_code => l_entity_code
27262 ,p_event_class_code => l_event_class_code);
27263 --
27264 -- set accounting class
27265 --
27266 xla_ae_lines_pkg.SetAcctClass(
27267 p_accounting_class_code => 'EXPENSE'
27268 , p_ae_header_id => l_ae_header_id
27269 );
27270
27271 --
27272 -- set rounding class
27273 --
27274 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27275 'EXPENSE';
27276
27277 --
27278 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27279 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27280 --
27281 -- bulk performance
27282 --
27283 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27284
27285 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27286 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27287
27288 -- 4955764
27289 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27290 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27291
27292 -- 4458381 Public Sector Enh
27293
27294 --
27295 -- set accounting attributes for the line type
27296 --
27297 l_entered_amt_idx := 3;
27298 l_accted_amt_idx := 8;
27299 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27300 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27301 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
27302 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27303 l_rec_acct_attrs.array_char_value(2) := p_source_12;
27304 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27305 l_rec_acct_attrs.array_num_value(3) := p_source_18;
27306 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27307 l_rec_acct_attrs.array_char_value(4) := p_source_15;
27308 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27309 l_rec_acct_attrs.array_date_value(5) := p_source_19;
27310 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27311 l_rec_acct_attrs.array_num_value(6) := p_source_20;
27312 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27313 l_rec_acct_attrs.array_char_value(7) := p_source_21;
27314 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27315 l_rec_acct_attrs.array_num_value(8) := p_source_22;
27316
27317 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27318 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27319
27320 ---------------------------------------------------------------------------------------------------------------
27321 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27322 ---------------------------------------------------------------------------------------------------------------
27323 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27324
27325 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27326 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27327
27328 IF xla_accounting_cache_pkg.GetValueChar
27329 (p_source_code => 'LEDGER_CATEGORY_CODE'
27330 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27331 AND l_bflow_method_code = 'PRIOR_ENTRY'
27332 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27333 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27334 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27335 )
27336 THEN
27337 xla_ae_lines_pkg.BflowUpgEntry
27338 (p_business_method_code => l_bflow_method_code
27339 ,p_business_class_code => l_bflow_class_code
27340 ,p_balance_type => l_balance_type_code);
27341 ELSE
27342 NULL;
27343 -- No business flow processing for business flow method of NONE.
27344 END IF;
27345
27346 --
27347 -- call analytical criteria
27348 --
27349
27350 --
27351 -- call description
27352 --
27353 -- No description or it is inherited.
27354 --
27355 -- call ADRs
27356 -- Bug 4922099
27357 --
27358 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27359 (NVL(l_actual_upg_option, 'N') = 'O') OR
27360 (NVL(l_enc_upg_option, 'N') = 'O')
27361 )
27362 THEN
27363 NULL;
27364 --
27365 --
27366
27367 l_ccid := AcctDerRule_4(
27368 p_application_id => p_application_id
27369 , p_ae_header_id => l_ae_header_id
27370 , p_source_4 => p_source_4
27371 , x_transaction_coa_id => l_adr_transaction_coa_id
27372 , x_accounting_coa_id => l_adr_accounting_coa_id
27373 , x_value_type_code => l_adr_value_type_code
27374 , p_side => 'NA'
27375 );
27376
27377 xla_ae_lines_pkg.set_ccid(
27378 p_code_combination_id => l_ccid
27379 , p_value_type_code => l_adr_value_type_code
27380 , p_transaction_coa_id => l_adr_transaction_coa_id
27381 , p_accounting_coa_id => l_adr_accounting_coa_id
27382 , p_adr_code => 'CST_DEFAULT'
27383 , p_adr_type_code => 'S'
27384 , p_component_type => l_component_type
27385 , p_component_code => l_component_code
27386 , p_component_type_code => l_component_type_code
27387 , p_component_appl_id => l_component_appl_id
27388 , p_amb_context_code => l_amb_context_code
27389 , p_side => 'NA'
27390 );
27391
27392
27393 --
27394 --
27395 END IF;
27396 --
27397 -- Bug 4922099
27398 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27399 (NVL(l_enc_upg_option, 'N') = 'O')
27400 ) AND
27401 (l_bflow_method_code = 'PRIOR_ENTRY')
27402 )
27403 THEN
27404 IF
27405 --
27406 1 = 2
27407 --
27408 THEN
27409 xla_accounting_err_pkg.build_message
27410 (p_appli_s_name => 'XLA'
27411 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27412 ,p_token_1 => 'LINE_NUMBER'
27413 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
27414 ,p_token_2 => 'LINE_TYPE_NAME'
27415 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
27416 l_component_type
27417 ,l_component_code
27418 ,l_component_type_code
27419 ,l_component_appl_id
27420 ,l_amb_context_code
27421 ,l_entity_code
27422 ,l_event_class_code
27423 )
27424 ,p_token_3 => 'OWNER'
27425 ,p_value_3 => xla_lookups_pkg.get_meaning(
27426 p_lookup_type => 'XLA_OWNER_TYPE'
27427 ,p_lookup_code => l_component_type_code
27428 )
27429 ,p_token_4 => 'PRODUCT_NAME'
27430 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27431 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27432 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27433 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27434 ,p_ae_header_id => NULL
27435 );
27436
27437 IF (C_LEVEL_ERROR>= g_log_level) THEN
27438 trace
27439 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27440 ,p_level => C_LEVEL_ERROR
27441 ,p_module => l_log_module);
27442 END IF;
27443 END IF;
27444 END IF;
27445 --
27446 --
27447 ------------------------------------------------------------------------------------------------
27448 -- 4219869 Business Flow
27449 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27450 -- Prior Entry. Currently, the following code is always generated.
27451 ------------------------------------------------------------------------------------------------
27452 XLA_AE_LINES_PKG.ValidateCurrentLine;
27453
27454 ------------------------------------------------------------------------------------
27455 -- 4219869 Business Flow
27456 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27457 ------------------------------------------------------------------------------------
27458 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27459
27460 ----------------------------------------------------------------------------------
27461 -- 4219869 Business Flow
27462 -- Update journal entry status -- Need to generate this within IF <condition>
27463 ----------------------------------------------------------------------------------
27464 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27465 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27466 ,p_balance_type_code => l_balance_type_code
27467 );
27468
27469 -------------------------------------------------------------------------------------------
27470 -- 4262811 - Generate the Accrual Reversal lines
27471 -------------------------------------------------------------------------------------------
27472 BEGIN
27473 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27474 (g_array_event(p_event_id).array_value_num('header_index'));
27475 IF l_acc_rev_flag IS NULL THEN
27476 l_acc_rev_flag := 'N';
27477 END IF;
27478 EXCEPTION
27479 WHEN OTHERS THEN
27480 l_acc_rev_flag := 'N';
27481 END;
27482 --
27483 IF (l_acc_rev_flag = 'Y') THEN
27484
27485 -- 4645092 ------------------------------------------------------------------------------
27486 -- To allow MPA report to determine if it should generate report process
27487 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27488 ------------------------------------------------------------------------------------------
27489
27490 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27491 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27492 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
27493 -- call ADRs
27494 -- Bug 4922099
27495 --
27496 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27497 (NVL(l_actual_upg_option, 'N') = 'O') OR
27498 (NVL(l_enc_upg_option, 'N') = 'O')
27499 )
27500 THEN
27501 NULL;
27502 --
27503 --
27504
27505 l_ccid := AcctDerRule_4(
27506 p_application_id => p_application_id
27507 , p_ae_header_id => l_ae_header_id
27508 , p_source_4 => p_source_4
27509 , x_transaction_coa_id => l_adr_transaction_coa_id
27510 , x_accounting_coa_id => l_adr_accounting_coa_id
27511 , x_value_type_code => l_adr_value_type_code
27512 , p_side => 'NA'
27513 );
27514
27515 xla_ae_lines_pkg.set_ccid(
27516 p_code_combination_id => l_ccid
27517 , p_value_type_code => l_adr_value_type_code
27518 , p_transaction_coa_id => l_adr_transaction_coa_id
27519 , p_accounting_coa_id => l_adr_accounting_coa_id
27520 , p_adr_code => 'CST_DEFAULT'
27521 , p_adr_type_code => 'S'
27522 , p_component_type => l_component_type
27523 , p_component_code => l_component_code
27524 , p_component_type_code => l_component_type_code
27525 , p_component_appl_id => l_component_appl_id
27526 , p_amb_context_code => l_amb_context_code
27527 , p_side => 'NA'
27528 );
27529
27530
27531 --
27532 --
27533 END IF;
27534
27535 --
27536 -- Update the line information that should be overwritten
27537 --
27538 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27539 p_header_num => 1);
27540 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
27541
27542 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27543
27544 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
27545 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27546 END IF;
27547
27548 --
27549 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27550 --
27551 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27552 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
27553 ELSE
27554 ---------------------------------------------------------------------------------------------------
27555 -- 4262811a Switch Sign
27556 ---------------------------------------------------------------------------------------------------
27557 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
27558 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27559 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27560 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27561 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27562 -- 5132302
27563 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27564 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27565
27566 END IF;
27567
27568 -- 4955764
27569 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27570 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27571
27572
27573 XLA_AE_LINES_PKG.ValidateCurrentLine;
27574 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27575
27576 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27577 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27578 ,p_balance_type_code => l_balance_type_code);
27579
27580 END IF;
27581
27582 -----------------------------------------------------------------------------------------
27583 -- 4262811 Multiperiod Accounting
27584 -----------------------------------------------------------------------------------------
27585 -- No MPA option is assigned.
27586
27587
27588 END IF;
27589 END IF;
27590 --
27591
27592 --
27593 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27594 trace
27595 (p_msg => 'END of AcctLineType_52'
27596 ,p_level => C_LEVEL_PROCEDURE
27597 ,p_module => l_log_module);
27598 END IF;
27599 --
27600 EXCEPTION
27601 WHEN xla_exceptions_pkg.application_exception THEN
27602 RAISE;
27603 WHEN OTHERS THEN
27604 xla_exceptions_pkg.raise_message
27605 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_52');
27606 END AcctLineType_52;
27607 --
27608
27609 ---------------------------------------
27610 --
27611 -- PRIVATE FUNCTION
27612 -- AcctLineType_53
27613 --
27614 ---------------------------------------
27615 PROCEDURE AcctLineType_53 (
27616 p_application_id IN NUMBER
27617 ,p_event_id IN NUMBER
27618 ,p_calculate_acctd_flag IN VARCHAR2
27619 ,p_calculate_g_l_flag IN VARCHAR2
27620 ,p_actual_flag IN OUT VARCHAR2
27621 ,p_balance_type_code OUT VARCHAR2
27622 ,p_gain_or_loss_ref OUT VARCHAR2
27623
27624 --Cost Management Default Account
27625 , p_source_4 IN NUMBER
27626 --Applied to Application ID
27627 , p_source_6 IN NUMBER
27628 --Applied to Distribution Link Type
27629 , p_source_7 IN VARCHAR2
27630 --Applied to Entity Code
27631 , p_source_8 IN VARCHAR2
27632 --DISTRIBUTION_IDENTIFIER
27633 , p_source_11 IN NUMBER
27634 --Distribution Type
27635 , p_source_12 IN VARCHAR2
27636 , p_source_12_meaning IN VARCHAR2
27637 --Encumbrance Reversal Amount Entered
27638 , p_source_14 IN NUMBER
27639 --Entered Currency Code
27640 , p_source_15 IN VARCHAR2
27641 --Transaction Encumbrance Reversal Amount
27642 , p_source_16 IN NUMBER
27643 --Entered Amount
27644 , p_source_18 IN NUMBER
27645 --Currency Conversion Date
27646 , p_source_19 IN DATE
27647 --Currency Conversion Rate
27648 , p_source_20 IN NUMBER
27649 --Currency Conversion Type
27650 , p_source_21 IN VARCHAR2
27651 --Accounted Amount
27652 , p_source_22 IN NUMBER
27653 --Accounting Line Type
27654 , p_source_24 IN NUMBER
27655 --Costing Encumbrance Upgrade Option
27656 , p_source_27 IN VARCHAR2
27657 --TXN_PO_DISTRIBUTION_ID
27658 , p_source_28 IN NUMBER
27659 --TXN_PO_HEADER_ID
27660 , p_source_29 IN NUMBER
27661 --Requisition Budget Account
27662 , p_source_30 IN NUMBER
27663 --Requisition Encumbrance Type Identifier
27664 , p_source_31 IN NUMBER
27665 )
27666 IS
27667
27668 l_component_type VARCHAR2(80);
27669 l_component_code VARCHAR2(30);
27670 l_component_type_code VARCHAR2(1);
27671 l_component_appl_id INTEGER;
27672 l_amb_context_code VARCHAR2(30);
27673 l_entity_code VARCHAR2(30);
27674 l_event_class_code VARCHAR2(30);
27675 l_ae_header_id NUMBER;
27676 l_event_type_code VARCHAR2(30);
27677 l_line_definition_code VARCHAR2(30);
27678 l_line_definition_owner_code VARCHAR2(1);
27679 --
27680 -- adr variables
27681 l_segment VARCHAR2(30);
27682 l_ccid NUMBER;
27683 l_adr_transaction_coa_id NUMBER;
27684 l_adr_accounting_coa_id NUMBER;
27685 l_adr_flexfield_segment_code VARCHAR2(30);
27686 l_adr_flex_value_set_id NUMBER;
27687 l_adr_value_type_code VARCHAR2(30);
27688 l_adr_value_combination_id NUMBER;
27689 l_adr_value_segment_code VARCHAR2(30);
27690
27691 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
27692 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
27693 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
27694 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
27695
27696 -- 4262811 Variables ------------------------------------------------------------------------------------------
27697 l_entered_amt_idx NUMBER;
27698 l_accted_amt_idx NUMBER;
27699 l_acc_rev_flag VARCHAR2(1);
27700 l_accrual_line_num NUMBER;
27701 l_tmp_amt NUMBER;
27702 l_acc_rev_natural_side_code VARCHAR2(1);
27703
27704 l_num_entries NUMBER;
27705 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
27706 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
27707 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
27708 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
27709 l_recog_line_1 NUMBER;
27710 l_recog_line_2 NUMBER;
27711
27712 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
27713 l_bflow_applied_to_amt NUMBER; -- 5132302
27714 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
27715
27716 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27717
27718 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
27719 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
27720
27721 ---------------------------------------------------------------------------------------------------------------
27722
27723
27724 --
27725 -- bulk performance
27726 --
27727 l_balance_type_code VARCHAR2(1);
27728 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
27729 l_log_module VARCHAR2(240);
27730
27731 --
27732 -- Upgrade strategy
27733 --
27734 l_actual_upg_option VARCHAR2(1);
27735 l_enc_upg_option VARCHAR2(1);
27736
27737 --
27738 BEGIN
27739 --
27740 IF g_log_enabled THEN
27741 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
27742 END IF;
27743 --
27744 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27745
27746 trace
27747 (p_msg => 'BEGIN of AcctLineType_53'
27748 ,p_level => C_LEVEL_PROCEDURE
27749 ,p_module => l_log_module);
27750
27751 END IF;
27752 --
27753 l_component_type := 'AMB_JLT';
27754 l_component_code := 'INTERCOMPANY_ACCRUAL';
27755 l_component_type_code := 'S';
27756 l_component_appl_id := 707;
27757 l_amb_context_code := 'DEFAULT';
27758 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
27759 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
27760 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
27761 l_line_definition_owner_code := 'S';
27762 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
27763 --
27764 l_balance_type_code := 'A';
27765 l_segment := NULL;
27766 l_ccid := NULL;
27767 l_adr_transaction_coa_id := NULL;
27768 l_adr_accounting_coa_id := NULL;
27769 l_adr_flexfield_segment_code := NULL;
27770 l_adr_flex_value_set_id := NULL;
27771 l_adr_value_type_code := NULL;
27772 l_adr_value_combination_id := NULL;
27773 l_adr_value_segment_code := NULL;
27774
27775 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
27776 l_bflow_class_code := ''; -- 4219869 Business Flow
27777 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
27778 l_budgetary_control_flag := 'N';
27779
27780 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27781 l_bflow_applied_to_amt := NULL; -- 5132302
27782 l_entered_amt_idx := NULL; -- 4262811
27783 l_accted_amt_idx := NULL; -- 4262811
27784 l_acc_rev_flag := NULL; -- 4262811
27785 l_accrual_line_num := NULL; -- 4262811
27786 l_tmp_amt := NULL; -- 4262811
27787 --
27788
27789 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27790 l_balance_type_code <> 'B' THEN
27791 IF NVL(p_source_24,9E125) = 2 AND
27792 p_source_22 < 0
27793 THEN
27794
27795 --
27796 XLA_AE_LINES_PKG.SetNewLine;
27797
27798 p_balance_type_code := l_balance_type_code;
27799 -- set the flag so later we will know whether the gain loss line needs to be created
27800
27801 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27802 p_actual_flag :='A';
27803 END IF;
27804
27805 --
27806 -- bulk performance
27807 --
27808 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27809 p_header_num => 0); -- 4262811
27810 --
27811 -- set accounting line options
27812 --
27813 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27814 p_natural_side_code => 'D'
27815 , p_gain_or_loss_flag => 'N'
27816 , p_gl_transfer_mode_code => 'S'
27817 , p_acct_entry_type_code => 'A'
27818 , p_switch_side_flag => 'Y'
27819 , p_merge_duplicate_code => 'N'
27820 );
27821 --
27822 l_acc_rev_natural_side_code := 'C'; -- 4262811
27823 --
27824 --
27825 -- set accounting line type info
27826 --
27827 xla_ae_lines_pkg.SetAcctLineType
27828 (p_component_type => l_component_type
27829 ,p_event_type_code => l_event_type_code
27830 ,p_line_definition_owner_code => l_line_definition_owner_code
27831 ,p_line_definition_code => l_line_definition_code
27832 ,p_accounting_line_code => l_component_code
27833 ,p_accounting_line_type_code => l_component_type_code
27834 ,p_accounting_line_appl_id => l_component_appl_id
27835 ,p_amb_context_code => l_amb_context_code
27836 ,p_entity_code => l_entity_code
27837 ,p_event_class_code => l_event_class_code);
27838 --
27839 -- set accounting class
27840 --
27841 xla_ae_lines_pkg.SetAcctClass(
27842 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
27843 , p_ae_header_id => l_ae_header_id
27844 );
27845
27846 --
27847 -- set rounding class
27848 --
27849 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27850 'INTERCOMPANY_ACCRUAL';
27851
27852 --
27853 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27854 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27855 --
27856 -- bulk performance
27857 --
27858 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27859
27860 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27861 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27862
27863 -- 4955764
27864 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27865 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27866
27867 -- 4458381 Public Sector Enh
27868
27869 --
27870 -- set accounting attributes for the line type
27871 --
27872 l_entered_amt_idx := 17;
27873 l_accted_amt_idx := 22;
27874 l_bflow_applied_to_amt_idx := NULL; -- 5132302
27875 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
27876 l_rec_acct_attrs.array_num_value(1) := p_source_6;
27877 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
27878 l_rec_acct_attrs.array_char_value(2) := p_source_7;
27879 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
27880 l_rec_acct_attrs.array_char_value(3) := p_source_8;
27881 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
27882 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
27883 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
27884 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
27885 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
27886 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
27887 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
27888 l_rec_acct_attrs.array_char_value(7) := p_source_12;
27889 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
27890 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
27891 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
27892 l_rec_acct_attrs.array_num_value(9) := p_source_14;
27893 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
27894 l_rec_acct_attrs.array_char_value(10) := p_source_15;
27895 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
27896 l_rec_acct_attrs.array_num_value(11) := p_source_16;
27897 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
27898 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
27899 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
27900 l_rec_acct_attrs.array_num_value(13) := p_source_14;
27901 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
27902 l_rec_acct_attrs.array_char_value(14) := p_source_15;
27903 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
27904 l_rec_acct_attrs.array_num_value(15) := p_source_16;
27905 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
27906 l_rec_acct_attrs.array_char_value(16) := p_source_27;
27907 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
27908 l_rec_acct_attrs.array_num_value(17) := p_source_18;
27909 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
27910 l_rec_acct_attrs.array_char_value(18) := p_source_15;
27911 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
27912 l_rec_acct_attrs.array_date_value(19) := p_source_19;
27913 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
27914 l_rec_acct_attrs.array_num_value(20) := p_source_20;
27915 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
27916 l_rec_acct_attrs.array_char_value(21) := p_source_21;
27917 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
27918 l_rec_acct_attrs.array_num_value(22) := p_source_22;
27919 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
27920 l_rec_acct_attrs.array_num_value(23) := p_source_31;
27921 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
27922 l_rec_acct_attrs.array_num_value(24) := p_source_31;
27923
27924 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27925 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27926
27927 ---------------------------------------------------------------------------------------------------------------
27928 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27929 ---------------------------------------------------------------------------------------------------------------
27930 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27931
27932 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27933 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27934
27935 IF xla_accounting_cache_pkg.GetValueChar
27936 (p_source_code => 'LEDGER_CATEGORY_CODE'
27937 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27938 AND l_bflow_method_code = 'PRIOR_ENTRY'
27939 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27940 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27941 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27942 )
27943 THEN
27944 xla_ae_lines_pkg.BflowUpgEntry
27945 (p_business_method_code => l_bflow_method_code
27946 ,p_business_class_code => l_bflow_class_code
27947 ,p_balance_type => l_balance_type_code);
27948 ELSE
27949 NULL;
27950 -- No business flow processing for business flow method of NONE.
27951 END IF;
27952
27953 --
27954 -- call analytical criteria
27955 --
27956
27957 --
27958 -- call description
27959 --
27960 -- No description or it is inherited.
27961 --
27962 -- call ADRs
27963 -- Bug 4922099
27964 --
27965 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27966 (NVL(l_actual_upg_option, 'N') = 'O') OR
27967 (NVL(l_enc_upg_option, 'N') = 'O')
27968 )
27969 THEN
27970 NULL;
27971 --
27972 --
27973
27974 l_ccid := AcctDerRule_4(
27975 p_application_id => p_application_id
27976 , p_ae_header_id => l_ae_header_id
27977 , p_source_4 => p_source_4
27978 , x_transaction_coa_id => l_adr_transaction_coa_id
27979 , x_accounting_coa_id => l_adr_accounting_coa_id
27980 , x_value_type_code => l_adr_value_type_code
27981 , p_side => 'NA'
27982 );
27983
27984 xla_ae_lines_pkg.set_ccid(
27985 p_code_combination_id => l_ccid
27986 , p_value_type_code => l_adr_value_type_code
27987 , p_transaction_coa_id => l_adr_transaction_coa_id
27988 , p_accounting_coa_id => l_adr_accounting_coa_id
27989 , p_adr_code => 'CST_DEFAULT'
27990 , p_adr_type_code => 'S'
27991 , p_component_type => l_component_type
27992 , p_component_code => l_component_code
27993 , p_component_type_code => l_component_type_code
27994 , p_component_appl_id => l_component_appl_id
27995 , p_amb_context_code => l_amb_context_code
27996 , p_side => 'NA'
27997 );
27998
27999
28000 --
28001 --
28002 END IF;
28003 --
28004 -- Bug 4922099
28005 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28006 (NVL(l_enc_upg_option, 'N') = 'O')
28007 ) AND
28008 (l_bflow_method_code = 'PRIOR_ENTRY')
28009 )
28010 THEN
28011 IF
28012 --
28013 1 = 2
28014 --
28015 THEN
28016 xla_accounting_err_pkg.build_message
28017 (p_appli_s_name => 'XLA'
28018 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28019 ,p_token_1 => 'LINE_NUMBER'
28020 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
28021 ,p_token_2 => 'LINE_TYPE_NAME'
28022 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
28023 l_component_type
28024 ,l_component_code
28025 ,l_component_type_code
28026 ,l_component_appl_id
28027 ,l_amb_context_code
28028 ,l_entity_code
28029 ,l_event_class_code
28030 )
28031 ,p_token_3 => 'OWNER'
28032 ,p_value_3 => xla_lookups_pkg.get_meaning(
28033 p_lookup_type => 'XLA_OWNER_TYPE'
28034 ,p_lookup_code => l_component_type_code
28035 )
28036 ,p_token_4 => 'PRODUCT_NAME'
28037 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28038 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28039 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28040 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28041 ,p_ae_header_id => NULL
28042 );
28043
28044 IF (C_LEVEL_ERROR>= g_log_level) THEN
28045 trace
28046 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28047 ,p_level => C_LEVEL_ERROR
28048 ,p_module => l_log_module);
28049 END IF;
28050 END IF;
28051 END IF;
28052 --
28053 --
28054 ------------------------------------------------------------------------------------------------
28055 -- 4219869 Business Flow
28056 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28057 -- Prior Entry. Currently, the following code is always generated.
28058 ------------------------------------------------------------------------------------------------
28059 XLA_AE_LINES_PKG.ValidateCurrentLine;
28060
28061 ------------------------------------------------------------------------------------
28062 -- 4219869 Business Flow
28063 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28064 ------------------------------------------------------------------------------------
28065 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28066
28067 ----------------------------------------------------------------------------------
28068 -- 4219869 Business Flow
28069 -- Update journal entry status -- Need to generate this within IF <condition>
28070 ----------------------------------------------------------------------------------
28071 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28072 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28073 ,p_balance_type_code => l_balance_type_code
28074 );
28075
28076 -------------------------------------------------------------------------------------------
28077 -- 4262811 - Generate the Accrual Reversal lines
28078 -------------------------------------------------------------------------------------------
28079 BEGIN
28080 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28081 (g_array_event(p_event_id).array_value_num('header_index'));
28082 IF l_acc_rev_flag IS NULL THEN
28083 l_acc_rev_flag := 'N';
28084 END IF;
28085 EXCEPTION
28086 WHEN OTHERS THEN
28087 l_acc_rev_flag := 'N';
28088 END;
28089 --
28090 IF (l_acc_rev_flag = 'Y') THEN
28091
28092 -- 4645092 ------------------------------------------------------------------------------
28093 -- To allow MPA report to determine if it should generate report process
28094 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28095 ------------------------------------------------------------------------------------------
28096
28097 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28098 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28099 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
28100 -- call ADRs
28101 -- Bug 4922099
28102 --
28103 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28104 (NVL(l_actual_upg_option, 'N') = 'O') OR
28105 (NVL(l_enc_upg_option, 'N') = 'O')
28106 )
28107 THEN
28108 NULL;
28109 --
28110 --
28111
28112 l_ccid := AcctDerRule_4(
28113 p_application_id => p_application_id
28114 , p_ae_header_id => l_ae_header_id
28115 , p_source_4 => p_source_4
28116 , x_transaction_coa_id => l_adr_transaction_coa_id
28117 , x_accounting_coa_id => l_adr_accounting_coa_id
28118 , x_value_type_code => l_adr_value_type_code
28119 , p_side => 'NA'
28120 );
28121
28122 xla_ae_lines_pkg.set_ccid(
28123 p_code_combination_id => l_ccid
28124 , p_value_type_code => l_adr_value_type_code
28125 , p_transaction_coa_id => l_adr_transaction_coa_id
28126 , p_accounting_coa_id => l_adr_accounting_coa_id
28127 , p_adr_code => 'CST_DEFAULT'
28128 , p_adr_type_code => 'S'
28129 , p_component_type => l_component_type
28130 , p_component_code => l_component_code
28131 , p_component_type_code => l_component_type_code
28132 , p_component_appl_id => l_component_appl_id
28133 , p_amb_context_code => l_amb_context_code
28134 , p_side => 'NA'
28135 );
28136
28137
28138 --
28139 --
28140 END IF;
28141
28142 --
28143 -- Update the line information that should be overwritten
28144 --
28145 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28146 p_header_num => 1);
28147 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
28148
28149 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28150
28151 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
28152 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28153 END IF;
28154
28155 --
28156 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28157 --
28158 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28159 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
28160 ELSE
28161 ---------------------------------------------------------------------------------------------------
28162 -- 4262811a Switch Sign
28163 ---------------------------------------------------------------------------------------------------
28164 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
28165 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28166 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28167 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28168 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28169 -- 5132302
28170 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28171 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28172
28173 END IF;
28174
28175 -- 4955764
28176 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28177 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28178
28179
28180 XLA_AE_LINES_PKG.ValidateCurrentLine;
28181 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28182
28183 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28184 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28185 ,p_balance_type_code => l_balance_type_code);
28186
28187 END IF;
28188
28189 -----------------------------------------------------------------------------------------
28190 -- 4262811 Multiperiod Accounting
28191 -----------------------------------------------------------------------------------------
28192 -- No MPA option is assigned.
28193
28194
28195 END IF;
28196 END IF;
28197 --
28198
28199 --
28200 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28201 trace
28202 (p_msg => 'END of AcctLineType_53'
28203 ,p_level => C_LEVEL_PROCEDURE
28204 ,p_module => l_log_module);
28205 END IF;
28206 --
28207 EXCEPTION
28208 WHEN xla_exceptions_pkg.application_exception THEN
28209 RAISE;
28210 WHEN OTHERS THEN
28211 xla_exceptions_pkg.raise_message
28212 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_53');
28213 END AcctLineType_53;
28214 --
28215
28216 ---------------------------------------
28217 --
28218 -- PRIVATE FUNCTION
28219 -- AcctLineType_54
28220 --
28221 ---------------------------------------
28222 PROCEDURE AcctLineType_54 (
28223 p_application_id IN NUMBER
28224 ,p_event_id IN NUMBER
28225 ,p_calculate_acctd_flag IN VARCHAR2
28226 ,p_calculate_g_l_flag IN VARCHAR2
28227 ,p_actual_flag IN OUT VARCHAR2
28228 ,p_balance_type_code OUT VARCHAR2
28229 ,p_gain_or_loss_ref OUT VARCHAR2
28230
28231 --Cost Management Default Account
28232 , p_source_4 IN NUMBER
28233 --DISTRIBUTION_IDENTIFIER
28234 , p_source_11 IN NUMBER
28235 --Distribution Type
28236 , p_source_12 IN VARCHAR2
28237 , p_source_12_meaning IN VARCHAR2
28238 --Entered Currency Code
28239 , p_source_15 IN VARCHAR2
28240 --Entered Amount
28241 , p_source_18 IN NUMBER
28242 --Currency Conversion Date
28243 , p_source_19 IN DATE
28244 --Currency Conversion Rate
28245 , p_source_20 IN NUMBER
28246 --Currency Conversion Type
28247 , p_source_21 IN VARCHAR2
28248 --Accounted Amount
28249 , p_source_22 IN NUMBER
28250 --Accounting Line Type
28251 , p_source_24 IN NUMBER
28252 )
28253 IS
28254
28255 l_component_type VARCHAR2(80);
28256 l_component_code VARCHAR2(30);
28257 l_component_type_code VARCHAR2(1);
28258 l_component_appl_id INTEGER;
28259 l_amb_context_code VARCHAR2(30);
28260 l_entity_code VARCHAR2(30);
28261 l_event_class_code VARCHAR2(30);
28262 l_ae_header_id NUMBER;
28263 l_event_type_code VARCHAR2(30);
28264 l_line_definition_code VARCHAR2(30);
28265 l_line_definition_owner_code VARCHAR2(1);
28266 --
28267 -- adr variables
28268 l_segment VARCHAR2(30);
28269 l_ccid NUMBER;
28270 l_adr_transaction_coa_id NUMBER;
28271 l_adr_accounting_coa_id NUMBER;
28272 l_adr_flexfield_segment_code VARCHAR2(30);
28273 l_adr_flex_value_set_id NUMBER;
28274 l_adr_value_type_code VARCHAR2(30);
28275 l_adr_value_combination_id NUMBER;
28276 l_adr_value_segment_code VARCHAR2(30);
28277
28278 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
28279 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
28280 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
28281 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
28282
28283 -- 4262811 Variables ------------------------------------------------------------------------------------------
28284 l_entered_amt_idx NUMBER;
28285 l_accted_amt_idx NUMBER;
28286 l_acc_rev_flag VARCHAR2(1);
28287 l_accrual_line_num NUMBER;
28288 l_tmp_amt NUMBER;
28289 l_acc_rev_natural_side_code VARCHAR2(1);
28290
28291 l_num_entries NUMBER;
28292 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
28293 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
28294 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
28295 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
28296 l_recog_line_1 NUMBER;
28297 l_recog_line_2 NUMBER;
28298
28299 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
28300 l_bflow_applied_to_amt NUMBER; -- 5132302
28301 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
28302
28303 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28304
28305 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
28306 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
28307
28308 ---------------------------------------------------------------------------------------------------------------
28309
28310
28311 --
28312 -- bulk performance
28313 --
28314 l_balance_type_code VARCHAR2(1);
28315 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
28316 l_log_module VARCHAR2(240);
28317
28318 --
28319 -- Upgrade strategy
28320 --
28321 l_actual_upg_option VARCHAR2(1);
28322 l_enc_upg_option VARCHAR2(1);
28323
28324 --
28325 BEGIN
28326 --
28327 IF g_log_enabled THEN
28328 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
28329 END IF;
28330 --
28331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28332
28333 trace
28334 (p_msg => 'BEGIN of AcctLineType_54'
28335 ,p_level => C_LEVEL_PROCEDURE
28336 ,p_module => l_log_module);
28337
28338 END IF;
28339 --
28340 l_component_type := 'AMB_JLT';
28341 l_component_code := 'INTERCOMPANY_ACCRUAL';
28342 l_component_type_code := 'S';
28343 l_component_appl_id := 707;
28344 l_amb_context_code := 'DEFAULT';
28345 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
28346 l_event_class_code := 'USER_DEFINE';
28347 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
28348 l_line_definition_owner_code := 'S';
28349 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
28350 --
28351 l_balance_type_code := 'A';
28352 l_segment := NULL;
28353 l_ccid := NULL;
28354 l_adr_transaction_coa_id := NULL;
28355 l_adr_accounting_coa_id := NULL;
28356 l_adr_flexfield_segment_code := NULL;
28357 l_adr_flex_value_set_id := NULL;
28358 l_adr_value_type_code := NULL;
28359 l_adr_value_combination_id := NULL;
28360 l_adr_value_segment_code := NULL;
28361
28362 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
28363 l_bflow_class_code := ''; -- 4219869 Business Flow
28364 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
28365 l_budgetary_control_flag := 'N';
28366
28367 l_bflow_applied_to_amt_idx := NULL; -- 5132302
28368 l_bflow_applied_to_amt := NULL; -- 5132302
28369 l_entered_amt_idx := NULL; -- 4262811
28370 l_accted_amt_idx := NULL; -- 4262811
28371 l_acc_rev_flag := NULL; -- 4262811
28372 l_accrual_line_num := NULL; -- 4262811
28373 l_tmp_amt := NULL; -- 4262811
28374 --
28375
28376 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28377 l_balance_type_code <> 'B' THEN
28378 IF NVL(p_source_24,9E125) = 2 AND
28379 p_source_22 < 0
28380 THEN
28381
28382 --
28383 XLA_AE_LINES_PKG.SetNewLine;
28384
28385 p_balance_type_code := l_balance_type_code;
28386 -- set the flag so later we will know whether the gain loss line needs to be created
28387
28388 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28389 p_actual_flag :='A';
28390 END IF;
28391
28392 --
28393 -- bulk performance
28394 --
28395 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28396 p_header_num => 0); -- 4262811
28397 --
28398 -- set accounting line options
28399 --
28400 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28401 p_natural_side_code => 'D'
28402 , p_gain_or_loss_flag => 'N'
28403 , p_gl_transfer_mode_code => 'S'
28404 , p_acct_entry_type_code => 'A'
28405 , p_switch_side_flag => 'Y'
28406 , p_merge_duplicate_code => 'N'
28407 );
28408 --
28409 l_acc_rev_natural_side_code := 'C'; -- 4262811
28410 --
28411 --
28412 -- set accounting line type info
28413 --
28414 xla_ae_lines_pkg.SetAcctLineType
28415 (p_component_type => l_component_type
28416 ,p_event_type_code => l_event_type_code
28417 ,p_line_definition_owner_code => l_line_definition_owner_code
28418 ,p_line_definition_code => l_line_definition_code
28419 ,p_accounting_line_code => l_component_code
28420 ,p_accounting_line_type_code => l_component_type_code
28421 ,p_accounting_line_appl_id => l_component_appl_id
28422 ,p_amb_context_code => l_amb_context_code
28423 ,p_entity_code => l_entity_code
28424 ,p_event_class_code => l_event_class_code);
28425 --
28426 -- set accounting class
28427 --
28428 xla_ae_lines_pkg.SetAcctClass(
28429 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
28430 , p_ae_header_id => l_ae_header_id
28431 );
28432
28433 --
28434 -- set rounding class
28435 --
28436 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28437 'INTERCOMPANY_ACCRUAL';
28438
28439 --
28440 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28441 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28442 --
28443 -- bulk performance
28444 --
28445 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28446
28447 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28448 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28449
28450 -- 4955764
28451 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28452 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28453
28454 -- 4458381 Public Sector Enh
28455
28456 --
28457 -- set accounting attributes for the line type
28458 --
28459 l_entered_amt_idx := 3;
28460 l_accted_amt_idx := 8;
28461 l_bflow_applied_to_amt_idx := NULL; -- 5132302
28462 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
28463 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
28464 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
28465 l_rec_acct_attrs.array_char_value(2) := p_source_12;
28466 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
28467 l_rec_acct_attrs.array_num_value(3) := p_source_18;
28468 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
28469 l_rec_acct_attrs.array_char_value(4) := p_source_15;
28470 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
28471 l_rec_acct_attrs.array_date_value(5) := p_source_19;
28472 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
28473 l_rec_acct_attrs.array_num_value(6) := p_source_20;
28474 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
28475 l_rec_acct_attrs.array_char_value(7) := p_source_21;
28476 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
28477 l_rec_acct_attrs.array_num_value(8) := p_source_22;
28478
28479 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28480 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28481
28482 ---------------------------------------------------------------------------------------------------------------
28483 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28484 ---------------------------------------------------------------------------------------------------------------
28485 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28486
28487 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28488 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28489
28490 IF xla_accounting_cache_pkg.GetValueChar
28491 (p_source_code => 'LEDGER_CATEGORY_CODE'
28492 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28493 AND l_bflow_method_code = 'PRIOR_ENTRY'
28494 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28495 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28496 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28497 )
28498 THEN
28499 xla_ae_lines_pkg.BflowUpgEntry
28500 (p_business_method_code => l_bflow_method_code
28501 ,p_business_class_code => l_bflow_class_code
28502 ,p_balance_type => l_balance_type_code);
28503 ELSE
28504 NULL;
28505 -- No business flow processing for business flow method of NONE.
28506 END IF;
28507
28508 --
28509 -- call analytical criteria
28510 --
28511
28512 --
28513 -- call description
28514 --
28515 -- No description or it is inherited.
28516 --
28517 -- call ADRs
28518 -- Bug 4922099
28519 --
28520 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28521 (NVL(l_actual_upg_option, 'N') = 'O') OR
28522 (NVL(l_enc_upg_option, 'N') = 'O')
28523 )
28524 THEN
28525 NULL;
28526 --
28527 --
28528
28529 l_ccid := AcctDerRule_4(
28530 p_application_id => p_application_id
28531 , p_ae_header_id => l_ae_header_id
28532 , p_source_4 => p_source_4
28533 , x_transaction_coa_id => l_adr_transaction_coa_id
28534 , x_accounting_coa_id => l_adr_accounting_coa_id
28535 , x_value_type_code => l_adr_value_type_code
28536 , p_side => 'NA'
28537 );
28538
28539 xla_ae_lines_pkg.set_ccid(
28540 p_code_combination_id => l_ccid
28541 , p_value_type_code => l_adr_value_type_code
28542 , p_transaction_coa_id => l_adr_transaction_coa_id
28543 , p_accounting_coa_id => l_adr_accounting_coa_id
28544 , p_adr_code => 'CST_DEFAULT'
28545 , p_adr_type_code => 'S'
28546 , p_component_type => l_component_type
28547 , p_component_code => l_component_code
28548 , p_component_type_code => l_component_type_code
28549 , p_component_appl_id => l_component_appl_id
28550 , p_amb_context_code => l_amb_context_code
28551 , p_side => 'NA'
28552 );
28553
28554
28555 --
28556 --
28557 END IF;
28558 --
28559 -- Bug 4922099
28560 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28561 (NVL(l_enc_upg_option, 'N') = 'O')
28562 ) AND
28563 (l_bflow_method_code = 'PRIOR_ENTRY')
28564 )
28565 THEN
28566 IF
28567 --
28568 1 = 2
28569 --
28570 THEN
28571 xla_accounting_err_pkg.build_message
28572 (p_appli_s_name => 'XLA'
28573 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28574 ,p_token_1 => 'LINE_NUMBER'
28575 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
28576 ,p_token_2 => 'LINE_TYPE_NAME'
28577 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
28578 l_component_type
28579 ,l_component_code
28580 ,l_component_type_code
28581 ,l_component_appl_id
28582 ,l_amb_context_code
28583 ,l_entity_code
28584 ,l_event_class_code
28585 )
28586 ,p_token_3 => 'OWNER'
28587 ,p_value_3 => xla_lookups_pkg.get_meaning(
28588 p_lookup_type => 'XLA_OWNER_TYPE'
28589 ,p_lookup_code => l_component_type_code
28590 )
28591 ,p_token_4 => 'PRODUCT_NAME'
28592 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28593 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28594 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28595 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28596 ,p_ae_header_id => NULL
28597 );
28598
28599 IF (C_LEVEL_ERROR>= g_log_level) THEN
28600 trace
28601 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28602 ,p_level => C_LEVEL_ERROR
28603 ,p_module => l_log_module);
28604 END IF;
28605 END IF;
28606 END IF;
28607 --
28608 --
28609 ------------------------------------------------------------------------------------------------
28610 -- 4219869 Business Flow
28611 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28612 -- Prior Entry. Currently, the following code is always generated.
28613 ------------------------------------------------------------------------------------------------
28614 XLA_AE_LINES_PKG.ValidateCurrentLine;
28615
28616 ------------------------------------------------------------------------------------
28617 -- 4219869 Business Flow
28618 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28619 ------------------------------------------------------------------------------------
28620 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28621
28622 ----------------------------------------------------------------------------------
28623 -- 4219869 Business Flow
28624 -- Update journal entry status -- Need to generate this within IF <condition>
28625 ----------------------------------------------------------------------------------
28626 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28627 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28628 ,p_balance_type_code => l_balance_type_code
28629 );
28630
28631 -------------------------------------------------------------------------------------------
28632 -- 4262811 - Generate the Accrual Reversal lines
28633 -------------------------------------------------------------------------------------------
28634 BEGIN
28635 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28636 (g_array_event(p_event_id).array_value_num('header_index'));
28637 IF l_acc_rev_flag IS NULL THEN
28638 l_acc_rev_flag := 'N';
28639 END IF;
28640 EXCEPTION
28641 WHEN OTHERS THEN
28642 l_acc_rev_flag := 'N';
28643 END;
28644 --
28645 IF (l_acc_rev_flag = 'Y') THEN
28646
28647 -- 4645092 ------------------------------------------------------------------------------
28648 -- To allow MPA report to determine if it should generate report process
28649 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28650 ------------------------------------------------------------------------------------------
28651
28652 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28653 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28654 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
28655 -- call ADRs
28656 -- Bug 4922099
28657 --
28658 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28659 (NVL(l_actual_upg_option, 'N') = 'O') OR
28660 (NVL(l_enc_upg_option, 'N') = 'O')
28661 )
28662 THEN
28663 NULL;
28664 --
28665 --
28666
28667 l_ccid := AcctDerRule_4(
28668 p_application_id => p_application_id
28669 , p_ae_header_id => l_ae_header_id
28670 , p_source_4 => p_source_4
28671 , x_transaction_coa_id => l_adr_transaction_coa_id
28672 , x_accounting_coa_id => l_adr_accounting_coa_id
28673 , x_value_type_code => l_adr_value_type_code
28674 , p_side => 'NA'
28675 );
28676
28677 xla_ae_lines_pkg.set_ccid(
28678 p_code_combination_id => l_ccid
28679 , p_value_type_code => l_adr_value_type_code
28680 , p_transaction_coa_id => l_adr_transaction_coa_id
28681 , p_accounting_coa_id => l_adr_accounting_coa_id
28682 , p_adr_code => 'CST_DEFAULT'
28683 , p_adr_type_code => 'S'
28684 , p_component_type => l_component_type
28685 , p_component_code => l_component_code
28686 , p_component_type_code => l_component_type_code
28687 , p_component_appl_id => l_component_appl_id
28688 , p_amb_context_code => l_amb_context_code
28689 , p_side => 'NA'
28690 );
28691
28692
28693 --
28694 --
28695 END IF;
28696
28697 --
28698 -- Update the line information that should be overwritten
28699 --
28700 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28701 p_header_num => 1);
28702 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
28703
28704 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28705
28706 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
28707 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28708 END IF;
28709
28710 --
28711 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28712 --
28713 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28714 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
28715 ELSE
28716 ---------------------------------------------------------------------------------------------------
28717 -- 4262811a Switch Sign
28718 ---------------------------------------------------------------------------------------------------
28719 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
28720 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28721 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28722 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28723 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28724 -- 5132302
28725 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28726 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28727
28728 END IF;
28729
28730 -- 4955764
28731 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28732 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28733
28734
28735 XLA_AE_LINES_PKG.ValidateCurrentLine;
28736 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28737
28738 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28739 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28740 ,p_balance_type_code => l_balance_type_code);
28741
28742 END IF;
28743
28744 -----------------------------------------------------------------------------------------
28745 -- 4262811 Multiperiod Accounting
28746 -----------------------------------------------------------------------------------------
28747 -- No MPA option is assigned.
28748
28749
28750 END IF;
28751 END IF;
28752 --
28753
28754 --
28755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28756 trace
28757 (p_msg => 'END of AcctLineType_54'
28758 ,p_level => C_LEVEL_PROCEDURE
28759 ,p_module => l_log_module);
28760 END IF;
28761 --
28762 EXCEPTION
28763 WHEN xla_exceptions_pkg.application_exception THEN
28764 RAISE;
28765 WHEN OTHERS THEN
28766 xla_exceptions_pkg.raise_message
28767 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_54');
28768 END AcctLineType_54;
28769 --
28770
28771 ---------------------------------------
28772 --
28773 -- PRIVATE FUNCTION
28774 -- AcctLineType_55
28775 --
28776 ---------------------------------------
28777 PROCEDURE AcctLineType_55 (
28778 p_application_id IN NUMBER
28779 ,p_event_id IN NUMBER
28780 ,p_calculate_acctd_flag IN VARCHAR2
28781 ,p_calculate_g_l_flag IN VARCHAR2
28782 ,p_actual_flag IN OUT VARCHAR2
28783 ,p_balance_type_code OUT VARCHAR2
28784 ,p_gain_or_loss_ref OUT VARCHAR2
28785
28786 --Cost Management Default Account
28787 , p_source_4 IN NUMBER
28788 --DISTRIBUTION_IDENTIFIER
28789 , p_source_11 IN NUMBER
28790 --Distribution Type
28791 , p_source_12 IN VARCHAR2
28792 , p_source_12_meaning IN VARCHAR2
28793 --Entered Currency Code
28794 , p_source_15 IN VARCHAR2
28795 --Entered Amount
28796 , p_source_18 IN NUMBER
28797 --Currency Conversion Date
28798 , p_source_19 IN DATE
28799 --Currency Conversion Rate
28800 , p_source_20 IN NUMBER
28801 --Currency Conversion Type
28802 , p_source_21 IN VARCHAR2
28803 --Accounted Amount
28804 , p_source_22 IN NUMBER
28805 --Accounting Line Type
28806 , p_source_24 IN NUMBER
28807 )
28808 IS
28809
28810 l_component_type VARCHAR2(80);
28811 l_component_code VARCHAR2(30);
28812 l_component_type_code VARCHAR2(1);
28813 l_component_appl_id INTEGER;
28814 l_amb_context_code VARCHAR2(30);
28815 l_entity_code VARCHAR2(30);
28816 l_event_class_code VARCHAR2(30);
28817 l_ae_header_id NUMBER;
28818 l_event_type_code VARCHAR2(30);
28819 l_line_definition_code VARCHAR2(30);
28820 l_line_definition_owner_code VARCHAR2(1);
28821 --
28822 -- adr variables
28823 l_segment VARCHAR2(30);
28824 l_ccid NUMBER;
28825 l_adr_transaction_coa_id NUMBER;
28826 l_adr_accounting_coa_id NUMBER;
28827 l_adr_flexfield_segment_code VARCHAR2(30);
28828 l_adr_flex_value_set_id NUMBER;
28829 l_adr_value_type_code VARCHAR2(30);
28830 l_adr_value_combination_id NUMBER;
28831 l_adr_value_segment_code VARCHAR2(30);
28832
28833 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
28834 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
28835 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
28836 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
28837
28838 -- 4262811 Variables ------------------------------------------------------------------------------------------
28839 l_entered_amt_idx NUMBER;
28840 l_accted_amt_idx NUMBER;
28841 l_acc_rev_flag VARCHAR2(1);
28842 l_accrual_line_num NUMBER;
28843 l_tmp_amt NUMBER;
28844 l_acc_rev_natural_side_code VARCHAR2(1);
28845
28846 l_num_entries NUMBER;
28847 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
28848 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
28849 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
28850 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
28851 l_recog_line_1 NUMBER;
28852 l_recog_line_2 NUMBER;
28853
28854 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
28855 l_bflow_applied_to_amt NUMBER; -- 5132302
28856 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
28857
28858 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28859
28860 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
28861 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
28862
28863 ---------------------------------------------------------------------------------------------------------------
28864
28865
28866 --
28867 -- bulk performance
28868 --
28869 l_balance_type_code VARCHAR2(1);
28870 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
28871 l_log_module VARCHAR2(240);
28872
28873 --
28874 -- Upgrade strategy
28875 --
28876 l_actual_upg_option VARCHAR2(1);
28877 l_enc_upg_option VARCHAR2(1);
28878
28879 --
28880 BEGIN
28881 --
28882 IF g_log_enabled THEN
28883 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
28884 END IF;
28885 --
28886 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28887
28888 trace
28889 (p_msg => 'BEGIN of AcctLineType_55'
28890 ,p_level => C_LEVEL_PROCEDURE
28891 ,p_module => l_log_module);
28892
28893 END IF;
28894 --
28895 l_component_type := 'AMB_JLT';
28896 l_component_code := 'INTERCOMPANY_ACCRUAL';
28897 l_component_type_code := 'S';
28898 l_component_appl_id := 707;
28899 l_amb_context_code := 'DEFAULT';
28900 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
28901 l_event_class_code := 'USER_DEFINE';
28902 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
28903 l_line_definition_owner_code := 'S';
28904 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
28905 --
28906 l_balance_type_code := 'A';
28907 l_segment := NULL;
28908 l_ccid := NULL;
28909 l_adr_transaction_coa_id := NULL;
28910 l_adr_accounting_coa_id := NULL;
28911 l_adr_flexfield_segment_code := NULL;
28912 l_adr_flex_value_set_id := NULL;
28913 l_adr_value_type_code := NULL;
28914 l_adr_value_combination_id := NULL;
28915 l_adr_value_segment_code := NULL;
28916
28917 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
28918 l_bflow_class_code := ''; -- 4219869 Business Flow
28919 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
28920 l_budgetary_control_flag := 'N';
28921
28922 l_bflow_applied_to_amt_idx := NULL; -- 5132302
28923 l_bflow_applied_to_amt := NULL; -- 5132302
28924 l_entered_amt_idx := NULL; -- 4262811
28925 l_accted_amt_idx := NULL; -- 4262811
28926 l_acc_rev_flag := NULL; -- 4262811
28927 l_accrual_line_num := NULL; -- 4262811
28928 l_tmp_amt := NULL; -- 4262811
28929 --
28930
28931 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28932 l_balance_type_code <> 'B' THEN
28933 IF NVL(p_source_24,9E125) = 2 AND
28934 p_source_22 < 0
28935 THEN
28936
28937 --
28938 XLA_AE_LINES_PKG.SetNewLine;
28939
28940 p_balance_type_code := l_balance_type_code;
28941 -- set the flag so later we will know whether the gain loss line needs to be created
28942
28943 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28944 p_actual_flag :='A';
28945 END IF;
28946
28947 --
28948 -- bulk performance
28949 --
28950 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28951 p_header_num => 0); -- 4262811
28952 --
28953 -- set accounting line options
28954 --
28955 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28956 p_natural_side_code => 'D'
28957 , p_gain_or_loss_flag => 'N'
28958 , p_gl_transfer_mode_code => 'S'
28959 , p_acct_entry_type_code => 'A'
28960 , p_switch_side_flag => 'Y'
28961 , p_merge_duplicate_code => 'N'
28962 );
28963 --
28964 l_acc_rev_natural_side_code := 'C'; -- 4262811
28965 --
28966 --
28967 -- set accounting line type info
28968 --
28969 xla_ae_lines_pkg.SetAcctLineType
28970 (p_component_type => l_component_type
28971 ,p_event_type_code => l_event_type_code
28972 ,p_line_definition_owner_code => l_line_definition_owner_code
28973 ,p_line_definition_code => l_line_definition_code
28974 ,p_accounting_line_code => l_component_code
28975 ,p_accounting_line_type_code => l_component_type_code
28976 ,p_accounting_line_appl_id => l_component_appl_id
28977 ,p_amb_context_code => l_amb_context_code
28978 ,p_entity_code => l_entity_code
28979 ,p_event_class_code => l_event_class_code);
28980 --
28981 -- set accounting class
28982 --
28983 xla_ae_lines_pkg.SetAcctClass(
28984 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
28985 , p_ae_header_id => l_ae_header_id
28986 );
28987
28988 --
28989 -- set rounding class
28990 --
28991 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28992 'INTERCOMPANY_ACCRUAL';
28993
28994 --
28995 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28996 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28997 --
28998 -- bulk performance
28999 --
29000 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29001
29002 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29003 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29004
29005 -- 4955764
29006 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29007 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29008
29009 -- 4458381 Public Sector Enh
29010
29011 --
29012 -- set accounting attributes for the line type
29013 --
29014 l_entered_amt_idx := 3;
29015 l_accted_amt_idx := 8;
29016 l_bflow_applied_to_amt_idx := NULL; -- 5132302
29017 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29018 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
29019 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29020 l_rec_acct_attrs.array_char_value(2) := p_source_12;
29021 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29022 l_rec_acct_attrs.array_num_value(3) := p_source_18;
29023 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29024 l_rec_acct_attrs.array_char_value(4) := p_source_15;
29025 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29026 l_rec_acct_attrs.array_date_value(5) := p_source_19;
29027 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29028 l_rec_acct_attrs.array_num_value(6) := p_source_20;
29029 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29030 l_rec_acct_attrs.array_char_value(7) := p_source_21;
29031 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29032 l_rec_acct_attrs.array_num_value(8) := p_source_22;
29033
29034 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29035 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29036
29037 ---------------------------------------------------------------------------------------------------------------
29038 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29039 ---------------------------------------------------------------------------------------------------------------
29040 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29041
29042 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29043 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29044
29045 IF xla_accounting_cache_pkg.GetValueChar
29046 (p_source_code => 'LEDGER_CATEGORY_CODE'
29047 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29048 AND l_bflow_method_code = 'PRIOR_ENTRY'
29049 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29050 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29051 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29052 )
29053 THEN
29054 xla_ae_lines_pkg.BflowUpgEntry
29055 (p_business_method_code => l_bflow_method_code
29056 ,p_business_class_code => l_bflow_class_code
29057 ,p_balance_type => l_balance_type_code);
29058 ELSE
29059 NULL;
29060 -- No business flow processing for business flow method of NONE.
29061 END IF;
29062
29063 --
29064 -- call analytical criteria
29065 --
29066
29067 --
29068 -- call description
29069 --
29070 -- No description or it is inherited.
29071 --
29072 -- call ADRs
29073 -- Bug 4922099
29074 --
29075 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29076 (NVL(l_actual_upg_option, 'N') = 'O') OR
29077 (NVL(l_enc_upg_option, 'N') = 'O')
29078 )
29079 THEN
29080 NULL;
29081 --
29082 --
29083
29084 l_ccid := AcctDerRule_4(
29085 p_application_id => p_application_id
29086 , p_ae_header_id => l_ae_header_id
29087 , p_source_4 => p_source_4
29088 , x_transaction_coa_id => l_adr_transaction_coa_id
29089 , x_accounting_coa_id => l_adr_accounting_coa_id
29090 , x_value_type_code => l_adr_value_type_code
29091 , p_side => 'NA'
29092 );
29093
29094 xla_ae_lines_pkg.set_ccid(
29095 p_code_combination_id => l_ccid
29096 , p_value_type_code => l_adr_value_type_code
29097 , p_transaction_coa_id => l_adr_transaction_coa_id
29098 , p_accounting_coa_id => l_adr_accounting_coa_id
29099 , p_adr_code => 'CST_DEFAULT'
29100 , p_adr_type_code => 'S'
29101 , p_component_type => l_component_type
29102 , p_component_code => l_component_code
29103 , p_component_type_code => l_component_type_code
29104 , p_component_appl_id => l_component_appl_id
29105 , p_amb_context_code => l_amb_context_code
29106 , p_side => 'NA'
29107 );
29108
29109
29110 --
29111 --
29112 END IF;
29113 --
29114 -- Bug 4922099
29115 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29116 (NVL(l_enc_upg_option, 'N') = 'O')
29117 ) AND
29118 (l_bflow_method_code = 'PRIOR_ENTRY')
29119 )
29120 THEN
29121 IF
29122 --
29123 1 = 2
29124 --
29125 THEN
29126 xla_accounting_err_pkg.build_message
29127 (p_appli_s_name => 'XLA'
29128 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29129 ,p_token_1 => 'LINE_NUMBER'
29130 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
29131 ,p_token_2 => 'LINE_TYPE_NAME'
29132 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
29133 l_component_type
29134 ,l_component_code
29135 ,l_component_type_code
29136 ,l_component_appl_id
29137 ,l_amb_context_code
29138 ,l_entity_code
29139 ,l_event_class_code
29140 )
29141 ,p_token_3 => 'OWNER'
29142 ,p_value_3 => xla_lookups_pkg.get_meaning(
29143 p_lookup_type => 'XLA_OWNER_TYPE'
29144 ,p_lookup_code => l_component_type_code
29145 )
29146 ,p_token_4 => 'PRODUCT_NAME'
29147 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29148 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29149 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29150 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29151 ,p_ae_header_id => NULL
29152 );
29153
29154 IF (C_LEVEL_ERROR>= g_log_level) THEN
29155 trace
29156 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29157 ,p_level => C_LEVEL_ERROR
29158 ,p_module => l_log_module);
29159 END IF;
29160 END IF;
29161 END IF;
29162 --
29163 --
29164 ------------------------------------------------------------------------------------------------
29165 -- 4219869 Business Flow
29166 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29167 -- Prior Entry. Currently, the following code is always generated.
29168 ------------------------------------------------------------------------------------------------
29169 XLA_AE_LINES_PKG.ValidateCurrentLine;
29170
29171 ------------------------------------------------------------------------------------
29172 -- 4219869 Business Flow
29173 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29174 ------------------------------------------------------------------------------------
29175 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29176
29177 ----------------------------------------------------------------------------------
29178 -- 4219869 Business Flow
29179 -- Update journal entry status -- Need to generate this within IF <condition>
29180 ----------------------------------------------------------------------------------
29181 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29182 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29183 ,p_balance_type_code => l_balance_type_code
29184 );
29185
29186 -------------------------------------------------------------------------------------------
29187 -- 4262811 - Generate the Accrual Reversal lines
29188 -------------------------------------------------------------------------------------------
29189 BEGIN
29190 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29191 (g_array_event(p_event_id).array_value_num('header_index'));
29192 IF l_acc_rev_flag IS NULL THEN
29193 l_acc_rev_flag := 'N';
29194 END IF;
29195 EXCEPTION
29196 WHEN OTHERS THEN
29197 l_acc_rev_flag := 'N';
29198 END;
29199 --
29200 IF (l_acc_rev_flag = 'Y') THEN
29201
29202 -- 4645092 ------------------------------------------------------------------------------
29203 -- To allow MPA report to determine if it should generate report process
29204 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29205 ------------------------------------------------------------------------------------------
29206
29207 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29208 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29209 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
29210 -- call ADRs
29211 -- Bug 4922099
29212 --
29213 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29214 (NVL(l_actual_upg_option, 'N') = 'O') OR
29215 (NVL(l_enc_upg_option, 'N') = 'O')
29216 )
29217 THEN
29218 NULL;
29219 --
29220 --
29221
29222 l_ccid := AcctDerRule_4(
29223 p_application_id => p_application_id
29224 , p_ae_header_id => l_ae_header_id
29225 , p_source_4 => p_source_4
29226 , x_transaction_coa_id => l_adr_transaction_coa_id
29227 , x_accounting_coa_id => l_adr_accounting_coa_id
29228 , x_value_type_code => l_adr_value_type_code
29229 , p_side => 'NA'
29230 );
29231
29232 xla_ae_lines_pkg.set_ccid(
29233 p_code_combination_id => l_ccid
29234 , p_value_type_code => l_adr_value_type_code
29235 , p_transaction_coa_id => l_adr_transaction_coa_id
29236 , p_accounting_coa_id => l_adr_accounting_coa_id
29237 , p_adr_code => 'CST_DEFAULT'
29238 , p_adr_type_code => 'S'
29239 , p_component_type => l_component_type
29240 , p_component_code => l_component_code
29241 , p_component_type_code => l_component_type_code
29242 , p_component_appl_id => l_component_appl_id
29243 , p_amb_context_code => l_amb_context_code
29244 , p_side => 'NA'
29245 );
29246
29247
29248 --
29249 --
29250 END IF;
29251
29252 --
29253 -- Update the line information that should be overwritten
29254 --
29255 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29256 p_header_num => 1);
29257 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
29258
29259 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29260
29261 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
29262 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29263 END IF;
29264
29265 --
29266 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29267 --
29268 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29269 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
29270 ELSE
29271 ---------------------------------------------------------------------------------------------------
29272 -- 4262811a Switch Sign
29273 ---------------------------------------------------------------------------------------------------
29274 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
29275 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29276 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29277 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29278 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29279 -- 5132302
29280 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29281 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29282
29283 END IF;
29284
29285 -- 4955764
29286 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29287 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29288
29289
29290 XLA_AE_LINES_PKG.ValidateCurrentLine;
29291 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29292
29293 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29294 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29295 ,p_balance_type_code => l_balance_type_code);
29296
29297 END IF;
29298
29299 -----------------------------------------------------------------------------------------
29300 -- 4262811 Multiperiod Accounting
29301 -----------------------------------------------------------------------------------------
29302 -- No MPA option is assigned.
29303
29304
29305 END IF;
29306 END IF;
29307 --
29308
29309 --
29310 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29311 trace
29312 (p_msg => 'END of AcctLineType_55'
29313 ,p_level => C_LEVEL_PROCEDURE
29314 ,p_module => l_log_module);
29315 END IF;
29316 --
29317 EXCEPTION
29318 WHEN xla_exceptions_pkg.application_exception THEN
29319 RAISE;
29320 WHEN OTHERS THEN
29321 xla_exceptions_pkg.raise_message
29322 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_55');
29323 END AcctLineType_55;
29324 --
29325
29326 ---------------------------------------
29327 --
29328 -- PRIVATE FUNCTION
29329 -- AcctLineType_56
29330 --
29331 ---------------------------------------
29332 PROCEDURE AcctLineType_56 (
29333 p_application_id IN NUMBER
29334 ,p_event_id IN NUMBER
29335 ,p_calculate_acctd_flag IN VARCHAR2
29336 ,p_calculate_g_l_flag IN VARCHAR2
29337 ,p_actual_flag IN OUT VARCHAR2
29338 ,p_balance_type_code OUT VARCHAR2
29339 ,p_gain_or_loss_ref OUT VARCHAR2
29340
29341 --Cost Management Default Account
29342 , p_source_4 IN NUMBER
29343 --DISTRIBUTION_IDENTIFIER
29344 , p_source_11 IN NUMBER
29345 --Distribution Type
29346 , p_source_12 IN VARCHAR2
29347 , p_source_12_meaning IN VARCHAR2
29348 --Entered Currency Code
29349 , p_source_15 IN VARCHAR2
29350 --Entered Amount
29351 , p_source_18 IN NUMBER
29352 --Currency Conversion Date
29353 , p_source_19 IN DATE
29354 --Currency Conversion Rate
29355 , p_source_20 IN NUMBER
29356 --Currency Conversion Type
29357 , p_source_21 IN VARCHAR2
29358 --Accounted Amount
29359 , p_source_22 IN NUMBER
29360 --Accounting Line Type
29361 , p_source_24 IN NUMBER
29362 )
29363 IS
29364
29365 l_component_type VARCHAR2(80);
29366 l_component_code VARCHAR2(30);
29367 l_component_type_code VARCHAR2(1);
29368 l_component_appl_id INTEGER;
29369 l_amb_context_code VARCHAR2(30);
29370 l_entity_code VARCHAR2(30);
29371 l_event_class_code VARCHAR2(30);
29372 l_ae_header_id NUMBER;
29373 l_event_type_code VARCHAR2(30);
29374 l_line_definition_code VARCHAR2(30);
29375 l_line_definition_owner_code VARCHAR2(1);
29376 --
29377 -- adr variables
29378 l_segment VARCHAR2(30);
29379 l_ccid NUMBER;
29380 l_adr_transaction_coa_id NUMBER;
29381 l_adr_accounting_coa_id NUMBER;
29382 l_adr_flexfield_segment_code VARCHAR2(30);
29383 l_adr_flex_value_set_id NUMBER;
29384 l_adr_value_type_code VARCHAR2(30);
29385 l_adr_value_combination_id NUMBER;
29386 l_adr_value_segment_code VARCHAR2(30);
29387
29388 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
29389 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
29390 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
29391 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
29392
29393 -- 4262811 Variables ------------------------------------------------------------------------------------------
29394 l_entered_amt_idx NUMBER;
29395 l_accted_amt_idx NUMBER;
29396 l_acc_rev_flag VARCHAR2(1);
29397 l_accrual_line_num NUMBER;
29398 l_tmp_amt NUMBER;
29399 l_acc_rev_natural_side_code VARCHAR2(1);
29400
29401 l_num_entries NUMBER;
29402 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
29403 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
29404 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
29405 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
29406 l_recog_line_1 NUMBER;
29407 l_recog_line_2 NUMBER;
29408
29409 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
29410 l_bflow_applied_to_amt NUMBER; -- 5132302
29411 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
29412
29413 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29414
29415 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
29416 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
29417
29418 ---------------------------------------------------------------------------------------------------------------
29419
29420
29421 --
29422 -- bulk performance
29423 --
29424 l_balance_type_code VARCHAR2(1);
29425 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
29426 l_log_module VARCHAR2(240);
29427
29428 --
29429 -- Upgrade strategy
29430 --
29431 l_actual_upg_option VARCHAR2(1);
29432 l_enc_upg_option VARCHAR2(1);
29433
29434 --
29435 BEGIN
29436 --
29437 IF g_log_enabled THEN
29438 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
29439 END IF;
29440 --
29441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29442
29443 trace
29444 (p_msg => 'BEGIN of AcctLineType_56'
29445 ,p_level => C_LEVEL_PROCEDURE
29446 ,p_module => l_log_module);
29447
29448 END IF;
29449 --
29450 l_component_type := 'AMB_JLT';
29451 l_component_code := 'INTERCOMPANY_ACCRUAL';
29452 l_component_type_code := 'S';
29453 l_component_appl_id := 707;
29454 l_amb_context_code := 'DEFAULT';
29455 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
29456 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
29457 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
29458 l_line_definition_owner_code := 'S';
29459 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
29460 --
29461 l_balance_type_code := 'A';
29462 l_segment := NULL;
29463 l_ccid := NULL;
29464 l_adr_transaction_coa_id := NULL;
29465 l_adr_accounting_coa_id := NULL;
29466 l_adr_flexfield_segment_code := NULL;
29467 l_adr_flex_value_set_id := NULL;
29468 l_adr_value_type_code := NULL;
29469 l_adr_value_combination_id := NULL;
29470 l_adr_value_segment_code := NULL;
29471
29472 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
29473 l_bflow_class_code := ''; -- 4219869 Business Flow
29474 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
29475 l_budgetary_control_flag := 'N';
29476
29477 l_bflow_applied_to_amt_idx := NULL; -- 5132302
29478 l_bflow_applied_to_amt := NULL; -- 5132302
29479 l_entered_amt_idx := NULL; -- 4262811
29480 l_accted_amt_idx := NULL; -- 4262811
29481 l_acc_rev_flag := NULL; -- 4262811
29482 l_accrual_line_num := NULL; -- 4262811
29483 l_tmp_amt := NULL; -- 4262811
29484 --
29485
29486 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29487 l_balance_type_code <> 'B' THEN
29488 IF NVL(p_source_24,9E125) = 2 AND
29489 p_source_22 < 0
29490 THEN
29491
29492 --
29493 XLA_AE_LINES_PKG.SetNewLine;
29494
29495 p_balance_type_code := l_balance_type_code;
29496 -- set the flag so later we will know whether the gain loss line needs to be created
29497
29498 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29499 p_actual_flag :='A';
29500 END IF;
29501
29502 --
29503 -- bulk performance
29504 --
29505 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29506 p_header_num => 0); -- 4262811
29507 --
29508 -- set accounting line options
29509 --
29510 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29511 p_natural_side_code => 'D'
29512 , p_gain_or_loss_flag => 'N'
29513 , p_gl_transfer_mode_code => 'S'
29514 , p_acct_entry_type_code => 'A'
29515 , p_switch_side_flag => 'Y'
29516 , p_merge_duplicate_code => 'N'
29517 );
29518 --
29519 l_acc_rev_natural_side_code := 'C'; -- 4262811
29520 --
29521 --
29522 -- set accounting line type info
29523 --
29524 xla_ae_lines_pkg.SetAcctLineType
29525 (p_component_type => l_component_type
29526 ,p_event_type_code => l_event_type_code
29527 ,p_line_definition_owner_code => l_line_definition_owner_code
29528 ,p_line_definition_code => l_line_definition_code
29529 ,p_accounting_line_code => l_component_code
29530 ,p_accounting_line_type_code => l_component_type_code
29531 ,p_accounting_line_appl_id => l_component_appl_id
29532 ,p_amb_context_code => l_amb_context_code
29533 ,p_entity_code => l_entity_code
29534 ,p_event_class_code => l_event_class_code);
29535 --
29536 -- set accounting class
29537 --
29538 xla_ae_lines_pkg.SetAcctClass(
29539 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
29540 , p_ae_header_id => l_ae_header_id
29541 );
29542
29543 --
29544 -- set rounding class
29545 --
29546 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29547 'INTERCOMPANY_ACCRUAL';
29548
29549 --
29550 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29551 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29552 --
29553 -- bulk performance
29554 --
29555 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29556
29557 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29558 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29559
29560 -- 4955764
29561 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29562 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29563
29564 -- 4458381 Public Sector Enh
29565
29566 --
29567 -- set accounting attributes for the line type
29568 --
29569 l_entered_amt_idx := 3;
29570 l_accted_amt_idx := 8;
29571 l_bflow_applied_to_amt_idx := NULL; -- 5132302
29572 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29573 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
29574 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29575 l_rec_acct_attrs.array_char_value(2) := p_source_12;
29576 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29577 l_rec_acct_attrs.array_num_value(3) := p_source_18;
29578 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29579 l_rec_acct_attrs.array_char_value(4) := p_source_15;
29580 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29581 l_rec_acct_attrs.array_date_value(5) := p_source_19;
29582 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29583 l_rec_acct_attrs.array_num_value(6) := p_source_20;
29584 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29585 l_rec_acct_attrs.array_char_value(7) := p_source_21;
29586 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29587 l_rec_acct_attrs.array_num_value(8) := p_source_22;
29588
29589 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29590 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29591
29592 ---------------------------------------------------------------------------------------------------------------
29593 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29594 ---------------------------------------------------------------------------------------------------------------
29595 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29596
29597 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29598 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29599
29600 IF xla_accounting_cache_pkg.GetValueChar
29601 (p_source_code => 'LEDGER_CATEGORY_CODE'
29602 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29603 AND l_bflow_method_code = 'PRIOR_ENTRY'
29604 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29605 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29606 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29607 )
29608 THEN
29609 xla_ae_lines_pkg.BflowUpgEntry
29610 (p_business_method_code => l_bflow_method_code
29611 ,p_business_class_code => l_bflow_class_code
29612 ,p_balance_type => l_balance_type_code);
29613 ELSE
29614 NULL;
29615 -- No business flow processing for business flow method of NONE.
29616 END IF;
29617
29618 --
29619 -- call analytical criteria
29620 --
29621
29622 --
29623 -- call description
29624 --
29625 -- No description or it is inherited.
29626 --
29627 -- call ADRs
29628 -- Bug 4922099
29629 --
29630 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29631 (NVL(l_actual_upg_option, 'N') = 'O') OR
29632 (NVL(l_enc_upg_option, 'N') = 'O')
29633 )
29634 THEN
29635 NULL;
29636 --
29637 --
29638
29639 l_ccid := AcctDerRule_4(
29640 p_application_id => p_application_id
29641 , p_ae_header_id => l_ae_header_id
29642 , p_source_4 => p_source_4
29643 , x_transaction_coa_id => l_adr_transaction_coa_id
29644 , x_accounting_coa_id => l_adr_accounting_coa_id
29645 , x_value_type_code => l_adr_value_type_code
29646 , p_side => 'NA'
29647 );
29648
29649 xla_ae_lines_pkg.set_ccid(
29650 p_code_combination_id => l_ccid
29651 , p_value_type_code => l_adr_value_type_code
29652 , p_transaction_coa_id => l_adr_transaction_coa_id
29653 , p_accounting_coa_id => l_adr_accounting_coa_id
29654 , p_adr_code => 'CST_DEFAULT'
29655 , p_adr_type_code => 'S'
29656 , p_component_type => l_component_type
29657 , p_component_code => l_component_code
29658 , p_component_type_code => l_component_type_code
29659 , p_component_appl_id => l_component_appl_id
29660 , p_amb_context_code => l_amb_context_code
29661 , p_side => 'NA'
29662 );
29663
29664
29665 --
29666 --
29667 END IF;
29668 --
29669 -- Bug 4922099
29670 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29671 (NVL(l_enc_upg_option, 'N') = 'O')
29672 ) AND
29673 (l_bflow_method_code = 'PRIOR_ENTRY')
29674 )
29675 THEN
29676 IF
29677 --
29678 1 = 2
29679 --
29680 THEN
29681 xla_accounting_err_pkg.build_message
29682 (p_appli_s_name => 'XLA'
29683 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29684 ,p_token_1 => 'LINE_NUMBER'
29685 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
29686 ,p_token_2 => 'LINE_TYPE_NAME'
29687 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
29688 l_component_type
29689 ,l_component_code
29690 ,l_component_type_code
29691 ,l_component_appl_id
29692 ,l_amb_context_code
29693 ,l_entity_code
29694 ,l_event_class_code
29695 )
29696 ,p_token_3 => 'OWNER'
29697 ,p_value_3 => xla_lookups_pkg.get_meaning(
29698 p_lookup_type => 'XLA_OWNER_TYPE'
29699 ,p_lookup_code => l_component_type_code
29700 )
29701 ,p_token_4 => 'PRODUCT_NAME'
29702 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29703 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29704 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29705 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29706 ,p_ae_header_id => NULL
29707 );
29708
29709 IF (C_LEVEL_ERROR>= g_log_level) THEN
29710 trace
29711 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29712 ,p_level => C_LEVEL_ERROR
29713 ,p_module => l_log_module);
29714 END IF;
29715 END IF;
29716 END IF;
29717 --
29718 --
29719 ------------------------------------------------------------------------------------------------
29720 -- 4219869 Business Flow
29721 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29722 -- Prior Entry. Currently, the following code is always generated.
29723 ------------------------------------------------------------------------------------------------
29724 XLA_AE_LINES_PKG.ValidateCurrentLine;
29725
29726 ------------------------------------------------------------------------------------
29727 -- 4219869 Business Flow
29728 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29729 ------------------------------------------------------------------------------------
29730 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29731
29732 ----------------------------------------------------------------------------------
29733 -- 4219869 Business Flow
29734 -- Update journal entry status -- Need to generate this within IF <condition>
29735 ----------------------------------------------------------------------------------
29736 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29737 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29738 ,p_balance_type_code => l_balance_type_code
29739 );
29740
29741 -------------------------------------------------------------------------------------------
29742 -- 4262811 - Generate the Accrual Reversal lines
29743 -------------------------------------------------------------------------------------------
29744 BEGIN
29745 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29746 (g_array_event(p_event_id).array_value_num('header_index'));
29747 IF l_acc_rev_flag IS NULL THEN
29748 l_acc_rev_flag := 'N';
29749 END IF;
29750 EXCEPTION
29751 WHEN OTHERS THEN
29752 l_acc_rev_flag := 'N';
29753 END;
29754 --
29755 IF (l_acc_rev_flag = 'Y') THEN
29756
29757 -- 4645092 ------------------------------------------------------------------------------
29758 -- To allow MPA report to determine if it should generate report process
29759 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29760 ------------------------------------------------------------------------------------------
29761
29762 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29763 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29764 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
29765 -- call ADRs
29766 -- Bug 4922099
29767 --
29768 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29769 (NVL(l_actual_upg_option, 'N') = 'O') OR
29770 (NVL(l_enc_upg_option, 'N') = 'O')
29771 )
29772 THEN
29773 NULL;
29774 --
29775 --
29776
29777 l_ccid := AcctDerRule_4(
29778 p_application_id => p_application_id
29779 , p_ae_header_id => l_ae_header_id
29780 , p_source_4 => p_source_4
29781 , x_transaction_coa_id => l_adr_transaction_coa_id
29782 , x_accounting_coa_id => l_adr_accounting_coa_id
29783 , x_value_type_code => l_adr_value_type_code
29784 , p_side => 'NA'
29785 );
29786
29787 xla_ae_lines_pkg.set_ccid(
29788 p_code_combination_id => l_ccid
29789 , p_value_type_code => l_adr_value_type_code
29790 , p_transaction_coa_id => l_adr_transaction_coa_id
29791 , p_accounting_coa_id => l_adr_accounting_coa_id
29792 , p_adr_code => 'CST_DEFAULT'
29793 , p_adr_type_code => 'S'
29794 , p_component_type => l_component_type
29795 , p_component_code => l_component_code
29796 , p_component_type_code => l_component_type_code
29797 , p_component_appl_id => l_component_appl_id
29798 , p_amb_context_code => l_amb_context_code
29799 , p_side => 'NA'
29800 );
29801
29802
29803 --
29804 --
29805 END IF;
29806
29807 --
29808 -- Update the line information that should be overwritten
29809 --
29810 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29811 p_header_num => 1);
29812 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
29813
29814 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29815
29816 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
29817 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29818 END IF;
29819
29820 --
29821 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29822 --
29823 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29824 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
29825 ELSE
29826 ---------------------------------------------------------------------------------------------------
29827 -- 4262811a Switch Sign
29828 ---------------------------------------------------------------------------------------------------
29829 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
29830 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29831 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29832 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29833 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29834 -- 5132302
29835 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29836 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29837
29838 END IF;
29839
29840 -- 4955764
29841 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29842 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29843
29844
29845 XLA_AE_LINES_PKG.ValidateCurrentLine;
29846 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29847
29848 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29849 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29850 ,p_balance_type_code => l_balance_type_code);
29851
29852 END IF;
29853
29854 -----------------------------------------------------------------------------------------
29855 -- 4262811 Multiperiod Accounting
29856 -----------------------------------------------------------------------------------------
29857 -- No MPA option is assigned.
29858
29859
29860 END IF;
29861 END IF;
29862 --
29863
29864 --
29865 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29866 trace
29867 (p_msg => 'END of AcctLineType_56'
29868 ,p_level => C_LEVEL_PROCEDURE
29869 ,p_module => l_log_module);
29870 END IF;
29871 --
29872 EXCEPTION
29873 WHEN xla_exceptions_pkg.application_exception THEN
29874 RAISE;
29875 WHEN OTHERS THEN
29876 xla_exceptions_pkg.raise_message
29877 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_56');
29878 END AcctLineType_56;
29879 --
29880
29881 ---------------------------------------
29882 --
29883 -- PRIVATE FUNCTION
29884 -- AcctLineType_57
29885 --
29886 ---------------------------------------
29887 PROCEDURE AcctLineType_57 (
29888 p_application_id IN NUMBER
29889 ,p_event_id IN NUMBER
29890 ,p_calculate_acctd_flag IN VARCHAR2
29891 ,p_calculate_g_l_flag IN VARCHAR2
29892 ,p_actual_flag IN OUT VARCHAR2
29893 ,p_balance_type_code OUT VARCHAR2
29894 ,p_gain_or_loss_ref OUT VARCHAR2
29895
29896 --Cost Management Default Account
29897 , p_source_4 IN NUMBER
29898 --Receiving Accounting Line Type
29899 , p_source_5 IN VARCHAR2
29900 --DISTRIBUTION_IDENTIFIER
29901 , p_source_11 IN NUMBER
29902 --Distribution Type
29903 , p_source_12 IN VARCHAR2
29904 , p_source_12_meaning IN VARCHAR2
29905 --Entered Currency Code
29906 , p_source_15 IN VARCHAR2
29907 --Entered Amount
29908 , p_source_18 IN NUMBER
29909 --Currency Conversion Date
29910 , p_source_19 IN DATE
29911 --Currency Conversion Rate
29912 , p_source_20 IN NUMBER
29913 --Currency Conversion Type
29914 , p_source_21 IN VARCHAR2
29915 --Accounted Amount
29916 , p_source_22 IN NUMBER
29917 )
29918 IS
29919
29920 l_component_type VARCHAR2(80);
29921 l_component_code VARCHAR2(30);
29922 l_component_type_code VARCHAR2(1);
29923 l_component_appl_id INTEGER;
29924 l_amb_context_code VARCHAR2(30);
29925 l_entity_code VARCHAR2(30);
29926 l_event_class_code VARCHAR2(30);
29927 l_ae_header_id NUMBER;
29928 l_event_type_code VARCHAR2(30);
29929 l_line_definition_code VARCHAR2(30);
29930 l_line_definition_owner_code VARCHAR2(1);
29931 --
29932 -- adr variables
29933 l_segment VARCHAR2(30);
29934 l_ccid NUMBER;
29935 l_adr_transaction_coa_id NUMBER;
29936 l_adr_accounting_coa_id NUMBER;
29937 l_adr_flexfield_segment_code VARCHAR2(30);
29938 l_adr_flex_value_set_id NUMBER;
29939 l_adr_value_type_code VARCHAR2(30);
29940 l_adr_value_combination_id NUMBER;
29941 l_adr_value_segment_code VARCHAR2(30);
29942
29943 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
29944 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
29945 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
29946 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
29947
29948 -- 4262811 Variables ------------------------------------------------------------------------------------------
29949 l_entered_amt_idx NUMBER;
29950 l_accted_amt_idx NUMBER;
29951 l_acc_rev_flag VARCHAR2(1);
29952 l_accrual_line_num NUMBER;
29953 l_tmp_amt NUMBER;
29954 l_acc_rev_natural_side_code VARCHAR2(1);
29955
29956 l_num_entries NUMBER;
29957 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
29958 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
29959 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
29960 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
29961 l_recog_line_1 NUMBER;
29962 l_recog_line_2 NUMBER;
29963
29964 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
29965 l_bflow_applied_to_amt NUMBER; -- 5132302
29966 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
29967
29968 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29969
29970 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
29971 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
29972
29973 ---------------------------------------------------------------------------------------------------------------
29974
29975
29976 --
29977 -- bulk performance
29978 --
29979 l_balance_type_code VARCHAR2(1);
29980 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
29981 l_log_module VARCHAR2(240);
29982
29983 --
29984 -- Upgrade strategy
29985 --
29986 l_actual_upg_option VARCHAR2(1);
29987 l_enc_upg_option VARCHAR2(1);
29988
29989 --
29990 BEGIN
29991 --
29992 IF g_log_enabled THEN
29993 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
29994 END IF;
29995 --
29996 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29997
29998 trace
29999 (p_msg => 'BEGIN of AcctLineType_57'
30000 ,p_level => C_LEVEL_PROCEDURE
30001 ,p_module => l_log_module);
30002
30003 END IF;
30004 --
30005 l_component_type := 'AMB_JLT';
30006 l_component_code := 'INTERCOMPANY_ACCRUAL';
30007 l_component_type_code := 'S';
30008 l_component_appl_id := 707;
30009 l_amb_context_code := 'DEFAULT';
30010 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
30011 l_event_class_code := 'RCPT_REC_INSP';
30012 l_event_type_code := 'RCPT_REC_INSP_ALL';
30013 l_line_definition_owner_code := 'S';
30014 l_line_definition_code := 'RCPT_REC_INSP';
30015 --
30016 l_balance_type_code := 'A';
30017 l_segment := NULL;
30018 l_ccid := NULL;
30019 l_adr_transaction_coa_id := NULL;
30020 l_adr_accounting_coa_id := NULL;
30021 l_adr_flexfield_segment_code := NULL;
30022 l_adr_flex_value_set_id := NULL;
30023 l_adr_value_type_code := NULL;
30024 l_adr_value_combination_id := NULL;
30025 l_adr_value_segment_code := NULL;
30026
30027 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
30028 l_bflow_class_code := ''; -- 4219869 Business Flow
30029 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
30030 l_budgetary_control_flag := 'N';
30031
30032 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30033 l_bflow_applied_to_amt := NULL; -- 5132302
30034 l_entered_amt_idx := NULL; -- 4262811
30035 l_accted_amt_idx := NULL; -- 4262811
30036 l_acc_rev_flag := NULL; -- 4262811
30037 l_accrual_line_num := NULL; -- 4262811
30038 l_tmp_amt := NULL; -- 4262811
30039 --
30040
30041 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30042 l_balance_type_code <> 'B' THEN
30043 IF NVL(p_source_5,'
30044 ') = 'IC Accrual'
30045 THEN
30046
30047 --
30048 XLA_AE_LINES_PKG.SetNewLine;
30049
30050 p_balance_type_code := l_balance_type_code;
30051 -- set the flag so later we will know whether the gain loss line needs to be created
30052
30053 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30054 p_actual_flag :='A';
30055 END IF;
30056
30057 --
30058 -- bulk performance
30059 --
30060 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30061 p_header_num => 0); -- 4262811
30062 --
30063 -- set accounting line options
30064 --
30065 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30066 p_natural_side_code => 'D'
30067 , p_gain_or_loss_flag => 'N'
30068 , p_gl_transfer_mode_code => 'S'
30069 , p_acct_entry_type_code => 'A'
30070 , p_switch_side_flag => 'Y'
30071 , p_merge_duplicate_code => 'N'
30072 );
30073 --
30074 l_acc_rev_natural_side_code := 'C'; -- 4262811
30075 --
30076 --
30077 -- set accounting line type info
30078 --
30079 xla_ae_lines_pkg.SetAcctLineType
30080 (p_component_type => l_component_type
30081 ,p_event_type_code => l_event_type_code
30082 ,p_line_definition_owner_code => l_line_definition_owner_code
30083 ,p_line_definition_code => l_line_definition_code
30084 ,p_accounting_line_code => l_component_code
30085 ,p_accounting_line_type_code => l_component_type_code
30086 ,p_accounting_line_appl_id => l_component_appl_id
30087 ,p_amb_context_code => l_amb_context_code
30088 ,p_entity_code => l_entity_code
30089 ,p_event_class_code => l_event_class_code);
30090 --
30091 -- set accounting class
30092 --
30093 xla_ae_lines_pkg.SetAcctClass(
30094 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
30095 , p_ae_header_id => l_ae_header_id
30096 );
30097
30098 --
30099 -- set rounding class
30100 --
30101 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30102 'INTERCOMPANY_ACCRUAL';
30103
30104 --
30105 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30106 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30107 --
30108 -- bulk performance
30109 --
30110 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30111
30112 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30113 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30114
30115 -- 4955764
30116 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30117 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30118
30119 -- 4458381 Public Sector Enh
30120
30121 --
30122 -- set accounting attributes for the line type
30123 --
30124 l_entered_amt_idx := 3;
30125 l_accted_amt_idx := 8;
30126 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30127 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30128 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
30129 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30130 l_rec_acct_attrs.array_char_value(2) := p_source_12;
30131 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30132 l_rec_acct_attrs.array_num_value(3) := p_source_18;
30133 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30134 l_rec_acct_attrs.array_char_value(4) := p_source_15;
30135 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30136 l_rec_acct_attrs.array_date_value(5) := p_source_19;
30137 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30138 l_rec_acct_attrs.array_num_value(6) := p_source_20;
30139 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30140 l_rec_acct_attrs.array_char_value(7) := p_source_21;
30141 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30142 l_rec_acct_attrs.array_num_value(8) := p_source_22;
30143
30144 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30145 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30146
30147 ---------------------------------------------------------------------------------------------------------------
30148 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30149 ---------------------------------------------------------------------------------------------------------------
30150 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30151
30152 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30153 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30154
30155 IF xla_accounting_cache_pkg.GetValueChar
30156 (p_source_code => 'LEDGER_CATEGORY_CODE'
30157 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30158 AND l_bflow_method_code = 'PRIOR_ENTRY'
30159 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30160 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30161 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30162 )
30163 THEN
30164 xla_ae_lines_pkg.BflowUpgEntry
30165 (p_business_method_code => l_bflow_method_code
30166 ,p_business_class_code => l_bflow_class_code
30167 ,p_balance_type => l_balance_type_code);
30168 ELSE
30169 NULL;
30170 -- No business flow processing for business flow method of NONE.
30171 END IF;
30172
30173 --
30174 -- call analytical criteria
30175 --
30176
30177 --
30178 -- call description
30179 --
30180 -- No description or it is inherited.
30181 --
30182 -- call ADRs
30183 -- Bug 4922099
30184 --
30185 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30186 (NVL(l_actual_upg_option, 'N') = 'O') OR
30187 (NVL(l_enc_upg_option, 'N') = 'O')
30188 )
30189 THEN
30190 NULL;
30191 --
30192 --
30193
30194 l_ccid := AcctDerRule_4(
30195 p_application_id => p_application_id
30196 , p_ae_header_id => l_ae_header_id
30197 , p_source_4 => p_source_4
30198 , x_transaction_coa_id => l_adr_transaction_coa_id
30199 , x_accounting_coa_id => l_adr_accounting_coa_id
30200 , x_value_type_code => l_adr_value_type_code
30201 , p_side => 'NA'
30202 );
30203
30204 xla_ae_lines_pkg.set_ccid(
30205 p_code_combination_id => l_ccid
30206 , p_value_type_code => l_adr_value_type_code
30207 , p_transaction_coa_id => l_adr_transaction_coa_id
30208 , p_accounting_coa_id => l_adr_accounting_coa_id
30209 , p_adr_code => 'CST_DEFAULT'
30210 , p_adr_type_code => 'S'
30211 , p_component_type => l_component_type
30212 , p_component_code => l_component_code
30213 , p_component_type_code => l_component_type_code
30214 , p_component_appl_id => l_component_appl_id
30215 , p_amb_context_code => l_amb_context_code
30216 , p_side => 'NA'
30217 );
30218
30219
30220 --
30221 --
30222 END IF;
30223 --
30224 -- Bug 4922099
30225 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30226 (NVL(l_enc_upg_option, 'N') = 'O')
30227 ) AND
30228 (l_bflow_method_code = 'PRIOR_ENTRY')
30229 )
30230 THEN
30231 IF
30232 --
30233 1 = 2
30234 --
30235 THEN
30236 xla_accounting_err_pkg.build_message
30237 (p_appli_s_name => 'XLA'
30238 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30239 ,p_token_1 => 'LINE_NUMBER'
30240 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
30241 ,p_token_2 => 'LINE_TYPE_NAME'
30242 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
30243 l_component_type
30244 ,l_component_code
30245 ,l_component_type_code
30246 ,l_component_appl_id
30247 ,l_amb_context_code
30248 ,l_entity_code
30249 ,l_event_class_code
30250 )
30251 ,p_token_3 => 'OWNER'
30252 ,p_value_3 => xla_lookups_pkg.get_meaning(
30253 p_lookup_type => 'XLA_OWNER_TYPE'
30254 ,p_lookup_code => l_component_type_code
30255 )
30256 ,p_token_4 => 'PRODUCT_NAME'
30257 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30258 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30259 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30260 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30261 ,p_ae_header_id => NULL
30262 );
30263
30264 IF (C_LEVEL_ERROR>= g_log_level) THEN
30265 trace
30266 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30267 ,p_level => C_LEVEL_ERROR
30268 ,p_module => l_log_module);
30269 END IF;
30270 END IF;
30271 END IF;
30272 --
30273 --
30274 ------------------------------------------------------------------------------------------------
30275 -- 4219869 Business Flow
30276 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30277 -- Prior Entry. Currently, the following code is always generated.
30278 ------------------------------------------------------------------------------------------------
30279 XLA_AE_LINES_PKG.ValidateCurrentLine;
30280
30281 ------------------------------------------------------------------------------------
30282 -- 4219869 Business Flow
30283 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30284 ------------------------------------------------------------------------------------
30285 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30286
30287 ----------------------------------------------------------------------------------
30288 -- 4219869 Business Flow
30289 -- Update journal entry status -- Need to generate this within IF <condition>
30290 ----------------------------------------------------------------------------------
30291 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30292 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30293 ,p_balance_type_code => l_balance_type_code
30294 );
30295
30296 -------------------------------------------------------------------------------------------
30297 -- 4262811 - Generate the Accrual Reversal lines
30298 -------------------------------------------------------------------------------------------
30299 BEGIN
30300 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30301 (g_array_event(p_event_id).array_value_num('header_index'));
30302 IF l_acc_rev_flag IS NULL THEN
30303 l_acc_rev_flag := 'N';
30304 END IF;
30305 EXCEPTION
30306 WHEN OTHERS THEN
30307 l_acc_rev_flag := 'N';
30308 END;
30309 --
30310 IF (l_acc_rev_flag = 'Y') THEN
30311
30312 -- 4645092 ------------------------------------------------------------------------------
30313 -- To allow MPA report to determine if it should generate report process
30314 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30315 ------------------------------------------------------------------------------------------
30316
30317 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30318 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30319 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
30320 -- call ADRs
30321 -- Bug 4922099
30322 --
30323 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30324 (NVL(l_actual_upg_option, 'N') = 'O') OR
30325 (NVL(l_enc_upg_option, 'N') = 'O')
30326 )
30327 THEN
30328 NULL;
30329 --
30330 --
30331
30332 l_ccid := AcctDerRule_4(
30333 p_application_id => p_application_id
30334 , p_ae_header_id => l_ae_header_id
30335 , p_source_4 => p_source_4
30336 , x_transaction_coa_id => l_adr_transaction_coa_id
30337 , x_accounting_coa_id => l_adr_accounting_coa_id
30338 , x_value_type_code => l_adr_value_type_code
30339 , p_side => 'NA'
30340 );
30341
30342 xla_ae_lines_pkg.set_ccid(
30343 p_code_combination_id => l_ccid
30344 , p_value_type_code => l_adr_value_type_code
30345 , p_transaction_coa_id => l_adr_transaction_coa_id
30346 , p_accounting_coa_id => l_adr_accounting_coa_id
30347 , p_adr_code => 'CST_DEFAULT'
30348 , p_adr_type_code => 'S'
30349 , p_component_type => l_component_type
30350 , p_component_code => l_component_code
30351 , p_component_type_code => l_component_type_code
30352 , p_component_appl_id => l_component_appl_id
30353 , p_amb_context_code => l_amb_context_code
30354 , p_side => 'NA'
30355 );
30356
30357
30358 --
30359 --
30360 END IF;
30361
30362 --
30363 -- Update the line information that should be overwritten
30364 --
30365 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30366 p_header_num => 1);
30367 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
30368
30369 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30370
30371 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
30372 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30373 END IF;
30374
30375 --
30376 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30377 --
30378 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30379 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
30380 ELSE
30381 ---------------------------------------------------------------------------------------------------
30382 -- 4262811a Switch Sign
30383 ---------------------------------------------------------------------------------------------------
30384 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
30385 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30386 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30387 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30388 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30389 -- 5132302
30390 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30391 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30392
30393 END IF;
30394
30395 -- 4955764
30396 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30397 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30398
30399
30400 XLA_AE_LINES_PKG.ValidateCurrentLine;
30401 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30402
30403 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30404 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30405 ,p_balance_type_code => l_balance_type_code);
30406
30407 END IF;
30408
30409 -----------------------------------------------------------------------------------------
30410 -- 4262811 Multiperiod Accounting
30411 -----------------------------------------------------------------------------------------
30412 -- No MPA option is assigned.
30413
30414
30415 END IF;
30416 END IF;
30417 --
30418
30419 --
30420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30421 trace
30422 (p_msg => 'END of AcctLineType_57'
30423 ,p_level => C_LEVEL_PROCEDURE
30424 ,p_module => l_log_module);
30425 END IF;
30426 --
30427 EXCEPTION
30428 WHEN xla_exceptions_pkg.application_exception THEN
30429 RAISE;
30430 WHEN OTHERS THEN
30431 xla_exceptions_pkg.raise_message
30432 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_57');
30433 END AcctLineType_57;
30434 --
30435
30436 ---------------------------------------
30437 --
30438 -- PRIVATE FUNCTION
30439 -- AcctLineType_58
30440 --
30441 ---------------------------------------
30442 PROCEDURE AcctLineType_58 (
30443 p_application_id IN NUMBER
30444 ,p_event_id IN NUMBER
30445 ,p_calculate_acctd_flag IN VARCHAR2
30446 ,p_calculate_g_l_flag IN VARCHAR2
30447 ,p_actual_flag IN OUT VARCHAR2
30448 ,p_balance_type_code OUT VARCHAR2
30449 ,p_gain_or_loss_ref OUT VARCHAR2
30450
30451 --Cost Management Default Account
30452 , p_source_4 IN NUMBER
30453 --DISTRIBUTION_IDENTIFIER
30454 , p_source_11 IN NUMBER
30455 --Distribution Type
30456 , p_source_12 IN VARCHAR2
30457 , p_source_12_meaning IN VARCHAR2
30458 --Entered Currency Code
30459 , p_source_15 IN VARCHAR2
30460 --Entered Amount
30461 , p_source_18 IN NUMBER
30462 --Currency Conversion Date
30463 , p_source_19 IN DATE
30464 --Currency Conversion Rate
30465 , p_source_20 IN NUMBER
30466 --Currency Conversion Type
30467 , p_source_21 IN VARCHAR2
30468 --Accounted Amount
30469 , p_source_22 IN NUMBER
30470 --Accounting Line Type
30471 , p_source_24 IN NUMBER
30472 )
30473 IS
30474
30475 l_component_type VARCHAR2(80);
30476 l_component_code VARCHAR2(30);
30477 l_component_type_code VARCHAR2(1);
30478 l_component_appl_id INTEGER;
30479 l_amb_context_code VARCHAR2(30);
30480 l_entity_code VARCHAR2(30);
30481 l_event_class_code VARCHAR2(30);
30482 l_ae_header_id NUMBER;
30483 l_event_type_code VARCHAR2(30);
30484 l_line_definition_code VARCHAR2(30);
30485 l_line_definition_owner_code VARCHAR2(1);
30486 --
30487 -- adr variables
30488 l_segment VARCHAR2(30);
30489 l_ccid NUMBER;
30490 l_adr_transaction_coa_id NUMBER;
30491 l_adr_accounting_coa_id NUMBER;
30492 l_adr_flexfield_segment_code VARCHAR2(30);
30493 l_adr_flex_value_set_id NUMBER;
30494 l_adr_value_type_code VARCHAR2(30);
30495 l_adr_value_combination_id NUMBER;
30496 l_adr_value_segment_code VARCHAR2(30);
30497
30498 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
30499 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
30500 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
30501 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
30502
30503 -- 4262811 Variables ------------------------------------------------------------------------------------------
30504 l_entered_amt_idx NUMBER;
30505 l_accted_amt_idx NUMBER;
30506 l_acc_rev_flag VARCHAR2(1);
30507 l_accrual_line_num NUMBER;
30508 l_tmp_amt NUMBER;
30509 l_acc_rev_natural_side_code VARCHAR2(1);
30510
30511 l_num_entries NUMBER;
30512 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
30513 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
30514 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
30515 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
30516 l_recog_line_1 NUMBER;
30517 l_recog_line_2 NUMBER;
30518
30519 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
30520 l_bflow_applied_to_amt NUMBER; -- 5132302
30521 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
30522
30523 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30524
30525 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
30526 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
30527
30528 ---------------------------------------------------------------------------------------------------------------
30529
30530
30531 --
30532 -- bulk performance
30533 --
30534 l_balance_type_code VARCHAR2(1);
30535 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
30536 l_log_module VARCHAR2(240);
30537
30538 --
30539 -- Upgrade strategy
30540 --
30541 l_actual_upg_option VARCHAR2(1);
30542 l_enc_upg_option VARCHAR2(1);
30543
30544 --
30545 BEGIN
30546 --
30547 IF g_log_enabled THEN
30548 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
30549 END IF;
30550 --
30551 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30552
30553 trace
30554 (p_msg => 'BEGIN of AcctLineType_58'
30555 ,p_level => C_LEVEL_PROCEDURE
30556 ,p_module => l_log_module);
30557
30558 END IF;
30559 --
30560 l_component_type := 'AMB_JLT';
30561 l_component_code := 'INTERCOMPANY_ACCRUAL';
30562 l_component_type_code := 'S';
30563 l_component_appl_id := 707;
30564 l_amb_context_code := 'DEFAULT';
30565 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
30566 l_event_class_code := 'LOG_INTERCOMPANY';
30567 l_event_type_code := 'LOG_INTERCOMPANY_ALL';
30568 l_line_definition_owner_code := 'S';
30569 l_line_definition_code := 'LOG_INTERCOMPANY';
30570 --
30571 l_balance_type_code := 'A';
30572 l_segment := NULL;
30573 l_ccid := NULL;
30574 l_adr_transaction_coa_id := NULL;
30575 l_adr_accounting_coa_id := NULL;
30576 l_adr_flexfield_segment_code := NULL;
30577 l_adr_flex_value_set_id := NULL;
30578 l_adr_value_type_code := NULL;
30579 l_adr_value_combination_id := NULL;
30580 l_adr_value_segment_code := NULL;
30581
30582 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
30583 l_bflow_class_code := ''; -- 4219869 Business Flow
30584 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
30585 l_budgetary_control_flag := 'N';
30586
30587 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30588 l_bflow_applied_to_amt := NULL; -- 5132302
30589 l_entered_amt_idx := NULL; -- 4262811
30590 l_accted_amt_idx := NULL; -- 4262811
30591 l_acc_rev_flag := NULL; -- 4262811
30592 l_accrual_line_num := NULL; -- 4262811
30593 l_tmp_amt := NULL; -- 4262811
30594 --
30595
30596 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30597 l_balance_type_code <> 'B' THEN
30598 IF NVL(p_source_24,9E125) = 16
30599 THEN
30600
30601 --
30602 XLA_AE_LINES_PKG.SetNewLine;
30603
30604 p_balance_type_code := l_balance_type_code;
30605 -- set the flag so later we will know whether the gain loss line needs to be created
30606
30607 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30608 p_actual_flag :='A';
30609 END IF;
30610
30611 --
30612 -- bulk performance
30613 --
30614 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30615 p_header_num => 0); -- 4262811
30616 --
30617 -- set accounting line options
30618 --
30619 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30620 p_natural_side_code => 'D'
30621 , p_gain_or_loss_flag => 'N'
30622 , p_gl_transfer_mode_code => 'S'
30623 , p_acct_entry_type_code => 'A'
30624 , p_switch_side_flag => 'Y'
30625 , p_merge_duplicate_code => 'N'
30626 );
30627 --
30628 l_acc_rev_natural_side_code := 'C'; -- 4262811
30629 --
30630 --
30631 -- set accounting line type info
30632 --
30633 xla_ae_lines_pkg.SetAcctLineType
30634 (p_component_type => l_component_type
30635 ,p_event_type_code => l_event_type_code
30636 ,p_line_definition_owner_code => l_line_definition_owner_code
30637 ,p_line_definition_code => l_line_definition_code
30638 ,p_accounting_line_code => l_component_code
30639 ,p_accounting_line_type_code => l_component_type_code
30640 ,p_accounting_line_appl_id => l_component_appl_id
30641 ,p_amb_context_code => l_amb_context_code
30642 ,p_entity_code => l_entity_code
30643 ,p_event_class_code => l_event_class_code);
30644 --
30645 -- set accounting class
30646 --
30647 xla_ae_lines_pkg.SetAcctClass(
30648 p_accounting_class_code => 'INTERCOMPANY_ACCRUAL'
30649 , p_ae_header_id => l_ae_header_id
30650 );
30651
30652 --
30653 -- set rounding class
30654 --
30655 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30656 'INTERCOMPANY_ACCRUAL';
30657
30658 --
30659 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30660 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30661 --
30662 -- bulk performance
30663 --
30664 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30665
30666 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30667 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30668
30669 -- 4955764
30670 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30671 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30672
30673 -- 4458381 Public Sector Enh
30674
30675 --
30676 -- set accounting attributes for the line type
30677 --
30678 l_entered_amt_idx := 3;
30679 l_accted_amt_idx := 8;
30680 l_bflow_applied_to_amt_idx := NULL; -- 5132302
30681 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30682 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
30683 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30684 l_rec_acct_attrs.array_char_value(2) := p_source_12;
30685 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30686 l_rec_acct_attrs.array_num_value(3) := p_source_18;
30687 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30688 l_rec_acct_attrs.array_char_value(4) := p_source_15;
30689 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30690 l_rec_acct_attrs.array_date_value(5) := p_source_19;
30691 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30692 l_rec_acct_attrs.array_num_value(6) := p_source_20;
30693 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30694 l_rec_acct_attrs.array_char_value(7) := p_source_21;
30695 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30696 l_rec_acct_attrs.array_num_value(8) := p_source_22;
30697
30698 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30699 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30700
30701 ---------------------------------------------------------------------------------------------------------------
30702 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30703 ---------------------------------------------------------------------------------------------------------------
30704 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30705
30706 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30707 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30708
30709 IF xla_accounting_cache_pkg.GetValueChar
30710 (p_source_code => 'LEDGER_CATEGORY_CODE'
30711 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30712 AND l_bflow_method_code = 'PRIOR_ENTRY'
30713 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30714 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30715 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30716 )
30717 THEN
30718 xla_ae_lines_pkg.BflowUpgEntry
30719 (p_business_method_code => l_bflow_method_code
30720 ,p_business_class_code => l_bflow_class_code
30721 ,p_balance_type => l_balance_type_code);
30722 ELSE
30723 NULL;
30724 -- No business flow processing for business flow method of NONE.
30725 END IF;
30726
30727 --
30728 -- call analytical criteria
30729 --
30730
30731 --
30732 -- call description
30733 --
30734 -- No description or it is inherited.
30735 --
30736 -- call ADRs
30737 -- Bug 4922099
30738 --
30739 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30740 (NVL(l_actual_upg_option, 'N') = 'O') OR
30741 (NVL(l_enc_upg_option, 'N') = 'O')
30742 )
30743 THEN
30744 NULL;
30745 --
30746 --
30747
30748 l_ccid := AcctDerRule_4(
30749 p_application_id => p_application_id
30750 , p_ae_header_id => l_ae_header_id
30751 , p_source_4 => p_source_4
30752 , x_transaction_coa_id => l_adr_transaction_coa_id
30753 , x_accounting_coa_id => l_adr_accounting_coa_id
30754 , x_value_type_code => l_adr_value_type_code
30755 , p_side => 'NA'
30756 );
30757
30758 xla_ae_lines_pkg.set_ccid(
30759 p_code_combination_id => l_ccid
30760 , p_value_type_code => l_adr_value_type_code
30761 , p_transaction_coa_id => l_adr_transaction_coa_id
30762 , p_accounting_coa_id => l_adr_accounting_coa_id
30763 , p_adr_code => 'CST_DEFAULT'
30764 , p_adr_type_code => 'S'
30765 , p_component_type => l_component_type
30766 , p_component_code => l_component_code
30767 , p_component_type_code => l_component_type_code
30768 , p_component_appl_id => l_component_appl_id
30769 , p_amb_context_code => l_amb_context_code
30770 , p_side => 'NA'
30771 );
30772
30773
30774 --
30775 --
30776 END IF;
30777 --
30778 -- Bug 4922099
30779 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30780 (NVL(l_enc_upg_option, 'N') = 'O')
30781 ) AND
30782 (l_bflow_method_code = 'PRIOR_ENTRY')
30783 )
30784 THEN
30785 IF
30786 --
30787 1 = 2
30788 --
30789 THEN
30790 xla_accounting_err_pkg.build_message
30791 (p_appli_s_name => 'XLA'
30792 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30793 ,p_token_1 => 'LINE_NUMBER'
30794 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
30795 ,p_token_2 => 'LINE_TYPE_NAME'
30796 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
30797 l_component_type
30798 ,l_component_code
30799 ,l_component_type_code
30800 ,l_component_appl_id
30801 ,l_amb_context_code
30802 ,l_entity_code
30803 ,l_event_class_code
30804 )
30805 ,p_token_3 => 'OWNER'
30806 ,p_value_3 => xla_lookups_pkg.get_meaning(
30807 p_lookup_type => 'XLA_OWNER_TYPE'
30808 ,p_lookup_code => l_component_type_code
30809 )
30810 ,p_token_4 => 'PRODUCT_NAME'
30811 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30812 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30813 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30814 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30815 ,p_ae_header_id => NULL
30816 );
30817
30818 IF (C_LEVEL_ERROR>= g_log_level) THEN
30819 trace
30820 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30821 ,p_level => C_LEVEL_ERROR
30822 ,p_module => l_log_module);
30823 END IF;
30824 END IF;
30825 END IF;
30826 --
30827 --
30828 ------------------------------------------------------------------------------------------------
30829 -- 4219869 Business Flow
30830 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30831 -- Prior Entry. Currently, the following code is always generated.
30832 ------------------------------------------------------------------------------------------------
30833 XLA_AE_LINES_PKG.ValidateCurrentLine;
30834
30835 ------------------------------------------------------------------------------------
30836 -- 4219869 Business Flow
30837 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30838 ------------------------------------------------------------------------------------
30839 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30840
30841 ----------------------------------------------------------------------------------
30842 -- 4219869 Business Flow
30843 -- Update journal entry status -- Need to generate this within IF <condition>
30844 ----------------------------------------------------------------------------------
30845 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30846 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30847 ,p_balance_type_code => l_balance_type_code
30848 );
30849
30850 -------------------------------------------------------------------------------------------
30851 -- 4262811 - Generate the Accrual Reversal lines
30852 -------------------------------------------------------------------------------------------
30853 BEGIN
30854 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30855 (g_array_event(p_event_id).array_value_num('header_index'));
30856 IF l_acc_rev_flag IS NULL THEN
30857 l_acc_rev_flag := 'N';
30858 END IF;
30859 EXCEPTION
30860 WHEN OTHERS THEN
30861 l_acc_rev_flag := 'N';
30862 END;
30863 --
30864 IF (l_acc_rev_flag = 'Y') THEN
30865
30866 -- 4645092 ------------------------------------------------------------------------------
30867 -- To allow MPA report to determine if it should generate report process
30868 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30869 ------------------------------------------------------------------------------------------
30870
30871 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30872 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30873 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
30874 -- call ADRs
30875 -- Bug 4922099
30876 --
30877 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30878 (NVL(l_actual_upg_option, 'N') = 'O') OR
30879 (NVL(l_enc_upg_option, 'N') = 'O')
30880 )
30881 THEN
30882 NULL;
30883 --
30884 --
30885
30886 l_ccid := AcctDerRule_4(
30887 p_application_id => p_application_id
30888 , p_ae_header_id => l_ae_header_id
30889 , p_source_4 => p_source_4
30890 , x_transaction_coa_id => l_adr_transaction_coa_id
30891 , x_accounting_coa_id => l_adr_accounting_coa_id
30892 , x_value_type_code => l_adr_value_type_code
30893 , p_side => 'NA'
30894 );
30895
30896 xla_ae_lines_pkg.set_ccid(
30897 p_code_combination_id => l_ccid
30898 , p_value_type_code => l_adr_value_type_code
30899 , p_transaction_coa_id => l_adr_transaction_coa_id
30900 , p_accounting_coa_id => l_adr_accounting_coa_id
30901 , p_adr_code => 'CST_DEFAULT'
30902 , p_adr_type_code => 'S'
30903 , p_component_type => l_component_type
30904 , p_component_code => l_component_code
30905 , p_component_type_code => l_component_type_code
30906 , p_component_appl_id => l_component_appl_id
30907 , p_amb_context_code => l_amb_context_code
30908 , p_side => 'NA'
30909 );
30910
30911
30912 --
30913 --
30914 END IF;
30915
30916 --
30917 -- Update the line information that should be overwritten
30918 --
30919 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30920 p_header_num => 1);
30921 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
30922
30923 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30924
30925 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
30926 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30927 END IF;
30928
30929 --
30930 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30931 --
30932 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30933 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
30934 ELSE
30935 ---------------------------------------------------------------------------------------------------
30936 -- 4262811a Switch Sign
30937 ---------------------------------------------------------------------------------------------------
30938 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
30939 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30940 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30941 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30942 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30943 -- 5132302
30944 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30945 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30946
30947 END IF;
30948
30949 -- 4955764
30950 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30951 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30952
30953
30954 XLA_AE_LINES_PKG.ValidateCurrentLine;
30955 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30956
30957 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30958 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30959 ,p_balance_type_code => l_balance_type_code);
30960
30961 END IF;
30962
30963 -----------------------------------------------------------------------------------------
30964 -- 4262811 Multiperiod Accounting
30965 -----------------------------------------------------------------------------------------
30966 -- No MPA option is assigned.
30967
30968
30969 END IF;
30970 END IF;
30971 --
30972
30973 --
30974 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30975 trace
30976 (p_msg => 'END of AcctLineType_58'
30977 ,p_level => C_LEVEL_PROCEDURE
30978 ,p_module => l_log_module);
30979 END IF;
30980 --
30981 EXCEPTION
30982 WHEN xla_exceptions_pkg.application_exception THEN
30983 RAISE;
30984 WHEN OTHERS THEN
30985 xla_exceptions_pkg.raise_message
30986 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_58');
30987 END AcctLineType_58;
30988 --
30989
30990 ---------------------------------------
30991 --
30992 -- PRIVATE FUNCTION
30993 -- AcctLineType_59
30994 --
30995 ---------------------------------------
30996 PROCEDURE AcctLineType_59 (
30997 p_application_id IN NUMBER
30998 ,p_event_id IN NUMBER
30999 ,p_calculate_acctd_flag IN VARCHAR2
31000 ,p_calculate_g_l_flag IN VARCHAR2
31001 ,p_actual_flag IN OUT VARCHAR2
31002 ,p_balance_type_code OUT VARCHAR2
31003 ,p_gain_or_loss_ref OUT VARCHAR2
31004
31005 --Cost Management Default Account
31006 , p_source_4 IN NUMBER
31007 --DISTRIBUTION_IDENTIFIER
31008 , p_source_11 IN NUMBER
31009 --Distribution Type
31010 , p_source_12 IN VARCHAR2
31011 , p_source_12_meaning IN VARCHAR2
31012 --Entered Currency Code
31013 , p_source_15 IN VARCHAR2
31014 --Entered Amount
31015 , p_source_18 IN NUMBER
31016 --Currency Conversion Date
31017 , p_source_19 IN DATE
31018 --Currency Conversion Rate
31019 , p_source_20 IN NUMBER
31020 --Currency Conversion Type
31021 , p_source_21 IN VARCHAR2
31022 --Accounted Amount
31023 , p_source_22 IN NUMBER
31024 --Accounting Line Type
31025 , p_source_24 IN NUMBER
31026 --Transaction Action Name
31027 , p_source_35 IN NUMBER
31028 , p_source_35_meaning IN VARCHAR2
31029 )
31030 IS
31031
31032 l_component_type VARCHAR2(80);
31033 l_component_code VARCHAR2(30);
31034 l_component_type_code VARCHAR2(1);
31035 l_component_appl_id INTEGER;
31036 l_amb_context_code VARCHAR2(30);
31037 l_entity_code VARCHAR2(30);
31038 l_event_class_code VARCHAR2(30);
31039 l_ae_header_id NUMBER;
31040 l_event_type_code VARCHAR2(30);
31041 l_line_definition_code VARCHAR2(30);
31042 l_line_definition_owner_code VARCHAR2(1);
31043 --
31044 -- adr variables
31045 l_segment VARCHAR2(30);
31046 l_ccid NUMBER;
31047 l_adr_transaction_coa_id NUMBER;
31048 l_adr_accounting_coa_id NUMBER;
31049 l_adr_flexfield_segment_code VARCHAR2(30);
31050 l_adr_flex_value_set_id NUMBER;
31051 l_adr_value_type_code VARCHAR2(30);
31052 l_adr_value_combination_id NUMBER;
31053 l_adr_value_segment_code VARCHAR2(30);
31054
31055 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
31056 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
31057 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
31058 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
31059
31060 -- 4262811 Variables ------------------------------------------------------------------------------------------
31061 l_entered_amt_idx NUMBER;
31062 l_accted_amt_idx NUMBER;
31063 l_acc_rev_flag VARCHAR2(1);
31064 l_accrual_line_num NUMBER;
31065 l_tmp_amt NUMBER;
31066 l_acc_rev_natural_side_code VARCHAR2(1);
31067
31068 l_num_entries NUMBER;
31069 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
31070 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
31071 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
31072 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
31073 l_recog_line_1 NUMBER;
31074 l_recog_line_2 NUMBER;
31075
31076 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
31077 l_bflow_applied_to_amt NUMBER; -- 5132302
31078 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
31079
31080 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31081
31082 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
31083 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
31084
31085 ---------------------------------------------------------------------------------------------------------------
31086
31087
31088 --
31089 -- bulk performance
31090 --
31091 l_balance_type_code VARCHAR2(1);
31092 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
31093 l_log_module VARCHAR2(240);
31094
31095 --
31096 -- Upgrade strategy
31097 --
31098 l_actual_upg_option VARCHAR2(1);
31099 l_enc_upg_option VARCHAR2(1);
31100
31101 --
31102 BEGIN
31103 --
31104 IF g_log_enabled THEN
31105 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
31106 END IF;
31107 --
31108 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31109
31110 trace
31111 (p_msg => 'BEGIN of AcctLineType_59'
31112 ,p_level => C_LEVEL_PROCEDURE
31113 ,p_module => l_log_module);
31114
31115 END IF;
31116 --
31117 l_component_type := 'AMB_JLT';
31118 l_component_code := 'INTERCOMPANY_COGS';
31119 l_component_type_code := 'S';
31120 l_component_appl_id := 707;
31121 l_amb_context_code := 'DEFAULT';
31122 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
31123 l_event_class_code := 'LOG_INTERCOMPANY';
31124 l_event_type_code := 'LOG_INTERCOMPANY_ALL';
31125 l_line_definition_owner_code := 'S';
31126 l_line_definition_code := 'LOG_INTERCOMPANY';
31127 --
31128 l_balance_type_code := 'A';
31129 l_segment := NULL;
31130 l_ccid := NULL;
31131 l_adr_transaction_coa_id := NULL;
31132 l_adr_accounting_coa_id := NULL;
31133 l_adr_flexfield_segment_code := NULL;
31134 l_adr_flex_value_set_id := NULL;
31135 l_adr_value_type_code := NULL;
31136 l_adr_value_combination_id := NULL;
31137 l_adr_value_segment_code := NULL;
31138
31139 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
31140 l_bflow_class_code := ''; -- 4219869 Business Flow
31141 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
31142 l_budgetary_control_flag := 'N';
31143
31144 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31145 l_bflow_applied_to_amt := NULL; -- 5132302
31146 l_entered_amt_idx := NULL; -- 4262811
31147 l_accted_amt_idx := NULL; -- 4262811
31148 l_acc_rev_flag := NULL; -- 4262811
31149 l_accrual_line_num := NULL; -- 4262811
31150 l_tmp_amt := NULL; -- 4262811
31151 --
31152
31153 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31154 l_balance_type_code <> 'B' THEN
31155 IF NVL(p_source_24,9E125) = 2 AND
31156 ((p_source_22 >= 0 AND
31157 NVL(p_source_35,9E125) = 9) OR
31158 (p_source_22 <= 0 AND
31159 NVL(p_source_35,9E125) = 14)
31160 ) THEN
31161
31162 --
31163 XLA_AE_LINES_PKG.SetNewLine;
31164
31165 p_balance_type_code := l_balance_type_code;
31166 -- set the flag so later we will know whether the gain loss line needs to be created
31167
31168 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31169 p_actual_flag :='A';
31170 END IF;
31171
31172 --
31173 -- bulk performance
31174 --
31175 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31176 p_header_num => 0); -- 4262811
31177 --
31178 -- set accounting line options
31179 --
31180 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31181 p_natural_side_code => 'D'
31182 , p_gain_or_loss_flag => 'N'
31183 , p_gl_transfer_mode_code => 'S'
31184 , p_acct_entry_type_code => 'A'
31185 , p_switch_side_flag => 'Y'
31186 , p_merge_duplicate_code => 'N'
31187 );
31188 --
31189 l_acc_rev_natural_side_code := 'C'; -- 4262811
31190 --
31191 --
31192 -- set accounting line type info
31193 --
31194 xla_ae_lines_pkg.SetAcctLineType
31195 (p_component_type => l_component_type
31196 ,p_event_type_code => l_event_type_code
31197 ,p_line_definition_owner_code => l_line_definition_owner_code
31198 ,p_line_definition_code => l_line_definition_code
31199 ,p_accounting_line_code => l_component_code
31200 ,p_accounting_line_type_code => l_component_type_code
31201 ,p_accounting_line_appl_id => l_component_appl_id
31202 ,p_amb_context_code => l_amb_context_code
31203 ,p_entity_code => l_entity_code
31204 ,p_event_class_code => l_event_class_code);
31205 --
31206 -- set accounting class
31207 --
31208 xla_ae_lines_pkg.SetAcctClass(
31209 p_accounting_class_code => 'INTERCOMPANY_COGS'
31210 , p_ae_header_id => l_ae_header_id
31211 );
31212
31213 --
31214 -- set rounding class
31215 --
31216 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31217 'INTERCOMPANY_COGS';
31218
31219 --
31220 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31221 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31222 --
31223 -- bulk performance
31224 --
31225 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31226
31227 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31228 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31229
31230 -- 4955764
31231 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31232 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31233
31234 -- 4458381 Public Sector Enh
31235
31236 --
31237 -- set accounting attributes for the line type
31238 --
31239 l_entered_amt_idx := 3;
31240 l_accted_amt_idx := 8;
31241 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31242 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31243 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
31244 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31245 l_rec_acct_attrs.array_char_value(2) := p_source_12;
31246 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31247 l_rec_acct_attrs.array_num_value(3) := p_source_18;
31248 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31249 l_rec_acct_attrs.array_char_value(4) := p_source_15;
31250 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31251 l_rec_acct_attrs.array_date_value(5) := p_source_19;
31252 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31253 l_rec_acct_attrs.array_num_value(6) := p_source_20;
31254 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31255 l_rec_acct_attrs.array_char_value(7) := p_source_21;
31256 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31257 l_rec_acct_attrs.array_num_value(8) := p_source_22;
31258
31259 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31260 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31261
31262 ---------------------------------------------------------------------------------------------------------------
31263 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31264 ---------------------------------------------------------------------------------------------------------------
31265 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31266
31267 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31268 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31269
31270 IF xla_accounting_cache_pkg.GetValueChar
31271 (p_source_code => 'LEDGER_CATEGORY_CODE'
31272 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31273 AND l_bflow_method_code = 'PRIOR_ENTRY'
31274 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31275 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31276 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31277 )
31278 THEN
31279 xla_ae_lines_pkg.BflowUpgEntry
31280 (p_business_method_code => l_bflow_method_code
31281 ,p_business_class_code => l_bflow_class_code
31282 ,p_balance_type => l_balance_type_code);
31283 ELSE
31284 NULL;
31285 -- No business flow processing for business flow method of NONE.
31286 END IF;
31287
31288 --
31289 -- call analytical criteria
31290 --
31291
31292 --
31293 -- call description
31294 --
31295 -- No description or it is inherited.
31296 --
31297 -- call ADRs
31298 -- Bug 4922099
31299 --
31300 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31301 (NVL(l_actual_upg_option, 'N') = 'O') OR
31302 (NVL(l_enc_upg_option, 'N') = 'O')
31303 )
31304 THEN
31305 NULL;
31306 --
31307 --
31308
31309 l_ccid := AcctDerRule_4(
31310 p_application_id => p_application_id
31311 , p_ae_header_id => l_ae_header_id
31312 , p_source_4 => p_source_4
31313 , x_transaction_coa_id => l_adr_transaction_coa_id
31314 , x_accounting_coa_id => l_adr_accounting_coa_id
31315 , x_value_type_code => l_adr_value_type_code
31316 , p_side => 'NA'
31317 );
31318
31319 xla_ae_lines_pkg.set_ccid(
31320 p_code_combination_id => l_ccid
31321 , p_value_type_code => l_adr_value_type_code
31322 , p_transaction_coa_id => l_adr_transaction_coa_id
31323 , p_accounting_coa_id => l_adr_accounting_coa_id
31324 , p_adr_code => 'CST_DEFAULT'
31325 , p_adr_type_code => 'S'
31326 , p_component_type => l_component_type
31327 , p_component_code => l_component_code
31328 , p_component_type_code => l_component_type_code
31329 , p_component_appl_id => l_component_appl_id
31330 , p_amb_context_code => l_amb_context_code
31331 , p_side => 'NA'
31332 );
31333
31334
31335 --
31336 --
31337 END IF;
31338 --
31339 -- Bug 4922099
31340 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31341 (NVL(l_enc_upg_option, 'N') = 'O')
31342 ) AND
31343 (l_bflow_method_code = 'PRIOR_ENTRY')
31344 )
31345 THEN
31346 IF
31347 --
31348 1 = 2
31349 --
31350 THEN
31351 xla_accounting_err_pkg.build_message
31352 (p_appli_s_name => 'XLA'
31353 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31354 ,p_token_1 => 'LINE_NUMBER'
31355 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
31356 ,p_token_2 => 'LINE_TYPE_NAME'
31357 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
31358 l_component_type
31359 ,l_component_code
31360 ,l_component_type_code
31361 ,l_component_appl_id
31362 ,l_amb_context_code
31363 ,l_entity_code
31364 ,l_event_class_code
31365 )
31366 ,p_token_3 => 'OWNER'
31367 ,p_value_3 => xla_lookups_pkg.get_meaning(
31368 p_lookup_type => 'XLA_OWNER_TYPE'
31369 ,p_lookup_code => l_component_type_code
31370 )
31371 ,p_token_4 => 'PRODUCT_NAME'
31372 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31373 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31374 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31375 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31376 ,p_ae_header_id => NULL
31377 );
31378
31379 IF (C_LEVEL_ERROR>= g_log_level) THEN
31380 trace
31381 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31382 ,p_level => C_LEVEL_ERROR
31383 ,p_module => l_log_module);
31384 END IF;
31385 END IF;
31386 END IF;
31387 --
31388 --
31389 ------------------------------------------------------------------------------------------------
31390 -- 4219869 Business Flow
31391 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31392 -- Prior Entry. Currently, the following code is always generated.
31393 ------------------------------------------------------------------------------------------------
31394 XLA_AE_LINES_PKG.ValidateCurrentLine;
31395
31396 ------------------------------------------------------------------------------------
31397 -- 4219869 Business Flow
31398 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31399 ------------------------------------------------------------------------------------
31400 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31401
31402 ----------------------------------------------------------------------------------
31403 -- 4219869 Business Flow
31404 -- Update journal entry status -- Need to generate this within IF <condition>
31405 ----------------------------------------------------------------------------------
31406 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31407 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31408 ,p_balance_type_code => l_balance_type_code
31409 );
31410
31411 -------------------------------------------------------------------------------------------
31412 -- 4262811 - Generate the Accrual Reversal lines
31413 -------------------------------------------------------------------------------------------
31414 BEGIN
31415 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31416 (g_array_event(p_event_id).array_value_num('header_index'));
31417 IF l_acc_rev_flag IS NULL THEN
31418 l_acc_rev_flag := 'N';
31419 END IF;
31420 EXCEPTION
31421 WHEN OTHERS THEN
31422 l_acc_rev_flag := 'N';
31423 END;
31424 --
31425 IF (l_acc_rev_flag = 'Y') THEN
31426
31427 -- 4645092 ------------------------------------------------------------------------------
31428 -- To allow MPA report to determine if it should generate report process
31429 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31430 ------------------------------------------------------------------------------------------
31431
31432 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31433 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31434 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
31435 -- call ADRs
31436 -- Bug 4922099
31437 --
31438 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31439 (NVL(l_actual_upg_option, 'N') = 'O') OR
31440 (NVL(l_enc_upg_option, 'N') = 'O')
31441 )
31442 THEN
31443 NULL;
31444 --
31445 --
31446
31447 l_ccid := AcctDerRule_4(
31448 p_application_id => p_application_id
31449 , p_ae_header_id => l_ae_header_id
31450 , p_source_4 => p_source_4
31451 , x_transaction_coa_id => l_adr_transaction_coa_id
31452 , x_accounting_coa_id => l_adr_accounting_coa_id
31453 , x_value_type_code => l_adr_value_type_code
31454 , p_side => 'NA'
31455 );
31456
31457 xla_ae_lines_pkg.set_ccid(
31458 p_code_combination_id => l_ccid
31459 , p_value_type_code => l_adr_value_type_code
31460 , p_transaction_coa_id => l_adr_transaction_coa_id
31461 , p_accounting_coa_id => l_adr_accounting_coa_id
31462 , p_adr_code => 'CST_DEFAULT'
31463 , p_adr_type_code => 'S'
31464 , p_component_type => l_component_type
31465 , p_component_code => l_component_code
31466 , p_component_type_code => l_component_type_code
31467 , p_component_appl_id => l_component_appl_id
31468 , p_amb_context_code => l_amb_context_code
31469 , p_side => 'NA'
31470 );
31471
31472
31473 --
31474 --
31475 END IF;
31476
31477 --
31478 -- Update the line information that should be overwritten
31479 --
31480 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31481 p_header_num => 1);
31482 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
31483
31484 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31485
31486 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
31487 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31488 END IF;
31489
31490 --
31491 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31492 --
31493 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31494 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
31495 ELSE
31496 ---------------------------------------------------------------------------------------------------
31497 -- 4262811a Switch Sign
31498 ---------------------------------------------------------------------------------------------------
31499 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
31500 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31501 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31502 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31503 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31504 -- 5132302
31505 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31506 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31507
31508 END IF;
31509
31510 -- 4955764
31511 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31512 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31513
31514
31515 XLA_AE_LINES_PKG.ValidateCurrentLine;
31516 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31517
31518 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31519 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31520 ,p_balance_type_code => l_balance_type_code);
31521
31522 END IF;
31523
31524 -----------------------------------------------------------------------------------------
31525 -- 4262811 Multiperiod Accounting
31526 -----------------------------------------------------------------------------------------
31527 -- No MPA option is assigned.
31528
31529
31530 END IF;
31531 END IF;
31532 --
31533
31534 --
31535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31536 trace
31537 (p_msg => 'END of AcctLineType_59'
31538 ,p_level => C_LEVEL_PROCEDURE
31539 ,p_module => l_log_module);
31540 END IF;
31541 --
31542 EXCEPTION
31543 WHEN xla_exceptions_pkg.application_exception THEN
31544 RAISE;
31545 WHEN OTHERS THEN
31546 xla_exceptions_pkg.raise_message
31547 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_59');
31548 END AcctLineType_59;
31549 --
31550
31551 ---------------------------------------
31552 --
31553 -- PRIVATE FUNCTION
31554 -- AcctLineType_60
31555 --
31556 ---------------------------------------
31557 PROCEDURE AcctLineType_60 (
31558 p_application_id IN NUMBER
31559 ,p_event_id IN NUMBER
31560 ,p_calculate_acctd_flag IN VARCHAR2
31561 ,p_calculate_g_l_flag IN VARCHAR2
31562 ,p_actual_flag IN OUT VARCHAR2
31563 ,p_balance_type_code OUT VARCHAR2
31564 ,p_gain_or_loss_ref OUT VARCHAR2
31565
31566 --Cost Management Default Account
31567 , p_source_4 IN NUMBER
31568 --Receiving Accounting Line Type
31569 , p_source_5 IN VARCHAR2
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 )
31588 IS
31589
31590 l_component_type VARCHAR2(80);
31591 l_component_code VARCHAR2(30);
31592 l_component_type_code VARCHAR2(1);
31593 l_component_appl_id INTEGER;
31594 l_amb_context_code VARCHAR2(30);
31595 l_entity_code VARCHAR2(30);
31596 l_event_class_code VARCHAR2(30);
31597 l_ae_header_id NUMBER;
31598 l_event_type_code VARCHAR2(30);
31599 l_line_definition_code VARCHAR2(30);
31600 l_line_definition_owner_code VARCHAR2(1);
31601 --
31602 -- adr variables
31603 l_segment VARCHAR2(30);
31604 l_ccid NUMBER;
31605 l_adr_transaction_coa_id NUMBER;
31606 l_adr_accounting_coa_id NUMBER;
31607 l_adr_flexfield_segment_code VARCHAR2(30);
31608 l_adr_flex_value_set_id NUMBER;
31609 l_adr_value_type_code VARCHAR2(30);
31610 l_adr_value_combination_id NUMBER;
31611 l_adr_value_segment_code VARCHAR2(30);
31612
31613 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
31614 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
31615 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
31616 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
31617
31618 -- 4262811 Variables ------------------------------------------------------------------------------------------
31619 l_entered_amt_idx NUMBER;
31620 l_accted_amt_idx NUMBER;
31621 l_acc_rev_flag VARCHAR2(1);
31622 l_accrual_line_num NUMBER;
31623 l_tmp_amt NUMBER;
31624 l_acc_rev_natural_side_code VARCHAR2(1);
31625
31626 l_num_entries NUMBER;
31627 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
31628 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
31629 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
31630 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
31631 l_recog_line_1 NUMBER;
31632 l_recog_line_2 NUMBER;
31633
31634 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
31635 l_bflow_applied_to_amt NUMBER; -- 5132302
31636 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
31637
31638 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31639
31640 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
31641 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
31642
31643 ---------------------------------------------------------------------------------------------------------------
31644
31645
31646 --
31647 -- bulk performance
31648 --
31649 l_balance_type_code VARCHAR2(1);
31650 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
31651 l_log_module VARCHAR2(240);
31652
31653 --
31654 -- Upgrade strategy
31655 --
31656 l_actual_upg_option VARCHAR2(1);
31657 l_enc_upg_option VARCHAR2(1);
31658
31659 --
31660 BEGIN
31661 --
31662 IF g_log_enabled THEN
31663 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
31664 END IF;
31665 --
31666 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31667
31668 trace
31669 (p_msg => 'BEGIN of AcctLineType_60'
31670 ,p_level => C_LEVEL_PROCEDURE
31671 ,p_module => l_log_module);
31672
31673 END IF;
31674 --
31675 l_component_type := 'AMB_JLT';
31676 l_component_code := 'INTERCOMPANY_COGS';
31677 l_component_type_code := 'S';
31678 l_component_appl_id := 707;
31679 l_amb_context_code := 'DEFAULT';
31680 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
31681 l_event_class_code := 'RETR_PRICE_ADJ_RCV';
31682 l_event_type_code := 'RETR_PRICE_ADJ_RCV_ALL';
31683 l_line_definition_owner_code := 'S';
31684 l_line_definition_code := 'RETR_PRICE_ADJ_RCV';
31685 --
31686 l_balance_type_code := 'A';
31687 l_segment := NULL;
31688 l_ccid := NULL;
31689 l_adr_transaction_coa_id := NULL;
31690 l_adr_accounting_coa_id := NULL;
31691 l_adr_flexfield_segment_code := NULL;
31692 l_adr_flex_value_set_id := NULL;
31693 l_adr_value_type_code := NULL;
31694 l_adr_value_combination_id := NULL;
31695 l_adr_value_segment_code := NULL;
31696
31697 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
31698 l_bflow_class_code := ''; -- 4219869 Business Flow
31699 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
31700 l_budgetary_control_flag := 'N';
31701
31702 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31703 l_bflow_applied_to_amt := NULL; -- 5132302
31704 l_entered_amt_idx := NULL; -- 4262811
31705 l_accted_amt_idx := NULL; -- 4262811
31706 l_acc_rev_flag := NULL; -- 4262811
31707 l_accrual_line_num := NULL; -- 4262811
31708 l_tmp_amt := NULL; -- 4262811
31709 --
31710
31711 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31712 l_balance_type_code <> 'B' THEN
31713 IF NVL(p_source_5,'
31714 ') = 'IC Cost of Sales'
31715 THEN
31716
31717 --
31718 XLA_AE_LINES_PKG.SetNewLine;
31719
31720 p_balance_type_code := l_balance_type_code;
31721 -- set the flag so later we will know whether the gain loss line needs to be created
31722
31723 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31724 p_actual_flag :='A';
31725 END IF;
31726
31727 --
31728 -- bulk performance
31729 --
31730 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31731 p_header_num => 0); -- 4262811
31732 --
31733 -- set accounting line options
31734 --
31735 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31736 p_natural_side_code => 'D'
31737 , p_gain_or_loss_flag => 'N'
31738 , p_gl_transfer_mode_code => 'S'
31739 , p_acct_entry_type_code => 'A'
31740 , p_switch_side_flag => 'Y'
31741 , p_merge_duplicate_code => 'N'
31742 );
31743 --
31744 l_acc_rev_natural_side_code := 'C'; -- 4262811
31745 --
31746 --
31747 -- set accounting line type info
31748 --
31749 xla_ae_lines_pkg.SetAcctLineType
31750 (p_component_type => l_component_type
31751 ,p_event_type_code => l_event_type_code
31752 ,p_line_definition_owner_code => l_line_definition_owner_code
31753 ,p_line_definition_code => l_line_definition_code
31754 ,p_accounting_line_code => l_component_code
31755 ,p_accounting_line_type_code => l_component_type_code
31756 ,p_accounting_line_appl_id => l_component_appl_id
31757 ,p_amb_context_code => l_amb_context_code
31758 ,p_entity_code => l_entity_code
31759 ,p_event_class_code => l_event_class_code);
31760 --
31761 -- set accounting class
31762 --
31763 xla_ae_lines_pkg.SetAcctClass(
31764 p_accounting_class_code => 'INTERCOMPANY_COGS'
31765 , p_ae_header_id => l_ae_header_id
31766 );
31767
31768 --
31769 -- set rounding class
31770 --
31771 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31772 'INTERCOMPANY_COGS';
31773
31774 --
31775 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31776 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31777 --
31778 -- bulk performance
31779 --
31780 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31781
31782 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31783 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31784
31785 -- 4955764
31786 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31787 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31788
31789 -- 4458381 Public Sector Enh
31790
31791 --
31792 -- set accounting attributes for the line type
31793 --
31794 l_entered_amt_idx := 3;
31795 l_accted_amt_idx := 8;
31796 l_bflow_applied_to_amt_idx := NULL; -- 5132302
31797 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31798 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
31799 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31800 l_rec_acct_attrs.array_char_value(2) := p_source_12;
31801 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31802 l_rec_acct_attrs.array_num_value(3) := p_source_18;
31803 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31804 l_rec_acct_attrs.array_char_value(4) := p_source_15;
31805 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31806 l_rec_acct_attrs.array_date_value(5) := p_source_19;
31807 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31808 l_rec_acct_attrs.array_num_value(6) := p_source_20;
31809 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31810 l_rec_acct_attrs.array_char_value(7) := p_source_21;
31811 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31812 l_rec_acct_attrs.array_num_value(8) := p_source_22;
31813
31814 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31815 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31816
31817 ---------------------------------------------------------------------------------------------------------------
31818 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31819 ---------------------------------------------------------------------------------------------------------------
31820 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31821
31822 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31823 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31824
31825 IF xla_accounting_cache_pkg.GetValueChar
31826 (p_source_code => 'LEDGER_CATEGORY_CODE'
31827 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31828 AND l_bflow_method_code = 'PRIOR_ENTRY'
31829 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31830 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31831 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31832 )
31833 THEN
31834 xla_ae_lines_pkg.BflowUpgEntry
31835 (p_business_method_code => l_bflow_method_code
31836 ,p_business_class_code => l_bflow_class_code
31837 ,p_balance_type => l_balance_type_code);
31838 ELSE
31839 NULL;
31840 -- No business flow processing for business flow method of NONE.
31841 END IF;
31842
31843 --
31844 -- call analytical criteria
31845 --
31846
31847 --
31848 -- call description
31849 --
31850 -- No description or it is inherited.
31851 --
31852 -- call ADRs
31853 -- Bug 4922099
31854 --
31855 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31856 (NVL(l_actual_upg_option, 'N') = 'O') OR
31857 (NVL(l_enc_upg_option, 'N') = 'O')
31858 )
31859 THEN
31860 NULL;
31861 --
31862 --
31863
31864 l_ccid := AcctDerRule_4(
31865 p_application_id => p_application_id
31866 , p_ae_header_id => l_ae_header_id
31867 , p_source_4 => p_source_4
31868 , x_transaction_coa_id => l_adr_transaction_coa_id
31869 , x_accounting_coa_id => l_adr_accounting_coa_id
31870 , x_value_type_code => l_adr_value_type_code
31871 , p_side => 'NA'
31872 );
31873
31874 xla_ae_lines_pkg.set_ccid(
31875 p_code_combination_id => l_ccid
31876 , p_value_type_code => l_adr_value_type_code
31877 , p_transaction_coa_id => l_adr_transaction_coa_id
31878 , p_accounting_coa_id => l_adr_accounting_coa_id
31879 , p_adr_code => 'CST_DEFAULT'
31880 , p_adr_type_code => 'S'
31881 , p_component_type => l_component_type
31882 , p_component_code => l_component_code
31883 , p_component_type_code => l_component_type_code
31884 , p_component_appl_id => l_component_appl_id
31885 , p_amb_context_code => l_amb_context_code
31886 , p_side => 'NA'
31887 );
31888
31889
31890 --
31891 --
31892 END IF;
31893 --
31894 -- Bug 4922099
31895 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31896 (NVL(l_enc_upg_option, 'N') = 'O')
31897 ) AND
31898 (l_bflow_method_code = 'PRIOR_ENTRY')
31899 )
31900 THEN
31901 IF
31902 --
31903 1 = 2
31904 --
31905 THEN
31906 xla_accounting_err_pkg.build_message
31907 (p_appli_s_name => 'XLA'
31908 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31909 ,p_token_1 => 'LINE_NUMBER'
31910 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
31911 ,p_token_2 => 'LINE_TYPE_NAME'
31912 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
31913 l_component_type
31914 ,l_component_code
31915 ,l_component_type_code
31916 ,l_component_appl_id
31917 ,l_amb_context_code
31918 ,l_entity_code
31919 ,l_event_class_code
31920 )
31921 ,p_token_3 => 'OWNER'
31922 ,p_value_3 => xla_lookups_pkg.get_meaning(
31923 p_lookup_type => 'XLA_OWNER_TYPE'
31924 ,p_lookup_code => l_component_type_code
31925 )
31926 ,p_token_4 => 'PRODUCT_NAME'
31927 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31928 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31929 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31930 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31931 ,p_ae_header_id => NULL
31932 );
31933
31934 IF (C_LEVEL_ERROR>= g_log_level) THEN
31935 trace
31936 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31937 ,p_level => C_LEVEL_ERROR
31938 ,p_module => l_log_module);
31939 END IF;
31940 END IF;
31941 END IF;
31942 --
31943 --
31944 ------------------------------------------------------------------------------------------------
31945 -- 4219869 Business Flow
31946 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31947 -- Prior Entry. Currently, the following code is always generated.
31948 ------------------------------------------------------------------------------------------------
31949 XLA_AE_LINES_PKG.ValidateCurrentLine;
31950
31951 ------------------------------------------------------------------------------------
31952 -- 4219869 Business Flow
31953 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31954 ------------------------------------------------------------------------------------
31955 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31956
31957 ----------------------------------------------------------------------------------
31958 -- 4219869 Business Flow
31959 -- Update journal entry status -- Need to generate this within IF <condition>
31960 ----------------------------------------------------------------------------------
31961 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31962 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31963 ,p_balance_type_code => l_balance_type_code
31964 );
31965
31966 -------------------------------------------------------------------------------------------
31967 -- 4262811 - Generate the Accrual Reversal lines
31968 -------------------------------------------------------------------------------------------
31969 BEGIN
31970 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31971 (g_array_event(p_event_id).array_value_num('header_index'));
31972 IF l_acc_rev_flag IS NULL THEN
31973 l_acc_rev_flag := 'N';
31974 END IF;
31975 EXCEPTION
31976 WHEN OTHERS THEN
31977 l_acc_rev_flag := 'N';
31978 END;
31979 --
31980 IF (l_acc_rev_flag = 'Y') THEN
31981
31982 -- 4645092 ------------------------------------------------------------------------------
31983 -- To allow MPA report to determine if it should generate report process
31984 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31985 ------------------------------------------------------------------------------------------
31986
31987 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31988 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31989 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
31990 -- call ADRs
31991 -- Bug 4922099
31992 --
31993 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31994 (NVL(l_actual_upg_option, 'N') = 'O') OR
31995 (NVL(l_enc_upg_option, 'N') = 'O')
31996 )
31997 THEN
31998 NULL;
31999 --
32000 --
32001
32002 l_ccid := AcctDerRule_4(
32003 p_application_id => p_application_id
32004 , p_ae_header_id => l_ae_header_id
32005 , p_source_4 => p_source_4
32006 , x_transaction_coa_id => l_adr_transaction_coa_id
32007 , x_accounting_coa_id => l_adr_accounting_coa_id
32008 , x_value_type_code => l_adr_value_type_code
32009 , p_side => 'NA'
32010 );
32011
32012 xla_ae_lines_pkg.set_ccid(
32013 p_code_combination_id => l_ccid
32014 , p_value_type_code => l_adr_value_type_code
32015 , p_transaction_coa_id => l_adr_transaction_coa_id
32016 , p_accounting_coa_id => l_adr_accounting_coa_id
32017 , p_adr_code => 'CST_DEFAULT'
32018 , p_adr_type_code => 'S'
32019 , p_component_type => l_component_type
32020 , p_component_code => l_component_code
32021 , p_component_type_code => l_component_type_code
32022 , p_component_appl_id => l_component_appl_id
32023 , p_amb_context_code => l_amb_context_code
32024 , p_side => 'NA'
32025 );
32026
32027
32028 --
32029 --
32030 END IF;
32031
32032 --
32033 -- Update the line information that should be overwritten
32034 --
32035 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32036 p_header_num => 1);
32037 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
32038
32039 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32040
32041 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
32042 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32043 END IF;
32044
32045 --
32046 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32047 --
32048 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32049 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
32050 ELSE
32051 ---------------------------------------------------------------------------------------------------
32052 -- 4262811a Switch Sign
32053 ---------------------------------------------------------------------------------------------------
32054 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
32055 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32056 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32057 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32058 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32059 -- 5132302
32060 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32061 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32062
32063 END IF;
32064
32065 -- 4955764
32066 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32067 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32068
32069
32070 XLA_AE_LINES_PKG.ValidateCurrentLine;
32071 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32072
32073 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32074 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32075 ,p_balance_type_code => l_balance_type_code);
32076
32077 END IF;
32078
32079 -----------------------------------------------------------------------------------------
32080 -- 4262811 Multiperiod Accounting
32081 -----------------------------------------------------------------------------------------
32082 -- No MPA option is assigned.
32083
32084
32085 END IF;
32086 END IF;
32087 --
32088
32089 --
32090 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32091 trace
32092 (p_msg => 'END of AcctLineType_60'
32093 ,p_level => C_LEVEL_PROCEDURE
32094 ,p_module => l_log_module);
32095 END IF;
32096 --
32097 EXCEPTION
32098 WHEN xla_exceptions_pkg.application_exception THEN
32099 RAISE;
32100 WHEN OTHERS THEN
32101 xla_exceptions_pkg.raise_message
32102 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_60');
32103 END AcctLineType_60;
32104 --
32105
32106 ---------------------------------------
32107 --
32108 -- PRIVATE FUNCTION
32109 -- AcctLineType_61
32110 --
32111 ---------------------------------------
32112 PROCEDURE AcctLineType_61 (
32113 p_application_id IN NUMBER
32114 ,p_event_id IN NUMBER
32115 ,p_calculate_acctd_flag IN VARCHAR2
32116 ,p_calculate_g_l_flag IN VARCHAR2
32117 ,p_actual_flag IN OUT VARCHAR2
32118 ,p_balance_type_code OUT VARCHAR2
32119 ,p_gain_or_loss_ref OUT VARCHAR2
32120
32121 --Cost Management Default Account
32122 , p_source_4 IN NUMBER
32123 --Receiving Accounting Line Type
32124 , p_source_5 IN VARCHAR2
32125 --DISTRIBUTION_IDENTIFIER
32126 , p_source_11 IN NUMBER
32127 --Distribution Type
32128 , p_source_12 IN VARCHAR2
32129 , p_source_12_meaning IN VARCHAR2
32130 --Entered Currency Code
32131 , p_source_15 IN VARCHAR2
32132 --Entered Amount
32133 , p_source_18 IN NUMBER
32134 --Currency Conversion Date
32135 , p_source_19 IN DATE
32136 --Currency Conversion Rate
32137 , p_source_20 IN NUMBER
32138 --Currency Conversion Type
32139 , p_source_21 IN VARCHAR2
32140 --Accounted Amount
32141 , p_source_22 IN NUMBER
32142 )
32143 IS
32144
32145 l_component_type VARCHAR2(80);
32146 l_component_code VARCHAR2(30);
32147 l_component_type_code VARCHAR2(1);
32148 l_component_appl_id INTEGER;
32149 l_amb_context_code VARCHAR2(30);
32150 l_entity_code VARCHAR2(30);
32151 l_event_class_code VARCHAR2(30);
32152 l_ae_header_id NUMBER;
32153 l_event_type_code VARCHAR2(30);
32154 l_line_definition_code VARCHAR2(30);
32155 l_line_definition_owner_code VARCHAR2(1);
32156 --
32157 -- adr variables
32158 l_segment VARCHAR2(30);
32159 l_ccid NUMBER;
32160 l_adr_transaction_coa_id NUMBER;
32161 l_adr_accounting_coa_id NUMBER;
32162 l_adr_flexfield_segment_code VARCHAR2(30);
32163 l_adr_flex_value_set_id NUMBER;
32164 l_adr_value_type_code VARCHAR2(30);
32165 l_adr_value_combination_id NUMBER;
32166 l_adr_value_segment_code VARCHAR2(30);
32167
32168 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
32169 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
32170 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
32171 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
32172
32173 -- 4262811 Variables ------------------------------------------------------------------------------------------
32174 l_entered_amt_idx NUMBER;
32175 l_accted_amt_idx NUMBER;
32176 l_acc_rev_flag VARCHAR2(1);
32177 l_accrual_line_num NUMBER;
32178 l_tmp_amt NUMBER;
32179 l_acc_rev_natural_side_code VARCHAR2(1);
32180
32181 l_num_entries NUMBER;
32182 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
32183 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
32184 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
32185 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
32186 l_recog_line_1 NUMBER;
32187 l_recog_line_2 NUMBER;
32188
32189 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
32190 l_bflow_applied_to_amt NUMBER; -- 5132302
32191 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
32192
32193 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32194
32195 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
32196 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
32197
32198 ---------------------------------------------------------------------------------------------------------------
32199
32200
32201 --
32202 -- bulk performance
32203 --
32204 l_balance_type_code VARCHAR2(1);
32205 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
32206 l_log_module VARCHAR2(240);
32207
32208 --
32209 -- Upgrade strategy
32210 --
32211 l_actual_upg_option VARCHAR2(1);
32212 l_enc_upg_option VARCHAR2(1);
32213
32214 --
32215 BEGIN
32216 --
32217 IF g_log_enabled THEN
32218 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
32219 END IF;
32220 --
32221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32222
32223 trace
32224 (p_msg => 'BEGIN of AcctLineType_61'
32225 ,p_level => C_LEVEL_PROCEDURE
32226 ,p_module => l_log_module);
32227
32228 END IF;
32229 --
32230 l_component_type := 'AMB_JLT';
32231 l_component_code := 'INTERCOMPANY_COGS';
32232 l_component_type_code := 'S';
32233 l_component_appl_id := 707;
32234 l_amb_context_code := 'DEFAULT';
32235 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
32236 l_event_class_code := 'RCPT_REC_INSP';
32237 l_event_type_code := 'RCPT_REC_INSP_ALL';
32238 l_line_definition_owner_code := 'S';
32239 l_line_definition_code := 'RCPT_REC_INSP';
32240 --
32241 l_balance_type_code := 'A';
32242 l_segment := NULL;
32243 l_ccid := NULL;
32244 l_adr_transaction_coa_id := NULL;
32245 l_adr_accounting_coa_id := NULL;
32246 l_adr_flexfield_segment_code := NULL;
32247 l_adr_flex_value_set_id := NULL;
32248 l_adr_value_type_code := NULL;
32249 l_adr_value_combination_id := NULL;
32250 l_adr_value_segment_code := NULL;
32251
32252 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
32253 l_bflow_class_code := ''; -- 4219869 Business Flow
32254 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
32255 l_budgetary_control_flag := 'N';
32256
32257 l_bflow_applied_to_amt_idx := NULL; -- 5132302
32258 l_bflow_applied_to_amt := NULL; -- 5132302
32259 l_entered_amt_idx := NULL; -- 4262811
32260 l_accted_amt_idx := NULL; -- 4262811
32261 l_acc_rev_flag := NULL; -- 4262811
32262 l_accrual_line_num := NULL; -- 4262811
32263 l_tmp_amt := NULL; -- 4262811
32264 --
32265
32266 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32267 l_balance_type_code <> 'B' THEN
32268 IF NVL(p_source_5,'
32269 ') = 'IC Cost of Sales'
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 => 'INTERCOMPANY_COGS'
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 'INTERCOMPANY_COGS';
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_000005_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 := 'USER_DEFINE';
32792 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
32793 l_line_definition_owner_code := 'S';
32794 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
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_000005_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 := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
33347 l_line_definition_owner_code := 'S';
33348 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
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_000005_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_SHIP_NO_TP';
33901 l_line_definition_owner_code := 'S';
33902 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
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_000005_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 --Applied to Application ID
34341 , p_source_6 IN NUMBER
34342 --Applied to Distribution Link Type
34343 , p_source_7 IN VARCHAR2
34344 --Applied to Entity Code
34345 , p_source_8 IN VARCHAR2
34346 --DISTRIBUTION_IDENTIFIER
34347 , p_source_11 IN NUMBER
34348 --Distribution Type
34349 , p_source_12 IN VARCHAR2
34350 , p_source_12_meaning IN VARCHAR2
34351 --Encumbrance Reversal Amount Entered
34352 , p_source_14 IN NUMBER
34353 --Entered Currency Code
34354 , p_source_15 IN VARCHAR2
34355 --Transaction Encumbrance Reversal Amount
34356 , p_source_16 IN NUMBER
34357 --Entered Amount
34358 , p_source_18 IN NUMBER
34359 --Currency Conversion Date
34360 , p_source_19 IN DATE
34361 --Currency Conversion Rate
34362 , p_source_20 IN NUMBER
34363 --Currency Conversion Type
34364 , p_source_21 IN VARCHAR2
34365 --Accounted Amount
34366 , p_source_22 IN NUMBER
34367 --Accounting Line Type
34368 , p_source_24 IN NUMBER
34369 --Costing Encumbrance Upgrade Option
34370 , p_source_27 IN VARCHAR2
34371 --TXN_PO_DISTRIBUTION_ID
34372 , p_source_28 IN NUMBER
34373 --TXN_PO_HEADER_ID
34374 , p_source_29 IN NUMBER
34375 --Requisition Budget Account
34376 , p_source_30 IN NUMBER
34377 --Requisition Encumbrance Type Identifier
34378 , p_source_31 IN NUMBER
34379 )
34380 IS
34381
34382 l_component_type VARCHAR2(80);
34383 l_component_code VARCHAR2(30);
34384 l_component_type_code VARCHAR2(1);
34385 l_component_appl_id INTEGER;
34386 l_amb_context_code VARCHAR2(30);
34387 l_entity_code VARCHAR2(30);
34388 l_event_class_code VARCHAR2(30);
34389 l_ae_header_id NUMBER;
34390 l_event_type_code VARCHAR2(30);
34391 l_line_definition_code VARCHAR2(30);
34392 l_line_definition_owner_code VARCHAR2(1);
34393 --
34394 -- adr variables
34395 l_segment VARCHAR2(30);
34396 l_ccid NUMBER;
34397 l_adr_transaction_coa_id NUMBER;
34398 l_adr_accounting_coa_id NUMBER;
34399 l_adr_flexfield_segment_code VARCHAR2(30);
34400 l_adr_flex_value_set_id NUMBER;
34401 l_adr_value_type_code VARCHAR2(30);
34402 l_adr_value_combination_id NUMBER;
34403 l_adr_value_segment_code VARCHAR2(30);
34404
34405 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
34406 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
34407 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
34408 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
34409
34410 -- 4262811 Variables ------------------------------------------------------------------------------------------
34411 l_entered_amt_idx NUMBER;
34412 l_accted_amt_idx NUMBER;
34413 l_acc_rev_flag VARCHAR2(1);
34414 l_accrual_line_num NUMBER;
34415 l_tmp_amt NUMBER;
34416 l_acc_rev_natural_side_code VARCHAR2(1);
34417
34418 l_num_entries NUMBER;
34419 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
34420 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
34421 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
34422 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
34423 l_recog_line_1 NUMBER;
34424 l_recog_line_2 NUMBER;
34425
34426 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
34427 l_bflow_applied_to_amt NUMBER; -- 5132302
34428 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
34429
34430 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34431
34432 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
34433 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
34434
34435 ---------------------------------------------------------------------------------------------------------------
34436
34437
34438 --
34439 -- bulk performance
34440 --
34441 l_balance_type_code VARCHAR2(1);
34442 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
34443 l_log_module VARCHAR2(240);
34444
34445 --
34446 -- Upgrade strategy
34447 --
34448 l_actual_upg_option VARCHAR2(1);
34449 l_enc_upg_option VARCHAR2(1);
34450
34451 --
34452 BEGIN
34453 --
34454 IF g_log_enabled THEN
34455 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
34456 END IF;
34457 --
34458 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34459
34460 trace
34461 (p_msg => 'BEGIN of AcctLineType_65'
34462 ,p_level => C_LEVEL_PROCEDURE
34463 ,p_module => l_log_module);
34464
34465 END IF;
34466 --
34467 l_component_type := 'AMB_JLT';
34468 l_component_code := 'INTERORG_FREIGHT_CHARGE';
34469 l_component_type_code := 'S';
34470 l_component_appl_id := 707;
34471 l_amb_context_code := 'DEFAULT';
34472 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
34473 l_event_class_code := 'DIR_INTERORG_RCPT';
34474 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
34475 l_line_definition_owner_code := 'S';
34476 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
34477 --
34478 l_balance_type_code := 'A';
34479 l_segment := NULL;
34480 l_ccid := NULL;
34481 l_adr_transaction_coa_id := NULL;
34482 l_adr_accounting_coa_id := NULL;
34483 l_adr_flexfield_segment_code := NULL;
34484 l_adr_flex_value_set_id := NULL;
34485 l_adr_value_type_code := NULL;
34486 l_adr_value_combination_id := NULL;
34487 l_adr_value_segment_code := NULL;
34488
34489 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
34490 l_bflow_class_code := ''; -- 4219869 Business Flow
34491 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
34492 l_budgetary_control_flag := 'N';
34493
34494 l_bflow_applied_to_amt_idx := NULL; -- 5132302
34495 l_bflow_applied_to_amt := NULL; -- 5132302
34496 l_entered_amt_idx := NULL; -- 4262811
34497 l_accted_amt_idx := NULL; -- 4262811
34498 l_acc_rev_flag := NULL; -- 4262811
34499 l_accrual_line_num := NULL; -- 4262811
34500 l_tmp_amt := NULL; -- 4262811
34501 --
34502
34503 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34504 l_balance_type_code <> 'B' THEN
34505 IF NVL(p_source_24,9E125) = 12
34506 THEN
34507
34508 --
34509 XLA_AE_LINES_PKG.SetNewLine;
34510
34511 p_balance_type_code := l_balance_type_code;
34512 -- set the flag so later we will know whether the gain loss line needs to be created
34513
34514 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34515 p_actual_flag :='A';
34516 END IF;
34517
34518 --
34519 -- bulk performance
34520 --
34521 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34522 p_header_num => 0); -- 4262811
34523 --
34524 -- set accounting line options
34525 --
34526 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34527 p_natural_side_code => 'D'
34528 , p_gain_or_loss_flag => 'N'
34529 , p_gl_transfer_mode_code => 'S'
34530 , p_acct_entry_type_code => 'A'
34531 , p_switch_side_flag => 'Y'
34532 , p_merge_duplicate_code => 'N'
34533 );
34534 --
34535 l_acc_rev_natural_side_code := 'C'; -- 4262811
34536 --
34537 --
34538 -- set accounting line type info
34539 --
34540 xla_ae_lines_pkg.SetAcctLineType
34541 (p_component_type => l_component_type
34542 ,p_event_type_code => l_event_type_code
34543 ,p_line_definition_owner_code => l_line_definition_owner_code
34544 ,p_line_definition_code => l_line_definition_code
34545 ,p_accounting_line_code => l_component_code
34546 ,p_accounting_line_type_code => l_component_type_code
34547 ,p_accounting_line_appl_id => l_component_appl_id
34548 ,p_amb_context_code => l_amb_context_code
34549 ,p_entity_code => l_entity_code
34550 ,p_event_class_code => l_event_class_code);
34551 --
34552 -- set accounting class
34553 --
34554 xla_ae_lines_pkg.SetAcctClass(
34555 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
34556 , p_ae_header_id => l_ae_header_id
34557 );
34558
34559 --
34560 -- set rounding class
34561 --
34562 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34563 'INTERORG_FREIGHT_CHARGE';
34564
34565 --
34566 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34567 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34568 --
34569 -- bulk performance
34570 --
34571 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34572
34573 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34574 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34575
34576 -- 4955764
34577 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34578 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34579
34580 -- 4458381 Public Sector Enh
34581
34582 --
34583 -- set accounting attributes for the line type
34584 --
34585 l_entered_amt_idx := 17;
34586 l_accted_amt_idx := 22;
34587 l_bflow_applied_to_amt_idx := NULL; -- 5132302
34588 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
34589 l_rec_acct_attrs.array_num_value(1) := p_source_6;
34590 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
34591 l_rec_acct_attrs.array_char_value(2) := p_source_7;
34592 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
34593 l_rec_acct_attrs.array_char_value(3) := p_source_8;
34594 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
34595 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
34596 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
34597 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
34598 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
34599 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
34600 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
34601 l_rec_acct_attrs.array_char_value(7) := p_source_12;
34602 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
34603 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
34604 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
34605 l_rec_acct_attrs.array_num_value(9) := p_source_14;
34606 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
34607 l_rec_acct_attrs.array_char_value(10) := p_source_15;
34608 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
34609 l_rec_acct_attrs.array_num_value(11) := p_source_16;
34610 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
34611 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
34612 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
34613 l_rec_acct_attrs.array_num_value(13) := p_source_14;
34614 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
34615 l_rec_acct_attrs.array_char_value(14) := p_source_15;
34616 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
34617 l_rec_acct_attrs.array_num_value(15) := p_source_16;
34618 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
34619 l_rec_acct_attrs.array_char_value(16) := p_source_27;
34620 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
34621 l_rec_acct_attrs.array_num_value(17) := p_source_18;
34622 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
34623 l_rec_acct_attrs.array_char_value(18) := p_source_15;
34624 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
34625 l_rec_acct_attrs.array_date_value(19) := p_source_19;
34626 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
34627 l_rec_acct_attrs.array_num_value(20) := p_source_20;
34628 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
34629 l_rec_acct_attrs.array_char_value(21) := p_source_21;
34630 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
34631 l_rec_acct_attrs.array_num_value(22) := p_source_22;
34632 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
34633 l_rec_acct_attrs.array_num_value(23) := p_source_31;
34634 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
34635 l_rec_acct_attrs.array_num_value(24) := p_source_31;
34636
34637 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34638 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34639
34640 ---------------------------------------------------------------------------------------------------------------
34641 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34642 ---------------------------------------------------------------------------------------------------------------
34643 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34644
34645 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34646 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34647
34648 IF xla_accounting_cache_pkg.GetValueChar
34649 (p_source_code => 'LEDGER_CATEGORY_CODE'
34650 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34651 AND l_bflow_method_code = 'PRIOR_ENTRY'
34652 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34653 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34654 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34655 )
34656 THEN
34657 xla_ae_lines_pkg.BflowUpgEntry
34658 (p_business_method_code => l_bflow_method_code
34659 ,p_business_class_code => l_bflow_class_code
34660 ,p_balance_type => l_balance_type_code);
34661 ELSE
34662 NULL;
34663 -- No business flow processing for business flow method of NONE.
34664 END IF;
34665
34666 --
34667 -- call analytical criteria
34668 --
34669
34670 --
34671 -- call description
34672 --
34673 -- No description or it is inherited.
34674 --
34675 -- call ADRs
34676 -- Bug 4922099
34677 --
34678 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34679 (NVL(l_actual_upg_option, 'N') = 'O') OR
34680 (NVL(l_enc_upg_option, 'N') = 'O')
34681 )
34682 THEN
34683 NULL;
34684 --
34685 --
34686
34687 l_ccid := AcctDerRule_4(
34688 p_application_id => p_application_id
34689 , p_ae_header_id => l_ae_header_id
34690 , p_source_4 => p_source_4
34691 , x_transaction_coa_id => l_adr_transaction_coa_id
34692 , x_accounting_coa_id => l_adr_accounting_coa_id
34693 , x_value_type_code => l_adr_value_type_code
34694 , p_side => 'NA'
34695 );
34696
34697 xla_ae_lines_pkg.set_ccid(
34698 p_code_combination_id => l_ccid
34699 , p_value_type_code => l_adr_value_type_code
34700 , p_transaction_coa_id => l_adr_transaction_coa_id
34701 , p_accounting_coa_id => l_adr_accounting_coa_id
34702 , p_adr_code => 'CST_DEFAULT'
34703 , p_adr_type_code => 'S'
34704 , p_component_type => l_component_type
34705 , p_component_code => l_component_code
34706 , p_component_type_code => l_component_type_code
34707 , p_component_appl_id => l_component_appl_id
34708 , p_amb_context_code => l_amb_context_code
34709 , p_side => 'NA'
34710 );
34711
34712
34713 --
34714 --
34715 END IF;
34716 --
34717 -- Bug 4922099
34718 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34719 (NVL(l_enc_upg_option, 'N') = 'O')
34720 ) AND
34721 (l_bflow_method_code = 'PRIOR_ENTRY')
34722 )
34723 THEN
34724 IF
34725 --
34726 1 = 2
34727 --
34728 THEN
34729 xla_accounting_err_pkg.build_message
34730 (p_appli_s_name => 'XLA'
34731 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34732 ,p_token_1 => 'LINE_NUMBER'
34733 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
34734 ,p_token_2 => 'LINE_TYPE_NAME'
34735 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
34736 l_component_type
34737 ,l_component_code
34738 ,l_component_type_code
34739 ,l_component_appl_id
34740 ,l_amb_context_code
34741 ,l_entity_code
34742 ,l_event_class_code
34743 )
34744 ,p_token_3 => 'OWNER'
34745 ,p_value_3 => xla_lookups_pkg.get_meaning(
34746 p_lookup_type => 'XLA_OWNER_TYPE'
34747 ,p_lookup_code => l_component_type_code
34748 )
34749 ,p_token_4 => 'PRODUCT_NAME'
34750 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34751 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34752 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34753 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34754 ,p_ae_header_id => NULL
34755 );
34756
34757 IF (C_LEVEL_ERROR>= g_log_level) THEN
34758 trace
34759 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34760 ,p_level => C_LEVEL_ERROR
34761 ,p_module => l_log_module);
34762 END IF;
34763 END IF;
34764 END IF;
34765 --
34766 --
34767 ------------------------------------------------------------------------------------------------
34768 -- 4219869 Business Flow
34769 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34770 -- Prior Entry. Currently, the following code is always generated.
34771 ------------------------------------------------------------------------------------------------
34772 XLA_AE_LINES_PKG.ValidateCurrentLine;
34773
34774 ------------------------------------------------------------------------------------
34775 -- 4219869 Business Flow
34776 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34777 ------------------------------------------------------------------------------------
34778 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34779
34780 ----------------------------------------------------------------------------------
34781 -- 4219869 Business Flow
34782 -- Update journal entry status -- Need to generate this within IF <condition>
34783 ----------------------------------------------------------------------------------
34784 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34785 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34786 ,p_balance_type_code => l_balance_type_code
34787 );
34788
34789 -------------------------------------------------------------------------------------------
34790 -- 4262811 - Generate the Accrual Reversal lines
34791 -------------------------------------------------------------------------------------------
34792 BEGIN
34793 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34794 (g_array_event(p_event_id).array_value_num('header_index'));
34795 IF l_acc_rev_flag IS NULL THEN
34796 l_acc_rev_flag := 'N';
34797 END IF;
34798 EXCEPTION
34799 WHEN OTHERS THEN
34800 l_acc_rev_flag := 'N';
34801 END;
34802 --
34803 IF (l_acc_rev_flag = 'Y') THEN
34804
34805 -- 4645092 ------------------------------------------------------------------------------
34806 -- To allow MPA report to determine if it should generate report process
34807 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34808 ------------------------------------------------------------------------------------------
34809
34810 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34811 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34812 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
34813 -- call ADRs
34814 -- Bug 4922099
34815 --
34816 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34817 (NVL(l_actual_upg_option, 'N') = 'O') OR
34818 (NVL(l_enc_upg_option, 'N') = 'O')
34819 )
34820 THEN
34821 NULL;
34822 --
34823 --
34824
34825 l_ccid := AcctDerRule_4(
34826 p_application_id => p_application_id
34827 , p_ae_header_id => l_ae_header_id
34828 , p_source_4 => p_source_4
34829 , x_transaction_coa_id => l_adr_transaction_coa_id
34830 , x_accounting_coa_id => l_adr_accounting_coa_id
34831 , x_value_type_code => l_adr_value_type_code
34832 , p_side => 'NA'
34833 );
34834
34835 xla_ae_lines_pkg.set_ccid(
34836 p_code_combination_id => l_ccid
34837 , p_value_type_code => l_adr_value_type_code
34838 , p_transaction_coa_id => l_adr_transaction_coa_id
34839 , p_accounting_coa_id => l_adr_accounting_coa_id
34840 , p_adr_code => 'CST_DEFAULT'
34841 , p_adr_type_code => 'S'
34842 , p_component_type => l_component_type
34843 , p_component_code => l_component_code
34844 , p_component_type_code => l_component_type_code
34845 , p_component_appl_id => l_component_appl_id
34846 , p_amb_context_code => l_amb_context_code
34847 , p_side => 'NA'
34848 );
34849
34850
34851 --
34852 --
34853 END IF;
34854
34855 --
34856 -- Update the line information that should be overwritten
34857 --
34858 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34859 p_header_num => 1);
34860 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
34861
34862 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34863
34864 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
34865 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34866 END IF;
34867
34868 --
34869 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34870 --
34871 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34872 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
34873 ELSE
34874 ---------------------------------------------------------------------------------------------------
34875 -- 4262811a Switch Sign
34876 ---------------------------------------------------------------------------------------------------
34877 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
34878 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34879 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34880 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34881 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34882 -- 5132302
34883 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34884 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34885
34886 END IF;
34887
34888 -- 4955764
34889 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34890 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34891
34892
34893 XLA_AE_LINES_PKG.ValidateCurrentLine;
34894 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34895
34896 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34897 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34898 ,p_balance_type_code => l_balance_type_code);
34899
34900 END IF;
34901
34902 -----------------------------------------------------------------------------------------
34903 -- 4262811 Multiperiod Accounting
34904 -----------------------------------------------------------------------------------------
34905 -- No MPA option is assigned.
34906
34907
34908 END IF;
34909 END IF;
34910 --
34911
34912 --
34913 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34914 trace
34915 (p_msg => 'END of AcctLineType_65'
34916 ,p_level => C_LEVEL_PROCEDURE
34917 ,p_module => l_log_module);
34918 END IF;
34919 --
34920 EXCEPTION
34921 WHEN xla_exceptions_pkg.application_exception THEN
34922 RAISE;
34923 WHEN OTHERS THEN
34924 xla_exceptions_pkg.raise_message
34925 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_65');
34926 END AcctLineType_65;
34927 --
34928
34929 ---------------------------------------
34930 --
34931 -- PRIVATE FUNCTION
34932 -- AcctLineType_66
34933 --
34934 ---------------------------------------
34935 PROCEDURE AcctLineType_66 (
34936 p_application_id IN NUMBER
34937 ,p_event_id IN NUMBER
34938 ,p_calculate_acctd_flag IN VARCHAR2
34939 ,p_calculate_g_l_flag IN VARCHAR2
34940 ,p_actual_flag IN OUT VARCHAR2
34941 ,p_balance_type_code OUT VARCHAR2
34942 ,p_gain_or_loss_ref OUT VARCHAR2
34943
34944 --Cost Management Default Account
34945 , p_source_4 IN NUMBER
34946 --DISTRIBUTION_IDENTIFIER
34947 , p_source_11 IN NUMBER
34948 --Distribution Type
34949 , p_source_12 IN VARCHAR2
34950 , p_source_12_meaning IN VARCHAR2
34951 --Entered Currency Code
34952 , p_source_15 IN VARCHAR2
34953 --Entered Amount
34954 , p_source_18 IN NUMBER
34955 --Currency Conversion Date
34956 , p_source_19 IN DATE
34957 --Currency Conversion Rate
34958 , p_source_20 IN NUMBER
34959 --Currency Conversion Type
34960 , p_source_21 IN VARCHAR2
34961 --Accounted Amount
34962 , p_source_22 IN NUMBER
34963 --Accounting Line Type
34964 , p_source_24 IN NUMBER
34965 )
34966 IS
34967
34968 l_component_type VARCHAR2(80);
34969 l_component_code VARCHAR2(30);
34970 l_component_type_code VARCHAR2(1);
34971 l_component_appl_id INTEGER;
34972 l_amb_context_code VARCHAR2(30);
34973 l_entity_code VARCHAR2(30);
34974 l_event_class_code VARCHAR2(30);
34975 l_ae_header_id NUMBER;
34976 l_event_type_code VARCHAR2(30);
34977 l_line_definition_code VARCHAR2(30);
34978 l_line_definition_owner_code VARCHAR2(1);
34979 --
34980 -- adr variables
34981 l_segment VARCHAR2(30);
34982 l_ccid NUMBER;
34983 l_adr_transaction_coa_id NUMBER;
34984 l_adr_accounting_coa_id NUMBER;
34985 l_adr_flexfield_segment_code VARCHAR2(30);
34986 l_adr_flex_value_set_id NUMBER;
34987 l_adr_value_type_code VARCHAR2(30);
34988 l_adr_value_combination_id NUMBER;
34989 l_adr_value_segment_code VARCHAR2(30);
34990
34991 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
34992 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
34993 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
34994 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
34995
34996 -- 4262811 Variables ------------------------------------------------------------------------------------------
34997 l_entered_amt_idx NUMBER;
34998 l_accted_amt_idx NUMBER;
34999 l_acc_rev_flag VARCHAR2(1);
35000 l_accrual_line_num NUMBER;
35001 l_tmp_amt NUMBER;
35002 l_acc_rev_natural_side_code VARCHAR2(1);
35003
35004 l_num_entries NUMBER;
35005 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
35006 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
35007 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
35008 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
35009 l_recog_line_1 NUMBER;
35010 l_recog_line_2 NUMBER;
35011
35012 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
35013 l_bflow_applied_to_amt NUMBER; -- 5132302
35014 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
35015
35016 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35017
35018 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
35019 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
35020
35021 ---------------------------------------------------------------------------------------------------------------
35022
35023
35024 --
35025 -- bulk performance
35026 --
35027 l_balance_type_code VARCHAR2(1);
35028 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
35029 l_log_module VARCHAR2(240);
35030
35031 --
35032 -- Upgrade strategy
35033 --
35034 l_actual_upg_option VARCHAR2(1);
35035 l_enc_upg_option VARCHAR2(1);
35036
35037 --
35038 BEGIN
35039 --
35040 IF g_log_enabled THEN
35041 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
35042 END IF;
35043 --
35044 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35045
35046 trace
35047 (p_msg => 'BEGIN of AcctLineType_66'
35048 ,p_level => C_LEVEL_PROCEDURE
35049 ,p_module => l_log_module);
35050
35051 END IF;
35052 --
35053 l_component_type := 'AMB_JLT';
35054 l_component_code := 'INTERORG_FREIGHT_CHARGE';
35055 l_component_type_code := 'S';
35056 l_component_appl_id := 707;
35057 l_amb_context_code := 'DEFAULT';
35058 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
35059 l_event_class_code := 'USER_DEFINE';
35060 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
35061 l_line_definition_owner_code := 'S';
35062 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
35063 --
35064 l_balance_type_code := 'A';
35065 l_segment := NULL;
35066 l_ccid := NULL;
35067 l_adr_transaction_coa_id := NULL;
35068 l_adr_accounting_coa_id := NULL;
35069 l_adr_flexfield_segment_code := NULL;
35070 l_adr_flex_value_set_id := NULL;
35071 l_adr_value_type_code := NULL;
35072 l_adr_value_combination_id := NULL;
35073 l_adr_value_segment_code := NULL;
35074
35075 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
35076 l_bflow_class_code := ''; -- 4219869 Business Flow
35077 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
35078 l_budgetary_control_flag := 'N';
35079
35080 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35081 l_bflow_applied_to_amt := NULL; -- 5132302
35082 l_entered_amt_idx := NULL; -- 4262811
35083 l_accted_amt_idx := NULL; -- 4262811
35084 l_acc_rev_flag := NULL; -- 4262811
35085 l_accrual_line_num := NULL; -- 4262811
35086 l_tmp_amt := NULL; -- 4262811
35087 --
35088
35089 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35090 l_balance_type_code <> 'B' THEN
35091 IF NVL(p_source_24,9E125) = 12
35092 THEN
35093
35094 --
35095 XLA_AE_LINES_PKG.SetNewLine;
35096
35097 p_balance_type_code := l_balance_type_code;
35098 -- set the flag so later we will know whether the gain loss line needs to be created
35099
35100 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35101 p_actual_flag :='A';
35102 END IF;
35103
35104 --
35105 -- bulk performance
35106 --
35107 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35108 p_header_num => 0); -- 4262811
35109 --
35110 -- set accounting line options
35111 --
35112 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35113 p_natural_side_code => 'D'
35114 , p_gain_or_loss_flag => 'N'
35115 , p_gl_transfer_mode_code => 'S'
35116 , p_acct_entry_type_code => 'A'
35117 , p_switch_side_flag => 'Y'
35118 , p_merge_duplicate_code => 'N'
35119 );
35120 --
35121 l_acc_rev_natural_side_code := 'C'; -- 4262811
35122 --
35123 --
35124 -- set accounting line type info
35125 --
35126 xla_ae_lines_pkg.SetAcctLineType
35127 (p_component_type => l_component_type
35128 ,p_event_type_code => l_event_type_code
35129 ,p_line_definition_owner_code => l_line_definition_owner_code
35130 ,p_line_definition_code => l_line_definition_code
35131 ,p_accounting_line_code => l_component_code
35132 ,p_accounting_line_type_code => l_component_type_code
35133 ,p_accounting_line_appl_id => l_component_appl_id
35134 ,p_amb_context_code => l_amb_context_code
35135 ,p_entity_code => l_entity_code
35136 ,p_event_class_code => l_event_class_code);
35137 --
35138 -- set accounting class
35139 --
35140 xla_ae_lines_pkg.SetAcctClass(
35141 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
35142 , p_ae_header_id => l_ae_header_id
35143 );
35144
35145 --
35146 -- set rounding class
35147 --
35148 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35149 'INTERORG_FREIGHT_CHARGE';
35150
35151 --
35152 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35153 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35154 --
35155 -- bulk performance
35156 --
35157 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35158
35159 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35160 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35161
35162 -- 4955764
35163 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35164 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35165
35166 -- 4458381 Public Sector Enh
35167
35168 --
35169 -- set accounting attributes for the line type
35170 --
35171 l_entered_amt_idx := 3;
35172 l_accted_amt_idx := 8;
35173 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35174 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35175 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
35176 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35177 l_rec_acct_attrs.array_char_value(2) := p_source_12;
35178 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35179 l_rec_acct_attrs.array_num_value(3) := p_source_18;
35180 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35181 l_rec_acct_attrs.array_char_value(4) := p_source_15;
35182 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35183 l_rec_acct_attrs.array_date_value(5) := p_source_19;
35184 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35185 l_rec_acct_attrs.array_num_value(6) := p_source_20;
35186 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35187 l_rec_acct_attrs.array_char_value(7) := p_source_21;
35188 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35189 l_rec_acct_attrs.array_num_value(8) := p_source_22;
35190
35191 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35192 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35193
35194 ---------------------------------------------------------------------------------------------------------------
35195 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35196 ---------------------------------------------------------------------------------------------------------------
35197 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35198
35199 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35200 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35201
35202 IF xla_accounting_cache_pkg.GetValueChar
35203 (p_source_code => 'LEDGER_CATEGORY_CODE'
35204 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35205 AND l_bflow_method_code = 'PRIOR_ENTRY'
35206 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35207 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35208 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35209 )
35210 THEN
35211 xla_ae_lines_pkg.BflowUpgEntry
35212 (p_business_method_code => l_bflow_method_code
35213 ,p_business_class_code => l_bflow_class_code
35214 ,p_balance_type => l_balance_type_code);
35215 ELSE
35216 NULL;
35217 -- No business flow processing for business flow method of NONE.
35218 END IF;
35219
35220 --
35221 -- call analytical criteria
35222 --
35223
35224 --
35225 -- call description
35226 --
35227 -- No description or it is inherited.
35228 --
35229 -- call ADRs
35230 -- Bug 4922099
35231 --
35232 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35233 (NVL(l_actual_upg_option, 'N') = 'O') OR
35234 (NVL(l_enc_upg_option, 'N') = 'O')
35235 )
35236 THEN
35237 NULL;
35238 --
35239 --
35240
35241 l_ccid := AcctDerRule_4(
35242 p_application_id => p_application_id
35243 , p_ae_header_id => l_ae_header_id
35244 , p_source_4 => p_source_4
35245 , x_transaction_coa_id => l_adr_transaction_coa_id
35246 , x_accounting_coa_id => l_adr_accounting_coa_id
35247 , x_value_type_code => l_adr_value_type_code
35248 , p_side => 'NA'
35249 );
35250
35251 xla_ae_lines_pkg.set_ccid(
35252 p_code_combination_id => l_ccid
35253 , p_value_type_code => l_adr_value_type_code
35254 , p_transaction_coa_id => l_adr_transaction_coa_id
35255 , p_accounting_coa_id => l_adr_accounting_coa_id
35256 , p_adr_code => 'CST_DEFAULT'
35257 , p_adr_type_code => 'S'
35258 , p_component_type => l_component_type
35259 , p_component_code => l_component_code
35260 , p_component_type_code => l_component_type_code
35261 , p_component_appl_id => l_component_appl_id
35262 , p_amb_context_code => l_amb_context_code
35263 , p_side => 'NA'
35264 );
35265
35266
35267 --
35268 --
35269 END IF;
35270 --
35271 -- Bug 4922099
35272 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35273 (NVL(l_enc_upg_option, 'N') = 'O')
35274 ) AND
35275 (l_bflow_method_code = 'PRIOR_ENTRY')
35276 )
35277 THEN
35278 IF
35279 --
35280 1 = 2
35281 --
35282 THEN
35283 xla_accounting_err_pkg.build_message
35284 (p_appli_s_name => 'XLA'
35285 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35286 ,p_token_1 => 'LINE_NUMBER'
35287 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
35288 ,p_token_2 => 'LINE_TYPE_NAME'
35289 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
35290 l_component_type
35291 ,l_component_code
35292 ,l_component_type_code
35293 ,l_component_appl_id
35294 ,l_amb_context_code
35295 ,l_entity_code
35296 ,l_event_class_code
35297 )
35298 ,p_token_3 => 'OWNER'
35299 ,p_value_3 => xla_lookups_pkg.get_meaning(
35300 p_lookup_type => 'XLA_OWNER_TYPE'
35301 ,p_lookup_code => l_component_type_code
35302 )
35303 ,p_token_4 => 'PRODUCT_NAME'
35304 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35305 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35306 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35307 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35308 ,p_ae_header_id => NULL
35309 );
35310
35311 IF (C_LEVEL_ERROR>= g_log_level) THEN
35312 trace
35313 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35314 ,p_level => C_LEVEL_ERROR
35315 ,p_module => l_log_module);
35316 END IF;
35317 END IF;
35318 END IF;
35319 --
35320 --
35321 ------------------------------------------------------------------------------------------------
35322 -- 4219869 Business Flow
35323 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35324 -- Prior Entry. Currently, the following code is always generated.
35325 ------------------------------------------------------------------------------------------------
35326 XLA_AE_LINES_PKG.ValidateCurrentLine;
35327
35328 ------------------------------------------------------------------------------------
35329 -- 4219869 Business Flow
35330 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35331 ------------------------------------------------------------------------------------
35332 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35333
35334 ----------------------------------------------------------------------------------
35335 -- 4219869 Business Flow
35336 -- Update journal entry status -- Need to generate this within IF <condition>
35337 ----------------------------------------------------------------------------------
35338 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35339 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35340 ,p_balance_type_code => l_balance_type_code
35341 );
35342
35343 -------------------------------------------------------------------------------------------
35344 -- 4262811 - Generate the Accrual Reversal lines
35345 -------------------------------------------------------------------------------------------
35346 BEGIN
35347 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35348 (g_array_event(p_event_id).array_value_num('header_index'));
35349 IF l_acc_rev_flag IS NULL THEN
35350 l_acc_rev_flag := 'N';
35351 END IF;
35352 EXCEPTION
35353 WHEN OTHERS THEN
35354 l_acc_rev_flag := 'N';
35355 END;
35356 --
35357 IF (l_acc_rev_flag = 'Y') THEN
35358
35359 -- 4645092 ------------------------------------------------------------------------------
35360 -- To allow MPA report to determine if it should generate report process
35361 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35362 ------------------------------------------------------------------------------------------
35363
35364 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35365 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35366 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
35367 -- call ADRs
35368 -- Bug 4922099
35369 --
35370 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35371 (NVL(l_actual_upg_option, 'N') = 'O') OR
35372 (NVL(l_enc_upg_option, 'N') = 'O')
35373 )
35374 THEN
35375 NULL;
35376 --
35377 --
35378
35379 l_ccid := AcctDerRule_4(
35380 p_application_id => p_application_id
35381 , p_ae_header_id => l_ae_header_id
35382 , p_source_4 => p_source_4
35383 , x_transaction_coa_id => l_adr_transaction_coa_id
35384 , x_accounting_coa_id => l_adr_accounting_coa_id
35385 , x_value_type_code => l_adr_value_type_code
35386 , p_side => 'NA'
35387 );
35388
35389 xla_ae_lines_pkg.set_ccid(
35390 p_code_combination_id => l_ccid
35391 , p_value_type_code => l_adr_value_type_code
35392 , p_transaction_coa_id => l_adr_transaction_coa_id
35393 , p_accounting_coa_id => l_adr_accounting_coa_id
35394 , p_adr_code => 'CST_DEFAULT'
35395 , p_adr_type_code => 'S'
35396 , p_component_type => l_component_type
35397 , p_component_code => l_component_code
35398 , p_component_type_code => l_component_type_code
35399 , p_component_appl_id => l_component_appl_id
35400 , p_amb_context_code => l_amb_context_code
35401 , p_side => 'NA'
35402 );
35403
35404
35405 --
35406 --
35407 END IF;
35408
35409 --
35410 -- Update the line information that should be overwritten
35411 --
35412 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35413 p_header_num => 1);
35414 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
35415
35416 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35417
35418 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
35419 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35420 END IF;
35421
35422 --
35423 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35424 --
35425 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35426 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
35427 ELSE
35428 ---------------------------------------------------------------------------------------------------
35429 -- 4262811a Switch Sign
35430 ---------------------------------------------------------------------------------------------------
35431 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
35432 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35433 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35434 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35435 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35436 -- 5132302
35437 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35438 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35439
35440 END IF;
35441
35442 -- 4955764
35443 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35444 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35445
35446
35447 XLA_AE_LINES_PKG.ValidateCurrentLine;
35448 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35449
35450 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35451 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35452 ,p_balance_type_code => l_balance_type_code);
35453
35454 END IF;
35455
35456 -----------------------------------------------------------------------------------------
35457 -- 4262811 Multiperiod Accounting
35458 -----------------------------------------------------------------------------------------
35459 -- No MPA option is assigned.
35460
35461
35462 END IF;
35463 END IF;
35464 --
35465
35466 --
35467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35468 trace
35469 (p_msg => 'END of AcctLineType_66'
35470 ,p_level => C_LEVEL_PROCEDURE
35471 ,p_module => l_log_module);
35472 END IF;
35473 --
35474 EXCEPTION
35475 WHEN xla_exceptions_pkg.application_exception THEN
35476 RAISE;
35477 WHEN OTHERS THEN
35478 xla_exceptions_pkg.raise_message
35479 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_66');
35480 END AcctLineType_66;
35481 --
35482
35483 ---------------------------------------
35484 --
35485 -- PRIVATE FUNCTION
35486 -- AcctLineType_67
35487 --
35488 ---------------------------------------
35489 PROCEDURE AcctLineType_67 (
35490 p_application_id IN NUMBER
35491 ,p_event_id IN NUMBER
35492 ,p_calculate_acctd_flag IN VARCHAR2
35493 ,p_calculate_g_l_flag IN VARCHAR2
35494 ,p_actual_flag IN OUT VARCHAR2
35495 ,p_balance_type_code OUT VARCHAR2
35496 ,p_gain_or_loss_ref OUT VARCHAR2
35497
35498 --Cost Management Default Account
35499 , p_source_4 IN NUMBER
35500 --DISTRIBUTION_IDENTIFIER
35501 , p_source_11 IN NUMBER
35502 --Distribution Type
35503 , p_source_12 IN VARCHAR2
35504 , p_source_12_meaning IN VARCHAR2
35505 --Entered Currency Code
35506 , p_source_15 IN VARCHAR2
35507 --Entered Amount
35508 , p_source_18 IN NUMBER
35509 --Currency Conversion Date
35510 , p_source_19 IN DATE
35511 --Currency Conversion Rate
35512 , p_source_20 IN NUMBER
35513 --Currency Conversion Type
35514 , p_source_21 IN VARCHAR2
35515 --Accounted Amount
35516 , p_source_22 IN NUMBER
35517 --Accounting Line Type
35518 , p_source_24 IN NUMBER
35519 )
35520 IS
35521
35522 l_component_type VARCHAR2(80);
35523 l_component_code VARCHAR2(30);
35524 l_component_type_code VARCHAR2(1);
35525 l_component_appl_id INTEGER;
35526 l_amb_context_code VARCHAR2(30);
35527 l_entity_code VARCHAR2(30);
35528 l_event_class_code VARCHAR2(30);
35529 l_ae_header_id NUMBER;
35530 l_event_type_code VARCHAR2(30);
35531 l_line_definition_code VARCHAR2(30);
35532 l_line_definition_owner_code VARCHAR2(1);
35533 --
35534 -- adr variables
35535 l_segment VARCHAR2(30);
35536 l_ccid NUMBER;
35537 l_adr_transaction_coa_id NUMBER;
35538 l_adr_accounting_coa_id NUMBER;
35539 l_adr_flexfield_segment_code VARCHAR2(30);
35540 l_adr_flex_value_set_id NUMBER;
35541 l_adr_value_type_code VARCHAR2(30);
35542 l_adr_value_combination_id NUMBER;
35543 l_adr_value_segment_code VARCHAR2(30);
35544
35545 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
35546 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
35547 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
35548 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
35549
35550 -- 4262811 Variables ------------------------------------------------------------------------------------------
35551 l_entered_amt_idx NUMBER;
35552 l_accted_amt_idx NUMBER;
35553 l_acc_rev_flag VARCHAR2(1);
35554 l_accrual_line_num NUMBER;
35555 l_tmp_amt NUMBER;
35556 l_acc_rev_natural_side_code VARCHAR2(1);
35557
35558 l_num_entries NUMBER;
35559 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
35560 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
35561 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
35562 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
35563 l_recog_line_1 NUMBER;
35564 l_recog_line_2 NUMBER;
35565
35566 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
35567 l_bflow_applied_to_amt NUMBER; -- 5132302
35568 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
35569
35570 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35571
35572 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
35573 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
35574
35575 ---------------------------------------------------------------------------------------------------------------
35576
35577
35578 --
35579 -- bulk performance
35580 --
35581 l_balance_type_code VARCHAR2(1);
35582 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
35583 l_log_module VARCHAR2(240);
35584
35585 --
35586 -- Upgrade strategy
35587 --
35588 l_actual_upg_option VARCHAR2(1);
35589 l_enc_upg_option VARCHAR2(1);
35590
35591 --
35592 BEGIN
35593 --
35594 IF g_log_enabled THEN
35595 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
35596 END IF;
35597 --
35598 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35599
35600 trace
35601 (p_msg => 'BEGIN of AcctLineType_67'
35602 ,p_level => C_LEVEL_PROCEDURE
35603 ,p_module => l_log_module);
35604
35605 END IF;
35606 --
35607 l_component_type := 'AMB_JLT';
35608 l_component_code := 'INTERORG_FREIGHT_CHARGE';
35609 l_component_type_code := 'S';
35610 l_component_appl_id := 707;
35611 l_amb_context_code := 'DEFAULT';
35612 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
35613 l_event_class_code := 'USER_DEFINE';
35614 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
35615 l_line_definition_owner_code := 'S';
35616 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
35617 --
35618 l_balance_type_code := 'A';
35619 l_segment := NULL;
35620 l_ccid := NULL;
35621 l_adr_transaction_coa_id := NULL;
35622 l_adr_accounting_coa_id := NULL;
35623 l_adr_flexfield_segment_code := NULL;
35624 l_adr_flex_value_set_id := NULL;
35625 l_adr_value_type_code := NULL;
35626 l_adr_value_combination_id := NULL;
35627 l_adr_value_segment_code := NULL;
35628
35629 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
35630 l_bflow_class_code := ''; -- 4219869 Business Flow
35631 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
35632 l_budgetary_control_flag := 'N';
35633
35634 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35635 l_bflow_applied_to_amt := NULL; -- 5132302
35636 l_entered_amt_idx := NULL; -- 4262811
35637 l_accted_amt_idx := NULL; -- 4262811
35638 l_acc_rev_flag := NULL; -- 4262811
35639 l_accrual_line_num := NULL; -- 4262811
35640 l_tmp_amt := NULL; -- 4262811
35641 --
35642
35643 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35644 l_balance_type_code <> 'B' THEN
35645 IF NVL(p_source_24,9E125) = 12
35646 THEN
35647
35648 --
35649 XLA_AE_LINES_PKG.SetNewLine;
35650
35651 p_balance_type_code := l_balance_type_code;
35652 -- set the flag so later we will know whether the gain loss line needs to be created
35653
35654 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35655 p_actual_flag :='A';
35656 END IF;
35657
35658 --
35659 -- bulk performance
35660 --
35661 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35662 p_header_num => 0); -- 4262811
35663 --
35664 -- set accounting line options
35665 --
35666 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35667 p_natural_side_code => 'D'
35668 , p_gain_or_loss_flag => 'N'
35669 , p_gl_transfer_mode_code => 'S'
35670 , p_acct_entry_type_code => 'A'
35671 , p_switch_side_flag => 'Y'
35672 , p_merge_duplicate_code => 'N'
35673 );
35674 --
35675 l_acc_rev_natural_side_code := 'C'; -- 4262811
35676 --
35677 --
35678 -- set accounting line type info
35679 --
35680 xla_ae_lines_pkg.SetAcctLineType
35681 (p_component_type => l_component_type
35682 ,p_event_type_code => l_event_type_code
35683 ,p_line_definition_owner_code => l_line_definition_owner_code
35684 ,p_line_definition_code => l_line_definition_code
35685 ,p_accounting_line_code => l_component_code
35686 ,p_accounting_line_type_code => l_component_type_code
35687 ,p_accounting_line_appl_id => l_component_appl_id
35688 ,p_amb_context_code => l_amb_context_code
35689 ,p_entity_code => l_entity_code
35690 ,p_event_class_code => l_event_class_code);
35691 --
35692 -- set accounting class
35693 --
35694 xla_ae_lines_pkg.SetAcctClass(
35695 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
35696 , p_ae_header_id => l_ae_header_id
35697 );
35698
35699 --
35700 -- set rounding class
35701 --
35702 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35703 'INTERORG_FREIGHT_CHARGE';
35704
35705 --
35706 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35707 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35708 --
35709 -- bulk performance
35710 --
35711 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35712
35713 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35714 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35715
35716 -- 4955764
35717 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35718 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35719
35720 -- 4458381 Public Sector Enh
35721
35722 --
35723 -- set accounting attributes for the line type
35724 --
35725 l_entered_amt_idx := 3;
35726 l_accted_amt_idx := 8;
35727 l_bflow_applied_to_amt_idx := NULL; -- 5132302
35728 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35729 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
35730 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35731 l_rec_acct_attrs.array_char_value(2) := p_source_12;
35732 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35733 l_rec_acct_attrs.array_num_value(3) := p_source_18;
35734 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35735 l_rec_acct_attrs.array_char_value(4) := p_source_15;
35736 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35737 l_rec_acct_attrs.array_date_value(5) := p_source_19;
35738 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35739 l_rec_acct_attrs.array_num_value(6) := p_source_20;
35740 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35741 l_rec_acct_attrs.array_char_value(7) := p_source_21;
35742 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35743 l_rec_acct_attrs.array_num_value(8) := p_source_22;
35744
35745 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35746 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35747
35748 ---------------------------------------------------------------------------------------------------------------
35749 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35750 ---------------------------------------------------------------------------------------------------------------
35751 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35752
35753 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35754 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35755
35756 IF xla_accounting_cache_pkg.GetValueChar
35757 (p_source_code => 'LEDGER_CATEGORY_CODE'
35758 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35759 AND l_bflow_method_code = 'PRIOR_ENTRY'
35760 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35761 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35762 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35763 )
35764 THEN
35765 xla_ae_lines_pkg.BflowUpgEntry
35766 (p_business_method_code => l_bflow_method_code
35767 ,p_business_class_code => l_bflow_class_code
35768 ,p_balance_type => l_balance_type_code);
35769 ELSE
35770 NULL;
35771 -- No business flow processing for business flow method of NONE.
35772 END IF;
35773
35774 --
35775 -- call analytical criteria
35776 --
35777
35778 --
35779 -- call description
35780 --
35781 -- No description or it is inherited.
35782 --
35783 -- call ADRs
35784 -- Bug 4922099
35785 --
35786 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35787 (NVL(l_actual_upg_option, 'N') = 'O') OR
35788 (NVL(l_enc_upg_option, 'N') = 'O')
35789 )
35790 THEN
35791 NULL;
35792 --
35793 --
35794
35795 l_ccid := AcctDerRule_4(
35796 p_application_id => p_application_id
35797 , p_ae_header_id => l_ae_header_id
35798 , p_source_4 => p_source_4
35799 , x_transaction_coa_id => l_adr_transaction_coa_id
35800 , x_accounting_coa_id => l_adr_accounting_coa_id
35801 , x_value_type_code => l_adr_value_type_code
35802 , p_side => 'NA'
35803 );
35804
35805 xla_ae_lines_pkg.set_ccid(
35806 p_code_combination_id => l_ccid
35807 , p_value_type_code => l_adr_value_type_code
35808 , p_transaction_coa_id => l_adr_transaction_coa_id
35809 , p_accounting_coa_id => l_adr_accounting_coa_id
35810 , p_adr_code => 'CST_DEFAULT'
35811 , p_adr_type_code => 'S'
35812 , p_component_type => l_component_type
35813 , p_component_code => l_component_code
35814 , p_component_type_code => l_component_type_code
35815 , p_component_appl_id => l_component_appl_id
35816 , p_amb_context_code => l_amb_context_code
35817 , p_side => 'NA'
35818 );
35819
35820
35821 --
35822 --
35823 END IF;
35824 --
35825 -- Bug 4922099
35826 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35827 (NVL(l_enc_upg_option, 'N') = 'O')
35828 ) AND
35829 (l_bflow_method_code = 'PRIOR_ENTRY')
35830 )
35831 THEN
35832 IF
35833 --
35834 1 = 2
35835 --
35836 THEN
35837 xla_accounting_err_pkg.build_message
35838 (p_appli_s_name => 'XLA'
35839 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35840 ,p_token_1 => 'LINE_NUMBER'
35841 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
35842 ,p_token_2 => 'LINE_TYPE_NAME'
35843 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
35844 l_component_type
35845 ,l_component_code
35846 ,l_component_type_code
35847 ,l_component_appl_id
35848 ,l_amb_context_code
35849 ,l_entity_code
35850 ,l_event_class_code
35851 )
35852 ,p_token_3 => 'OWNER'
35853 ,p_value_3 => xla_lookups_pkg.get_meaning(
35854 p_lookup_type => 'XLA_OWNER_TYPE'
35855 ,p_lookup_code => l_component_type_code
35856 )
35857 ,p_token_4 => 'PRODUCT_NAME'
35858 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35859 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35860 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35861 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35862 ,p_ae_header_id => NULL
35863 );
35864
35865 IF (C_LEVEL_ERROR>= g_log_level) THEN
35866 trace
35867 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35868 ,p_level => C_LEVEL_ERROR
35869 ,p_module => l_log_module);
35870 END IF;
35871 END IF;
35872 END IF;
35873 --
35874 --
35875 ------------------------------------------------------------------------------------------------
35876 -- 4219869 Business Flow
35877 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35878 -- Prior Entry. Currently, the following code is always generated.
35879 ------------------------------------------------------------------------------------------------
35880 XLA_AE_LINES_PKG.ValidateCurrentLine;
35881
35882 ------------------------------------------------------------------------------------
35883 -- 4219869 Business Flow
35884 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35885 ------------------------------------------------------------------------------------
35886 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35887
35888 ----------------------------------------------------------------------------------
35889 -- 4219869 Business Flow
35890 -- Update journal entry status -- Need to generate this within IF <condition>
35891 ----------------------------------------------------------------------------------
35892 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35893 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35894 ,p_balance_type_code => l_balance_type_code
35895 );
35896
35897 -------------------------------------------------------------------------------------------
35898 -- 4262811 - Generate the Accrual Reversal lines
35899 -------------------------------------------------------------------------------------------
35900 BEGIN
35901 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35902 (g_array_event(p_event_id).array_value_num('header_index'));
35903 IF l_acc_rev_flag IS NULL THEN
35904 l_acc_rev_flag := 'N';
35905 END IF;
35906 EXCEPTION
35907 WHEN OTHERS THEN
35908 l_acc_rev_flag := 'N';
35909 END;
35910 --
35911 IF (l_acc_rev_flag = 'Y') THEN
35912
35913 -- 4645092 ------------------------------------------------------------------------------
35914 -- To allow MPA report to determine if it should generate report process
35915 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35916 ------------------------------------------------------------------------------------------
35917
35918 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35919 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35920 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
35921 -- call ADRs
35922 -- Bug 4922099
35923 --
35924 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35925 (NVL(l_actual_upg_option, 'N') = 'O') OR
35926 (NVL(l_enc_upg_option, 'N') = 'O')
35927 )
35928 THEN
35929 NULL;
35930 --
35931 --
35932
35933 l_ccid := AcctDerRule_4(
35934 p_application_id => p_application_id
35935 , p_ae_header_id => l_ae_header_id
35936 , p_source_4 => p_source_4
35937 , x_transaction_coa_id => l_adr_transaction_coa_id
35938 , x_accounting_coa_id => l_adr_accounting_coa_id
35939 , x_value_type_code => l_adr_value_type_code
35940 , p_side => 'NA'
35941 );
35942
35943 xla_ae_lines_pkg.set_ccid(
35944 p_code_combination_id => l_ccid
35945 , p_value_type_code => l_adr_value_type_code
35946 , p_transaction_coa_id => l_adr_transaction_coa_id
35947 , p_accounting_coa_id => l_adr_accounting_coa_id
35948 , p_adr_code => 'CST_DEFAULT'
35949 , p_adr_type_code => 'S'
35950 , p_component_type => l_component_type
35951 , p_component_code => l_component_code
35952 , p_component_type_code => l_component_type_code
35953 , p_component_appl_id => l_component_appl_id
35954 , p_amb_context_code => l_amb_context_code
35955 , p_side => 'NA'
35956 );
35957
35958
35959 --
35960 --
35961 END IF;
35962
35963 --
35964 -- Update the line information that should be overwritten
35965 --
35966 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35967 p_header_num => 1);
35968 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
35969
35970 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35971
35972 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
35973 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35974 END IF;
35975
35976 --
35977 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35978 --
35979 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35980 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
35981 ELSE
35982 ---------------------------------------------------------------------------------------------------
35983 -- 4262811a Switch Sign
35984 ---------------------------------------------------------------------------------------------------
35985 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
35986 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35987 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35988 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35989 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35990 -- 5132302
35991 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35992 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35993
35994 END IF;
35995
35996 -- 4955764
35997 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35998 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35999
36000
36001 XLA_AE_LINES_PKG.ValidateCurrentLine;
36002 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36003
36004 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36005 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36006 ,p_balance_type_code => l_balance_type_code);
36007
36008 END IF;
36009
36010 -----------------------------------------------------------------------------------------
36011 -- 4262811 Multiperiod Accounting
36012 -----------------------------------------------------------------------------------------
36013 -- No MPA option is assigned.
36014
36015
36016 END IF;
36017 END IF;
36018 --
36019
36020 --
36021 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36022 trace
36023 (p_msg => 'END of AcctLineType_67'
36024 ,p_level => C_LEVEL_PROCEDURE
36025 ,p_module => l_log_module);
36026 END IF;
36027 --
36028 EXCEPTION
36029 WHEN xla_exceptions_pkg.application_exception THEN
36030 RAISE;
36031 WHEN OTHERS THEN
36032 xla_exceptions_pkg.raise_message
36033 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_67');
36034 END AcctLineType_67;
36035 --
36036
36037 ---------------------------------------
36038 --
36039 -- PRIVATE FUNCTION
36040 -- AcctLineType_68
36041 --
36042 ---------------------------------------
36043 PROCEDURE AcctLineType_68 (
36044 p_application_id IN NUMBER
36045 ,p_event_id IN NUMBER
36046 ,p_calculate_acctd_flag IN VARCHAR2
36047 ,p_calculate_g_l_flag IN VARCHAR2
36048 ,p_actual_flag IN OUT VARCHAR2
36049 ,p_balance_type_code OUT VARCHAR2
36050 ,p_gain_or_loss_ref OUT VARCHAR2
36051
36052 --Cost Management Default Account
36053 , p_source_4 IN NUMBER
36054 --DISTRIBUTION_IDENTIFIER
36055 , p_source_11 IN NUMBER
36056 --Distribution Type
36057 , p_source_12 IN VARCHAR2
36058 , p_source_12_meaning IN VARCHAR2
36059 --Entered Currency Code
36060 , p_source_15 IN VARCHAR2
36061 --Entered Amount
36062 , p_source_18 IN NUMBER
36063 --Currency Conversion Date
36064 , p_source_19 IN DATE
36065 --Currency Conversion Rate
36066 , p_source_20 IN NUMBER
36067 --Currency Conversion Type
36068 , p_source_21 IN VARCHAR2
36069 --Accounted Amount
36070 , p_source_22 IN NUMBER
36071 --Accounting Line Type
36072 , p_source_24 IN NUMBER
36073 )
36074 IS
36075
36076 l_component_type VARCHAR2(80);
36077 l_component_code VARCHAR2(30);
36078 l_component_type_code VARCHAR2(1);
36079 l_component_appl_id INTEGER;
36080 l_amb_context_code VARCHAR2(30);
36081 l_entity_code VARCHAR2(30);
36082 l_event_class_code VARCHAR2(30);
36083 l_ae_header_id NUMBER;
36084 l_event_type_code VARCHAR2(30);
36085 l_line_definition_code VARCHAR2(30);
36086 l_line_definition_owner_code VARCHAR2(1);
36087 --
36088 -- adr variables
36089 l_segment VARCHAR2(30);
36090 l_ccid NUMBER;
36091 l_adr_transaction_coa_id NUMBER;
36092 l_adr_accounting_coa_id NUMBER;
36093 l_adr_flexfield_segment_code VARCHAR2(30);
36094 l_adr_flex_value_set_id NUMBER;
36095 l_adr_value_type_code VARCHAR2(30);
36096 l_adr_value_combination_id NUMBER;
36097 l_adr_value_segment_code VARCHAR2(30);
36098
36099 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
36100 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
36101 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
36102 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
36103
36104 -- 4262811 Variables ------------------------------------------------------------------------------------------
36105 l_entered_amt_idx NUMBER;
36106 l_accted_amt_idx NUMBER;
36107 l_acc_rev_flag VARCHAR2(1);
36108 l_accrual_line_num NUMBER;
36109 l_tmp_amt NUMBER;
36110 l_acc_rev_natural_side_code VARCHAR2(1);
36111
36112 l_num_entries NUMBER;
36113 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
36114 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
36115 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
36116 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
36117 l_recog_line_1 NUMBER;
36118 l_recog_line_2 NUMBER;
36119
36120 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
36121 l_bflow_applied_to_amt NUMBER; -- 5132302
36122 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
36123
36124 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36125
36126 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
36127 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
36128
36129 ---------------------------------------------------------------------------------------------------------------
36130
36131
36132 --
36133 -- bulk performance
36134 --
36135 l_balance_type_code VARCHAR2(1);
36136 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
36137 l_log_module VARCHAR2(240);
36138
36139 --
36140 -- Upgrade strategy
36141 --
36142 l_actual_upg_option VARCHAR2(1);
36143 l_enc_upg_option VARCHAR2(1);
36144
36145 --
36146 BEGIN
36147 --
36148 IF g_log_enabled THEN
36149 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
36150 END IF;
36151 --
36152 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36153
36154 trace
36155 (p_msg => 'BEGIN of AcctLineType_68'
36156 ,p_level => C_LEVEL_PROCEDURE
36157 ,p_module => l_log_module);
36158
36159 END IF;
36160 --
36161 l_component_type := 'AMB_JLT';
36162 l_component_code := 'INTERORG_FREIGHT_CHARGE';
36163 l_component_type_code := 'S';
36164 l_component_appl_id := 707;
36165 l_amb_context_code := 'DEFAULT';
36166 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
36167 l_event_class_code := 'DIR_INTERORG_SHIP';
36168 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
36169 l_line_definition_owner_code := 'S';
36170 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
36171 --
36172 l_balance_type_code := 'A';
36173 l_segment := NULL;
36174 l_ccid := NULL;
36175 l_adr_transaction_coa_id := NULL;
36176 l_adr_accounting_coa_id := NULL;
36177 l_adr_flexfield_segment_code := NULL;
36178 l_adr_flex_value_set_id := NULL;
36179 l_adr_value_type_code := NULL;
36180 l_adr_value_combination_id := NULL;
36181 l_adr_value_segment_code := NULL;
36182
36183 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
36184 l_bflow_class_code := ''; -- 4219869 Business Flow
36185 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
36186 l_budgetary_control_flag := 'N';
36187
36188 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36189 l_bflow_applied_to_amt := NULL; -- 5132302
36190 l_entered_amt_idx := NULL; -- 4262811
36191 l_accted_amt_idx := NULL; -- 4262811
36192 l_acc_rev_flag := NULL; -- 4262811
36193 l_accrual_line_num := NULL; -- 4262811
36194 l_tmp_amt := NULL; -- 4262811
36195 --
36196
36197 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36198 l_balance_type_code <> 'B' THEN
36199 IF NVL(p_source_24,9E125) = 12
36200 THEN
36201
36202 --
36203 XLA_AE_LINES_PKG.SetNewLine;
36204
36205 p_balance_type_code := l_balance_type_code;
36206 -- set the flag so later we will know whether the gain loss line needs to be created
36207
36208 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36209 p_actual_flag :='A';
36210 END IF;
36211
36212 --
36213 -- bulk performance
36214 --
36215 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36216 p_header_num => 0); -- 4262811
36217 --
36218 -- set accounting line options
36219 --
36220 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36221 p_natural_side_code => 'D'
36222 , p_gain_or_loss_flag => 'N'
36223 , p_gl_transfer_mode_code => 'S'
36224 , p_acct_entry_type_code => 'A'
36225 , p_switch_side_flag => 'Y'
36226 , p_merge_duplicate_code => 'N'
36227 );
36228 --
36229 l_acc_rev_natural_side_code := 'C'; -- 4262811
36230 --
36231 --
36232 -- set accounting line type info
36233 --
36234 xla_ae_lines_pkg.SetAcctLineType
36235 (p_component_type => l_component_type
36236 ,p_event_type_code => l_event_type_code
36237 ,p_line_definition_owner_code => l_line_definition_owner_code
36238 ,p_line_definition_code => l_line_definition_code
36239 ,p_accounting_line_code => l_component_code
36240 ,p_accounting_line_type_code => l_component_type_code
36241 ,p_accounting_line_appl_id => l_component_appl_id
36242 ,p_amb_context_code => l_amb_context_code
36243 ,p_entity_code => l_entity_code
36244 ,p_event_class_code => l_event_class_code);
36245 --
36246 -- set accounting class
36247 --
36248 xla_ae_lines_pkg.SetAcctClass(
36249 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
36250 , p_ae_header_id => l_ae_header_id
36251 );
36252
36253 --
36254 -- set rounding class
36255 --
36256 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36257 'INTERORG_FREIGHT_CHARGE';
36258
36259 --
36260 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36261 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36262 --
36263 -- bulk performance
36264 --
36265 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36266
36267 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36268 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36269
36270 -- 4955764
36271 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36272 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36273
36274 -- 4458381 Public Sector Enh
36275
36276 --
36277 -- set accounting attributes for the line type
36278 --
36279 l_entered_amt_idx := 3;
36280 l_accted_amt_idx := 8;
36281 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36282 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36283 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
36284 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36285 l_rec_acct_attrs.array_char_value(2) := p_source_12;
36286 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36287 l_rec_acct_attrs.array_num_value(3) := p_source_18;
36288 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36289 l_rec_acct_attrs.array_char_value(4) := p_source_15;
36290 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36291 l_rec_acct_attrs.array_date_value(5) := p_source_19;
36292 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36293 l_rec_acct_attrs.array_num_value(6) := p_source_20;
36294 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36295 l_rec_acct_attrs.array_char_value(7) := p_source_21;
36296 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36297 l_rec_acct_attrs.array_num_value(8) := p_source_22;
36298
36299 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36300 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36301
36302 ---------------------------------------------------------------------------------------------------------------
36303 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36304 ---------------------------------------------------------------------------------------------------------------
36305 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36306
36307 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36308 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36309
36310 IF xla_accounting_cache_pkg.GetValueChar
36311 (p_source_code => 'LEDGER_CATEGORY_CODE'
36312 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36313 AND l_bflow_method_code = 'PRIOR_ENTRY'
36314 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36315 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36316 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36317 )
36318 THEN
36319 xla_ae_lines_pkg.BflowUpgEntry
36320 (p_business_method_code => l_bflow_method_code
36321 ,p_business_class_code => l_bflow_class_code
36322 ,p_balance_type => l_balance_type_code);
36323 ELSE
36324 NULL;
36325 -- No business flow processing for business flow method of NONE.
36326 END IF;
36327
36328 --
36329 -- call analytical criteria
36330 --
36331
36332 --
36333 -- call description
36334 --
36335 -- No description or it is inherited.
36336 --
36337 -- call ADRs
36338 -- Bug 4922099
36339 --
36340 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36341 (NVL(l_actual_upg_option, 'N') = 'O') OR
36342 (NVL(l_enc_upg_option, 'N') = 'O')
36343 )
36344 THEN
36345 NULL;
36346 --
36347 --
36348
36349 l_ccid := AcctDerRule_4(
36350 p_application_id => p_application_id
36351 , p_ae_header_id => l_ae_header_id
36352 , p_source_4 => p_source_4
36353 , x_transaction_coa_id => l_adr_transaction_coa_id
36354 , x_accounting_coa_id => l_adr_accounting_coa_id
36355 , x_value_type_code => l_adr_value_type_code
36356 , p_side => 'NA'
36357 );
36358
36359 xla_ae_lines_pkg.set_ccid(
36360 p_code_combination_id => l_ccid
36361 , p_value_type_code => l_adr_value_type_code
36362 , p_transaction_coa_id => l_adr_transaction_coa_id
36363 , p_accounting_coa_id => l_adr_accounting_coa_id
36364 , p_adr_code => 'CST_DEFAULT'
36365 , p_adr_type_code => 'S'
36366 , p_component_type => l_component_type
36367 , p_component_code => l_component_code
36368 , p_component_type_code => l_component_type_code
36369 , p_component_appl_id => l_component_appl_id
36370 , p_amb_context_code => l_amb_context_code
36371 , p_side => 'NA'
36372 );
36373
36374
36375 --
36376 --
36377 END IF;
36378 --
36379 -- Bug 4922099
36380 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36381 (NVL(l_enc_upg_option, 'N') = 'O')
36382 ) AND
36383 (l_bflow_method_code = 'PRIOR_ENTRY')
36384 )
36385 THEN
36386 IF
36387 --
36388 1 = 2
36389 --
36390 THEN
36391 xla_accounting_err_pkg.build_message
36392 (p_appli_s_name => 'XLA'
36393 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36394 ,p_token_1 => 'LINE_NUMBER'
36395 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
36396 ,p_token_2 => 'LINE_TYPE_NAME'
36397 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
36398 l_component_type
36399 ,l_component_code
36400 ,l_component_type_code
36401 ,l_component_appl_id
36402 ,l_amb_context_code
36403 ,l_entity_code
36404 ,l_event_class_code
36405 )
36406 ,p_token_3 => 'OWNER'
36407 ,p_value_3 => xla_lookups_pkg.get_meaning(
36408 p_lookup_type => 'XLA_OWNER_TYPE'
36409 ,p_lookup_code => l_component_type_code
36410 )
36411 ,p_token_4 => 'PRODUCT_NAME'
36412 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36413 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36414 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36415 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36416 ,p_ae_header_id => NULL
36417 );
36418
36419 IF (C_LEVEL_ERROR>= g_log_level) THEN
36420 trace
36421 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36422 ,p_level => C_LEVEL_ERROR
36423 ,p_module => l_log_module);
36424 END IF;
36425 END IF;
36426 END IF;
36427 --
36428 --
36429 ------------------------------------------------------------------------------------------------
36430 -- 4219869 Business Flow
36431 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36432 -- Prior Entry. Currently, the following code is always generated.
36433 ------------------------------------------------------------------------------------------------
36434 XLA_AE_LINES_PKG.ValidateCurrentLine;
36435
36436 ------------------------------------------------------------------------------------
36437 -- 4219869 Business Flow
36438 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36439 ------------------------------------------------------------------------------------
36440 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36441
36442 ----------------------------------------------------------------------------------
36443 -- 4219869 Business Flow
36444 -- Update journal entry status -- Need to generate this within IF <condition>
36445 ----------------------------------------------------------------------------------
36446 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36447 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36448 ,p_balance_type_code => l_balance_type_code
36449 );
36450
36451 -------------------------------------------------------------------------------------------
36452 -- 4262811 - Generate the Accrual Reversal lines
36453 -------------------------------------------------------------------------------------------
36454 BEGIN
36455 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36456 (g_array_event(p_event_id).array_value_num('header_index'));
36457 IF l_acc_rev_flag IS NULL THEN
36458 l_acc_rev_flag := 'N';
36459 END IF;
36460 EXCEPTION
36461 WHEN OTHERS THEN
36462 l_acc_rev_flag := 'N';
36463 END;
36464 --
36465 IF (l_acc_rev_flag = 'Y') THEN
36466
36467 -- 4645092 ------------------------------------------------------------------------------
36468 -- To allow MPA report to determine if it should generate report process
36469 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36470 ------------------------------------------------------------------------------------------
36471
36472 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36473 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36474 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
36475 -- call ADRs
36476 -- Bug 4922099
36477 --
36478 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36479 (NVL(l_actual_upg_option, 'N') = 'O') OR
36480 (NVL(l_enc_upg_option, 'N') = 'O')
36481 )
36482 THEN
36483 NULL;
36484 --
36485 --
36486
36487 l_ccid := AcctDerRule_4(
36488 p_application_id => p_application_id
36489 , p_ae_header_id => l_ae_header_id
36490 , p_source_4 => p_source_4
36491 , x_transaction_coa_id => l_adr_transaction_coa_id
36492 , x_accounting_coa_id => l_adr_accounting_coa_id
36493 , x_value_type_code => l_adr_value_type_code
36494 , p_side => 'NA'
36495 );
36496
36497 xla_ae_lines_pkg.set_ccid(
36498 p_code_combination_id => l_ccid
36499 , p_value_type_code => l_adr_value_type_code
36500 , p_transaction_coa_id => l_adr_transaction_coa_id
36501 , p_accounting_coa_id => l_adr_accounting_coa_id
36502 , p_adr_code => 'CST_DEFAULT'
36503 , p_adr_type_code => 'S'
36504 , p_component_type => l_component_type
36505 , p_component_code => l_component_code
36506 , p_component_type_code => l_component_type_code
36507 , p_component_appl_id => l_component_appl_id
36508 , p_amb_context_code => l_amb_context_code
36509 , p_side => 'NA'
36510 );
36511
36512
36513 --
36514 --
36515 END IF;
36516
36517 --
36518 -- Update the line information that should be overwritten
36519 --
36520 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36521 p_header_num => 1);
36522 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
36523
36524 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36525
36526 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
36527 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36528 END IF;
36529
36530 --
36531 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36532 --
36533 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36534 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
36535 ELSE
36536 ---------------------------------------------------------------------------------------------------
36537 -- 4262811a Switch Sign
36538 ---------------------------------------------------------------------------------------------------
36539 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
36540 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36541 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36542 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36543 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36544 -- 5132302
36545 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36546 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36547
36548 END IF;
36549
36550 -- 4955764
36551 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36552 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36553
36554
36555 XLA_AE_LINES_PKG.ValidateCurrentLine;
36556 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36557
36558 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36559 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36560 ,p_balance_type_code => l_balance_type_code);
36561
36562 END IF;
36563
36564 -----------------------------------------------------------------------------------------
36565 -- 4262811 Multiperiod Accounting
36566 -----------------------------------------------------------------------------------------
36567 -- No MPA option is assigned.
36568
36569
36570 END IF;
36571 END IF;
36572 --
36573
36574 --
36575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36576 trace
36577 (p_msg => 'END of AcctLineType_68'
36578 ,p_level => C_LEVEL_PROCEDURE
36579 ,p_module => l_log_module);
36580 END IF;
36581 --
36582 EXCEPTION
36583 WHEN xla_exceptions_pkg.application_exception THEN
36584 RAISE;
36585 WHEN OTHERS THEN
36586 xla_exceptions_pkg.raise_message
36587 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_68');
36588 END AcctLineType_68;
36589 --
36590
36591 ---------------------------------------
36592 --
36593 -- PRIVATE FUNCTION
36594 -- AcctLineType_69
36595 --
36596 ---------------------------------------
36597 PROCEDURE AcctLineType_69 (
36598 p_application_id IN NUMBER
36599 ,p_event_id IN NUMBER
36600 ,p_calculate_acctd_flag IN VARCHAR2
36601 ,p_calculate_g_l_flag IN VARCHAR2
36602 ,p_actual_flag IN OUT VARCHAR2
36603 ,p_balance_type_code OUT VARCHAR2
36604 ,p_gain_or_loss_ref OUT VARCHAR2
36605
36606 --Cost Management Default Account
36607 , p_source_4 IN NUMBER
36608 --DISTRIBUTION_IDENTIFIER
36609 , p_source_11 IN NUMBER
36610 --Distribution Type
36611 , p_source_12 IN VARCHAR2
36612 , p_source_12_meaning IN VARCHAR2
36613 --Entered Currency Code
36614 , p_source_15 IN VARCHAR2
36615 --Entered Amount
36616 , p_source_18 IN NUMBER
36617 --Currency Conversion Date
36618 , p_source_19 IN DATE
36619 --Currency Conversion Rate
36620 , p_source_20 IN NUMBER
36621 --Currency Conversion Type
36622 , p_source_21 IN VARCHAR2
36623 --Accounted Amount
36624 , p_source_22 IN NUMBER
36625 --Accounting Line Type
36626 , p_source_24 IN NUMBER
36627 )
36628 IS
36629
36630 l_component_type VARCHAR2(80);
36631 l_component_code VARCHAR2(30);
36632 l_component_type_code VARCHAR2(1);
36633 l_component_appl_id INTEGER;
36634 l_amb_context_code VARCHAR2(30);
36635 l_entity_code VARCHAR2(30);
36636 l_event_class_code VARCHAR2(30);
36637 l_ae_header_id NUMBER;
36638 l_event_type_code VARCHAR2(30);
36639 l_line_definition_code VARCHAR2(30);
36640 l_line_definition_owner_code VARCHAR2(1);
36641 --
36642 -- adr variables
36643 l_segment VARCHAR2(30);
36644 l_ccid NUMBER;
36645 l_adr_transaction_coa_id NUMBER;
36646 l_adr_accounting_coa_id NUMBER;
36647 l_adr_flexfield_segment_code VARCHAR2(30);
36648 l_adr_flex_value_set_id NUMBER;
36649 l_adr_value_type_code VARCHAR2(30);
36650 l_adr_value_combination_id NUMBER;
36651 l_adr_value_segment_code VARCHAR2(30);
36652
36653 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
36654 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
36655 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
36656 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
36657
36658 -- 4262811 Variables ------------------------------------------------------------------------------------------
36659 l_entered_amt_idx NUMBER;
36660 l_accted_amt_idx NUMBER;
36661 l_acc_rev_flag VARCHAR2(1);
36662 l_accrual_line_num NUMBER;
36663 l_tmp_amt NUMBER;
36664 l_acc_rev_natural_side_code VARCHAR2(1);
36665
36666 l_num_entries NUMBER;
36667 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
36668 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
36669 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
36670 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
36671 l_recog_line_1 NUMBER;
36672 l_recog_line_2 NUMBER;
36673
36674 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
36675 l_bflow_applied_to_amt NUMBER; -- 5132302
36676 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
36677
36678 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36679
36680 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
36681 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
36682
36683 ---------------------------------------------------------------------------------------------------------------
36684
36685
36686 --
36687 -- bulk performance
36688 --
36689 l_balance_type_code VARCHAR2(1);
36690 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
36691 l_log_module VARCHAR2(240);
36692
36693 --
36694 -- Upgrade strategy
36695 --
36696 l_actual_upg_option VARCHAR2(1);
36697 l_enc_upg_option VARCHAR2(1);
36698
36699 --
36700 BEGIN
36701 --
36702 IF g_log_enabled THEN
36703 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
36704 END IF;
36705 --
36706 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36707
36708 trace
36709 (p_msg => 'BEGIN of AcctLineType_69'
36710 ,p_level => C_LEVEL_PROCEDURE
36711 ,p_module => l_log_module);
36712
36713 END IF;
36714 --
36715 l_component_type := 'AMB_JLT';
36716 l_component_code := 'INTERORG_FREIGHT_CHARGE';
36717 l_component_type_code := 'S';
36718 l_component_appl_id := 707;
36719 l_amb_context_code := 'DEFAULT';
36720 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
36721 l_event_class_code := 'USER_DEFINE';
36722 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
36723 l_line_definition_owner_code := 'S';
36724 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
36725 --
36726 l_balance_type_code := 'A';
36727 l_segment := NULL;
36728 l_ccid := NULL;
36729 l_adr_transaction_coa_id := NULL;
36730 l_adr_accounting_coa_id := NULL;
36731 l_adr_flexfield_segment_code := NULL;
36732 l_adr_flex_value_set_id := NULL;
36733 l_adr_value_type_code := NULL;
36734 l_adr_value_combination_id := NULL;
36735 l_adr_value_segment_code := NULL;
36736
36737 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
36738 l_bflow_class_code := ''; -- 4219869 Business Flow
36739 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
36740 l_budgetary_control_flag := 'N';
36741
36742 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36743 l_bflow_applied_to_amt := NULL; -- 5132302
36744 l_entered_amt_idx := NULL; -- 4262811
36745 l_accted_amt_idx := NULL; -- 4262811
36746 l_acc_rev_flag := NULL; -- 4262811
36747 l_accrual_line_num := NULL; -- 4262811
36748 l_tmp_amt := NULL; -- 4262811
36749 --
36750
36751 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36752 l_balance_type_code <> 'B' THEN
36753 IF NVL(p_source_24,9E125) = 12
36754 THEN
36755
36756 --
36757 XLA_AE_LINES_PKG.SetNewLine;
36758
36759 p_balance_type_code := l_balance_type_code;
36760 -- set the flag so later we will know whether the gain loss line needs to be created
36761
36762 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36763 p_actual_flag :='A';
36764 END IF;
36765
36766 --
36767 -- bulk performance
36768 --
36769 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36770 p_header_num => 0); -- 4262811
36771 --
36772 -- set accounting line options
36773 --
36774 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36775 p_natural_side_code => 'D'
36776 , p_gain_or_loss_flag => 'N'
36777 , p_gl_transfer_mode_code => 'S'
36778 , p_acct_entry_type_code => 'A'
36779 , p_switch_side_flag => 'Y'
36780 , p_merge_duplicate_code => 'N'
36781 );
36782 --
36783 l_acc_rev_natural_side_code := 'C'; -- 4262811
36784 --
36785 --
36786 -- set accounting line type info
36787 --
36788 xla_ae_lines_pkg.SetAcctLineType
36789 (p_component_type => l_component_type
36790 ,p_event_type_code => l_event_type_code
36791 ,p_line_definition_owner_code => l_line_definition_owner_code
36792 ,p_line_definition_code => l_line_definition_code
36793 ,p_accounting_line_code => l_component_code
36794 ,p_accounting_line_type_code => l_component_type_code
36795 ,p_accounting_line_appl_id => l_component_appl_id
36796 ,p_amb_context_code => l_amb_context_code
36797 ,p_entity_code => l_entity_code
36798 ,p_event_class_code => l_event_class_code);
36799 --
36800 -- set accounting class
36801 --
36802 xla_ae_lines_pkg.SetAcctClass(
36803 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
36804 , p_ae_header_id => l_ae_header_id
36805 );
36806
36807 --
36808 -- set rounding class
36809 --
36810 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36811 'INTERORG_FREIGHT_CHARGE';
36812
36813 --
36814 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36815 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36816 --
36817 -- bulk performance
36818 --
36819 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36820
36821 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36822 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36823
36824 -- 4955764
36825 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36826 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36827
36828 -- 4458381 Public Sector Enh
36829
36830 --
36831 -- set accounting attributes for the line type
36832 --
36833 l_entered_amt_idx := 3;
36834 l_accted_amt_idx := 8;
36835 l_bflow_applied_to_amt_idx := NULL; -- 5132302
36836 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36837 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
36838 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36839 l_rec_acct_attrs.array_char_value(2) := p_source_12;
36840 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36841 l_rec_acct_attrs.array_num_value(3) := p_source_18;
36842 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36843 l_rec_acct_attrs.array_char_value(4) := p_source_15;
36844 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36845 l_rec_acct_attrs.array_date_value(5) := p_source_19;
36846 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36847 l_rec_acct_attrs.array_num_value(6) := p_source_20;
36848 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36849 l_rec_acct_attrs.array_char_value(7) := p_source_21;
36850 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36851 l_rec_acct_attrs.array_num_value(8) := p_source_22;
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_000005_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_FREIGHT_CHARGE';
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 := 'FOB_RCPT_SENDER_RCPT';
37276 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
37277 l_line_definition_owner_code := 'S';
37278 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
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) = 12
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_FREIGHT_CHARGE'
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_FREIGHT_CHARGE';
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_000005_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_FREIGHT_CHARGE';
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';
37831 l_line_definition_owner_code := 'S';
37832 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
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) = 12
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_FREIGHT_CHARGE'
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_FREIGHT_CHARGE';
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_000005_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 --DISTRIBUTION_IDENTIFIER
38271 , p_source_11 IN NUMBER
38272 --Distribution Type
38273 , p_source_12 IN VARCHAR2
38274 , p_source_12_meaning IN VARCHAR2
38275 --Entered Currency Code
38276 , p_source_15 IN VARCHAR2
38277 --Entered Amount
38278 , p_source_18 IN NUMBER
38279 --Currency Conversion Date
38280 , p_source_19 IN DATE
38281 --Currency Conversion Rate
38282 , p_source_20 IN NUMBER
38283 --Currency Conversion Type
38284 , p_source_21 IN VARCHAR2
38285 --Accounted Amount
38286 , p_source_22 IN NUMBER
38287 --Accounting Line Type
38288 , p_source_24 IN NUMBER
38289 )
38290 IS
38291
38292 l_component_type VARCHAR2(80);
38293 l_component_code VARCHAR2(30);
38294 l_component_type_code VARCHAR2(1);
38295 l_component_appl_id INTEGER;
38296 l_amb_context_code VARCHAR2(30);
38297 l_entity_code VARCHAR2(30);
38298 l_event_class_code VARCHAR2(30);
38299 l_ae_header_id NUMBER;
38300 l_event_type_code VARCHAR2(30);
38301 l_line_definition_code VARCHAR2(30);
38302 l_line_definition_owner_code VARCHAR2(1);
38303 --
38304 -- adr variables
38305 l_segment VARCHAR2(30);
38306 l_ccid NUMBER;
38307 l_adr_transaction_coa_id NUMBER;
38308 l_adr_accounting_coa_id NUMBER;
38309 l_adr_flexfield_segment_code VARCHAR2(30);
38310 l_adr_flex_value_set_id NUMBER;
38311 l_adr_value_type_code VARCHAR2(30);
38312 l_adr_value_combination_id NUMBER;
38313 l_adr_value_segment_code VARCHAR2(30);
38314
38315 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
38316 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
38317 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
38318 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
38319
38320 -- 4262811 Variables ------------------------------------------------------------------------------------------
38321 l_entered_amt_idx NUMBER;
38322 l_accted_amt_idx NUMBER;
38323 l_acc_rev_flag VARCHAR2(1);
38324 l_accrual_line_num NUMBER;
38325 l_tmp_amt NUMBER;
38326 l_acc_rev_natural_side_code VARCHAR2(1);
38327
38328 l_num_entries NUMBER;
38329 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
38330 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
38331 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
38332 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
38333 l_recog_line_1 NUMBER;
38334 l_recog_line_2 NUMBER;
38335
38336 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
38337 l_bflow_applied_to_amt NUMBER; -- 5132302
38338 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
38339
38340 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38341
38342 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
38343 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
38344
38345 ---------------------------------------------------------------------------------------------------------------
38346
38347
38348 --
38349 -- bulk performance
38350 --
38351 l_balance_type_code VARCHAR2(1);
38352 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
38353 l_log_module VARCHAR2(240);
38354
38355 --
38356 -- Upgrade strategy
38357 --
38358 l_actual_upg_option VARCHAR2(1);
38359 l_enc_upg_option VARCHAR2(1);
38360
38361 --
38362 BEGIN
38363 --
38364 IF g_log_enabled THEN
38365 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
38366 END IF;
38367 --
38368 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38369
38370 trace
38371 (p_msg => 'BEGIN of AcctLineType_72'
38372 ,p_level => C_LEVEL_PROCEDURE
38373 ,p_module => l_log_module);
38374
38375 END IF;
38376 --
38377 l_component_type := 'AMB_JLT';
38378 l_component_code := 'INTERORG_FREIGHT_CHARGE';
38379 l_component_type_code := 'S';
38380 l_component_appl_id := 707;
38381 l_amb_context_code := 'DEFAULT';
38382 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
38383 l_event_class_code := 'USER_DEFINE';
38384 l_event_type_code := 'UDIR_INTERORG_RCPT';
38385 l_line_definition_owner_code := 'S';
38386 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
38387 --
38388 l_balance_type_code := 'A';
38389 l_segment := NULL;
38390 l_ccid := NULL;
38391 l_adr_transaction_coa_id := NULL;
38392 l_adr_accounting_coa_id := NULL;
38393 l_adr_flexfield_segment_code := NULL;
38394 l_adr_flex_value_set_id := NULL;
38395 l_adr_value_type_code := NULL;
38396 l_adr_value_combination_id := NULL;
38397 l_adr_value_segment_code := NULL;
38398
38399 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
38400 l_bflow_class_code := ''; -- 4219869 Business Flow
38401 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
38402 l_budgetary_control_flag := 'N';
38403
38404 l_bflow_applied_to_amt_idx := NULL; -- 5132302
38405 l_bflow_applied_to_amt := NULL; -- 5132302
38406 l_entered_amt_idx := NULL; -- 4262811
38407 l_accted_amt_idx := NULL; -- 4262811
38408 l_acc_rev_flag := NULL; -- 4262811
38409 l_accrual_line_num := NULL; -- 4262811
38410 l_tmp_amt := NULL; -- 4262811
38411 --
38412
38413 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38414 l_balance_type_code <> 'B' THEN
38415 IF NVL(p_source_24,9E125) = 12
38416 THEN
38417
38418 --
38419 XLA_AE_LINES_PKG.SetNewLine;
38420
38421 p_balance_type_code := l_balance_type_code;
38422 -- set the flag so later we will know whether the gain loss line needs to be created
38423
38424 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38425 p_actual_flag :='A';
38426 END IF;
38427
38428 --
38429 -- bulk performance
38430 --
38431 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38432 p_header_num => 0); -- 4262811
38433 --
38434 -- set accounting line options
38435 --
38436 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38437 p_natural_side_code => 'D'
38438 , p_gain_or_loss_flag => 'N'
38439 , p_gl_transfer_mode_code => 'S'
38440 , p_acct_entry_type_code => 'A'
38441 , p_switch_side_flag => 'Y'
38442 , p_merge_duplicate_code => 'N'
38443 );
38444 --
38445 l_acc_rev_natural_side_code := 'C'; -- 4262811
38446 --
38447 --
38448 -- set accounting line type info
38449 --
38450 xla_ae_lines_pkg.SetAcctLineType
38451 (p_component_type => l_component_type
38452 ,p_event_type_code => l_event_type_code
38453 ,p_line_definition_owner_code => l_line_definition_owner_code
38454 ,p_line_definition_code => l_line_definition_code
38455 ,p_accounting_line_code => l_component_code
38456 ,p_accounting_line_type_code => l_component_type_code
38457 ,p_accounting_line_appl_id => l_component_appl_id
38458 ,p_amb_context_code => l_amb_context_code
38459 ,p_entity_code => l_entity_code
38460 ,p_event_class_code => l_event_class_code);
38461 --
38462 -- set accounting class
38463 --
38464 xla_ae_lines_pkg.SetAcctClass(
38465 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
38466 , p_ae_header_id => l_ae_header_id
38467 );
38468
38469 --
38470 -- set rounding class
38471 --
38472 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38473 'INTERORG_FREIGHT_CHARGE';
38474
38475 --
38476 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38477 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38478 --
38479 -- bulk performance
38480 --
38481 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38482
38483 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38484 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38485
38486 -- 4955764
38487 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38488 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38489
38490 -- 4458381 Public Sector Enh
38491
38492 --
38493 -- set accounting attributes for the line type
38494 --
38495 l_entered_amt_idx := 3;
38496 l_accted_amt_idx := 8;
38497 l_bflow_applied_to_amt_idx := NULL; -- 5132302
38498 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38499 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
38500 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
38501 l_rec_acct_attrs.array_char_value(2) := p_source_12;
38502 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
38503 l_rec_acct_attrs.array_num_value(3) := p_source_18;
38504 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
38505 l_rec_acct_attrs.array_char_value(4) := p_source_15;
38506 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
38507 l_rec_acct_attrs.array_date_value(5) := p_source_19;
38508 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
38509 l_rec_acct_attrs.array_num_value(6) := p_source_20;
38510 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
38511 l_rec_acct_attrs.array_char_value(7) := p_source_21;
38512 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
38513 l_rec_acct_attrs.array_num_value(8) := p_source_22;
38514
38515 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38516 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38517
38518 ---------------------------------------------------------------------------------------------------------------
38519 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38520 ---------------------------------------------------------------------------------------------------------------
38521 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38522
38523 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38524 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38525
38526 IF xla_accounting_cache_pkg.GetValueChar
38527 (p_source_code => 'LEDGER_CATEGORY_CODE'
38528 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38529 AND l_bflow_method_code = 'PRIOR_ENTRY'
38530 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38531 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38532 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38533 )
38534 THEN
38535 xla_ae_lines_pkg.BflowUpgEntry
38536 (p_business_method_code => l_bflow_method_code
38537 ,p_business_class_code => l_bflow_class_code
38538 ,p_balance_type => l_balance_type_code);
38539 ELSE
38540 NULL;
38541 -- No business flow processing for business flow method of NONE.
38542 END IF;
38543
38544 --
38545 -- call analytical criteria
38546 --
38547
38548 --
38549 -- call description
38550 --
38551 -- No description or it is inherited.
38552 --
38553 -- call ADRs
38554 -- Bug 4922099
38555 --
38556 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38557 (NVL(l_actual_upg_option, 'N') = 'O') OR
38558 (NVL(l_enc_upg_option, 'N') = 'O')
38559 )
38560 THEN
38561 NULL;
38562 --
38563 --
38564
38565 l_ccid := AcctDerRule_4(
38566 p_application_id => p_application_id
38567 , p_ae_header_id => l_ae_header_id
38568 , p_source_4 => p_source_4
38569 , x_transaction_coa_id => l_adr_transaction_coa_id
38570 , x_accounting_coa_id => l_adr_accounting_coa_id
38571 , x_value_type_code => l_adr_value_type_code
38572 , p_side => 'NA'
38573 );
38574
38575 xla_ae_lines_pkg.set_ccid(
38576 p_code_combination_id => l_ccid
38577 , p_value_type_code => l_adr_value_type_code
38578 , p_transaction_coa_id => l_adr_transaction_coa_id
38579 , p_accounting_coa_id => l_adr_accounting_coa_id
38580 , p_adr_code => 'CST_DEFAULT'
38581 , p_adr_type_code => 'S'
38582 , p_component_type => l_component_type
38583 , p_component_code => l_component_code
38584 , p_component_type_code => l_component_type_code
38585 , p_component_appl_id => l_component_appl_id
38586 , p_amb_context_code => l_amb_context_code
38587 , p_side => 'NA'
38588 );
38589
38590
38591 --
38592 --
38593 END IF;
38594 --
38595 -- Bug 4922099
38596 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38597 (NVL(l_enc_upg_option, 'N') = 'O')
38598 ) AND
38599 (l_bflow_method_code = 'PRIOR_ENTRY')
38600 )
38601 THEN
38602 IF
38603 --
38604 1 = 2
38605 --
38606 THEN
38607 xla_accounting_err_pkg.build_message
38608 (p_appli_s_name => 'XLA'
38609 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38610 ,p_token_1 => 'LINE_NUMBER'
38611 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
38612 ,p_token_2 => 'LINE_TYPE_NAME'
38613 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
38614 l_component_type
38615 ,l_component_code
38616 ,l_component_type_code
38617 ,l_component_appl_id
38618 ,l_amb_context_code
38619 ,l_entity_code
38620 ,l_event_class_code
38621 )
38622 ,p_token_3 => 'OWNER'
38623 ,p_value_3 => xla_lookups_pkg.get_meaning(
38624 p_lookup_type => 'XLA_OWNER_TYPE'
38625 ,p_lookup_code => l_component_type_code
38626 )
38627 ,p_token_4 => 'PRODUCT_NAME'
38628 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38629 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38630 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38631 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38632 ,p_ae_header_id => NULL
38633 );
38634
38635 IF (C_LEVEL_ERROR>= g_log_level) THEN
38636 trace
38637 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38638 ,p_level => C_LEVEL_ERROR
38639 ,p_module => l_log_module);
38640 END IF;
38641 END IF;
38642 END IF;
38643 --
38644 --
38645 ------------------------------------------------------------------------------------------------
38646 -- 4219869 Business Flow
38647 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38648 -- Prior Entry. Currently, the following code is always generated.
38649 ------------------------------------------------------------------------------------------------
38650 XLA_AE_LINES_PKG.ValidateCurrentLine;
38651
38652 ------------------------------------------------------------------------------------
38653 -- 4219869 Business Flow
38654 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38655 ------------------------------------------------------------------------------------
38656 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38657
38658 ----------------------------------------------------------------------------------
38659 -- 4219869 Business Flow
38660 -- Update journal entry status -- Need to generate this within IF <condition>
38661 ----------------------------------------------------------------------------------
38662 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38663 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38664 ,p_balance_type_code => l_balance_type_code
38665 );
38666
38667 -------------------------------------------------------------------------------------------
38668 -- 4262811 - Generate the Accrual Reversal lines
38669 -------------------------------------------------------------------------------------------
38670 BEGIN
38671 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38672 (g_array_event(p_event_id).array_value_num('header_index'));
38673 IF l_acc_rev_flag IS NULL THEN
38674 l_acc_rev_flag := 'N';
38675 END IF;
38676 EXCEPTION
38677 WHEN OTHERS THEN
38678 l_acc_rev_flag := 'N';
38679 END;
38680 --
38681 IF (l_acc_rev_flag = 'Y') THEN
38682
38683 -- 4645092 ------------------------------------------------------------------------------
38684 -- To allow MPA report to determine if it should generate report process
38685 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38686 ------------------------------------------------------------------------------------------
38687
38688 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38689 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38690 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
38691 -- call ADRs
38692 -- Bug 4922099
38693 --
38694 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38695 (NVL(l_actual_upg_option, 'N') = 'O') OR
38696 (NVL(l_enc_upg_option, 'N') = 'O')
38697 )
38698 THEN
38699 NULL;
38700 --
38701 --
38702
38703 l_ccid := AcctDerRule_4(
38704 p_application_id => p_application_id
38705 , p_ae_header_id => l_ae_header_id
38706 , p_source_4 => p_source_4
38707 , x_transaction_coa_id => l_adr_transaction_coa_id
38708 , x_accounting_coa_id => l_adr_accounting_coa_id
38709 , x_value_type_code => l_adr_value_type_code
38710 , p_side => 'NA'
38711 );
38712
38713 xla_ae_lines_pkg.set_ccid(
38714 p_code_combination_id => l_ccid
38715 , p_value_type_code => l_adr_value_type_code
38716 , p_transaction_coa_id => l_adr_transaction_coa_id
38717 , p_accounting_coa_id => l_adr_accounting_coa_id
38718 , p_adr_code => 'CST_DEFAULT'
38719 , p_adr_type_code => 'S'
38720 , p_component_type => l_component_type
38721 , p_component_code => l_component_code
38722 , p_component_type_code => l_component_type_code
38723 , p_component_appl_id => l_component_appl_id
38724 , p_amb_context_code => l_amb_context_code
38725 , p_side => 'NA'
38726 );
38727
38728
38729 --
38730 --
38731 END IF;
38732
38733 --
38734 -- Update the line information that should be overwritten
38735 --
38736 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38737 p_header_num => 1);
38738 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
38739
38740 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38741
38742 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
38743 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38744 END IF;
38745
38746 --
38747 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38748 --
38749 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38750 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
38751 ELSE
38752 ---------------------------------------------------------------------------------------------------
38753 -- 4262811a Switch Sign
38754 ---------------------------------------------------------------------------------------------------
38755 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
38756 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38757 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38758 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38759 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38760 -- 5132302
38761 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38762 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38763
38764 END IF;
38765
38766 -- 4955764
38767 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38768 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38769
38770
38771 XLA_AE_LINES_PKG.ValidateCurrentLine;
38772 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38773
38774 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38775 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38776 ,p_balance_type_code => l_balance_type_code);
38777
38778 END IF;
38779
38780 -----------------------------------------------------------------------------------------
38781 -- 4262811 Multiperiod Accounting
38782 -----------------------------------------------------------------------------------------
38783 -- No MPA option is assigned.
38784
38785
38786 END IF;
38787 END IF;
38788 --
38789
38790 --
38791 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38792 trace
38793 (p_msg => 'END of AcctLineType_72'
38794 ,p_level => C_LEVEL_PROCEDURE
38795 ,p_module => l_log_module);
38796 END IF;
38797 --
38798 EXCEPTION
38799 WHEN xla_exceptions_pkg.application_exception THEN
38800 RAISE;
38801 WHEN OTHERS THEN
38802 xla_exceptions_pkg.raise_message
38803 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_72');
38804 END AcctLineType_72;
38805 --
38806
38807 ---------------------------------------
38808 --
38809 -- PRIVATE FUNCTION
38810 -- AcctLineType_73
38811 --
38812 ---------------------------------------
38813 PROCEDURE AcctLineType_73 (
38814 p_application_id IN NUMBER
38815 ,p_event_id IN NUMBER
38816 ,p_calculate_acctd_flag IN VARCHAR2
38817 ,p_calculate_g_l_flag IN VARCHAR2
38818 ,p_actual_flag IN OUT VARCHAR2
38819 ,p_balance_type_code OUT VARCHAR2
38820 ,p_gain_or_loss_ref OUT VARCHAR2
38821
38822 --Cost Management Default Account
38823 , p_source_4 IN NUMBER
38824 --DISTRIBUTION_IDENTIFIER
38825 , p_source_11 IN NUMBER
38826 --Distribution Type
38827 , p_source_12 IN VARCHAR2
38828 , p_source_12_meaning IN VARCHAR2
38829 --Entered Currency Code
38830 , p_source_15 IN VARCHAR2
38831 --Entered Amount
38832 , p_source_18 IN NUMBER
38833 --Currency Conversion Date
38834 , p_source_19 IN DATE
38835 --Currency Conversion Rate
38836 , p_source_20 IN NUMBER
38837 --Currency Conversion Type
38838 , p_source_21 IN VARCHAR2
38839 --Accounted Amount
38840 , p_source_22 IN NUMBER
38841 --Accounting Line Type
38842 , p_source_24 IN NUMBER
38843 )
38844 IS
38845
38846 l_component_type VARCHAR2(80);
38847 l_component_code VARCHAR2(30);
38848 l_component_type_code VARCHAR2(1);
38849 l_component_appl_id INTEGER;
38850 l_amb_context_code VARCHAR2(30);
38851 l_entity_code VARCHAR2(30);
38852 l_event_class_code VARCHAR2(30);
38853 l_ae_header_id NUMBER;
38854 l_event_type_code VARCHAR2(30);
38855 l_line_definition_code VARCHAR2(30);
38856 l_line_definition_owner_code VARCHAR2(1);
38857 --
38858 -- adr variables
38859 l_segment VARCHAR2(30);
38860 l_ccid NUMBER;
38861 l_adr_transaction_coa_id NUMBER;
38862 l_adr_accounting_coa_id NUMBER;
38863 l_adr_flexfield_segment_code VARCHAR2(30);
38864 l_adr_flex_value_set_id NUMBER;
38865 l_adr_value_type_code VARCHAR2(30);
38866 l_adr_value_combination_id NUMBER;
38867 l_adr_value_segment_code VARCHAR2(30);
38868
38869 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
38870 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
38871 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
38872 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
38873
38874 -- 4262811 Variables ------------------------------------------------------------------------------------------
38875 l_entered_amt_idx NUMBER;
38876 l_accted_amt_idx NUMBER;
38877 l_acc_rev_flag VARCHAR2(1);
38878 l_accrual_line_num NUMBER;
38879 l_tmp_amt NUMBER;
38880 l_acc_rev_natural_side_code VARCHAR2(1);
38881
38882 l_num_entries NUMBER;
38883 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
38884 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
38885 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
38886 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
38887 l_recog_line_1 NUMBER;
38888 l_recog_line_2 NUMBER;
38889
38890 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
38891 l_bflow_applied_to_amt NUMBER; -- 5132302
38892 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
38893
38894 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38895
38896 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
38897 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
38898
38899 ---------------------------------------------------------------------------------------------------------------
38900
38901
38902 --
38903 -- bulk performance
38904 --
38905 l_balance_type_code VARCHAR2(1);
38906 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
38907 l_log_module VARCHAR2(240);
38908
38909 --
38910 -- Upgrade strategy
38911 --
38912 l_actual_upg_option VARCHAR2(1);
38913 l_enc_upg_option VARCHAR2(1);
38914
38915 --
38916 BEGIN
38917 --
38918 IF g_log_enabled THEN
38919 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
38920 END IF;
38921 --
38922 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38923
38924 trace
38925 (p_msg => 'BEGIN of AcctLineType_73'
38926 ,p_level => C_LEVEL_PROCEDURE
38927 ,p_module => l_log_module);
38928
38929 END IF;
38930 --
38931 l_component_type := 'AMB_JLT';
38932 l_component_code := 'INTERORG_FREIGHT_CHARGE';
38933 l_component_type_code := 'S';
38934 l_component_appl_id := 707;
38935 l_amb_context_code := 'DEFAULT';
38936 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
38937 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
38938 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
38939 l_line_definition_owner_code := 'S';
38940 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
38941 --
38942 l_balance_type_code := 'A';
38943 l_segment := NULL;
38944 l_ccid := NULL;
38945 l_adr_transaction_coa_id := NULL;
38946 l_adr_accounting_coa_id := NULL;
38947 l_adr_flexfield_segment_code := NULL;
38948 l_adr_flex_value_set_id := NULL;
38949 l_adr_value_type_code := NULL;
38950 l_adr_value_combination_id := NULL;
38951 l_adr_value_segment_code := NULL;
38952
38953 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
38954 l_bflow_class_code := ''; -- 4219869 Business Flow
38955 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
38956 l_budgetary_control_flag := 'N';
38957
38958 l_bflow_applied_to_amt_idx := NULL; -- 5132302
38959 l_bflow_applied_to_amt := NULL; -- 5132302
38960 l_entered_amt_idx := NULL; -- 4262811
38961 l_accted_amt_idx := NULL; -- 4262811
38962 l_acc_rev_flag := NULL; -- 4262811
38963 l_accrual_line_num := NULL; -- 4262811
38964 l_tmp_amt := NULL; -- 4262811
38965 --
38966
38967 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38968 l_balance_type_code <> 'B' THEN
38969 IF NVL(p_source_24,9E125) = 12
38970 THEN
38971
38972 --
38973 XLA_AE_LINES_PKG.SetNewLine;
38974
38975 p_balance_type_code := l_balance_type_code;
38976 -- set the flag so later we will know whether the gain loss line needs to be created
38977
38978 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38979 p_actual_flag :='A';
38980 END IF;
38981
38982 --
38983 -- bulk performance
38984 --
38985 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38986 p_header_num => 0); -- 4262811
38987 --
38988 -- set accounting line options
38989 --
38990 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38991 p_natural_side_code => 'D'
38992 , p_gain_or_loss_flag => 'N'
38993 , p_gl_transfer_mode_code => 'S'
38994 , p_acct_entry_type_code => 'A'
38995 , p_switch_side_flag => 'Y'
38996 , p_merge_duplicate_code => 'N'
38997 );
38998 --
38999 l_acc_rev_natural_side_code := 'C'; -- 4262811
39000 --
39001 --
39002 -- set accounting line type info
39003 --
39004 xla_ae_lines_pkg.SetAcctLineType
39005 (p_component_type => l_component_type
39006 ,p_event_type_code => l_event_type_code
39007 ,p_line_definition_owner_code => l_line_definition_owner_code
39008 ,p_line_definition_code => l_line_definition_code
39009 ,p_accounting_line_code => l_component_code
39010 ,p_accounting_line_type_code => l_component_type_code
39011 ,p_accounting_line_appl_id => l_component_appl_id
39012 ,p_amb_context_code => l_amb_context_code
39013 ,p_entity_code => l_entity_code
39014 ,p_event_class_code => l_event_class_code);
39015 --
39016 -- set accounting class
39017 --
39018 xla_ae_lines_pkg.SetAcctClass(
39019 p_accounting_class_code => 'INTERORG_FREIGHT_CHARGE'
39020 , p_ae_header_id => l_ae_header_id
39021 );
39022
39023 --
39024 -- set rounding class
39025 --
39026 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39027 'INTERORG_FREIGHT_CHARGE';
39028
39029 --
39030 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39031 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39032 --
39033 -- bulk performance
39034 --
39035 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39036
39037 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39038 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39039
39040 -- 4955764
39041 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39042 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39043
39044 -- 4458381 Public Sector Enh
39045
39046 --
39047 -- set accounting attributes for the line type
39048 --
39049 l_entered_amt_idx := 3;
39050 l_accted_amt_idx := 8;
39051 l_bflow_applied_to_amt_idx := NULL; -- 5132302
39052 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39053 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
39054 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39055 l_rec_acct_attrs.array_char_value(2) := p_source_12;
39056 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39057 l_rec_acct_attrs.array_num_value(3) := p_source_18;
39058 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39059 l_rec_acct_attrs.array_char_value(4) := p_source_15;
39060 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39061 l_rec_acct_attrs.array_date_value(5) := p_source_19;
39062 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39063 l_rec_acct_attrs.array_num_value(6) := p_source_20;
39064 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39065 l_rec_acct_attrs.array_char_value(7) := p_source_21;
39066 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39067 l_rec_acct_attrs.array_num_value(8) := p_source_22;
39068
39069 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39070 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39071
39072 ---------------------------------------------------------------------------------------------------------------
39073 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39074 ---------------------------------------------------------------------------------------------------------------
39075 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39076
39077 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39078 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39079
39080 IF xla_accounting_cache_pkg.GetValueChar
39081 (p_source_code => 'LEDGER_CATEGORY_CODE'
39082 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39083 AND l_bflow_method_code = 'PRIOR_ENTRY'
39084 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39085 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39086 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39087 )
39088 THEN
39089 xla_ae_lines_pkg.BflowUpgEntry
39090 (p_business_method_code => l_bflow_method_code
39091 ,p_business_class_code => l_bflow_class_code
39092 ,p_balance_type => l_balance_type_code);
39093 ELSE
39094 NULL;
39095 -- No business flow processing for business flow method of NONE.
39096 END IF;
39097
39098 --
39099 -- call analytical criteria
39100 --
39101
39102 --
39103 -- call description
39104 --
39105 -- No description or it is inherited.
39106 --
39107 -- call ADRs
39108 -- Bug 4922099
39109 --
39110 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39111 (NVL(l_actual_upg_option, 'N') = 'O') OR
39112 (NVL(l_enc_upg_option, 'N') = 'O')
39113 )
39114 THEN
39115 NULL;
39116 --
39117 --
39118
39119 l_ccid := AcctDerRule_4(
39120 p_application_id => p_application_id
39121 , p_ae_header_id => l_ae_header_id
39122 , p_source_4 => p_source_4
39123 , x_transaction_coa_id => l_adr_transaction_coa_id
39124 , x_accounting_coa_id => l_adr_accounting_coa_id
39125 , x_value_type_code => l_adr_value_type_code
39126 , p_side => 'NA'
39127 );
39128
39129 xla_ae_lines_pkg.set_ccid(
39130 p_code_combination_id => l_ccid
39131 , p_value_type_code => l_adr_value_type_code
39132 , p_transaction_coa_id => l_adr_transaction_coa_id
39133 , p_accounting_coa_id => l_adr_accounting_coa_id
39134 , p_adr_code => 'CST_DEFAULT'
39135 , p_adr_type_code => 'S'
39136 , p_component_type => l_component_type
39137 , p_component_code => l_component_code
39138 , p_component_type_code => l_component_type_code
39139 , p_component_appl_id => l_component_appl_id
39140 , p_amb_context_code => l_amb_context_code
39141 , p_side => 'NA'
39142 );
39143
39144
39145 --
39146 --
39147 END IF;
39148 --
39149 -- Bug 4922099
39150 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39151 (NVL(l_enc_upg_option, 'N') = 'O')
39152 ) AND
39153 (l_bflow_method_code = 'PRIOR_ENTRY')
39154 )
39155 THEN
39156 IF
39157 --
39158 1 = 2
39159 --
39160 THEN
39161 xla_accounting_err_pkg.build_message
39162 (p_appli_s_name => 'XLA'
39163 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39164 ,p_token_1 => 'LINE_NUMBER'
39165 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
39166 ,p_token_2 => 'LINE_TYPE_NAME'
39167 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
39168 l_component_type
39169 ,l_component_code
39170 ,l_component_type_code
39171 ,l_component_appl_id
39172 ,l_amb_context_code
39173 ,l_entity_code
39174 ,l_event_class_code
39175 )
39176 ,p_token_3 => 'OWNER'
39177 ,p_value_3 => xla_lookups_pkg.get_meaning(
39178 p_lookup_type => 'XLA_OWNER_TYPE'
39179 ,p_lookup_code => l_component_type_code
39180 )
39181 ,p_token_4 => 'PRODUCT_NAME'
39182 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39183 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39184 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39185 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39186 ,p_ae_header_id => NULL
39187 );
39188
39189 IF (C_LEVEL_ERROR>= g_log_level) THEN
39190 trace
39191 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39192 ,p_level => C_LEVEL_ERROR
39193 ,p_module => l_log_module);
39194 END IF;
39195 END IF;
39196 END IF;
39197 --
39198 --
39199 ------------------------------------------------------------------------------------------------
39200 -- 4219869 Business Flow
39201 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39202 -- Prior Entry. Currently, the following code is always generated.
39203 ------------------------------------------------------------------------------------------------
39204 XLA_AE_LINES_PKG.ValidateCurrentLine;
39205
39206 ------------------------------------------------------------------------------------
39207 -- 4219869 Business Flow
39208 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39209 ------------------------------------------------------------------------------------
39210 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39211
39212 ----------------------------------------------------------------------------------
39213 -- 4219869 Business Flow
39214 -- Update journal entry status -- Need to generate this within IF <condition>
39215 ----------------------------------------------------------------------------------
39216 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39217 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39218 ,p_balance_type_code => l_balance_type_code
39219 );
39220
39221 -------------------------------------------------------------------------------------------
39222 -- 4262811 - Generate the Accrual Reversal lines
39223 -------------------------------------------------------------------------------------------
39224 BEGIN
39225 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39226 (g_array_event(p_event_id).array_value_num('header_index'));
39227 IF l_acc_rev_flag IS NULL THEN
39228 l_acc_rev_flag := 'N';
39229 END IF;
39230 EXCEPTION
39231 WHEN OTHERS THEN
39232 l_acc_rev_flag := 'N';
39233 END;
39234 --
39235 IF (l_acc_rev_flag = 'Y') THEN
39236
39237 -- 4645092 ------------------------------------------------------------------------------
39238 -- To allow MPA report to determine if it should generate report process
39239 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39240 ------------------------------------------------------------------------------------------
39241
39242 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39243 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39244 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
39245 -- call ADRs
39246 -- Bug 4922099
39247 --
39248 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39249 (NVL(l_actual_upg_option, 'N') = 'O') OR
39250 (NVL(l_enc_upg_option, 'N') = 'O')
39251 )
39252 THEN
39253 NULL;
39254 --
39255 --
39256
39257 l_ccid := AcctDerRule_4(
39258 p_application_id => p_application_id
39259 , p_ae_header_id => l_ae_header_id
39260 , p_source_4 => p_source_4
39261 , x_transaction_coa_id => l_adr_transaction_coa_id
39262 , x_accounting_coa_id => l_adr_accounting_coa_id
39263 , x_value_type_code => l_adr_value_type_code
39264 , p_side => 'NA'
39265 );
39266
39267 xla_ae_lines_pkg.set_ccid(
39268 p_code_combination_id => l_ccid
39269 , p_value_type_code => l_adr_value_type_code
39270 , p_transaction_coa_id => l_adr_transaction_coa_id
39271 , p_accounting_coa_id => l_adr_accounting_coa_id
39272 , p_adr_code => 'CST_DEFAULT'
39273 , p_adr_type_code => 'S'
39274 , p_component_type => l_component_type
39275 , p_component_code => l_component_code
39276 , p_component_type_code => l_component_type_code
39277 , p_component_appl_id => l_component_appl_id
39278 , p_amb_context_code => l_amb_context_code
39279 , p_side => 'NA'
39280 );
39281
39282
39283 --
39284 --
39285 END IF;
39286
39287 --
39288 -- Update the line information that should be overwritten
39289 --
39290 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39291 p_header_num => 1);
39292 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
39293
39294 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39295
39296 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
39297 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39298 END IF;
39299
39300 --
39301 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39302 --
39303 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39304 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
39305 ELSE
39306 ---------------------------------------------------------------------------------------------------
39307 -- 4262811a Switch Sign
39308 ---------------------------------------------------------------------------------------------------
39309 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
39310 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39311 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39312 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39313 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39314 -- 5132302
39315 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39316 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39317
39318 END IF;
39319
39320 -- 4955764
39321 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39322 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39323
39324
39325 XLA_AE_LINES_PKG.ValidateCurrentLine;
39326 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39327
39328 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39329 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39330 ,p_balance_type_code => l_balance_type_code);
39331
39332 END IF;
39333
39334 -----------------------------------------------------------------------------------------
39335 -- 4262811 Multiperiod Accounting
39336 -----------------------------------------------------------------------------------------
39337 -- No MPA option is assigned.
39338
39339
39340 END IF;
39341 END IF;
39342 --
39343
39344 --
39345 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39346 trace
39347 (p_msg => 'END of AcctLineType_73'
39348 ,p_level => C_LEVEL_PROCEDURE
39349 ,p_module => l_log_module);
39350 END IF;
39351 --
39352 EXCEPTION
39353 WHEN xla_exceptions_pkg.application_exception THEN
39354 RAISE;
39355 WHEN OTHERS THEN
39356 xla_exceptions_pkg.raise_message
39357 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_73');
39358 END AcctLineType_73;
39359 --
39360
39361 ---------------------------------------
39362 --
39363 -- PRIVATE FUNCTION
39364 -- AcctLineType_74
39365 --
39366 ---------------------------------------
39367 PROCEDURE AcctLineType_74 (
39368 p_application_id IN NUMBER
39369 ,p_event_id IN NUMBER
39370 ,p_calculate_acctd_flag IN VARCHAR2
39371 ,p_calculate_g_l_flag IN VARCHAR2
39372 ,p_actual_flag IN OUT VARCHAR2
39373 ,p_balance_type_code OUT VARCHAR2
39374 ,p_gain_or_loss_ref OUT VARCHAR2
39375
39376 --Cost Management Default Account
39377 , p_source_4 IN NUMBER
39378 --DISTRIBUTION_IDENTIFIER
39379 , p_source_11 IN NUMBER
39380 --Distribution Type
39381 , p_source_12 IN VARCHAR2
39382 , p_source_12_meaning IN VARCHAR2
39383 --Entered Currency Code
39384 , p_source_15 IN VARCHAR2
39385 --Entered Amount
39386 , p_source_18 IN NUMBER
39387 --Currency Conversion Date
39388 , p_source_19 IN DATE
39389 --Currency Conversion Rate
39390 , p_source_20 IN NUMBER
39391 --Currency Conversion Type
39392 , p_source_21 IN VARCHAR2
39393 --Accounted Amount
39394 , p_source_22 IN NUMBER
39395 --Accounting Line Type
39396 , p_source_24 IN NUMBER
39397 )
39398 IS
39399
39400 l_component_type VARCHAR2(80);
39401 l_component_code VARCHAR2(30);
39402 l_component_type_code VARCHAR2(1);
39403 l_component_appl_id INTEGER;
39404 l_amb_context_code VARCHAR2(30);
39405 l_entity_code VARCHAR2(30);
39406 l_event_class_code VARCHAR2(30);
39407 l_ae_header_id NUMBER;
39408 l_event_type_code VARCHAR2(30);
39409 l_line_definition_code VARCHAR2(30);
39410 l_line_definition_owner_code VARCHAR2(1);
39411 --
39412 -- adr variables
39413 l_segment VARCHAR2(30);
39414 l_ccid NUMBER;
39415 l_adr_transaction_coa_id NUMBER;
39416 l_adr_accounting_coa_id NUMBER;
39417 l_adr_flexfield_segment_code VARCHAR2(30);
39418 l_adr_flex_value_set_id NUMBER;
39419 l_adr_value_type_code VARCHAR2(30);
39420 l_adr_value_combination_id NUMBER;
39421 l_adr_value_segment_code VARCHAR2(30);
39422
39423 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
39424 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
39425 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
39426 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
39427
39428 -- 4262811 Variables ------------------------------------------------------------------------------------------
39429 l_entered_amt_idx NUMBER;
39430 l_accted_amt_idx NUMBER;
39431 l_acc_rev_flag VARCHAR2(1);
39432 l_accrual_line_num NUMBER;
39433 l_tmp_amt NUMBER;
39434 l_acc_rev_natural_side_code VARCHAR2(1);
39435
39436 l_num_entries NUMBER;
39437 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
39438 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
39439 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
39440 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
39441 l_recog_line_1 NUMBER;
39442 l_recog_line_2 NUMBER;
39443
39444 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
39445 l_bflow_applied_to_amt NUMBER; -- 5132302
39446 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
39447
39448 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39449
39450 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
39451 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
39452
39453 ---------------------------------------------------------------------------------------------------------------
39454
39455
39456 --
39457 -- bulk performance
39458 --
39459 l_balance_type_code VARCHAR2(1);
39460 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
39461 l_log_module VARCHAR2(240);
39462
39463 --
39464 -- Upgrade strategy
39465 --
39466 l_actual_upg_option VARCHAR2(1);
39467 l_enc_upg_option VARCHAR2(1);
39468
39469 --
39470 BEGIN
39471 --
39472 IF g_log_enabled THEN
39473 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
39474 END IF;
39475 --
39476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39477
39478 trace
39479 (p_msg => 'BEGIN of AcctLineType_74'
39480 ,p_level => C_LEVEL_PROCEDURE
39481 ,p_module => l_log_module);
39482
39483 END IF;
39484 --
39485 l_component_type := 'AMB_JLT';
39486 l_component_code := 'INTERORG_PAYABLES';
39487 l_component_type_code := 'S';
39488 l_component_appl_id := 707;
39489 l_amb_context_code := 'DEFAULT';
39490 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
39491 l_event_class_code := 'USER_DEFINE';
39492 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
39493 l_line_definition_owner_code := 'S';
39494 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
39495 --
39496 l_balance_type_code := 'A';
39497 l_segment := NULL;
39498 l_ccid := NULL;
39499 l_adr_transaction_coa_id := NULL;
39500 l_adr_accounting_coa_id := NULL;
39501 l_adr_flexfield_segment_code := NULL;
39502 l_adr_flex_value_set_id := NULL;
39503 l_adr_value_type_code := NULL;
39504 l_adr_value_combination_id := NULL;
39505 l_adr_value_segment_code := NULL;
39506
39507 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
39508 l_bflow_class_code := ''; -- 4219869 Business Flow
39509 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
39510 l_budgetary_control_flag := 'N';
39511
39512 l_bflow_applied_to_amt_idx := NULL; -- 5132302
39513 l_bflow_applied_to_amt := NULL; -- 5132302
39514 l_entered_amt_idx := NULL; -- 4262811
39515 l_accted_amt_idx := NULL; -- 4262811
39516 l_acc_rev_flag := NULL; -- 4262811
39517 l_accrual_line_num := NULL; -- 4262811
39518 l_tmp_amt := NULL; -- 4262811
39519 --
39520
39521 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39522 l_balance_type_code <> 'B' THEN
39523 IF NVL(p_source_24,9E125) = 9
39524 THEN
39525
39526 --
39527 XLA_AE_LINES_PKG.SetNewLine;
39528
39529 p_balance_type_code := l_balance_type_code;
39530 -- set the flag so later we will know whether the gain loss line needs to be created
39531
39532 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39533 p_actual_flag :='A';
39534 END IF;
39535
39536 --
39537 -- bulk performance
39538 --
39539 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39540 p_header_num => 0); -- 4262811
39541 --
39542 -- set accounting line options
39543 --
39544 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39545 p_natural_side_code => 'D'
39546 , p_gain_or_loss_flag => 'N'
39547 , p_gl_transfer_mode_code => 'S'
39548 , p_acct_entry_type_code => 'A'
39549 , p_switch_side_flag => 'Y'
39550 , p_merge_duplicate_code => 'N'
39551 );
39552 --
39553 l_acc_rev_natural_side_code := 'C'; -- 4262811
39554 --
39555 --
39556 -- set accounting line type info
39557 --
39558 xla_ae_lines_pkg.SetAcctLineType
39559 (p_component_type => l_component_type
39560 ,p_event_type_code => l_event_type_code
39561 ,p_line_definition_owner_code => l_line_definition_owner_code
39562 ,p_line_definition_code => l_line_definition_code
39563 ,p_accounting_line_code => l_component_code
39564 ,p_accounting_line_type_code => l_component_type_code
39565 ,p_accounting_line_appl_id => l_component_appl_id
39566 ,p_amb_context_code => l_amb_context_code
39567 ,p_entity_code => l_entity_code
39568 ,p_event_class_code => l_event_class_code);
39569 --
39570 -- set accounting class
39571 --
39572 xla_ae_lines_pkg.SetAcctClass(
39573 p_accounting_class_code => 'INTERORG_PAYABLES'
39574 , p_ae_header_id => l_ae_header_id
39575 );
39576
39577 --
39578 -- set rounding class
39579 --
39580 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39581 'INTERORG_PAYABLES';
39582
39583 --
39584 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39585 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39586 --
39587 -- bulk performance
39588 --
39589 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39590
39591 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39592 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39593
39594 -- 4955764
39595 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39596 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39597
39598 -- 4458381 Public Sector Enh
39599
39600 --
39601 -- set accounting attributes for the line type
39602 --
39603 l_entered_amt_idx := 3;
39604 l_accted_amt_idx := 8;
39605 l_bflow_applied_to_amt_idx := NULL; -- 5132302
39606 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39607 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
39608 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39609 l_rec_acct_attrs.array_char_value(2) := p_source_12;
39610 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39611 l_rec_acct_attrs.array_num_value(3) := p_source_18;
39612 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39613 l_rec_acct_attrs.array_char_value(4) := p_source_15;
39614 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39615 l_rec_acct_attrs.array_date_value(5) := p_source_19;
39616 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39617 l_rec_acct_attrs.array_num_value(6) := p_source_20;
39618 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39619 l_rec_acct_attrs.array_char_value(7) := p_source_21;
39620 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39621 l_rec_acct_attrs.array_num_value(8) := p_source_22;
39622
39623 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39624 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39625
39626 ---------------------------------------------------------------------------------------------------------------
39627 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39628 ---------------------------------------------------------------------------------------------------------------
39629 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39630
39631 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39632 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39633
39634 IF xla_accounting_cache_pkg.GetValueChar
39635 (p_source_code => 'LEDGER_CATEGORY_CODE'
39636 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39637 AND l_bflow_method_code = 'PRIOR_ENTRY'
39638 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39639 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39640 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39641 )
39642 THEN
39643 xla_ae_lines_pkg.BflowUpgEntry
39644 (p_business_method_code => l_bflow_method_code
39645 ,p_business_class_code => l_bflow_class_code
39646 ,p_balance_type => l_balance_type_code);
39647 ELSE
39648 NULL;
39649 -- No business flow processing for business flow method of NONE.
39650 END IF;
39651
39652 --
39653 -- call analytical criteria
39654 --
39655
39656 --
39657 -- call description
39658 --
39659 -- No description or it is inherited.
39660 --
39661 -- call ADRs
39662 -- Bug 4922099
39663 --
39664 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39665 (NVL(l_actual_upg_option, 'N') = 'O') OR
39666 (NVL(l_enc_upg_option, 'N') = 'O')
39667 )
39668 THEN
39669 NULL;
39670 --
39671 --
39672
39673 l_ccid := AcctDerRule_4(
39674 p_application_id => p_application_id
39675 , p_ae_header_id => l_ae_header_id
39676 , p_source_4 => p_source_4
39677 , x_transaction_coa_id => l_adr_transaction_coa_id
39678 , x_accounting_coa_id => l_adr_accounting_coa_id
39679 , x_value_type_code => l_adr_value_type_code
39680 , p_side => 'NA'
39681 );
39682
39683 xla_ae_lines_pkg.set_ccid(
39684 p_code_combination_id => l_ccid
39685 , p_value_type_code => l_adr_value_type_code
39686 , p_transaction_coa_id => l_adr_transaction_coa_id
39687 , p_accounting_coa_id => l_adr_accounting_coa_id
39688 , p_adr_code => 'CST_DEFAULT'
39689 , p_adr_type_code => 'S'
39690 , p_component_type => l_component_type
39691 , p_component_code => l_component_code
39692 , p_component_type_code => l_component_type_code
39693 , p_component_appl_id => l_component_appl_id
39694 , p_amb_context_code => l_amb_context_code
39695 , p_side => 'NA'
39696 );
39697
39698
39699 --
39700 --
39701 END IF;
39702 --
39703 -- Bug 4922099
39704 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39705 (NVL(l_enc_upg_option, 'N') = 'O')
39706 ) AND
39707 (l_bflow_method_code = 'PRIOR_ENTRY')
39708 )
39709 THEN
39710 IF
39711 --
39712 1 = 2
39713 --
39714 THEN
39715 xla_accounting_err_pkg.build_message
39716 (p_appli_s_name => 'XLA'
39717 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39718 ,p_token_1 => 'LINE_NUMBER'
39719 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
39720 ,p_token_2 => 'LINE_TYPE_NAME'
39721 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
39722 l_component_type
39723 ,l_component_code
39724 ,l_component_type_code
39725 ,l_component_appl_id
39726 ,l_amb_context_code
39727 ,l_entity_code
39728 ,l_event_class_code
39729 )
39730 ,p_token_3 => 'OWNER'
39731 ,p_value_3 => xla_lookups_pkg.get_meaning(
39732 p_lookup_type => 'XLA_OWNER_TYPE'
39733 ,p_lookup_code => l_component_type_code
39734 )
39735 ,p_token_4 => 'PRODUCT_NAME'
39736 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39737 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39738 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39739 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39740 ,p_ae_header_id => NULL
39741 );
39742
39743 IF (C_LEVEL_ERROR>= g_log_level) THEN
39744 trace
39745 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39746 ,p_level => C_LEVEL_ERROR
39747 ,p_module => l_log_module);
39748 END IF;
39749 END IF;
39750 END IF;
39751 --
39752 --
39753 ------------------------------------------------------------------------------------------------
39754 -- 4219869 Business Flow
39755 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39756 -- Prior Entry. Currently, the following code is always generated.
39757 ------------------------------------------------------------------------------------------------
39758 XLA_AE_LINES_PKG.ValidateCurrentLine;
39759
39760 ------------------------------------------------------------------------------------
39761 -- 4219869 Business Flow
39762 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39763 ------------------------------------------------------------------------------------
39764 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39765
39766 ----------------------------------------------------------------------------------
39767 -- 4219869 Business Flow
39768 -- Update journal entry status -- Need to generate this within IF <condition>
39769 ----------------------------------------------------------------------------------
39770 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39771 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39772 ,p_balance_type_code => l_balance_type_code
39773 );
39774
39775 -------------------------------------------------------------------------------------------
39776 -- 4262811 - Generate the Accrual Reversal lines
39777 -------------------------------------------------------------------------------------------
39778 BEGIN
39779 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39780 (g_array_event(p_event_id).array_value_num('header_index'));
39781 IF l_acc_rev_flag IS NULL THEN
39782 l_acc_rev_flag := 'N';
39783 END IF;
39784 EXCEPTION
39785 WHEN OTHERS THEN
39786 l_acc_rev_flag := 'N';
39787 END;
39788 --
39789 IF (l_acc_rev_flag = 'Y') THEN
39790
39791 -- 4645092 ------------------------------------------------------------------------------
39792 -- To allow MPA report to determine if it should generate report process
39793 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39794 ------------------------------------------------------------------------------------------
39795
39796 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39797 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39798 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
39799 -- call ADRs
39800 -- Bug 4922099
39801 --
39802 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39803 (NVL(l_actual_upg_option, 'N') = 'O') OR
39804 (NVL(l_enc_upg_option, 'N') = 'O')
39805 )
39806 THEN
39807 NULL;
39808 --
39809 --
39810
39811 l_ccid := AcctDerRule_4(
39812 p_application_id => p_application_id
39813 , p_ae_header_id => l_ae_header_id
39814 , p_source_4 => p_source_4
39815 , x_transaction_coa_id => l_adr_transaction_coa_id
39816 , x_accounting_coa_id => l_adr_accounting_coa_id
39817 , x_value_type_code => l_adr_value_type_code
39818 , p_side => 'NA'
39819 );
39820
39821 xla_ae_lines_pkg.set_ccid(
39822 p_code_combination_id => l_ccid
39823 , p_value_type_code => l_adr_value_type_code
39824 , p_transaction_coa_id => l_adr_transaction_coa_id
39825 , p_accounting_coa_id => l_adr_accounting_coa_id
39826 , p_adr_code => 'CST_DEFAULT'
39827 , p_adr_type_code => 'S'
39828 , p_component_type => l_component_type
39829 , p_component_code => l_component_code
39830 , p_component_type_code => l_component_type_code
39831 , p_component_appl_id => l_component_appl_id
39832 , p_amb_context_code => l_amb_context_code
39833 , p_side => 'NA'
39834 );
39835
39836
39837 --
39838 --
39839 END IF;
39840
39841 --
39842 -- Update the line information that should be overwritten
39843 --
39844 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39845 p_header_num => 1);
39846 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
39847
39848 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39849
39850 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
39851 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39852 END IF;
39853
39854 --
39855 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39856 --
39857 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39858 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
39859 ELSE
39860 ---------------------------------------------------------------------------------------------------
39861 -- 4262811a Switch Sign
39862 ---------------------------------------------------------------------------------------------------
39863 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
39864 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39865 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39866 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39867 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39868 -- 5132302
39869 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39870 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39871
39872 END IF;
39873
39874 -- 4955764
39875 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39876 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39877
39878
39879 XLA_AE_LINES_PKG.ValidateCurrentLine;
39880 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39881
39882 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39883 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39884 ,p_balance_type_code => l_balance_type_code);
39885
39886 END IF;
39887
39888 -----------------------------------------------------------------------------------------
39889 -- 4262811 Multiperiod Accounting
39890 -----------------------------------------------------------------------------------------
39891 -- No MPA option is assigned.
39892
39893
39894 END IF;
39895 END IF;
39896 --
39897
39898 --
39899 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39900 trace
39901 (p_msg => 'END of AcctLineType_74'
39902 ,p_level => C_LEVEL_PROCEDURE
39903 ,p_module => l_log_module);
39904 END IF;
39905 --
39906 EXCEPTION
39907 WHEN xla_exceptions_pkg.application_exception THEN
39908 RAISE;
39909 WHEN OTHERS THEN
39910 xla_exceptions_pkg.raise_message
39911 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_74');
39912 END AcctLineType_74;
39913 --
39914
39915 ---------------------------------------
39916 --
39917 -- PRIVATE FUNCTION
39918 -- AcctLineType_75
39919 --
39920 ---------------------------------------
39921 PROCEDURE AcctLineType_75 (
39922 p_application_id IN NUMBER
39923 ,p_event_id IN NUMBER
39924 ,p_calculate_acctd_flag IN VARCHAR2
39925 ,p_calculate_g_l_flag IN VARCHAR2
39926 ,p_actual_flag IN OUT VARCHAR2
39927 ,p_balance_type_code OUT VARCHAR2
39928 ,p_gain_or_loss_ref OUT VARCHAR2
39929
39930 --Cost Management Default Account
39931 , p_source_4 IN NUMBER
39932 --DISTRIBUTION_IDENTIFIER
39933 , p_source_11 IN NUMBER
39934 --Distribution Type
39935 , p_source_12 IN VARCHAR2
39936 , p_source_12_meaning IN VARCHAR2
39937 --Entered Currency Code
39938 , p_source_15 IN VARCHAR2
39939 --Entered Amount
39940 , p_source_18 IN NUMBER
39941 --Currency Conversion Date
39942 , p_source_19 IN DATE
39943 --Currency Conversion Rate
39944 , p_source_20 IN NUMBER
39945 --Currency Conversion Type
39946 , p_source_21 IN VARCHAR2
39947 --Accounted Amount
39948 , p_source_22 IN NUMBER
39949 --Accounting Line Type
39950 , p_source_24 IN NUMBER
39951 )
39952 IS
39953
39954 l_component_type VARCHAR2(80);
39955 l_component_code VARCHAR2(30);
39956 l_component_type_code VARCHAR2(1);
39957 l_component_appl_id INTEGER;
39958 l_amb_context_code VARCHAR2(30);
39959 l_entity_code VARCHAR2(30);
39960 l_event_class_code VARCHAR2(30);
39961 l_ae_header_id NUMBER;
39962 l_event_type_code VARCHAR2(30);
39963 l_line_definition_code VARCHAR2(30);
39964 l_line_definition_owner_code VARCHAR2(1);
39965 --
39966 -- adr variables
39967 l_segment VARCHAR2(30);
39968 l_ccid NUMBER;
39969 l_adr_transaction_coa_id NUMBER;
39970 l_adr_accounting_coa_id NUMBER;
39971 l_adr_flexfield_segment_code VARCHAR2(30);
39972 l_adr_flex_value_set_id NUMBER;
39973 l_adr_value_type_code VARCHAR2(30);
39974 l_adr_value_combination_id NUMBER;
39975 l_adr_value_segment_code VARCHAR2(30);
39976
39977 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
39978 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
39979 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
39980 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
39981
39982 -- 4262811 Variables ------------------------------------------------------------------------------------------
39983 l_entered_amt_idx NUMBER;
39984 l_accted_amt_idx NUMBER;
39985 l_acc_rev_flag VARCHAR2(1);
39986 l_accrual_line_num NUMBER;
39987 l_tmp_amt NUMBER;
39988 l_acc_rev_natural_side_code VARCHAR2(1);
39989
39990 l_num_entries NUMBER;
39991 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
39992 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
39993 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
39994 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
39995 l_recog_line_1 NUMBER;
39996 l_recog_line_2 NUMBER;
39997
39998 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
39999 l_bflow_applied_to_amt NUMBER; -- 5132302
40000 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
40001
40002 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40003
40004 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
40005 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
40006
40007 ---------------------------------------------------------------------------------------------------------------
40008
40009
40010 --
40011 -- bulk performance
40012 --
40013 l_balance_type_code VARCHAR2(1);
40014 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
40015 l_log_module VARCHAR2(240);
40016
40017 --
40018 -- Upgrade strategy
40019 --
40020 l_actual_upg_option VARCHAR2(1);
40021 l_enc_upg_option VARCHAR2(1);
40022
40023 --
40024 BEGIN
40025 --
40026 IF g_log_enabled THEN
40027 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
40028 END IF;
40029 --
40030 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40031
40032 trace
40033 (p_msg => 'BEGIN of AcctLineType_75'
40034 ,p_level => C_LEVEL_PROCEDURE
40035 ,p_module => l_log_module);
40036
40037 END IF;
40038 --
40039 l_component_type := 'AMB_JLT';
40040 l_component_code := 'INTERORG_PAYABLES';
40041 l_component_type_code := 'S';
40042 l_component_appl_id := 707;
40043 l_amb_context_code := 'DEFAULT';
40044 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
40045 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
40046 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
40047 l_line_definition_owner_code := 'S';
40048 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
40049 --
40050 l_balance_type_code := 'A';
40051 l_segment := NULL;
40052 l_ccid := NULL;
40053 l_adr_transaction_coa_id := NULL;
40054 l_adr_accounting_coa_id := NULL;
40055 l_adr_flexfield_segment_code := NULL;
40056 l_adr_flex_value_set_id := NULL;
40057 l_adr_value_type_code := NULL;
40058 l_adr_value_combination_id := NULL;
40059 l_adr_value_segment_code := NULL;
40060
40061 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
40062 l_bflow_class_code := ''; -- 4219869 Business Flow
40063 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
40064 l_budgetary_control_flag := 'N';
40065
40066 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40067 l_bflow_applied_to_amt := NULL; -- 5132302
40068 l_entered_amt_idx := NULL; -- 4262811
40069 l_accted_amt_idx := NULL; -- 4262811
40070 l_acc_rev_flag := NULL; -- 4262811
40071 l_accrual_line_num := NULL; -- 4262811
40072 l_tmp_amt := NULL; -- 4262811
40073 --
40074
40075 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40076 l_balance_type_code <> 'B' THEN
40077 IF NVL(p_source_24,9E125) = 9
40078 THEN
40079
40080 --
40081 XLA_AE_LINES_PKG.SetNewLine;
40082
40083 p_balance_type_code := l_balance_type_code;
40084 -- set the flag so later we will know whether the gain loss line needs to be created
40085
40086 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40087 p_actual_flag :='A';
40088 END IF;
40089
40090 --
40091 -- bulk performance
40092 --
40093 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40094 p_header_num => 0); -- 4262811
40095 --
40096 -- set accounting line options
40097 --
40098 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40099 p_natural_side_code => 'D'
40100 , p_gain_or_loss_flag => 'N'
40101 , p_gl_transfer_mode_code => 'S'
40102 , p_acct_entry_type_code => 'A'
40103 , p_switch_side_flag => 'Y'
40104 , p_merge_duplicate_code => 'N'
40105 );
40106 --
40107 l_acc_rev_natural_side_code := 'C'; -- 4262811
40108 --
40109 --
40110 -- set accounting line type info
40111 --
40112 xla_ae_lines_pkg.SetAcctLineType
40113 (p_component_type => l_component_type
40114 ,p_event_type_code => l_event_type_code
40115 ,p_line_definition_owner_code => l_line_definition_owner_code
40116 ,p_line_definition_code => l_line_definition_code
40117 ,p_accounting_line_code => l_component_code
40118 ,p_accounting_line_type_code => l_component_type_code
40119 ,p_accounting_line_appl_id => l_component_appl_id
40120 ,p_amb_context_code => l_amb_context_code
40121 ,p_entity_code => l_entity_code
40122 ,p_event_class_code => l_event_class_code);
40123 --
40124 -- set accounting class
40125 --
40126 xla_ae_lines_pkg.SetAcctClass(
40127 p_accounting_class_code => 'INTERORG_PAYABLES'
40128 , p_ae_header_id => l_ae_header_id
40129 );
40130
40131 --
40132 -- set rounding class
40133 --
40134 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40135 'INTERORG_PAYABLES';
40136
40137 --
40138 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40139 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40140 --
40141 -- bulk performance
40142 --
40143 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40144
40145 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40146 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40147
40148 -- 4955764
40149 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40150 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40151
40152 -- 4458381 Public Sector Enh
40153
40154 --
40155 -- set accounting attributes for the line type
40156 --
40157 l_entered_amt_idx := 3;
40158 l_accted_amt_idx := 8;
40159 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40160 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40161 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
40162 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40163 l_rec_acct_attrs.array_char_value(2) := p_source_12;
40164 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40165 l_rec_acct_attrs.array_num_value(3) := p_source_18;
40166 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40167 l_rec_acct_attrs.array_char_value(4) := p_source_15;
40168 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40169 l_rec_acct_attrs.array_date_value(5) := p_source_19;
40170 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40171 l_rec_acct_attrs.array_num_value(6) := p_source_20;
40172 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40173 l_rec_acct_attrs.array_char_value(7) := p_source_21;
40174 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40175 l_rec_acct_attrs.array_num_value(8) := p_source_22;
40176
40177 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40178 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40179
40180 ---------------------------------------------------------------------------------------------------------------
40181 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40182 ---------------------------------------------------------------------------------------------------------------
40183 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40184
40185 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40186 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40187
40188 IF xla_accounting_cache_pkg.GetValueChar
40189 (p_source_code => 'LEDGER_CATEGORY_CODE'
40190 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40191 AND l_bflow_method_code = 'PRIOR_ENTRY'
40192 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40193 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40194 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40195 )
40196 THEN
40197 xla_ae_lines_pkg.BflowUpgEntry
40198 (p_business_method_code => l_bflow_method_code
40199 ,p_business_class_code => l_bflow_class_code
40200 ,p_balance_type => l_balance_type_code);
40201 ELSE
40202 NULL;
40203 -- No business flow processing for business flow method of NONE.
40204 END IF;
40205
40206 --
40207 -- call analytical criteria
40208 --
40209
40210 --
40211 -- call description
40212 --
40213 -- No description or it is inherited.
40214 --
40215 -- call ADRs
40216 -- Bug 4922099
40217 --
40218 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40219 (NVL(l_actual_upg_option, 'N') = 'O') OR
40220 (NVL(l_enc_upg_option, 'N') = 'O')
40221 )
40222 THEN
40223 NULL;
40224 --
40225 --
40226
40227 l_ccid := AcctDerRule_4(
40228 p_application_id => p_application_id
40229 , p_ae_header_id => l_ae_header_id
40230 , p_source_4 => p_source_4
40231 , x_transaction_coa_id => l_adr_transaction_coa_id
40232 , x_accounting_coa_id => l_adr_accounting_coa_id
40233 , x_value_type_code => l_adr_value_type_code
40234 , p_side => 'NA'
40235 );
40236
40237 xla_ae_lines_pkg.set_ccid(
40238 p_code_combination_id => l_ccid
40239 , p_value_type_code => l_adr_value_type_code
40240 , p_transaction_coa_id => l_adr_transaction_coa_id
40241 , p_accounting_coa_id => l_adr_accounting_coa_id
40242 , p_adr_code => 'CST_DEFAULT'
40243 , p_adr_type_code => 'S'
40244 , p_component_type => l_component_type
40245 , p_component_code => l_component_code
40246 , p_component_type_code => l_component_type_code
40247 , p_component_appl_id => l_component_appl_id
40248 , p_amb_context_code => l_amb_context_code
40249 , p_side => 'NA'
40250 );
40251
40252
40253 --
40254 --
40255 END IF;
40256 --
40257 -- Bug 4922099
40258 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40259 (NVL(l_enc_upg_option, 'N') = 'O')
40260 ) AND
40261 (l_bflow_method_code = 'PRIOR_ENTRY')
40262 )
40263 THEN
40264 IF
40265 --
40266 1 = 2
40267 --
40268 THEN
40269 xla_accounting_err_pkg.build_message
40270 (p_appli_s_name => 'XLA'
40271 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40272 ,p_token_1 => 'LINE_NUMBER'
40273 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
40274 ,p_token_2 => 'LINE_TYPE_NAME'
40275 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
40276 l_component_type
40277 ,l_component_code
40278 ,l_component_type_code
40279 ,l_component_appl_id
40280 ,l_amb_context_code
40281 ,l_entity_code
40282 ,l_event_class_code
40283 )
40284 ,p_token_3 => 'OWNER'
40285 ,p_value_3 => xla_lookups_pkg.get_meaning(
40286 p_lookup_type => 'XLA_OWNER_TYPE'
40287 ,p_lookup_code => l_component_type_code
40288 )
40289 ,p_token_4 => 'PRODUCT_NAME'
40290 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40291 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40292 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40293 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40294 ,p_ae_header_id => NULL
40295 );
40296
40297 IF (C_LEVEL_ERROR>= g_log_level) THEN
40298 trace
40299 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40300 ,p_level => C_LEVEL_ERROR
40301 ,p_module => l_log_module);
40302 END IF;
40303 END IF;
40304 END IF;
40305 --
40306 --
40307 ------------------------------------------------------------------------------------------------
40308 -- 4219869 Business Flow
40309 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40310 -- Prior Entry. Currently, the following code is always generated.
40311 ------------------------------------------------------------------------------------------------
40312 XLA_AE_LINES_PKG.ValidateCurrentLine;
40313
40314 ------------------------------------------------------------------------------------
40315 -- 4219869 Business Flow
40316 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40317 ------------------------------------------------------------------------------------
40318 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40319
40320 ----------------------------------------------------------------------------------
40321 -- 4219869 Business Flow
40322 -- Update journal entry status -- Need to generate this within IF <condition>
40323 ----------------------------------------------------------------------------------
40324 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40325 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40326 ,p_balance_type_code => l_balance_type_code
40327 );
40328
40329 -------------------------------------------------------------------------------------------
40330 -- 4262811 - Generate the Accrual Reversal lines
40331 -------------------------------------------------------------------------------------------
40332 BEGIN
40333 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40334 (g_array_event(p_event_id).array_value_num('header_index'));
40335 IF l_acc_rev_flag IS NULL THEN
40336 l_acc_rev_flag := 'N';
40337 END IF;
40338 EXCEPTION
40339 WHEN OTHERS THEN
40340 l_acc_rev_flag := 'N';
40341 END;
40342 --
40343 IF (l_acc_rev_flag = 'Y') THEN
40344
40345 -- 4645092 ------------------------------------------------------------------------------
40346 -- To allow MPA report to determine if it should generate report process
40347 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40348 ------------------------------------------------------------------------------------------
40349
40350 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40351 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40352 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
40353 -- call ADRs
40354 -- Bug 4922099
40355 --
40356 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40357 (NVL(l_actual_upg_option, 'N') = 'O') OR
40358 (NVL(l_enc_upg_option, 'N') = 'O')
40359 )
40360 THEN
40361 NULL;
40362 --
40363 --
40364
40365 l_ccid := AcctDerRule_4(
40366 p_application_id => p_application_id
40367 , p_ae_header_id => l_ae_header_id
40368 , p_source_4 => p_source_4
40369 , x_transaction_coa_id => l_adr_transaction_coa_id
40370 , x_accounting_coa_id => l_adr_accounting_coa_id
40371 , x_value_type_code => l_adr_value_type_code
40372 , p_side => 'NA'
40373 );
40374
40375 xla_ae_lines_pkg.set_ccid(
40376 p_code_combination_id => l_ccid
40377 , p_value_type_code => l_adr_value_type_code
40378 , p_transaction_coa_id => l_adr_transaction_coa_id
40379 , p_accounting_coa_id => l_adr_accounting_coa_id
40380 , p_adr_code => 'CST_DEFAULT'
40381 , p_adr_type_code => 'S'
40382 , p_component_type => l_component_type
40383 , p_component_code => l_component_code
40384 , p_component_type_code => l_component_type_code
40385 , p_component_appl_id => l_component_appl_id
40386 , p_amb_context_code => l_amb_context_code
40387 , p_side => 'NA'
40388 );
40389
40390
40391 --
40392 --
40393 END IF;
40394
40395 --
40396 -- Update the line information that should be overwritten
40397 --
40398 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40399 p_header_num => 1);
40400 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
40401
40402 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40403
40404 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
40405 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40406 END IF;
40407
40408 --
40409 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40410 --
40411 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40412 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
40413 ELSE
40414 ---------------------------------------------------------------------------------------------------
40415 -- 4262811a Switch Sign
40416 ---------------------------------------------------------------------------------------------------
40417 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
40418 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40419 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40420 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40421 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40422 -- 5132302
40423 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40424 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40425
40426 END IF;
40427
40428 -- 4955764
40429 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40430 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40431
40432
40433 XLA_AE_LINES_PKG.ValidateCurrentLine;
40434 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40435
40436 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40437 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40438 ,p_balance_type_code => l_balance_type_code);
40439
40440 END IF;
40441
40442 -----------------------------------------------------------------------------------------
40443 -- 4262811 Multiperiod Accounting
40444 -----------------------------------------------------------------------------------------
40445 -- No MPA option is assigned.
40446
40447
40448 END IF;
40449 END IF;
40450 --
40451
40452 --
40453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40454 trace
40455 (p_msg => 'END of AcctLineType_75'
40456 ,p_level => C_LEVEL_PROCEDURE
40457 ,p_module => l_log_module);
40458 END IF;
40459 --
40460 EXCEPTION
40461 WHEN xla_exceptions_pkg.application_exception THEN
40462 RAISE;
40463 WHEN OTHERS THEN
40464 xla_exceptions_pkg.raise_message
40465 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_75');
40466 END AcctLineType_75;
40467 --
40468
40469 ---------------------------------------
40470 --
40471 -- PRIVATE FUNCTION
40472 -- AcctLineType_76
40473 --
40474 ---------------------------------------
40475 PROCEDURE AcctLineType_76 (
40476 p_application_id IN NUMBER
40477 ,p_event_id IN NUMBER
40478 ,p_calculate_acctd_flag IN VARCHAR2
40479 ,p_calculate_g_l_flag IN VARCHAR2
40480 ,p_actual_flag IN OUT VARCHAR2
40481 ,p_balance_type_code OUT VARCHAR2
40482 ,p_gain_or_loss_ref OUT VARCHAR2
40483
40484 --Cost Management Default Account
40485 , p_source_4 IN NUMBER
40486 --DISTRIBUTION_IDENTIFIER
40487 , p_source_11 IN NUMBER
40488 --Distribution Type
40489 , p_source_12 IN VARCHAR2
40490 , p_source_12_meaning IN VARCHAR2
40491 --Entered Currency Code
40492 , p_source_15 IN VARCHAR2
40493 --Entered Amount
40494 , p_source_18 IN NUMBER
40495 --Currency Conversion Date
40496 , p_source_19 IN DATE
40497 --Currency Conversion Rate
40498 , p_source_20 IN NUMBER
40499 --Currency Conversion Type
40500 , p_source_21 IN VARCHAR2
40501 --Accounted Amount
40502 , p_source_22 IN NUMBER
40503 --Accounting Line Type
40504 , p_source_24 IN NUMBER
40505 )
40506 IS
40507
40508 l_component_type VARCHAR2(80);
40509 l_component_code VARCHAR2(30);
40510 l_component_type_code VARCHAR2(1);
40511 l_component_appl_id INTEGER;
40512 l_amb_context_code VARCHAR2(30);
40513 l_entity_code VARCHAR2(30);
40514 l_event_class_code VARCHAR2(30);
40515 l_ae_header_id NUMBER;
40516 l_event_type_code VARCHAR2(30);
40517 l_line_definition_code VARCHAR2(30);
40518 l_line_definition_owner_code VARCHAR2(1);
40519 --
40520 -- adr variables
40521 l_segment VARCHAR2(30);
40522 l_ccid NUMBER;
40523 l_adr_transaction_coa_id NUMBER;
40524 l_adr_accounting_coa_id NUMBER;
40525 l_adr_flexfield_segment_code VARCHAR2(30);
40526 l_adr_flex_value_set_id NUMBER;
40527 l_adr_value_type_code VARCHAR2(30);
40528 l_adr_value_combination_id NUMBER;
40529 l_adr_value_segment_code VARCHAR2(30);
40530
40531 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
40532 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
40533 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
40534 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
40535
40536 -- 4262811 Variables ------------------------------------------------------------------------------------------
40537 l_entered_amt_idx NUMBER;
40538 l_accted_amt_idx NUMBER;
40539 l_acc_rev_flag VARCHAR2(1);
40540 l_accrual_line_num NUMBER;
40541 l_tmp_amt NUMBER;
40542 l_acc_rev_natural_side_code VARCHAR2(1);
40543
40544 l_num_entries NUMBER;
40545 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
40546 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
40547 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
40548 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
40549 l_recog_line_1 NUMBER;
40550 l_recog_line_2 NUMBER;
40551
40552 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
40553 l_bflow_applied_to_amt NUMBER; -- 5132302
40554 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
40555
40556 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40557
40558 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
40559 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
40560
40561 ---------------------------------------------------------------------------------------------------------------
40562
40563
40564 --
40565 -- bulk performance
40566 --
40567 l_balance_type_code VARCHAR2(1);
40568 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
40569 l_log_module VARCHAR2(240);
40570
40571 --
40572 -- Upgrade strategy
40573 --
40574 l_actual_upg_option VARCHAR2(1);
40575 l_enc_upg_option VARCHAR2(1);
40576
40577 --
40578 BEGIN
40579 --
40580 IF g_log_enabled THEN
40581 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
40582 END IF;
40583 --
40584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40585
40586 trace
40587 (p_msg => 'BEGIN of AcctLineType_76'
40588 ,p_level => C_LEVEL_PROCEDURE
40589 ,p_module => l_log_module);
40590
40591 END IF;
40592 --
40593 l_component_type := 'AMB_JLT';
40594 l_component_code := 'INTERORG_PAYABLES';
40595 l_component_type_code := 'S';
40596 l_component_appl_id := 707;
40597 l_amb_context_code := 'DEFAULT';
40598 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
40599 l_event_class_code := 'DIR_INTERORG_SHIP';
40600 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
40601 l_line_definition_owner_code := 'S';
40602 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
40603 --
40604 l_balance_type_code := 'A';
40605 l_segment := NULL;
40606 l_ccid := NULL;
40607 l_adr_transaction_coa_id := NULL;
40608 l_adr_accounting_coa_id := NULL;
40609 l_adr_flexfield_segment_code := NULL;
40610 l_adr_flex_value_set_id := NULL;
40611 l_adr_value_type_code := NULL;
40612 l_adr_value_combination_id := NULL;
40613 l_adr_value_segment_code := NULL;
40614
40615 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
40616 l_bflow_class_code := ''; -- 4219869 Business Flow
40617 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
40618 l_budgetary_control_flag := 'N';
40619
40620 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40621 l_bflow_applied_to_amt := NULL; -- 5132302
40622 l_entered_amt_idx := NULL; -- 4262811
40623 l_accted_amt_idx := NULL; -- 4262811
40624 l_acc_rev_flag := NULL; -- 4262811
40625 l_accrual_line_num := NULL; -- 4262811
40626 l_tmp_amt := NULL; -- 4262811
40627 --
40628
40629 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40630 l_balance_type_code <> 'B' THEN
40631 IF NVL(p_source_24,9E125) = 9
40632 THEN
40633
40634 --
40635 XLA_AE_LINES_PKG.SetNewLine;
40636
40637 p_balance_type_code := l_balance_type_code;
40638 -- set the flag so later we will know whether the gain loss line needs to be created
40639
40640 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40641 p_actual_flag :='A';
40642 END IF;
40643
40644 --
40645 -- bulk performance
40646 --
40647 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40648 p_header_num => 0); -- 4262811
40649 --
40650 -- set accounting line options
40651 --
40652 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40653 p_natural_side_code => 'D'
40654 , p_gain_or_loss_flag => 'N'
40655 , p_gl_transfer_mode_code => 'S'
40656 , p_acct_entry_type_code => 'A'
40657 , p_switch_side_flag => 'Y'
40658 , p_merge_duplicate_code => 'N'
40659 );
40660 --
40661 l_acc_rev_natural_side_code := 'C'; -- 4262811
40662 --
40663 --
40664 -- set accounting line type info
40665 --
40666 xla_ae_lines_pkg.SetAcctLineType
40667 (p_component_type => l_component_type
40668 ,p_event_type_code => l_event_type_code
40669 ,p_line_definition_owner_code => l_line_definition_owner_code
40670 ,p_line_definition_code => l_line_definition_code
40671 ,p_accounting_line_code => l_component_code
40672 ,p_accounting_line_type_code => l_component_type_code
40673 ,p_accounting_line_appl_id => l_component_appl_id
40674 ,p_amb_context_code => l_amb_context_code
40675 ,p_entity_code => l_entity_code
40676 ,p_event_class_code => l_event_class_code);
40677 --
40678 -- set accounting class
40679 --
40680 xla_ae_lines_pkg.SetAcctClass(
40681 p_accounting_class_code => 'INTERORG_PAYABLES'
40682 , p_ae_header_id => l_ae_header_id
40683 );
40684
40685 --
40686 -- set rounding class
40687 --
40688 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40689 'INTERORG_PAYABLES';
40690
40691 --
40692 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40693 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40694 --
40695 -- bulk performance
40696 --
40697 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40698
40699 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40700 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40701
40702 -- 4955764
40703 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40704 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40705
40706 -- 4458381 Public Sector Enh
40707
40708 --
40709 -- set accounting attributes for the line type
40710 --
40711 l_entered_amt_idx := 3;
40712 l_accted_amt_idx := 8;
40713 l_bflow_applied_to_amt_idx := NULL; -- 5132302
40714 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40715 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
40716 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40717 l_rec_acct_attrs.array_char_value(2) := p_source_12;
40718 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40719 l_rec_acct_attrs.array_num_value(3) := p_source_18;
40720 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40721 l_rec_acct_attrs.array_char_value(4) := p_source_15;
40722 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40723 l_rec_acct_attrs.array_date_value(5) := p_source_19;
40724 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40725 l_rec_acct_attrs.array_num_value(6) := p_source_20;
40726 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40727 l_rec_acct_attrs.array_char_value(7) := p_source_21;
40728 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40729 l_rec_acct_attrs.array_num_value(8) := p_source_22;
40730
40731 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40732 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40733
40734 ---------------------------------------------------------------------------------------------------------------
40735 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40736 ---------------------------------------------------------------------------------------------------------------
40737 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40738
40739 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40740 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40741
40742 IF xla_accounting_cache_pkg.GetValueChar
40743 (p_source_code => 'LEDGER_CATEGORY_CODE'
40744 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40745 AND l_bflow_method_code = 'PRIOR_ENTRY'
40746 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40747 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40748 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40749 )
40750 THEN
40751 xla_ae_lines_pkg.BflowUpgEntry
40752 (p_business_method_code => l_bflow_method_code
40753 ,p_business_class_code => l_bflow_class_code
40754 ,p_balance_type => l_balance_type_code);
40755 ELSE
40756 NULL;
40757 -- No business flow processing for business flow method of NONE.
40758 END IF;
40759
40760 --
40761 -- call analytical criteria
40762 --
40763
40764 --
40765 -- call description
40766 --
40767 -- No description or it is inherited.
40768 --
40769 -- call ADRs
40770 -- Bug 4922099
40771 --
40772 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40773 (NVL(l_actual_upg_option, 'N') = 'O') OR
40774 (NVL(l_enc_upg_option, 'N') = 'O')
40775 )
40776 THEN
40777 NULL;
40778 --
40779 --
40780
40781 l_ccid := AcctDerRule_4(
40782 p_application_id => p_application_id
40783 , p_ae_header_id => l_ae_header_id
40784 , p_source_4 => p_source_4
40785 , x_transaction_coa_id => l_adr_transaction_coa_id
40786 , x_accounting_coa_id => l_adr_accounting_coa_id
40787 , x_value_type_code => l_adr_value_type_code
40788 , p_side => 'NA'
40789 );
40790
40791 xla_ae_lines_pkg.set_ccid(
40792 p_code_combination_id => l_ccid
40793 , p_value_type_code => l_adr_value_type_code
40794 , p_transaction_coa_id => l_adr_transaction_coa_id
40795 , p_accounting_coa_id => l_adr_accounting_coa_id
40796 , p_adr_code => 'CST_DEFAULT'
40797 , p_adr_type_code => 'S'
40798 , p_component_type => l_component_type
40799 , p_component_code => l_component_code
40800 , p_component_type_code => l_component_type_code
40801 , p_component_appl_id => l_component_appl_id
40802 , p_amb_context_code => l_amb_context_code
40803 , p_side => 'NA'
40804 );
40805
40806
40807 --
40808 --
40809 END IF;
40810 --
40811 -- Bug 4922099
40812 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40813 (NVL(l_enc_upg_option, 'N') = 'O')
40814 ) AND
40815 (l_bflow_method_code = 'PRIOR_ENTRY')
40816 )
40817 THEN
40818 IF
40819 --
40820 1 = 2
40821 --
40822 THEN
40823 xla_accounting_err_pkg.build_message
40824 (p_appli_s_name => 'XLA'
40825 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40826 ,p_token_1 => 'LINE_NUMBER'
40827 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
40828 ,p_token_2 => 'LINE_TYPE_NAME'
40829 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
40830 l_component_type
40831 ,l_component_code
40832 ,l_component_type_code
40833 ,l_component_appl_id
40834 ,l_amb_context_code
40835 ,l_entity_code
40836 ,l_event_class_code
40837 )
40838 ,p_token_3 => 'OWNER'
40839 ,p_value_3 => xla_lookups_pkg.get_meaning(
40840 p_lookup_type => 'XLA_OWNER_TYPE'
40841 ,p_lookup_code => l_component_type_code
40842 )
40843 ,p_token_4 => 'PRODUCT_NAME'
40844 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40845 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40846 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40847 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40848 ,p_ae_header_id => NULL
40849 );
40850
40851 IF (C_LEVEL_ERROR>= g_log_level) THEN
40852 trace
40853 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40854 ,p_level => C_LEVEL_ERROR
40855 ,p_module => l_log_module);
40856 END IF;
40857 END IF;
40858 END IF;
40859 --
40860 --
40861 ------------------------------------------------------------------------------------------------
40862 -- 4219869 Business Flow
40863 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40864 -- Prior Entry. Currently, the following code is always generated.
40865 ------------------------------------------------------------------------------------------------
40866 XLA_AE_LINES_PKG.ValidateCurrentLine;
40867
40868 ------------------------------------------------------------------------------------
40869 -- 4219869 Business Flow
40870 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40871 ------------------------------------------------------------------------------------
40872 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40873
40874 ----------------------------------------------------------------------------------
40875 -- 4219869 Business Flow
40876 -- Update journal entry status -- Need to generate this within IF <condition>
40877 ----------------------------------------------------------------------------------
40878 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40879 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40880 ,p_balance_type_code => l_balance_type_code
40881 );
40882
40883 -------------------------------------------------------------------------------------------
40884 -- 4262811 - Generate the Accrual Reversal lines
40885 -------------------------------------------------------------------------------------------
40886 BEGIN
40887 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40888 (g_array_event(p_event_id).array_value_num('header_index'));
40889 IF l_acc_rev_flag IS NULL THEN
40890 l_acc_rev_flag := 'N';
40891 END IF;
40892 EXCEPTION
40893 WHEN OTHERS THEN
40894 l_acc_rev_flag := 'N';
40895 END;
40896 --
40897 IF (l_acc_rev_flag = 'Y') THEN
40898
40899 -- 4645092 ------------------------------------------------------------------------------
40900 -- To allow MPA report to determine if it should generate report process
40901 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40902 ------------------------------------------------------------------------------------------
40903
40904 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40905 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40906 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
40907 -- call ADRs
40908 -- Bug 4922099
40909 --
40910 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40911 (NVL(l_actual_upg_option, 'N') = 'O') OR
40912 (NVL(l_enc_upg_option, 'N') = 'O')
40913 )
40914 THEN
40915 NULL;
40916 --
40917 --
40918
40919 l_ccid := AcctDerRule_4(
40920 p_application_id => p_application_id
40921 , p_ae_header_id => l_ae_header_id
40922 , p_source_4 => p_source_4
40923 , x_transaction_coa_id => l_adr_transaction_coa_id
40924 , x_accounting_coa_id => l_adr_accounting_coa_id
40925 , x_value_type_code => l_adr_value_type_code
40926 , p_side => 'NA'
40927 );
40928
40929 xla_ae_lines_pkg.set_ccid(
40930 p_code_combination_id => l_ccid
40931 , p_value_type_code => l_adr_value_type_code
40932 , p_transaction_coa_id => l_adr_transaction_coa_id
40933 , p_accounting_coa_id => l_adr_accounting_coa_id
40934 , p_adr_code => 'CST_DEFAULT'
40935 , p_adr_type_code => 'S'
40936 , p_component_type => l_component_type
40937 , p_component_code => l_component_code
40938 , p_component_type_code => l_component_type_code
40939 , p_component_appl_id => l_component_appl_id
40940 , p_amb_context_code => l_amb_context_code
40941 , p_side => 'NA'
40942 );
40943
40944
40945 --
40946 --
40947 END IF;
40948
40949 --
40950 -- Update the line information that should be overwritten
40951 --
40952 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40953 p_header_num => 1);
40954 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
40955
40956 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40957
40958 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
40959 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40960 END IF;
40961
40962 --
40963 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40964 --
40965 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40966 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
40967 ELSE
40968 ---------------------------------------------------------------------------------------------------
40969 -- 4262811a Switch Sign
40970 ---------------------------------------------------------------------------------------------------
40971 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
40972 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40973 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40974 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40975 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40976 -- 5132302
40977 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40978 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40979
40980 END IF;
40981
40982 -- 4955764
40983 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40984 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40985
40986
40987 XLA_AE_LINES_PKG.ValidateCurrentLine;
40988 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40989
40990 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40991 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40992 ,p_balance_type_code => l_balance_type_code);
40993
40994 END IF;
40995
40996 -----------------------------------------------------------------------------------------
40997 -- 4262811 Multiperiod Accounting
40998 -----------------------------------------------------------------------------------------
40999 -- No MPA option is assigned.
41000
41001
41002 END IF;
41003 END IF;
41004 --
41005
41006 --
41007 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41008 trace
41009 (p_msg => 'END of AcctLineType_76'
41010 ,p_level => C_LEVEL_PROCEDURE
41011 ,p_module => l_log_module);
41012 END IF;
41013 --
41014 EXCEPTION
41015 WHEN xla_exceptions_pkg.application_exception THEN
41016 RAISE;
41017 WHEN OTHERS THEN
41018 xla_exceptions_pkg.raise_message
41019 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_76');
41020 END AcctLineType_76;
41021 --
41022
41023 ---------------------------------------
41024 --
41025 -- PRIVATE FUNCTION
41026 -- AcctLineType_77
41027 --
41028 ---------------------------------------
41029 PROCEDURE AcctLineType_77 (
41030 p_application_id IN NUMBER
41031 ,p_event_id IN NUMBER
41032 ,p_calculate_acctd_flag IN VARCHAR2
41033 ,p_calculate_g_l_flag IN VARCHAR2
41034 ,p_actual_flag IN OUT VARCHAR2
41035 ,p_balance_type_code OUT VARCHAR2
41036 ,p_gain_or_loss_ref OUT VARCHAR2
41037
41038 --Cost Management Default Account
41039 , p_source_4 IN NUMBER
41040 --DISTRIBUTION_IDENTIFIER
41041 , p_source_11 IN NUMBER
41042 --Distribution Type
41043 , p_source_12 IN VARCHAR2
41044 , p_source_12_meaning IN VARCHAR2
41045 --Entered Currency Code
41046 , p_source_15 IN VARCHAR2
41047 --Entered Amount
41048 , p_source_18 IN NUMBER
41049 --Currency Conversion Date
41050 , p_source_19 IN DATE
41051 --Currency Conversion Rate
41052 , p_source_20 IN NUMBER
41053 --Currency Conversion Type
41054 , p_source_21 IN VARCHAR2
41055 --Accounted Amount
41056 , p_source_22 IN NUMBER
41057 --Accounting Line Type
41058 , p_source_24 IN NUMBER
41059 )
41060 IS
41061
41062 l_component_type VARCHAR2(80);
41063 l_component_code VARCHAR2(30);
41064 l_component_type_code VARCHAR2(1);
41065 l_component_appl_id INTEGER;
41066 l_amb_context_code VARCHAR2(30);
41067 l_entity_code VARCHAR2(30);
41068 l_event_class_code VARCHAR2(30);
41069 l_ae_header_id NUMBER;
41070 l_event_type_code VARCHAR2(30);
41071 l_line_definition_code VARCHAR2(30);
41072 l_line_definition_owner_code VARCHAR2(1);
41073 --
41074 -- adr variables
41075 l_segment VARCHAR2(30);
41076 l_ccid NUMBER;
41077 l_adr_transaction_coa_id NUMBER;
41078 l_adr_accounting_coa_id NUMBER;
41079 l_adr_flexfield_segment_code VARCHAR2(30);
41080 l_adr_flex_value_set_id NUMBER;
41081 l_adr_value_type_code VARCHAR2(30);
41082 l_adr_value_combination_id NUMBER;
41083 l_adr_value_segment_code VARCHAR2(30);
41084
41085 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
41086 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
41087 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
41088 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
41089
41090 -- 4262811 Variables ------------------------------------------------------------------------------------------
41091 l_entered_amt_idx NUMBER;
41092 l_accted_amt_idx NUMBER;
41093 l_acc_rev_flag VARCHAR2(1);
41094 l_accrual_line_num NUMBER;
41095 l_tmp_amt NUMBER;
41096 l_acc_rev_natural_side_code VARCHAR2(1);
41097
41098 l_num_entries NUMBER;
41099 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
41100 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
41101 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
41102 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
41103 l_recog_line_1 NUMBER;
41104 l_recog_line_2 NUMBER;
41105
41106 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
41107 l_bflow_applied_to_amt NUMBER; -- 5132302
41108 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
41109
41110 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41111
41112 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
41113 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
41114
41115 ---------------------------------------------------------------------------------------------------------------
41116
41117
41118 --
41119 -- bulk performance
41120 --
41121 l_balance_type_code VARCHAR2(1);
41122 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
41123 l_log_module VARCHAR2(240);
41124
41125 --
41126 -- Upgrade strategy
41127 --
41128 l_actual_upg_option VARCHAR2(1);
41129 l_enc_upg_option VARCHAR2(1);
41130
41131 --
41132 BEGIN
41133 --
41134 IF g_log_enabled THEN
41135 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
41136 END IF;
41137 --
41138 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41139
41140 trace
41141 (p_msg => 'BEGIN of AcctLineType_77'
41142 ,p_level => C_LEVEL_PROCEDURE
41143 ,p_module => l_log_module);
41144
41145 END IF;
41146 --
41147 l_component_type := 'AMB_JLT';
41148 l_component_code := 'INTERORG_PAYABLES';
41149 l_component_type_code := 'S';
41150 l_component_appl_id := 707;
41151 l_amb_context_code := 'DEFAULT';
41152 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
41153 l_event_class_code := 'INT_ORDER_TO_EXP';
41154 l_event_type_code := 'INT_ORDER_TO_EXP_ALL';
41155 l_line_definition_owner_code := 'S';
41156 l_line_definition_code := 'INT_ORDER_TO_EXP';
41157 --
41158 l_balance_type_code := 'A';
41159 l_segment := NULL;
41160 l_ccid := NULL;
41161 l_adr_transaction_coa_id := NULL;
41162 l_adr_accounting_coa_id := NULL;
41163 l_adr_flexfield_segment_code := NULL;
41164 l_adr_flex_value_set_id := NULL;
41165 l_adr_value_type_code := NULL;
41166 l_adr_value_combination_id := NULL;
41167 l_adr_value_segment_code := NULL;
41168
41169 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
41170 l_bflow_class_code := ''; -- 4219869 Business Flow
41171 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
41172 l_budgetary_control_flag := 'N';
41173
41174 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41175 l_bflow_applied_to_amt := NULL; -- 5132302
41176 l_entered_amt_idx := NULL; -- 4262811
41177 l_accted_amt_idx := NULL; -- 4262811
41178 l_acc_rev_flag := NULL; -- 4262811
41179 l_accrual_line_num := NULL; -- 4262811
41180 l_tmp_amt := NULL; -- 4262811
41181 --
41182
41183 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41184 l_balance_type_code <> 'B' THEN
41185 IF NVL(p_source_24,9E125) = 9
41186 THEN
41187
41188 --
41189 XLA_AE_LINES_PKG.SetNewLine;
41190
41191 p_balance_type_code := l_balance_type_code;
41192 -- set the flag so later we will know whether the gain loss line needs to be created
41193
41194 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41195 p_actual_flag :='A';
41196 END IF;
41197
41198 --
41199 -- bulk performance
41200 --
41201 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41202 p_header_num => 0); -- 4262811
41203 --
41204 -- set accounting line options
41205 --
41206 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41207 p_natural_side_code => 'D'
41208 , p_gain_or_loss_flag => 'N'
41209 , p_gl_transfer_mode_code => 'S'
41210 , p_acct_entry_type_code => 'A'
41211 , p_switch_side_flag => 'Y'
41212 , p_merge_duplicate_code => 'N'
41213 );
41214 --
41215 l_acc_rev_natural_side_code := 'C'; -- 4262811
41216 --
41217 --
41218 -- set accounting line type info
41219 --
41220 xla_ae_lines_pkg.SetAcctLineType
41221 (p_component_type => l_component_type
41222 ,p_event_type_code => l_event_type_code
41223 ,p_line_definition_owner_code => l_line_definition_owner_code
41224 ,p_line_definition_code => l_line_definition_code
41225 ,p_accounting_line_code => l_component_code
41226 ,p_accounting_line_type_code => l_component_type_code
41227 ,p_accounting_line_appl_id => l_component_appl_id
41228 ,p_amb_context_code => l_amb_context_code
41229 ,p_entity_code => l_entity_code
41230 ,p_event_class_code => l_event_class_code);
41231 --
41232 -- set accounting class
41233 --
41234 xla_ae_lines_pkg.SetAcctClass(
41235 p_accounting_class_code => 'INTERORG_PAYABLES'
41236 , p_ae_header_id => l_ae_header_id
41237 );
41238
41239 --
41240 -- set rounding class
41241 --
41242 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41243 'INTERORG_PAYABLES';
41244
41245 --
41246 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41247 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41248 --
41249 -- bulk performance
41250 --
41251 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41252
41253 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41254 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41255
41256 -- 4955764
41257 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41258 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41259
41260 -- 4458381 Public Sector Enh
41261
41262 --
41263 -- set accounting attributes for the line type
41264 --
41265 l_entered_amt_idx := 3;
41266 l_accted_amt_idx := 8;
41267 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41268 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41269 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
41270 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41271 l_rec_acct_attrs.array_char_value(2) := p_source_12;
41272 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41273 l_rec_acct_attrs.array_num_value(3) := p_source_18;
41274 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41275 l_rec_acct_attrs.array_char_value(4) := p_source_15;
41276 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41277 l_rec_acct_attrs.array_date_value(5) := p_source_19;
41278 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41279 l_rec_acct_attrs.array_num_value(6) := p_source_20;
41280 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41281 l_rec_acct_attrs.array_char_value(7) := p_source_21;
41282 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41283 l_rec_acct_attrs.array_num_value(8) := p_source_22;
41284
41285 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41286 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41287
41288 ---------------------------------------------------------------------------------------------------------------
41289 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41290 ---------------------------------------------------------------------------------------------------------------
41291 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41292
41293 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41294 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41295
41296 IF xla_accounting_cache_pkg.GetValueChar
41297 (p_source_code => 'LEDGER_CATEGORY_CODE'
41298 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41299 AND l_bflow_method_code = 'PRIOR_ENTRY'
41300 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41301 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41302 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41303 )
41304 THEN
41305 xla_ae_lines_pkg.BflowUpgEntry
41306 (p_business_method_code => l_bflow_method_code
41307 ,p_business_class_code => l_bflow_class_code
41308 ,p_balance_type => l_balance_type_code);
41309 ELSE
41310 NULL;
41311 -- No business flow processing for business flow method of NONE.
41312 END IF;
41313
41314 --
41315 -- call analytical criteria
41316 --
41317
41318 --
41319 -- call description
41320 --
41321 -- No description or it is inherited.
41322 --
41323 -- call ADRs
41324 -- Bug 4922099
41325 --
41326 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41327 (NVL(l_actual_upg_option, 'N') = 'O') OR
41328 (NVL(l_enc_upg_option, 'N') = 'O')
41329 )
41330 THEN
41331 NULL;
41332 --
41333 --
41334
41335 l_ccid := AcctDerRule_4(
41336 p_application_id => p_application_id
41337 , p_ae_header_id => l_ae_header_id
41338 , p_source_4 => p_source_4
41339 , x_transaction_coa_id => l_adr_transaction_coa_id
41340 , x_accounting_coa_id => l_adr_accounting_coa_id
41341 , x_value_type_code => l_adr_value_type_code
41342 , p_side => 'NA'
41343 );
41344
41345 xla_ae_lines_pkg.set_ccid(
41346 p_code_combination_id => l_ccid
41347 , p_value_type_code => l_adr_value_type_code
41348 , p_transaction_coa_id => l_adr_transaction_coa_id
41349 , p_accounting_coa_id => l_adr_accounting_coa_id
41350 , p_adr_code => 'CST_DEFAULT'
41351 , p_adr_type_code => 'S'
41352 , p_component_type => l_component_type
41353 , p_component_code => l_component_code
41354 , p_component_type_code => l_component_type_code
41355 , p_component_appl_id => l_component_appl_id
41356 , p_amb_context_code => l_amb_context_code
41357 , p_side => 'NA'
41358 );
41359
41360
41361 --
41362 --
41363 END IF;
41364 --
41365 -- Bug 4922099
41366 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41367 (NVL(l_enc_upg_option, 'N') = 'O')
41368 ) AND
41369 (l_bflow_method_code = 'PRIOR_ENTRY')
41370 )
41371 THEN
41372 IF
41373 --
41374 1 = 2
41375 --
41376 THEN
41377 xla_accounting_err_pkg.build_message
41378 (p_appli_s_name => 'XLA'
41379 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41380 ,p_token_1 => 'LINE_NUMBER'
41381 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
41382 ,p_token_2 => 'LINE_TYPE_NAME'
41383 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
41384 l_component_type
41385 ,l_component_code
41386 ,l_component_type_code
41387 ,l_component_appl_id
41388 ,l_amb_context_code
41389 ,l_entity_code
41390 ,l_event_class_code
41391 )
41392 ,p_token_3 => 'OWNER'
41393 ,p_value_3 => xla_lookups_pkg.get_meaning(
41394 p_lookup_type => 'XLA_OWNER_TYPE'
41395 ,p_lookup_code => l_component_type_code
41396 )
41397 ,p_token_4 => 'PRODUCT_NAME'
41398 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41399 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41400 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41401 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41402 ,p_ae_header_id => NULL
41403 );
41404
41405 IF (C_LEVEL_ERROR>= g_log_level) THEN
41406 trace
41407 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41408 ,p_level => C_LEVEL_ERROR
41409 ,p_module => l_log_module);
41410 END IF;
41411 END IF;
41412 END IF;
41413 --
41414 --
41415 ------------------------------------------------------------------------------------------------
41416 -- 4219869 Business Flow
41417 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41418 -- Prior Entry. Currently, the following code is always generated.
41419 ------------------------------------------------------------------------------------------------
41420 XLA_AE_LINES_PKG.ValidateCurrentLine;
41421
41422 ------------------------------------------------------------------------------------
41423 -- 4219869 Business Flow
41424 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41425 ------------------------------------------------------------------------------------
41426 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41427
41428 ----------------------------------------------------------------------------------
41429 -- 4219869 Business Flow
41430 -- Update journal entry status -- Need to generate this within IF <condition>
41431 ----------------------------------------------------------------------------------
41432 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41433 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41434 ,p_balance_type_code => l_balance_type_code
41435 );
41436
41437 -------------------------------------------------------------------------------------------
41438 -- 4262811 - Generate the Accrual Reversal lines
41439 -------------------------------------------------------------------------------------------
41440 BEGIN
41441 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41442 (g_array_event(p_event_id).array_value_num('header_index'));
41443 IF l_acc_rev_flag IS NULL THEN
41444 l_acc_rev_flag := 'N';
41445 END IF;
41446 EXCEPTION
41447 WHEN OTHERS THEN
41448 l_acc_rev_flag := 'N';
41449 END;
41450 --
41451 IF (l_acc_rev_flag = 'Y') THEN
41452
41453 -- 4645092 ------------------------------------------------------------------------------
41454 -- To allow MPA report to determine if it should generate report process
41455 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41456 ------------------------------------------------------------------------------------------
41457
41458 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41459 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41460 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
41461 -- call ADRs
41462 -- Bug 4922099
41463 --
41464 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41465 (NVL(l_actual_upg_option, 'N') = 'O') OR
41466 (NVL(l_enc_upg_option, 'N') = 'O')
41467 )
41468 THEN
41469 NULL;
41470 --
41471 --
41472
41473 l_ccid := AcctDerRule_4(
41474 p_application_id => p_application_id
41475 , p_ae_header_id => l_ae_header_id
41476 , p_source_4 => p_source_4
41477 , x_transaction_coa_id => l_adr_transaction_coa_id
41478 , x_accounting_coa_id => l_adr_accounting_coa_id
41479 , x_value_type_code => l_adr_value_type_code
41480 , p_side => 'NA'
41481 );
41482
41483 xla_ae_lines_pkg.set_ccid(
41484 p_code_combination_id => l_ccid
41485 , p_value_type_code => l_adr_value_type_code
41486 , p_transaction_coa_id => l_adr_transaction_coa_id
41487 , p_accounting_coa_id => l_adr_accounting_coa_id
41488 , p_adr_code => 'CST_DEFAULT'
41489 , p_adr_type_code => 'S'
41490 , p_component_type => l_component_type
41491 , p_component_code => l_component_code
41492 , p_component_type_code => l_component_type_code
41493 , p_component_appl_id => l_component_appl_id
41494 , p_amb_context_code => l_amb_context_code
41495 , p_side => 'NA'
41496 );
41497
41498
41499 --
41500 --
41501 END IF;
41502
41503 --
41504 -- Update the line information that should be overwritten
41505 --
41506 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41507 p_header_num => 1);
41508 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
41509
41510 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41511
41512 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
41513 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41514 END IF;
41515
41516 --
41517 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41518 --
41519 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41520 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
41521 ELSE
41522 ---------------------------------------------------------------------------------------------------
41523 -- 4262811a Switch Sign
41524 ---------------------------------------------------------------------------------------------------
41525 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
41526 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41527 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41528 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41529 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41530 -- 5132302
41531 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41532 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41533
41534 END IF;
41535
41536 -- 4955764
41537 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41538 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41539
41540
41541 XLA_AE_LINES_PKG.ValidateCurrentLine;
41542 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41543
41544 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41545 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41546 ,p_balance_type_code => l_balance_type_code);
41547
41548 END IF;
41549
41550 -----------------------------------------------------------------------------------------
41551 -- 4262811 Multiperiod Accounting
41552 -----------------------------------------------------------------------------------------
41553 -- No MPA option is assigned.
41554
41555
41556 END IF;
41557 END IF;
41558 --
41559
41560 --
41561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41562 trace
41563 (p_msg => 'END of AcctLineType_77'
41564 ,p_level => C_LEVEL_PROCEDURE
41565 ,p_module => l_log_module);
41566 END IF;
41567 --
41568 EXCEPTION
41569 WHEN xla_exceptions_pkg.application_exception THEN
41570 RAISE;
41571 WHEN OTHERS THEN
41572 xla_exceptions_pkg.raise_message
41573 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_77');
41574 END AcctLineType_77;
41575 --
41576
41577 ---------------------------------------
41578 --
41579 -- PRIVATE FUNCTION
41580 -- AcctLineType_78
41581 --
41582 ---------------------------------------
41583 PROCEDURE AcctLineType_78 (
41584 p_application_id IN NUMBER
41585 ,p_event_id IN NUMBER
41586 ,p_calculate_acctd_flag IN VARCHAR2
41587 ,p_calculate_g_l_flag IN VARCHAR2
41588 ,p_actual_flag IN OUT VARCHAR2
41589 ,p_balance_type_code OUT VARCHAR2
41590 ,p_gain_or_loss_ref OUT VARCHAR2
41591
41592 --Cost Management Default Account
41593 , p_source_4 IN NUMBER
41594 --DISTRIBUTION_IDENTIFIER
41595 , p_source_11 IN NUMBER
41596 --Distribution Type
41597 , p_source_12 IN VARCHAR2
41598 , p_source_12_meaning IN VARCHAR2
41599 --Entered Currency Code
41600 , p_source_15 IN VARCHAR2
41601 --Entered Amount
41602 , p_source_18 IN NUMBER
41603 --Currency Conversion Date
41604 , p_source_19 IN DATE
41605 --Currency Conversion Rate
41606 , p_source_20 IN NUMBER
41607 --Currency Conversion Type
41608 , p_source_21 IN VARCHAR2
41609 --Accounted Amount
41610 , p_source_22 IN NUMBER
41611 --Accounting Line Type
41612 , p_source_24 IN NUMBER
41613 )
41614 IS
41615
41616 l_component_type VARCHAR2(80);
41617 l_component_code VARCHAR2(30);
41618 l_component_type_code VARCHAR2(1);
41619 l_component_appl_id INTEGER;
41620 l_amb_context_code VARCHAR2(30);
41621 l_entity_code VARCHAR2(30);
41622 l_event_class_code VARCHAR2(30);
41623 l_ae_header_id NUMBER;
41624 l_event_type_code VARCHAR2(30);
41625 l_line_definition_code VARCHAR2(30);
41626 l_line_definition_owner_code VARCHAR2(1);
41627 --
41628 -- adr variables
41629 l_segment VARCHAR2(30);
41630 l_ccid NUMBER;
41631 l_adr_transaction_coa_id NUMBER;
41632 l_adr_accounting_coa_id NUMBER;
41633 l_adr_flexfield_segment_code VARCHAR2(30);
41634 l_adr_flex_value_set_id NUMBER;
41635 l_adr_value_type_code VARCHAR2(30);
41636 l_adr_value_combination_id NUMBER;
41637 l_adr_value_segment_code VARCHAR2(30);
41638
41639 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
41640 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
41641 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
41642 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
41643
41644 -- 4262811 Variables ------------------------------------------------------------------------------------------
41645 l_entered_amt_idx NUMBER;
41646 l_accted_amt_idx NUMBER;
41647 l_acc_rev_flag VARCHAR2(1);
41648 l_accrual_line_num NUMBER;
41649 l_tmp_amt NUMBER;
41650 l_acc_rev_natural_side_code VARCHAR2(1);
41651
41652 l_num_entries NUMBER;
41653 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
41654 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
41655 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
41656 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
41657 l_recog_line_1 NUMBER;
41658 l_recog_line_2 NUMBER;
41659
41660 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
41661 l_bflow_applied_to_amt NUMBER; -- 5132302
41662 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
41663
41664 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41665
41666 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
41667 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
41668
41669 ---------------------------------------------------------------------------------------------------------------
41670
41671
41672 --
41673 -- bulk performance
41674 --
41675 l_balance_type_code VARCHAR2(1);
41676 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
41677 l_log_module VARCHAR2(240);
41678
41679 --
41680 -- Upgrade strategy
41681 --
41682 l_actual_upg_option VARCHAR2(1);
41683 l_enc_upg_option VARCHAR2(1);
41684
41685 --
41686 BEGIN
41687 --
41688 IF g_log_enabled THEN
41689 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
41690 END IF;
41691 --
41692 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41693
41694 trace
41695 (p_msg => 'BEGIN of AcctLineType_78'
41696 ,p_level => C_LEVEL_PROCEDURE
41697 ,p_module => l_log_module);
41698
41699 END IF;
41700 --
41701 l_component_type := 'AMB_JLT';
41702 l_component_code := 'INTERORG_PAYABLES';
41703 l_component_type_code := 'S';
41704 l_component_appl_id := 707;
41705 l_amb_context_code := 'DEFAULT';
41706 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
41707 l_event_class_code := 'USER_DEFINE';
41708 l_event_type_code := 'UDIR_INTERORG_SHIP';
41709 l_line_definition_owner_code := 'S';
41710 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
41711 --
41712 l_balance_type_code := 'A';
41713 l_segment := NULL;
41714 l_ccid := NULL;
41715 l_adr_transaction_coa_id := NULL;
41716 l_adr_accounting_coa_id := NULL;
41717 l_adr_flexfield_segment_code := NULL;
41718 l_adr_flex_value_set_id := NULL;
41719 l_adr_value_type_code := NULL;
41720 l_adr_value_combination_id := NULL;
41721 l_adr_value_segment_code := NULL;
41722
41723 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
41724 l_bflow_class_code := ''; -- 4219869 Business Flow
41725 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
41726 l_budgetary_control_flag := 'N';
41727
41728 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41729 l_bflow_applied_to_amt := NULL; -- 5132302
41730 l_entered_amt_idx := NULL; -- 4262811
41731 l_accted_amt_idx := NULL; -- 4262811
41732 l_acc_rev_flag := NULL; -- 4262811
41733 l_accrual_line_num := NULL; -- 4262811
41734 l_tmp_amt := NULL; -- 4262811
41735 --
41736
41737 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41738 l_balance_type_code <> 'B' THEN
41739 IF NVL(p_source_24,9E125) = 9
41740 THEN
41741
41742 --
41743 XLA_AE_LINES_PKG.SetNewLine;
41744
41745 p_balance_type_code := l_balance_type_code;
41746 -- set the flag so later we will know whether the gain loss line needs to be created
41747
41748 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41749 p_actual_flag :='A';
41750 END IF;
41751
41752 --
41753 -- bulk performance
41754 --
41755 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41756 p_header_num => 0); -- 4262811
41757 --
41758 -- set accounting line options
41759 --
41760 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41761 p_natural_side_code => 'D'
41762 , p_gain_or_loss_flag => 'N'
41763 , p_gl_transfer_mode_code => 'S'
41764 , p_acct_entry_type_code => 'A'
41765 , p_switch_side_flag => 'Y'
41766 , p_merge_duplicate_code => 'N'
41767 );
41768 --
41769 l_acc_rev_natural_side_code := 'C'; -- 4262811
41770 --
41771 --
41772 -- set accounting line type info
41773 --
41774 xla_ae_lines_pkg.SetAcctLineType
41775 (p_component_type => l_component_type
41776 ,p_event_type_code => l_event_type_code
41777 ,p_line_definition_owner_code => l_line_definition_owner_code
41778 ,p_line_definition_code => l_line_definition_code
41779 ,p_accounting_line_code => l_component_code
41780 ,p_accounting_line_type_code => l_component_type_code
41781 ,p_accounting_line_appl_id => l_component_appl_id
41782 ,p_amb_context_code => l_amb_context_code
41783 ,p_entity_code => l_entity_code
41784 ,p_event_class_code => l_event_class_code);
41785 --
41786 -- set accounting class
41787 --
41788 xla_ae_lines_pkg.SetAcctClass(
41789 p_accounting_class_code => 'INTERORG_PAYABLES'
41790 , p_ae_header_id => l_ae_header_id
41791 );
41792
41793 --
41794 -- set rounding class
41795 --
41796 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41797 'INTERORG_PAYABLES';
41798
41799 --
41800 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41801 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41802 --
41803 -- bulk performance
41804 --
41805 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41806
41807 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41808 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41809
41810 -- 4955764
41811 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41812 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41813
41814 -- 4458381 Public Sector Enh
41815
41816 --
41817 -- set accounting attributes for the line type
41818 --
41819 l_entered_amt_idx := 3;
41820 l_accted_amt_idx := 8;
41821 l_bflow_applied_to_amt_idx := NULL; -- 5132302
41822 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41823 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
41824 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41825 l_rec_acct_attrs.array_char_value(2) := p_source_12;
41826 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41827 l_rec_acct_attrs.array_num_value(3) := p_source_18;
41828 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41829 l_rec_acct_attrs.array_char_value(4) := p_source_15;
41830 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41831 l_rec_acct_attrs.array_date_value(5) := p_source_19;
41832 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41833 l_rec_acct_attrs.array_num_value(6) := p_source_20;
41834 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41835 l_rec_acct_attrs.array_char_value(7) := p_source_21;
41836 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41837 l_rec_acct_attrs.array_num_value(8) := p_source_22;
41838
41839 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41840 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41841
41842 ---------------------------------------------------------------------------------------------------------------
41843 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41844 ---------------------------------------------------------------------------------------------------------------
41845 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41846
41847 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41848 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41849
41850 IF xla_accounting_cache_pkg.GetValueChar
41851 (p_source_code => 'LEDGER_CATEGORY_CODE'
41852 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41853 AND l_bflow_method_code = 'PRIOR_ENTRY'
41854 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41855 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41856 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41857 )
41858 THEN
41859 xla_ae_lines_pkg.BflowUpgEntry
41860 (p_business_method_code => l_bflow_method_code
41861 ,p_business_class_code => l_bflow_class_code
41862 ,p_balance_type => l_balance_type_code);
41863 ELSE
41864 NULL;
41865 -- No business flow processing for business flow method of NONE.
41866 END IF;
41867
41868 --
41869 -- call analytical criteria
41870 --
41871
41872 --
41873 -- call description
41874 --
41875 -- No description or it is inherited.
41876 --
41877 -- call ADRs
41878 -- Bug 4922099
41879 --
41880 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41881 (NVL(l_actual_upg_option, 'N') = 'O') OR
41882 (NVL(l_enc_upg_option, 'N') = 'O')
41883 )
41884 THEN
41885 NULL;
41886 --
41887 --
41888
41889 l_ccid := AcctDerRule_4(
41890 p_application_id => p_application_id
41891 , p_ae_header_id => l_ae_header_id
41892 , p_source_4 => p_source_4
41893 , x_transaction_coa_id => l_adr_transaction_coa_id
41894 , x_accounting_coa_id => l_adr_accounting_coa_id
41895 , x_value_type_code => l_adr_value_type_code
41896 , p_side => 'NA'
41897 );
41898
41899 xla_ae_lines_pkg.set_ccid(
41900 p_code_combination_id => l_ccid
41901 , p_value_type_code => l_adr_value_type_code
41902 , p_transaction_coa_id => l_adr_transaction_coa_id
41903 , p_accounting_coa_id => l_adr_accounting_coa_id
41904 , p_adr_code => 'CST_DEFAULT'
41905 , p_adr_type_code => 'S'
41906 , p_component_type => l_component_type
41907 , p_component_code => l_component_code
41908 , p_component_type_code => l_component_type_code
41909 , p_component_appl_id => l_component_appl_id
41910 , p_amb_context_code => l_amb_context_code
41911 , p_side => 'NA'
41912 );
41913
41914
41915 --
41916 --
41917 END IF;
41918 --
41919 -- Bug 4922099
41920 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41921 (NVL(l_enc_upg_option, 'N') = 'O')
41922 ) AND
41923 (l_bflow_method_code = 'PRIOR_ENTRY')
41924 )
41925 THEN
41926 IF
41927 --
41928 1 = 2
41929 --
41930 THEN
41931 xla_accounting_err_pkg.build_message
41932 (p_appli_s_name => 'XLA'
41933 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41934 ,p_token_1 => 'LINE_NUMBER'
41935 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
41936 ,p_token_2 => 'LINE_TYPE_NAME'
41937 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
41938 l_component_type
41939 ,l_component_code
41940 ,l_component_type_code
41941 ,l_component_appl_id
41942 ,l_amb_context_code
41943 ,l_entity_code
41944 ,l_event_class_code
41945 )
41946 ,p_token_3 => 'OWNER'
41947 ,p_value_3 => xla_lookups_pkg.get_meaning(
41948 p_lookup_type => 'XLA_OWNER_TYPE'
41949 ,p_lookup_code => l_component_type_code
41950 )
41951 ,p_token_4 => 'PRODUCT_NAME'
41952 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41953 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41954 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41955 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41956 ,p_ae_header_id => NULL
41957 );
41958
41959 IF (C_LEVEL_ERROR>= g_log_level) THEN
41960 trace
41961 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41962 ,p_level => C_LEVEL_ERROR
41963 ,p_module => l_log_module);
41964 END IF;
41965 END IF;
41966 END IF;
41967 --
41968 --
41969 ------------------------------------------------------------------------------------------------
41970 -- 4219869 Business Flow
41971 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41972 -- Prior Entry. Currently, the following code is always generated.
41973 ------------------------------------------------------------------------------------------------
41974 XLA_AE_LINES_PKG.ValidateCurrentLine;
41975
41976 ------------------------------------------------------------------------------------
41977 -- 4219869 Business Flow
41978 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41979 ------------------------------------------------------------------------------------
41980 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41981
41982 ----------------------------------------------------------------------------------
41983 -- 4219869 Business Flow
41984 -- Update journal entry status -- Need to generate this within IF <condition>
41985 ----------------------------------------------------------------------------------
41986 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41987 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41988 ,p_balance_type_code => l_balance_type_code
41989 );
41990
41991 -------------------------------------------------------------------------------------------
41992 -- 4262811 - Generate the Accrual Reversal lines
41993 -------------------------------------------------------------------------------------------
41994 BEGIN
41995 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41996 (g_array_event(p_event_id).array_value_num('header_index'));
41997 IF l_acc_rev_flag IS NULL THEN
41998 l_acc_rev_flag := 'N';
41999 END IF;
42000 EXCEPTION
42001 WHEN OTHERS THEN
42002 l_acc_rev_flag := 'N';
42003 END;
42004 --
42005 IF (l_acc_rev_flag = 'Y') THEN
42006
42007 -- 4645092 ------------------------------------------------------------------------------
42008 -- To allow MPA report to determine if it should generate report process
42009 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42010 ------------------------------------------------------------------------------------------
42011
42012 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42013 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42014 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
42015 -- call ADRs
42016 -- Bug 4922099
42017 --
42018 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42019 (NVL(l_actual_upg_option, 'N') = 'O') OR
42020 (NVL(l_enc_upg_option, 'N') = 'O')
42021 )
42022 THEN
42023 NULL;
42024 --
42025 --
42026
42027 l_ccid := AcctDerRule_4(
42028 p_application_id => p_application_id
42029 , p_ae_header_id => l_ae_header_id
42030 , p_source_4 => p_source_4
42031 , x_transaction_coa_id => l_adr_transaction_coa_id
42032 , x_accounting_coa_id => l_adr_accounting_coa_id
42033 , x_value_type_code => l_adr_value_type_code
42034 , p_side => 'NA'
42035 );
42036
42037 xla_ae_lines_pkg.set_ccid(
42038 p_code_combination_id => l_ccid
42039 , p_value_type_code => l_adr_value_type_code
42040 , p_transaction_coa_id => l_adr_transaction_coa_id
42041 , p_accounting_coa_id => l_adr_accounting_coa_id
42042 , p_adr_code => 'CST_DEFAULT'
42043 , p_adr_type_code => 'S'
42044 , p_component_type => l_component_type
42045 , p_component_code => l_component_code
42046 , p_component_type_code => l_component_type_code
42047 , p_component_appl_id => l_component_appl_id
42048 , p_amb_context_code => l_amb_context_code
42049 , p_side => 'NA'
42050 );
42051
42052
42053 --
42054 --
42055 END IF;
42056
42057 --
42058 -- Update the line information that should be overwritten
42059 --
42060 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42061 p_header_num => 1);
42062 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
42063
42064 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42065
42066 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
42067 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42068 END IF;
42069
42070 --
42071 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42072 --
42073 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42074 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
42075 ELSE
42076 ---------------------------------------------------------------------------------------------------
42077 -- 4262811a Switch Sign
42078 ---------------------------------------------------------------------------------------------------
42079 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
42080 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42081 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42082 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42083 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42084 -- 5132302
42085 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42086 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42087
42088 END IF;
42089
42090 -- 4955764
42091 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42092 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42093
42094
42095 XLA_AE_LINES_PKG.ValidateCurrentLine;
42096 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42097
42098 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42099 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42100 ,p_balance_type_code => l_balance_type_code);
42101
42102 END IF;
42103
42104 -----------------------------------------------------------------------------------------
42105 -- 4262811 Multiperiod Accounting
42106 -----------------------------------------------------------------------------------------
42107 -- No MPA option is assigned.
42108
42109
42110 END IF;
42111 END IF;
42112 --
42113
42114 --
42115 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42116 trace
42117 (p_msg => 'END of AcctLineType_78'
42118 ,p_level => C_LEVEL_PROCEDURE
42119 ,p_module => l_log_module);
42120 END IF;
42121 --
42122 EXCEPTION
42123 WHEN xla_exceptions_pkg.application_exception THEN
42124 RAISE;
42125 WHEN OTHERS THEN
42126 xla_exceptions_pkg.raise_message
42127 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_78');
42128 END AcctLineType_78;
42129 --
42130
42131 ---------------------------------------
42132 --
42133 -- PRIVATE FUNCTION
42134 -- AcctLineType_79
42135 --
42136 ---------------------------------------
42137 PROCEDURE AcctLineType_79 (
42138 p_application_id IN NUMBER
42139 ,p_event_id IN NUMBER
42140 ,p_calculate_acctd_flag IN VARCHAR2
42141 ,p_calculate_g_l_flag IN VARCHAR2
42142 ,p_actual_flag IN OUT VARCHAR2
42143 ,p_balance_type_code OUT VARCHAR2
42144 ,p_gain_or_loss_ref OUT VARCHAR2
42145
42146 --Cost Management Default Account
42147 , p_source_4 IN NUMBER
42148 --DISTRIBUTION_IDENTIFIER
42149 , p_source_11 IN NUMBER
42150 --Distribution Type
42151 , p_source_12 IN VARCHAR2
42152 , p_source_12_meaning IN VARCHAR2
42153 --Entered Currency Code
42154 , p_source_15 IN VARCHAR2
42155 --Entered Amount
42156 , p_source_18 IN NUMBER
42157 --Currency Conversion Date
42158 , p_source_19 IN DATE
42159 --Currency Conversion Rate
42160 , p_source_20 IN NUMBER
42161 --Currency Conversion Type
42162 , p_source_21 IN VARCHAR2
42163 --Accounted Amount
42164 , p_source_22 IN NUMBER
42165 --Accounting Line Type
42166 , p_source_24 IN NUMBER
42167 )
42168 IS
42169
42170 l_component_type VARCHAR2(80);
42171 l_component_code VARCHAR2(30);
42172 l_component_type_code VARCHAR2(1);
42173 l_component_appl_id INTEGER;
42174 l_amb_context_code VARCHAR2(30);
42175 l_entity_code VARCHAR2(30);
42176 l_event_class_code VARCHAR2(30);
42177 l_ae_header_id NUMBER;
42178 l_event_type_code VARCHAR2(30);
42179 l_line_definition_code VARCHAR2(30);
42180 l_line_definition_owner_code VARCHAR2(1);
42181 --
42182 -- adr variables
42183 l_segment VARCHAR2(30);
42184 l_ccid NUMBER;
42185 l_adr_transaction_coa_id NUMBER;
42186 l_adr_accounting_coa_id NUMBER;
42187 l_adr_flexfield_segment_code VARCHAR2(30);
42188 l_adr_flex_value_set_id NUMBER;
42189 l_adr_value_type_code VARCHAR2(30);
42190 l_adr_value_combination_id NUMBER;
42191 l_adr_value_segment_code VARCHAR2(30);
42192
42193 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
42194 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
42195 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
42196 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
42197
42198 -- 4262811 Variables ------------------------------------------------------------------------------------------
42199 l_entered_amt_idx NUMBER;
42200 l_accted_amt_idx NUMBER;
42201 l_acc_rev_flag VARCHAR2(1);
42202 l_accrual_line_num NUMBER;
42203 l_tmp_amt NUMBER;
42204 l_acc_rev_natural_side_code VARCHAR2(1);
42205
42206 l_num_entries NUMBER;
42207 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
42208 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
42209 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
42210 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
42211 l_recog_line_1 NUMBER;
42212 l_recog_line_2 NUMBER;
42213
42214 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
42215 l_bflow_applied_to_amt NUMBER; -- 5132302
42216 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
42217
42218 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42219
42220 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
42221 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
42222
42223 ---------------------------------------------------------------------------------------------------------------
42224
42225
42226 --
42227 -- bulk performance
42228 --
42229 l_balance_type_code VARCHAR2(1);
42230 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
42231 l_log_module VARCHAR2(240);
42232
42233 --
42234 -- Upgrade strategy
42235 --
42236 l_actual_upg_option VARCHAR2(1);
42237 l_enc_upg_option VARCHAR2(1);
42238
42239 --
42240 BEGIN
42241 --
42242 IF g_log_enabled THEN
42243 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
42244 END IF;
42245 --
42246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42247
42248 trace
42249 (p_msg => 'BEGIN of AcctLineType_79'
42250 ,p_level => C_LEVEL_PROCEDURE
42251 ,p_module => l_log_module);
42252
42253 END IF;
42254 --
42255 l_component_type := 'AMB_JLT';
42256 l_component_code := 'INTERORG_PAYABLES';
42257 l_component_type_code := 'S';
42258 l_component_appl_id := 707;
42259 l_amb_context_code := 'DEFAULT';
42260 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
42261 l_event_class_code := 'USER_DEFINE';
42262 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
42263 l_line_definition_owner_code := 'S';
42264 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
42265 --
42266 l_balance_type_code := 'A';
42267 l_segment := NULL;
42268 l_ccid := NULL;
42269 l_adr_transaction_coa_id := NULL;
42270 l_adr_accounting_coa_id := NULL;
42271 l_adr_flexfield_segment_code := NULL;
42272 l_adr_flex_value_set_id := NULL;
42273 l_adr_value_type_code := NULL;
42274 l_adr_value_combination_id := NULL;
42275 l_adr_value_segment_code := NULL;
42276
42277 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
42278 l_bflow_class_code := ''; -- 4219869 Business Flow
42279 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
42280 l_budgetary_control_flag := 'N';
42281
42282 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42283 l_bflow_applied_to_amt := NULL; -- 5132302
42284 l_entered_amt_idx := NULL; -- 4262811
42285 l_accted_amt_idx := NULL; -- 4262811
42286 l_acc_rev_flag := NULL; -- 4262811
42287 l_accrual_line_num := NULL; -- 4262811
42288 l_tmp_amt := NULL; -- 4262811
42289 --
42290
42291 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42292 l_balance_type_code <> 'B' THEN
42293 IF NVL(p_source_24,9E125) = 9
42294 THEN
42295
42296 --
42297 XLA_AE_LINES_PKG.SetNewLine;
42298
42299 p_balance_type_code := l_balance_type_code;
42300 -- set the flag so later we will know whether the gain loss line needs to be created
42301
42302 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42303 p_actual_flag :='A';
42304 END IF;
42305
42306 --
42307 -- bulk performance
42308 --
42309 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42310 p_header_num => 0); -- 4262811
42311 --
42312 -- set accounting line options
42313 --
42314 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42315 p_natural_side_code => 'D'
42316 , p_gain_or_loss_flag => 'N'
42317 , p_gl_transfer_mode_code => 'S'
42318 , p_acct_entry_type_code => 'A'
42319 , p_switch_side_flag => 'Y'
42320 , p_merge_duplicate_code => 'N'
42321 );
42322 --
42323 l_acc_rev_natural_side_code := 'C'; -- 4262811
42324 --
42325 --
42326 -- set accounting line type info
42327 --
42328 xla_ae_lines_pkg.SetAcctLineType
42329 (p_component_type => l_component_type
42330 ,p_event_type_code => l_event_type_code
42331 ,p_line_definition_owner_code => l_line_definition_owner_code
42332 ,p_line_definition_code => l_line_definition_code
42333 ,p_accounting_line_code => l_component_code
42334 ,p_accounting_line_type_code => l_component_type_code
42335 ,p_accounting_line_appl_id => l_component_appl_id
42336 ,p_amb_context_code => l_amb_context_code
42337 ,p_entity_code => l_entity_code
42338 ,p_event_class_code => l_event_class_code);
42339 --
42340 -- set accounting class
42341 --
42342 xla_ae_lines_pkg.SetAcctClass(
42343 p_accounting_class_code => 'INTERORG_PAYABLES'
42344 , p_ae_header_id => l_ae_header_id
42345 );
42346
42347 --
42348 -- set rounding class
42349 --
42350 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42351 'INTERORG_PAYABLES';
42352
42353 --
42354 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42355 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42356 --
42357 -- bulk performance
42358 --
42359 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42360
42361 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42362 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42363
42364 -- 4955764
42365 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42366 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42367
42368 -- 4458381 Public Sector Enh
42369
42370 --
42371 -- set accounting attributes for the line type
42372 --
42373 l_entered_amt_idx := 3;
42374 l_accted_amt_idx := 8;
42375 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42376 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42377 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
42378 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42379 l_rec_acct_attrs.array_char_value(2) := p_source_12;
42380 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42381 l_rec_acct_attrs.array_num_value(3) := p_source_18;
42382 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42383 l_rec_acct_attrs.array_char_value(4) := p_source_15;
42384 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42385 l_rec_acct_attrs.array_date_value(5) := p_source_19;
42386 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42387 l_rec_acct_attrs.array_num_value(6) := p_source_20;
42388 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42389 l_rec_acct_attrs.array_char_value(7) := p_source_21;
42390 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42391 l_rec_acct_attrs.array_num_value(8) := p_source_22;
42392
42393 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42394 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42395
42396 ---------------------------------------------------------------------------------------------------------------
42397 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42398 ---------------------------------------------------------------------------------------------------------------
42399 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42400
42401 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42402 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42403
42404 IF xla_accounting_cache_pkg.GetValueChar
42405 (p_source_code => 'LEDGER_CATEGORY_CODE'
42406 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42407 AND l_bflow_method_code = 'PRIOR_ENTRY'
42408 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42409 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42410 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42411 )
42412 THEN
42413 xla_ae_lines_pkg.BflowUpgEntry
42414 (p_business_method_code => l_bflow_method_code
42415 ,p_business_class_code => l_bflow_class_code
42416 ,p_balance_type => l_balance_type_code);
42417 ELSE
42418 NULL;
42419 -- No business flow processing for business flow method of NONE.
42420 END IF;
42421
42422 --
42423 -- call analytical criteria
42424 --
42425
42426 --
42427 -- call description
42428 --
42429 -- No description or it is inherited.
42430 --
42431 -- call ADRs
42432 -- Bug 4922099
42433 --
42434 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42435 (NVL(l_actual_upg_option, 'N') = 'O') OR
42436 (NVL(l_enc_upg_option, 'N') = 'O')
42437 )
42438 THEN
42439 NULL;
42440 --
42441 --
42442
42443 l_ccid := AcctDerRule_4(
42444 p_application_id => p_application_id
42445 , p_ae_header_id => l_ae_header_id
42446 , p_source_4 => p_source_4
42447 , x_transaction_coa_id => l_adr_transaction_coa_id
42448 , x_accounting_coa_id => l_adr_accounting_coa_id
42449 , x_value_type_code => l_adr_value_type_code
42450 , p_side => 'NA'
42451 );
42452
42453 xla_ae_lines_pkg.set_ccid(
42454 p_code_combination_id => l_ccid
42455 , p_value_type_code => l_adr_value_type_code
42456 , p_transaction_coa_id => l_adr_transaction_coa_id
42457 , p_accounting_coa_id => l_adr_accounting_coa_id
42458 , p_adr_code => 'CST_DEFAULT'
42459 , p_adr_type_code => 'S'
42460 , p_component_type => l_component_type
42461 , p_component_code => l_component_code
42462 , p_component_type_code => l_component_type_code
42463 , p_component_appl_id => l_component_appl_id
42464 , p_amb_context_code => l_amb_context_code
42465 , p_side => 'NA'
42466 );
42467
42468
42469 --
42470 --
42471 END IF;
42472 --
42473 -- Bug 4922099
42474 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42475 (NVL(l_enc_upg_option, 'N') = 'O')
42476 ) AND
42477 (l_bflow_method_code = 'PRIOR_ENTRY')
42478 )
42479 THEN
42480 IF
42481 --
42482 1 = 2
42483 --
42484 THEN
42485 xla_accounting_err_pkg.build_message
42486 (p_appli_s_name => 'XLA'
42487 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42488 ,p_token_1 => 'LINE_NUMBER'
42489 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
42490 ,p_token_2 => 'LINE_TYPE_NAME'
42491 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
42492 l_component_type
42493 ,l_component_code
42494 ,l_component_type_code
42495 ,l_component_appl_id
42496 ,l_amb_context_code
42497 ,l_entity_code
42498 ,l_event_class_code
42499 )
42500 ,p_token_3 => 'OWNER'
42501 ,p_value_3 => xla_lookups_pkg.get_meaning(
42502 p_lookup_type => 'XLA_OWNER_TYPE'
42503 ,p_lookup_code => l_component_type_code
42504 )
42505 ,p_token_4 => 'PRODUCT_NAME'
42506 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42507 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42508 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42509 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42510 ,p_ae_header_id => NULL
42511 );
42512
42513 IF (C_LEVEL_ERROR>= g_log_level) THEN
42514 trace
42515 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42516 ,p_level => C_LEVEL_ERROR
42517 ,p_module => l_log_module);
42518 END IF;
42519 END IF;
42520 END IF;
42521 --
42522 --
42523 ------------------------------------------------------------------------------------------------
42524 -- 4219869 Business Flow
42525 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42526 -- Prior Entry. Currently, the following code is always generated.
42527 ------------------------------------------------------------------------------------------------
42528 XLA_AE_LINES_PKG.ValidateCurrentLine;
42529
42530 ------------------------------------------------------------------------------------
42531 -- 4219869 Business Flow
42532 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42533 ------------------------------------------------------------------------------------
42534 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42535
42536 ----------------------------------------------------------------------------------
42537 -- 4219869 Business Flow
42538 -- Update journal entry status -- Need to generate this within IF <condition>
42539 ----------------------------------------------------------------------------------
42540 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42541 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42542 ,p_balance_type_code => l_balance_type_code
42543 );
42544
42545 -------------------------------------------------------------------------------------------
42546 -- 4262811 - Generate the Accrual Reversal lines
42547 -------------------------------------------------------------------------------------------
42548 BEGIN
42549 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42550 (g_array_event(p_event_id).array_value_num('header_index'));
42551 IF l_acc_rev_flag IS NULL THEN
42552 l_acc_rev_flag := 'N';
42553 END IF;
42554 EXCEPTION
42555 WHEN OTHERS THEN
42556 l_acc_rev_flag := 'N';
42557 END;
42558 --
42559 IF (l_acc_rev_flag = 'Y') THEN
42560
42561 -- 4645092 ------------------------------------------------------------------------------
42562 -- To allow MPA report to determine if it should generate report process
42563 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42564 ------------------------------------------------------------------------------------------
42565
42566 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42567 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42568 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
42569 -- call ADRs
42570 -- Bug 4922099
42571 --
42572 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42573 (NVL(l_actual_upg_option, 'N') = 'O') OR
42574 (NVL(l_enc_upg_option, 'N') = 'O')
42575 )
42576 THEN
42577 NULL;
42578 --
42579 --
42580
42581 l_ccid := AcctDerRule_4(
42582 p_application_id => p_application_id
42583 , p_ae_header_id => l_ae_header_id
42584 , p_source_4 => p_source_4
42585 , x_transaction_coa_id => l_adr_transaction_coa_id
42586 , x_accounting_coa_id => l_adr_accounting_coa_id
42587 , x_value_type_code => l_adr_value_type_code
42588 , p_side => 'NA'
42589 );
42590
42591 xla_ae_lines_pkg.set_ccid(
42592 p_code_combination_id => l_ccid
42593 , p_value_type_code => l_adr_value_type_code
42594 , p_transaction_coa_id => l_adr_transaction_coa_id
42595 , p_accounting_coa_id => l_adr_accounting_coa_id
42596 , p_adr_code => 'CST_DEFAULT'
42597 , p_adr_type_code => 'S'
42598 , p_component_type => l_component_type
42599 , p_component_code => l_component_code
42600 , p_component_type_code => l_component_type_code
42601 , p_component_appl_id => l_component_appl_id
42602 , p_amb_context_code => l_amb_context_code
42603 , p_side => 'NA'
42604 );
42605
42606
42607 --
42608 --
42609 END IF;
42610
42611 --
42612 -- Update the line information that should be overwritten
42613 --
42614 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42615 p_header_num => 1);
42616 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
42617
42618 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42619
42620 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
42621 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42622 END IF;
42623
42624 --
42625 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42626 --
42627 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42628 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
42629 ELSE
42630 ---------------------------------------------------------------------------------------------------
42631 -- 4262811a Switch Sign
42632 ---------------------------------------------------------------------------------------------------
42633 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
42634 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42635 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42636 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42637 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42638 -- 5132302
42639 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42640 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42641
42642 END IF;
42643
42644 -- 4955764
42645 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42646 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42647
42648
42649 XLA_AE_LINES_PKG.ValidateCurrentLine;
42650 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42651
42652 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42653 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42654 ,p_balance_type_code => l_balance_type_code);
42655
42656 END IF;
42657
42658 -----------------------------------------------------------------------------------------
42659 -- 4262811 Multiperiod Accounting
42660 -----------------------------------------------------------------------------------------
42661 -- No MPA option is assigned.
42662
42663
42664 END IF;
42665 END IF;
42666 --
42667
42668 --
42669 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42670 trace
42671 (p_msg => 'END of AcctLineType_79'
42672 ,p_level => C_LEVEL_PROCEDURE
42673 ,p_module => l_log_module);
42674 END IF;
42675 --
42676 EXCEPTION
42677 WHEN xla_exceptions_pkg.application_exception THEN
42678 RAISE;
42679 WHEN OTHERS THEN
42680 xla_exceptions_pkg.raise_message
42681 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_79');
42682 END AcctLineType_79;
42683 --
42684
42685 ---------------------------------------
42686 --
42687 -- PRIVATE FUNCTION
42688 -- AcctLineType_80
42689 --
42690 ---------------------------------------
42691 PROCEDURE AcctLineType_80 (
42692 p_application_id IN NUMBER
42693 ,p_event_id IN NUMBER
42694 ,p_calculate_acctd_flag IN VARCHAR2
42695 ,p_calculate_g_l_flag IN VARCHAR2
42696 ,p_actual_flag IN OUT VARCHAR2
42697 ,p_balance_type_code OUT VARCHAR2
42698 ,p_gain_or_loss_ref OUT VARCHAR2
42699
42700 --Cost Management Default Account
42701 , p_source_4 IN NUMBER
42702 --DISTRIBUTION_IDENTIFIER
42703 , p_source_11 IN NUMBER
42704 --Distribution Type
42705 , p_source_12 IN VARCHAR2
42706 , p_source_12_meaning IN VARCHAR2
42707 --Entered Currency Code
42708 , p_source_15 IN VARCHAR2
42709 --Entered Amount
42710 , p_source_18 IN NUMBER
42711 --Currency Conversion Date
42712 , p_source_19 IN DATE
42713 --Currency Conversion Rate
42714 , p_source_20 IN NUMBER
42715 --Currency Conversion Type
42716 , p_source_21 IN VARCHAR2
42717 --Accounted Amount
42718 , p_source_22 IN NUMBER
42719 --Accounting Line Type
42720 , p_source_24 IN NUMBER
42721 )
42722 IS
42723
42724 l_component_type VARCHAR2(80);
42725 l_component_code VARCHAR2(30);
42726 l_component_type_code VARCHAR2(1);
42727 l_component_appl_id INTEGER;
42728 l_amb_context_code VARCHAR2(30);
42729 l_entity_code VARCHAR2(30);
42730 l_event_class_code VARCHAR2(30);
42731 l_ae_header_id NUMBER;
42732 l_event_type_code VARCHAR2(30);
42733 l_line_definition_code VARCHAR2(30);
42734 l_line_definition_owner_code VARCHAR2(1);
42735 --
42736 -- adr variables
42737 l_segment VARCHAR2(30);
42738 l_ccid NUMBER;
42739 l_adr_transaction_coa_id NUMBER;
42740 l_adr_accounting_coa_id NUMBER;
42741 l_adr_flexfield_segment_code VARCHAR2(30);
42742 l_adr_flex_value_set_id NUMBER;
42743 l_adr_value_type_code VARCHAR2(30);
42744 l_adr_value_combination_id NUMBER;
42745 l_adr_value_segment_code VARCHAR2(30);
42746
42747 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
42748 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
42749 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
42750 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
42751
42752 -- 4262811 Variables ------------------------------------------------------------------------------------------
42753 l_entered_amt_idx NUMBER;
42754 l_accted_amt_idx NUMBER;
42755 l_acc_rev_flag VARCHAR2(1);
42756 l_accrual_line_num NUMBER;
42757 l_tmp_amt NUMBER;
42758 l_acc_rev_natural_side_code VARCHAR2(1);
42759
42760 l_num_entries NUMBER;
42761 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
42762 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
42763 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
42764 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
42765 l_recog_line_1 NUMBER;
42766 l_recog_line_2 NUMBER;
42767
42768 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
42769 l_bflow_applied_to_amt NUMBER; -- 5132302
42770 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
42771
42772 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42773
42774 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
42775 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
42776
42777 ---------------------------------------------------------------------------------------------------------------
42778
42779
42780 --
42781 -- bulk performance
42782 --
42783 l_balance_type_code VARCHAR2(1);
42784 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
42785 l_log_module VARCHAR2(240);
42786
42787 --
42788 -- Upgrade strategy
42789 --
42790 l_actual_upg_option VARCHAR2(1);
42791 l_enc_upg_option VARCHAR2(1);
42792
42793 --
42794 BEGIN
42795 --
42796 IF g_log_enabled THEN
42797 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
42798 END IF;
42799 --
42800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42801
42802 trace
42803 (p_msg => 'BEGIN of AcctLineType_80'
42804 ,p_level => C_LEVEL_PROCEDURE
42805 ,p_module => l_log_module);
42806
42807 END IF;
42808 --
42809 l_component_type := 'AMB_JLT';
42810 l_component_code := 'INTERORG_PAYABLES';
42811 l_component_type_code := 'S';
42812 l_component_appl_id := 707;
42813 l_amb_context_code := 'DEFAULT';
42814 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
42815 l_event_class_code := 'USER_DEFINE';
42816 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
42817 l_line_definition_owner_code := 'S';
42818 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
42819 --
42820 l_balance_type_code := 'A';
42821 l_segment := NULL;
42822 l_ccid := NULL;
42823 l_adr_transaction_coa_id := NULL;
42824 l_adr_accounting_coa_id := NULL;
42825 l_adr_flexfield_segment_code := NULL;
42826 l_adr_flex_value_set_id := NULL;
42827 l_adr_value_type_code := NULL;
42828 l_adr_value_combination_id := NULL;
42829 l_adr_value_segment_code := NULL;
42830
42831 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
42832 l_bflow_class_code := ''; -- 4219869 Business Flow
42833 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
42834 l_budgetary_control_flag := 'N';
42835
42836 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42837 l_bflow_applied_to_amt := NULL; -- 5132302
42838 l_entered_amt_idx := NULL; -- 4262811
42839 l_accted_amt_idx := NULL; -- 4262811
42840 l_acc_rev_flag := NULL; -- 4262811
42841 l_accrual_line_num := NULL; -- 4262811
42842 l_tmp_amt := NULL; -- 4262811
42843 --
42844
42845 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42846 l_balance_type_code <> 'B' THEN
42847 IF NVL(p_source_24,9E125) = 9
42848 THEN
42849
42850 --
42851 XLA_AE_LINES_PKG.SetNewLine;
42852
42853 p_balance_type_code := l_balance_type_code;
42854 -- set the flag so later we will know whether the gain loss line needs to be created
42855
42856 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42857 p_actual_flag :='A';
42858 END IF;
42859
42860 --
42861 -- bulk performance
42862 --
42863 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42864 p_header_num => 0); -- 4262811
42865 --
42866 -- set accounting line options
42867 --
42868 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42869 p_natural_side_code => 'D'
42870 , p_gain_or_loss_flag => 'N'
42871 , p_gl_transfer_mode_code => 'S'
42872 , p_acct_entry_type_code => 'A'
42873 , p_switch_side_flag => 'Y'
42874 , p_merge_duplicate_code => 'N'
42875 );
42876 --
42877 l_acc_rev_natural_side_code := 'C'; -- 4262811
42878 --
42879 --
42880 -- set accounting line type info
42881 --
42882 xla_ae_lines_pkg.SetAcctLineType
42883 (p_component_type => l_component_type
42884 ,p_event_type_code => l_event_type_code
42885 ,p_line_definition_owner_code => l_line_definition_owner_code
42886 ,p_line_definition_code => l_line_definition_code
42887 ,p_accounting_line_code => l_component_code
42888 ,p_accounting_line_type_code => l_component_type_code
42889 ,p_accounting_line_appl_id => l_component_appl_id
42890 ,p_amb_context_code => l_amb_context_code
42891 ,p_entity_code => l_entity_code
42892 ,p_event_class_code => l_event_class_code);
42893 --
42894 -- set accounting class
42895 --
42896 xla_ae_lines_pkg.SetAcctClass(
42897 p_accounting_class_code => 'INTERORG_PAYABLES'
42898 , p_ae_header_id => l_ae_header_id
42899 );
42900
42901 --
42902 -- set rounding class
42903 --
42904 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42905 'INTERORG_PAYABLES';
42906
42907 --
42908 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42909 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42910 --
42911 -- bulk performance
42912 --
42913 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42914
42915 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42916 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42917
42918 -- 4955764
42919 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42920 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42921
42922 -- 4458381 Public Sector Enh
42923
42924 --
42925 -- set accounting attributes for the line type
42926 --
42927 l_entered_amt_idx := 3;
42928 l_accted_amt_idx := 8;
42929 l_bflow_applied_to_amt_idx := NULL; -- 5132302
42930 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42931 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
42932 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42933 l_rec_acct_attrs.array_char_value(2) := p_source_12;
42934 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42935 l_rec_acct_attrs.array_num_value(3) := p_source_18;
42936 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42937 l_rec_acct_attrs.array_char_value(4) := p_source_15;
42938 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42939 l_rec_acct_attrs.array_date_value(5) := p_source_19;
42940 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42941 l_rec_acct_attrs.array_num_value(6) := p_source_20;
42942 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42943 l_rec_acct_attrs.array_char_value(7) := p_source_21;
42944 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42945 l_rec_acct_attrs.array_num_value(8) := p_source_22;
42946
42947 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42948 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42949
42950 ---------------------------------------------------------------------------------------------------------------
42951 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42952 ---------------------------------------------------------------------------------------------------------------
42953 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42954
42955 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42956 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42957
42958 IF xla_accounting_cache_pkg.GetValueChar
42959 (p_source_code => 'LEDGER_CATEGORY_CODE'
42960 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42961 AND l_bflow_method_code = 'PRIOR_ENTRY'
42962 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42963 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42964 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42965 )
42966 THEN
42967 xla_ae_lines_pkg.BflowUpgEntry
42968 (p_business_method_code => l_bflow_method_code
42969 ,p_business_class_code => l_bflow_class_code
42970 ,p_balance_type => l_balance_type_code);
42971 ELSE
42972 NULL;
42973 -- No business flow processing for business flow method of NONE.
42974 END IF;
42975
42976 --
42977 -- call analytical criteria
42978 --
42979
42980 --
42981 -- call description
42982 --
42983 -- No description or it is inherited.
42984 --
42985 -- call ADRs
42986 -- Bug 4922099
42987 --
42988 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42989 (NVL(l_actual_upg_option, 'N') = 'O') OR
42990 (NVL(l_enc_upg_option, 'N') = 'O')
42991 )
42992 THEN
42993 NULL;
42994 --
42995 --
42996
42997 l_ccid := AcctDerRule_4(
42998 p_application_id => p_application_id
42999 , p_ae_header_id => l_ae_header_id
43000 , p_source_4 => p_source_4
43001 , x_transaction_coa_id => l_adr_transaction_coa_id
43002 , x_accounting_coa_id => l_adr_accounting_coa_id
43003 , x_value_type_code => l_adr_value_type_code
43004 , p_side => 'NA'
43005 );
43006
43007 xla_ae_lines_pkg.set_ccid(
43008 p_code_combination_id => l_ccid
43009 , p_value_type_code => l_adr_value_type_code
43010 , p_transaction_coa_id => l_adr_transaction_coa_id
43011 , p_accounting_coa_id => l_adr_accounting_coa_id
43012 , p_adr_code => 'CST_DEFAULT'
43013 , p_adr_type_code => 'S'
43014 , p_component_type => l_component_type
43015 , p_component_code => l_component_code
43016 , p_component_type_code => l_component_type_code
43017 , p_component_appl_id => l_component_appl_id
43018 , p_amb_context_code => l_amb_context_code
43019 , p_side => 'NA'
43020 );
43021
43022
43023 --
43024 --
43025 END IF;
43026 --
43027 -- Bug 4922099
43028 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43029 (NVL(l_enc_upg_option, 'N') = 'O')
43030 ) AND
43031 (l_bflow_method_code = 'PRIOR_ENTRY')
43032 )
43033 THEN
43034 IF
43035 --
43036 1 = 2
43037 --
43038 THEN
43039 xla_accounting_err_pkg.build_message
43040 (p_appli_s_name => 'XLA'
43041 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43042 ,p_token_1 => 'LINE_NUMBER'
43043 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
43044 ,p_token_2 => 'LINE_TYPE_NAME'
43045 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
43046 l_component_type
43047 ,l_component_code
43048 ,l_component_type_code
43049 ,l_component_appl_id
43050 ,l_amb_context_code
43051 ,l_entity_code
43052 ,l_event_class_code
43053 )
43054 ,p_token_3 => 'OWNER'
43055 ,p_value_3 => xla_lookups_pkg.get_meaning(
43056 p_lookup_type => 'XLA_OWNER_TYPE'
43057 ,p_lookup_code => l_component_type_code
43058 )
43059 ,p_token_4 => 'PRODUCT_NAME'
43060 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43061 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43062 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43063 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43064 ,p_ae_header_id => NULL
43065 );
43066
43067 IF (C_LEVEL_ERROR>= g_log_level) THEN
43068 trace
43069 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43070 ,p_level => C_LEVEL_ERROR
43071 ,p_module => l_log_module);
43072 END IF;
43073 END IF;
43074 END IF;
43075 --
43076 --
43077 ------------------------------------------------------------------------------------------------
43078 -- 4219869 Business Flow
43079 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43080 -- Prior Entry. Currently, the following code is always generated.
43081 ------------------------------------------------------------------------------------------------
43082 XLA_AE_LINES_PKG.ValidateCurrentLine;
43083
43084 ------------------------------------------------------------------------------------
43085 -- 4219869 Business Flow
43086 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43087 ------------------------------------------------------------------------------------
43088 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43089
43090 ----------------------------------------------------------------------------------
43091 -- 4219869 Business Flow
43092 -- Update journal entry status -- Need to generate this within IF <condition>
43093 ----------------------------------------------------------------------------------
43094 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43095 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43096 ,p_balance_type_code => l_balance_type_code
43097 );
43098
43099 -------------------------------------------------------------------------------------------
43100 -- 4262811 - Generate the Accrual Reversal lines
43101 -------------------------------------------------------------------------------------------
43102 BEGIN
43103 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43104 (g_array_event(p_event_id).array_value_num('header_index'));
43105 IF l_acc_rev_flag IS NULL THEN
43106 l_acc_rev_flag := 'N';
43107 END IF;
43108 EXCEPTION
43109 WHEN OTHERS THEN
43110 l_acc_rev_flag := 'N';
43111 END;
43112 --
43113 IF (l_acc_rev_flag = 'Y') THEN
43114
43115 -- 4645092 ------------------------------------------------------------------------------
43116 -- To allow MPA report to determine if it should generate report process
43117 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43118 ------------------------------------------------------------------------------------------
43119
43120 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43121 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43122 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
43123 -- call ADRs
43124 -- Bug 4922099
43125 --
43126 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43127 (NVL(l_actual_upg_option, 'N') = 'O') OR
43128 (NVL(l_enc_upg_option, 'N') = 'O')
43129 )
43130 THEN
43131 NULL;
43132 --
43133 --
43134
43135 l_ccid := AcctDerRule_4(
43136 p_application_id => p_application_id
43137 , p_ae_header_id => l_ae_header_id
43138 , p_source_4 => p_source_4
43139 , x_transaction_coa_id => l_adr_transaction_coa_id
43140 , x_accounting_coa_id => l_adr_accounting_coa_id
43141 , x_value_type_code => l_adr_value_type_code
43142 , p_side => 'NA'
43143 );
43144
43145 xla_ae_lines_pkg.set_ccid(
43146 p_code_combination_id => l_ccid
43147 , p_value_type_code => l_adr_value_type_code
43148 , p_transaction_coa_id => l_adr_transaction_coa_id
43149 , p_accounting_coa_id => l_adr_accounting_coa_id
43150 , p_adr_code => 'CST_DEFAULT'
43151 , p_adr_type_code => 'S'
43152 , p_component_type => l_component_type
43153 , p_component_code => l_component_code
43154 , p_component_type_code => l_component_type_code
43155 , p_component_appl_id => l_component_appl_id
43156 , p_amb_context_code => l_amb_context_code
43157 , p_side => 'NA'
43158 );
43159
43160
43161 --
43162 --
43163 END IF;
43164
43165 --
43166 -- Update the line information that should be overwritten
43167 --
43168 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43169 p_header_num => 1);
43170 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
43171
43172 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43173
43174 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
43175 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43176 END IF;
43177
43178 --
43179 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43180 --
43181 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43182 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
43183 ELSE
43184 ---------------------------------------------------------------------------------------------------
43185 -- 4262811a Switch Sign
43186 ---------------------------------------------------------------------------------------------------
43187 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
43188 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43189 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43190 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43191 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43192 -- 5132302
43193 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43194 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43195
43196 END IF;
43197
43198 -- 4955764
43199 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43200 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43201
43202
43203 XLA_AE_LINES_PKG.ValidateCurrentLine;
43204 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43205
43206 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43207 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43208 ,p_balance_type_code => l_balance_type_code);
43209
43210 END IF;
43211
43212 -----------------------------------------------------------------------------------------
43213 -- 4262811 Multiperiod Accounting
43214 -----------------------------------------------------------------------------------------
43215 -- No MPA option is assigned.
43216
43217
43218 END IF;
43219 END IF;
43220 --
43221
43222 --
43223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43224 trace
43225 (p_msg => 'END of AcctLineType_80'
43226 ,p_level => C_LEVEL_PROCEDURE
43227 ,p_module => l_log_module);
43228 END IF;
43229 --
43230 EXCEPTION
43231 WHEN xla_exceptions_pkg.application_exception THEN
43232 RAISE;
43233 WHEN OTHERS THEN
43234 xla_exceptions_pkg.raise_message
43235 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_80');
43236 END AcctLineType_80;
43237 --
43238
43239 ---------------------------------------
43240 --
43241 -- PRIVATE FUNCTION
43242 -- AcctLineType_81
43243 --
43244 ---------------------------------------
43245 PROCEDURE AcctLineType_81 (
43246 p_application_id IN NUMBER
43247 ,p_event_id IN NUMBER
43248 ,p_calculate_acctd_flag IN VARCHAR2
43249 ,p_calculate_g_l_flag IN VARCHAR2
43250 ,p_actual_flag IN OUT VARCHAR2
43251 ,p_balance_type_code OUT VARCHAR2
43252 ,p_gain_or_loss_ref OUT VARCHAR2
43253
43254 --Cost Management Default Account
43255 , p_source_4 IN NUMBER
43256 --DISTRIBUTION_IDENTIFIER
43257 , p_source_11 IN NUMBER
43258 --Distribution Type
43259 , p_source_12 IN VARCHAR2
43260 , p_source_12_meaning IN VARCHAR2
43261 --Entered Currency Code
43262 , p_source_15 IN VARCHAR2
43263 --Entered Amount
43264 , p_source_18 IN NUMBER
43265 --Currency Conversion Date
43266 , p_source_19 IN DATE
43267 --Currency Conversion Rate
43268 , p_source_20 IN NUMBER
43269 --Currency Conversion Type
43270 , p_source_21 IN VARCHAR2
43271 --Accounted Amount
43272 , p_source_22 IN NUMBER
43273 --Accounting Line Type
43274 , p_source_24 IN NUMBER
43275 )
43276 IS
43277
43278 l_component_type VARCHAR2(80);
43279 l_component_code VARCHAR2(30);
43280 l_component_type_code VARCHAR2(1);
43281 l_component_appl_id INTEGER;
43282 l_amb_context_code VARCHAR2(30);
43283 l_entity_code VARCHAR2(30);
43284 l_event_class_code VARCHAR2(30);
43285 l_ae_header_id NUMBER;
43286 l_event_type_code VARCHAR2(30);
43287 l_line_definition_code VARCHAR2(30);
43288 l_line_definition_owner_code VARCHAR2(1);
43289 --
43290 -- adr variables
43291 l_segment VARCHAR2(30);
43292 l_ccid NUMBER;
43293 l_adr_transaction_coa_id NUMBER;
43294 l_adr_accounting_coa_id NUMBER;
43295 l_adr_flexfield_segment_code VARCHAR2(30);
43296 l_adr_flex_value_set_id NUMBER;
43297 l_adr_value_type_code VARCHAR2(30);
43298 l_adr_value_combination_id NUMBER;
43299 l_adr_value_segment_code VARCHAR2(30);
43300
43301 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
43302 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
43303 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
43304 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
43305
43306 -- 4262811 Variables ------------------------------------------------------------------------------------------
43307 l_entered_amt_idx NUMBER;
43308 l_accted_amt_idx NUMBER;
43309 l_acc_rev_flag VARCHAR2(1);
43310 l_accrual_line_num NUMBER;
43311 l_tmp_amt NUMBER;
43312 l_acc_rev_natural_side_code VARCHAR2(1);
43313
43314 l_num_entries NUMBER;
43315 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
43316 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
43317 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
43318 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
43319 l_recog_line_1 NUMBER;
43320 l_recog_line_2 NUMBER;
43321
43322 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
43323 l_bflow_applied_to_amt NUMBER; -- 5132302
43324 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
43325
43326 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43327
43328 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
43329 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
43330
43331 ---------------------------------------------------------------------------------------------------------------
43332
43333
43334 --
43335 -- bulk performance
43336 --
43337 l_balance_type_code VARCHAR2(1);
43338 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
43339 l_log_module VARCHAR2(240);
43340
43341 --
43342 -- Upgrade strategy
43343 --
43344 l_actual_upg_option VARCHAR2(1);
43345 l_enc_upg_option VARCHAR2(1);
43346
43347 --
43348 BEGIN
43349 --
43350 IF g_log_enabled THEN
43351 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
43352 END IF;
43353 --
43354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43355
43356 trace
43357 (p_msg => 'BEGIN of AcctLineType_81'
43358 ,p_level => C_LEVEL_PROCEDURE
43359 ,p_module => l_log_module);
43360
43361 END IF;
43362 --
43363 l_component_type := 'AMB_JLT';
43364 l_component_code := 'INTERORG_PAYABLES';
43365 l_component_type_code := 'S';
43366 l_component_appl_id := 707;
43367 l_amb_context_code := 'DEFAULT';
43368 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
43369 l_event_class_code := 'USER_DEFINE';
43370 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
43371 l_line_definition_owner_code := 'S';
43372 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
43373 --
43374 l_balance_type_code := 'A';
43375 l_segment := NULL;
43376 l_ccid := NULL;
43377 l_adr_transaction_coa_id := NULL;
43378 l_adr_accounting_coa_id := NULL;
43379 l_adr_flexfield_segment_code := NULL;
43380 l_adr_flex_value_set_id := NULL;
43381 l_adr_value_type_code := NULL;
43382 l_adr_value_combination_id := NULL;
43383 l_adr_value_segment_code := NULL;
43384
43385 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
43386 l_bflow_class_code := ''; -- 4219869 Business Flow
43387 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
43388 l_budgetary_control_flag := 'N';
43389
43390 l_bflow_applied_to_amt_idx := NULL; -- 5132302
43391 l_bflow_applied_to_amt := NULL; -- 5132302
43392 l_entered_amt_idx := NULL; -- 4262811
43393 l_accted_amt_idx := NULL; -- 4262811
43394 l_acc_rev_flag := NULL; -- 4262811
43395 l_accrual_line_num := NULL; -- 4262811
43396 l_tmp_amt := NULL; -- 4262811
43397 --
43398
43399 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43400 l_balance_type_code <> 'B' THEN
43401 IF NVL(p_source_24,9E125) = 9
43402 THEN
43403
43404 --
43405 XLA_AE_LINES_PKG.SetNewLine;
43406
43407 p_balance_type_code := l_balance_type_code;
43408 -- set the flag so later we will know whether the gain loss line needs to be created
43409
43410 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43411 p_actual_flag :='A';
43412 END IF;
43413
43414 --
43415 -- bulk performance
43416 --
43417 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43418 p_header_num => 0); -- 4262811
43419 --
43420 -- set accounting line options
43421 --
43422 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43423 p_natural_side_code => 'D'
43424 , p_gain_or_loss_flag => 'N'
43425 , p_gl_transfer_mode_code => 'S'
43426 , p_acct_entry_type_code => 'A'
43427 , p_switch_side_flag => 'Y'
43428 , p_merge_duplicate_code => 'N'
43429 );
43430 --
43431 l_acc_rev_natural_side_code := 'C'; -- 4262811
43432 --
43433 --
43434 -- set accounting line type info
43435 --
43436 xla_ae_lines_pkg.SetAcctLineType
43437 (p_component_type => l_component_type
43438 ,p_event_type_code => l_event_type_code
43439 ,p_line_definition_owner_code => l_line_definition_owner_code
43440 ,p_line_definition_code => l_line_definition_code
43441 ,p_accounting_line_code => l_component_code
43442 ,p_accounting_line_type_code => l_component_type_code
43443 ,p_accounting_line_appl_id => l_component_appl_id
43444 ,p_amb_context_code => l_amb_context_code
43445 ,p_entity_code => l_entity_code
43446 ,p_event_class_code => l_event_class_code);
43447 --
43448 -- set accounting class
43449 --
43450 xla_ae_lines_pkg.SetAcctClass(
43451 p_accounting_class_code => 'INTERORG_PAYABLES'
43452 , p_ae_header_id => l_ae_header_id
43453 );
43454
43455 --
43456 -- set rounding class
43457 --
43458 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43459 'INTERORG_PAYABLES';
43460
43461 --
43462 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43463 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43464 --
43465 -- bulk performance
43466 --
43467 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43468
43469 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43470 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43471
43472 -- 4955764
43473 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43474 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43475
43476 -- 4458381 Public Sector Enh
43477
43478 --
43479 -- set accounting attributes for the line type
43480 --
43481 l_entered_amt_idx := 3;
43482 l_accted_amt_idx := 8;
43483 l_bflow_applied_to_amt_idx := NULL; -- 5132302
43484 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43485 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
43486 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43487 l_rec_acct_attrs.array_char_value(2) := p_source_12;
43488 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43489 l_rec_acct_attrs.array_num_value(3) := p_source_18;
43490 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43491 l_rec_acct_attrs.array_char_value(4) := p_source_15;
43492 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43493 l_rec_acct_attrs.array_date_value(5) := p_source_19;
43494 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43495 l_rec_acct_attrs.array_num_value(6) := p_source_20;
43496 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43497 l_rec_acct_attrs.array_char_value(7) := p_source_21;
43498 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43499 l_rec_acct_attrs.array_num_value(8) := p_source_22;
43500
43501 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43502 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43503
43504 ---------------------------------------------------------------------------------------------------------------
43505 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43506 ---------------------------------------------------------------------------------------------------------------
43507 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43508
43509 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43510 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43511
43512 IF xla_accounting_cache_pkg.GetValueChar
43513 (p_source_code => 'LEDGER_CATEGORY_CODE'
43514 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43515 AND l_bflow_method_code = 'PRIOR_ENTRY'
43516 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43517 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43518 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43519 )
43520 THEN
43521 xla_ae_lines_pkg.BflowUpgEntry
43522 (p_business_method_code => l_bflow_method_code
43523 ,p_business_class_code => l_bflow_class_code
43524 ,p_balance_type => l_balance_type_code);
43525 ELSE
43526 NULL;
43527 -- No business flow processing for business flow method of NONE.
43528 END IF;
43529
43530 --
43531 -- call analytical criteria
43532 --
43533
43534 --
43535 -- call description
43536 --
43537 -- No description or it is inherited.
43538 --
43539 -- call ADRs
43540 -- Bug 4922099
43541 --
43542 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43543 (NVL(l_actual_upg_option, 'N') = 'O') OR
43544 (NVL(l_enc_upg_option, 'N') = 'O')
43545 )
43546 THEN
43547 NULL;
43548 --
43549 --
43550
43551 l_ccid := AcctDerRule_4(
43552 p_application_id => p_application_id
43553 , p_ae_header_id => l_ae_header_id
43554 , p_source_4 => p_source_4
43555 , x_transaction_coa_id => l_adr_transaction_coa_id
43556 , x_accounting_coa_id => l_adr_accounting_coa_id
43557 , x_value_type_code => l_adr_value_type_code
43558 , p_side => 'NA'
43559 );
43560
43561 xla_ae_lines_pkg.set_ccid(
43562 p_code_combination_id => l_ccid
43563 , p_value_type_code => l_adr_value_type_code
43564 , p_transaction_coa_id => l_adr_transaction_coa_id
43565 , p_accounting_coa_id => l_adr_accounting_coa_id
43566 , p_adr_code => 'CST_DEFAULT'
43567 , p_adr_type_code => 'S'
43568 , p_component_type => l_component_type
43569 , p_component_code => l_component_code
43570 , p_component_type_code => l_component_type_code
43571 , p_component_appl_id => l_component_appl_id
43572 , p_amb_context_code => l_amb_context_code
43573 , p_side => 'NA'
43574 );
43575
43576
43577 --
43578 --
43579 END IF;
43580 --
43581 -- Bug 4922099
43582 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43583 (NVL(l_enc_upg_option, 'N') = 'O')
43584 ) AND
43585 (l_bflow_method_code = 'PRIOR_ENTRY')
43586 )
43587 THEN
43588 IF
43589 --
43590 1 = 2
43591 --
43592 THEN
43593 xla_accounting_err_pkg.build_message
43594 (p_appli_s_name => 'XLA'
43595 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43596 ,p_token_1 => 'LINE_NUMBER'
43597 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
43598 ,p_token_2 => 'LINE_TYPE_NAME'
43599 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
43600 l_component_type
43601 ,l_component_code
43602 ,l_component_type_code
43603 ,l_component_appl_id
43604 ,l_amb_context_code
43605 ,l_entity_code
43606 ,l_event_class_code
43607 )
43608 ,p_token_3 => 'OWNER'
43609 ,p_value_3 => xla_lookups_pkg.get_meaning(
43610 p_lookup_type => 'XLA_OWNER_TYPE'
43611 ,p_lookup_code => l_component_type_code
43612 )
43613 ,p_token_4 => 'PRODUCT_NAME'
43614 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43615 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43616 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43617 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43618 ,p_ae_header_id => NULL
43619 );
43620
43621 IF (C_LEVEL_ERROR>= g_log_level) THEN
43622 trace
43623 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43624 ,p_level => C_LEVEL_ERROR
43625 ,p_module => l_log_module);
43626 END IF;
43627 END IF;
43628 END IF;
43629 --
43630 --
43631 ------------------------------------------------------------------------------------------------
43632 -- 4219869 Business Flow
43633 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43634 -- Prior Entry. Currently, the following code is always generated.
43635 ------------------------------------------------------------------------------------------------
43636 XLA_AE_LINES_PKG.ValidateCurrentLine;
43637
43638 ------------------------------------------------------------------------------------
43639 -- 4219869 Business Flow
43640 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43641 ------------------------------------------------------------------------------------
43642 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43643
43644 ----------------------------------------------------------------------------------
43645 -- 4219869 Business Flow
43646 -- Update journal entry status -- Need to generate this within IF <condition>
43647 ----------------------------------------------------------------------------------
43648 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43649 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43650 ,p_balance_type_code => l_balance_type_code
43651 );
43652
43653 -------------------------------------------------------------------------------------------
43654 -- 4262811 - Generate the Accrual Reversal lines
43655 -------------------------------------------------------------------------------------------
43656 BEGIN
43657 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43658 (g_array_event(p_event_id).array_value_num('header_index'));
43659 IF l_acc_rev_flag IS NULL THEN
43660 l_acc_rev_flag := 'N';
43661 END IF;
43662 EXCEPTION
43663 WHEN OTHERS THEN
43664 l_acc_rev_flag := 'N';
43665 END;
43666 --
43667 IF (l_acc_rev_flag = 'Y') THEN
43668
43669 -- 4645092 ------------------------------------------------------------------------------
43670 -- To allow MPA report to determine if it should generate report process
43671 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43672 ------------------------------------------------------------------------------------------
43673
43674 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43675 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43676 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
43677 -- call ADRs
43678 -- Bug 4922099
43679 --
43680 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43681 (NVL(l_actual_upg_option, 'N') = 'O') OR
43682 (NVL(l_enc_upg_option, 'N') = 'O')
43683 )
43684 THEN
43685 NULL;
43686 --
43687 --
43688
43689 l_ccid := AcctDerRule_4(
43690 p_application_id => p_application_id
43691 , p_ae_header_id => l_ae_header_id
43692 , p_source_4 => p_source_4
43693 , x_transaction_coa_id => l_adr_transaction_coa_id
43694 , x_accounting_coa_id => l_adr_accounting_coa_id
43695 , x_value_type_code => l_adr_value_type_code
43696 , p_side => 'NA'
43697 );
43698
43699 xla_ae_lines_pkg.set_ccid(
43700 p_code_combination_id => l_ccid
43701 , p_value_type_code => l_adr_value_type_code
43702 , p_transaction_coa_id => l_adr_transaction_coa_id
43703 , p_accounting_coa_id => l_adr_accounting_coa_id
43704 , p_adr_code => 'CST_DEFAULT'
43705 , p_adr_type_code => 'S'
43706 , p_component_type => l_component_type
43707 , p_component_code => l_component_code
43708 , p_component_type_code => l_component_type_code
43709 , p_component_appl_id => l_component_appl_id
43710 , p_amb_context_code => l_amb_context_code
43711 , p_side => 'NA'
43712 );
43713
43714
43715 --
43716 --
43717 END IF;
43718
43719 --
43720 -- Update the line information that should be overwritten
43721 --
43722 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43723 p_header_num => 1);
43724 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
43725
43726 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43727
43728 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
43729 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43730 END IF;
43731
43732 --
43733 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43734 --
43735 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43736 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
43737 ELSE
43738 ---------------------------------------------------------------------------------------------------
43739 -- 4262811a Switch Sign
43740 ---------------------------------------------------------------------------------------------------
43741 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
43742 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43743 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43744 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43745 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43746 -- 5132302
43747 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43748 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43749
43750 END IF;
43751
43752 -- 4955764
43753 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43754 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43755
43756
43757 XLA_AE_LINES_PKG.ValidateCurrentLine;
43758 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43759
43760 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43761 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43762 ,p_balance_type_code => l_balance_type_code);
43763
43764 END IF;
43765
43766 -----------------------------------------------------------------------------------------
43767 -- 4262811 Multiperiod Accounting
43768 -----------------------------------------------------------------------------------------
43769 -- No MPA option is assigned.
43770
43771
43772 END IF;
43773 END IF;
43774 --
43775
43776 --
43777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43778 trace
43779 (p_msg => 'END of AcctLineType_81'
43780 ,p_level => C_LEVEL_PROCEDURE
43781 ,p_module => l_log_module);
43782 END IF;
43783 --
43784 EXCEPTION
43785 WHEN xla_exceptions_pkg.application_exception THEN
43786 RAISE;
43787 WHEN OTHERS THEN
43788 xla_exceptions_pkg.raise_message
43789 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_81');
43790 END AcctLineType_81;
43791 --
43792
43793 ---------------------------------------
43794 --
43795 -- PRIVATE FUNCTION
43796 -- AcctLineType_82
43797 --
43798 ---------------------------------------
43799 PROCEDURE AcctLineType_82 (
43800 p_application_id IN NUMBER
43801 ,p_event_id IN NUMBER
43802 ,p_calculate_acctd_flag IN VARCHAR2
43803 ,p_calculate_g_l_flag IN VARCHAR2
43804 ,p_actual_flag IN OUT VARCHAR2
43805 ,p_balance_type_code OUT VARCHAR2
43806 ,p_gain_or_loss_ref OUT VARCHAR2
43807
43808 --Cost Management Default Account
43809 , p_source_4 IN NUMBER
43810 --Applied to Application ID
43811 , p_source_6 IN NUMBER
43812 --Applied to Distribution Link Type
43813 , p_source_7 IN VARCHAR2
43814 --Applied to Entity Code
43815 , p_source_8 IN VARCHAR2
43816 --DISTRIBUTION_IDENTIFIER
43817 , p_source_11 IN NUMBER
43818 --Distribution Type
43819 , p_source_12 IN VARCHAR2
43820 , p_source_12_meaning IN VARCHAR2
43821 --Encumbrance Reversal Amount Entered
43822 , p_source_14 IN NUMBER
43823 --Entered Currency Code
43824 , p_source_15 IN VARCHAR2
43825 --Transaction Encumbrance Reversal Amount
43826 , p_source_16 IN NUMBER
43827 --Entered Amount
43828 , p_source_18 IN NUMBER
43829 --Currency Conversion Date
43830 , p_source_19 IN DATE
43831 --Currency Conversion Rate
43832 , p_source_20 IN NUMBER
43833 --Currency Conversion Type
43834 , p_source_21 IN VARCHAR2
43835 --Accounted Amount
43836 , p_source_22 IN NUMBER
43837 --Accounting Line Type
43838 , p_source_24 IN NUMBER
43839 --Costing Encumbrance Upgrade Option
43840 , p_source_27 IN VARCHAR2
43841 --TXN_PO_DISTRIBUTION_ID
43842 , p_source_28 IN NUMBER
43843 --TXN_PO_HEADER_ID
43844 , p_source_29 IN NUMBER
43845 --Requisition Budget Account
43846 , p_source_30 IN NUMBER
43847 --Requisition Encumbrance Type Identifier
43848 , p_source_31 IN NUMBER
43849 )
43850 IS
43851
43852 l_component_type VARCHAR2(80);
43853 l_component_code VARCHAR2(30);
43854 l_component_type_code VARCHAR2(1);
43855 l_component_appl_id INTEGER;
43856 l_amb_context_code VARCHAR2(30);
43857 l_entity_code VARCHAR2(30);
43858 l_event_class_code VARCHAR2(30);
43859 l_ae_header_id NUMBER;
43860 l_event_type_code VARCHAR2(30);
43861 l_line_definition_code VARCHAR2(30);
43862 l_line_definition_owner_code VARCHAR2(1);
43863 --
43864 -- adr variables
43865 l_segment VARCHAR2(30);
43866 l_ccid NUMBER;
43867 l_adr_transaction_coa_id NUMBER;
43868 l_adr_accounting_coa_id NUMBER;
43869 l_adr_flexfield_segment_code VARCHAR2(30);
43870 l_adr_flex_value_set_id NUMBER;
43871 l_adr_value_type_code VARCHAR2(30);
43872 l_adr_value_combination_id NUMBER;
43873 l_adr_value_segment_code VARCHAR2(30);
43874
43875 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
43876 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
43877 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
43878 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
43879
43880 -- 4262811 Variables ------------------------------------------------------------------------------------------
43881 l_entered_amt_idx NUMBER;
43882 l_accted_amt_idx NUMBER;
43883 l_acc_rev_flag VARCHAR2(1);
43884 l_accrual_line_num NUMBER;
43885 l_tmp_amt NUMBER;
43886 l_acc_rev_natural_side_code VARCHAR2(1);
43887
43888 l_num_entries NUMBER;
43889 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
43890 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
43891 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
43892 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
43893 l_recog_line_1 NUMBER;
43894 l_recog_line_2 NUMBER;
43895
43896 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
43897 l_bflow_applied_to_amt NUMBER; -- 5132302
43898 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
43899
43900 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43901
43902 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
43903 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
43904
43905 ---------------------------------------------------------------------------------------------------------------
43906
43907
43908 --
43909 -- bulk performance
43910 --
43911 l_balance_type_code VARCHAR2(1);
43912 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
43913 l_log_module VARCHAR2(240);
43914
43915 --
43916 -- Upgrade strategy
43917 --
43918 l_actual_upg_option VARCHAR2(1);
43919 l_enc_upg_option VARCHAR2(1);
43920
43921 --
43922 BEGIN
43923 --
43924 IF g_log_enabled THEN
43925 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
43926 END IF;
43927 --
43928 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43929
43930 trace
43931 (p_msg => 'BEGIN of AcctLineType_82'
43932 ,p_level => C_LEVEL_PROCEDURE
43933 ,p_module => l_log_module);
43934
43935 END IF;
43936 --
43937 l_component_type := 'AMB_JLT';
43938 l_component_code := 'INTERORG_PAYABLES';
43939 l_component_type_code := 'S';
43940 l_component_appl_id := 707;
43941 l_amb_context_code := 'DEFAULT';
43942 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
43943 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
43944 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
43945 l_line_definition_owner_code := 'S';
43946 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
43947 --
43948 l_balance_type_code := 'A';
43949 l_segment := NULL;
43950 l_ccid := NULL;
43951 l_adr_transaction_coa_id := NULL;
43952 l_adr_accounting_coa_id := NULL;
43953 l_adr_flexfield_segment_code := NULL;
43954 l_adr_flex_value_set_id := NULL;
43955 l_adr_value_type_code := NULL;
43956 l_adr_value_combination_id := NULL;
43957 l_adr_value_segment_code := NULL;
43958
43959 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
43960 l_bflow_class_code := ''; -- 4219869 Business Flow
43961 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
43962 l_budgetary_control_flag := 'N';
43963
43964 l_bflow_applied_to_amt_idx := NULL; -- 5132302
43965 l_bflow_applied_to_amt := NULL; -- 5132302
43966 l_entered_amt_idx := NULL; -- 4262811
43967 l_accted_amt_idx := NULL; -- 4262811
43968 l_acc_rev_flag := NULL; -- 4262811
43969 l_accrual_line_num := NULL; -- 4262811
43970 l_tmp_amt := NULL; -- 4262811
43971 --
43972
43973 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43974 l_balance_type_code <> 'B' THEN
43975 IF NVL(p_source_24,9E125) = 9
43976 THEN
43977
43978 --
43979 XLA_AE_LINES_PKG.SetNewLine;
43980
43981 p_balance_type_code := l_balance_type_code;
43982 -- set the flag so later we will know whether the gain loss line needs to be created
43983
43984 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43985 p_actual_flag :='A';
43986 END IF;
43987
43988 --
43989 -- bulk performance
43990 --
43991 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43992 p_header_num => 0); -- 4262811
43993 --
43994 -- set accounting line options
43995 --
43996 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43997 p_natural_side_code => 'D'
43998 , p_gain_or_loss_flag => 'N'
43999 , p_gl_transfer_mode_code => 'S'
44000 , p_acct_entry_type_code => 'A'
44001 , p_switch_side_flag => 'Y'
44002 , p_merge_duplicate_code => 'N'
44003 );
44004 --
44005 l_acc_rev_natural_side_code := 'C'; -- 4262811
44006 --
44007 --
44008 -- set accounting line type info
44009 --
44010 xla_ae_lines_pkg.SetAcctLineType
44011 (p_component_type => l_component_type
44012 ,p_event_type_code => l_event_type_code
44013 ,p_line_definition_owner_code => l_line_definition_owner_code
44014 ,p_line_definition_code => l_line_definition_code
44015 ,p_accounting_line_code => l_component_code
44016 ,p_accounting_line_type_code => l_component_type_code
44017 ,p_accounting_line_appl_id => l_component_appl_id
44018 ,p_amb_context_code => l_amb_context_code
44019 ,p_entity_code => l_entity_code
44020 ,p_event_class_code => l_event_class_code);
44021 --
44022 -- set accounting class
44023 --
44024 xla_ae_lines_pkg.SetAcctClass(
44025 p_accounting_class_code => 'INTERORG_PAYABLES'
44026 , p_ae_header_id => l_ae_header_id
44027 );
44028
44029 --
44030 -- set rounding class
44031 --
44032 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44033 'INTERORG_PAYABLES';
44034
44035 --
44036 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44037 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44038 --
44039 -- bulk performance
44040 --
44041 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44042
44043 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44044 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44045
44046 -- 4955764
44047 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44048 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44049
44050 -- 4458381 Public Sector Enh
44051
44052 --
44053 -- set accounting attributes for the line type
44054 --
44055 l_entered_amt_idx := 17;
44056 l_accted_amt_idx := 22;
44057 l_bflow_applied_to_amt_idx := NULL; -- 5132302
44058 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
44059 l_rec_acct_attrs.array_num_value(1) := p_source_6;
44060 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
44061 l_rec_acct_attrs.array_char_value(2) := p_source_7;
44062 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
44063 l_rec_acct_attrs.array_char_value(3) := p_source_8;
44064 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
44065 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
44066 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
44067 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
44068 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
44069 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
44070 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
44071 l_rec_acct_attrs.array_char_value(7) := p_source_12;
44072 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
44073 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
44074 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
44075 l_rec_acct_attrs.array_num_value(9) := p_source_14;
44076 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
44077 l_rec_acct_attrs.array_char_value(10) := p_source_15;
44078 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
44079 l_rec_acct_attrs.array_num_value(11) := p_source_16;
44080 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
44081 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
44082 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
44083 l_rec_acct_attrs.array_num_value(13) := p_source_14;
44084 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
44085 l_rec_acct_attrs.array_char_value(14) := p_source_15;
44086 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
44087 l_rec_acct_attrs.array_num_value(15) := p_source_16;
44088 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
44089 l_rec_acct_attrs.array_char_value(16) := p_source_27;
44090 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
44091 l_rec_acct_attrs.array_num_value(17) := p_source_18;
44092 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
44093 l_rec_acct_attrs.array_char_value(18) := p_source_15;
44094 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
44095 l_rec_acct_attrs.array_date_value(19) := p_source_19;
44096 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
44097 l_rec_acct_attrs.array_num_value(20) := p_source_20;
44098 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
44099 l_rec_acct_attrs.array_char_value(21) := p_source_21;
44100 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
44101 l_rec_acct_attrs.array_num_value(22) := p_source_22;
44102 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
44103 l_rec_acct_attrs.array_num_value(23) := p_source_31;
44104 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
44105 l_rec_acct_attrs.array_num_value(24) := p_source_31;
44106
44107 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44108 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44109
44110 ---------------------------------------------------------------------------------------------------------------
44111 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44112 ---------------------------------------------------------------------------------------------------------------
44113 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44114
44115 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44116 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44117
44118 IF xla_accounting_cache_pkg.GetValueChar
44119 (p_source_code => 'LEDGER_CATEGORY_CODE'
44120 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44121 AND l_bflow_method_code = 'PRIOR_ENTRY'
44122 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44123 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44124 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44125 )
44126 THEN
44127 xla_ae_lines_pkg.BflowUpgEntry
44128 (p_business_method_code => l_bflow_method_code
44129 ,p_business_class_code => l_bflow_class_code
44130 ,p_balance_type => l_balance_type_code);
44131 ELSE
44132 NULL;
44133 -- No business flow processing for business flow method of NONE.
44134 END IF;
44135
44136 --
44137 -- call analytical criteria
44138 --
44139
44140 --
44141 -- call description
44142 --
44143 -- No description or it is inherited.
44144 --
44145 -- call ADRs
44146 -- Bug 4922099
44147 --
44148 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44149 (NVL(l_actual_upg_option, 'N') = 'O') OR
44150 (NVL(l_enc_upg_option, 'N') = 'O')
44151 )
44152 THEN
44153 NULL;
44154 --
44155 --
44156
44157 l_ccid := AcctDerRule_4(
44158 p_application_id => p_application_id
44159 , p_ae_header_id => l_ae_header_id
44160 , p_source_4 => p_source_4
44161 , x_transaction_coa_id => l_adr_transaction_coa_id
44162 , x_accounting_coa_id => l_adr_accounting_coa_id
44163 , x_value_type_code => l_adr_value_type_code
44164 , p_side => 'NA'
44165 );
44166
44167 xla_ae_lines_pkg.set_ccid(
44168 p_code_combination_id => l_ccid
44169 , p_value_type_code => l_adr_value_type_code
44170 , p_transaction_coa_id => l_adr_transaction_coa_id
44171 , p_accounting_coa_id => l_adr_accounting_coa_id
44172 , p_adr_code => 'CST_DEFAULT'
44173 , p_adr_type_code => 'S'
44174 , p_component_type => l_component_type
44175 , p_component_code => l_component_code
44176 , p_component_type_code => l_component_type_code
44177 , p_component_appl_id => l_component_appl_id
44178 , p_amb_context_code => l_amb_context_code
44179 , p_side => 'NA'
44180 );
44181
44182
44183 --
44184 --
44185 END IF;
44186 --
44187 -- Bug 4922099
44188 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44189 (NVL(l_enc_upg_option, 'N') = 'O')
44190 ) AND
44191 (l_bflow_method_code = 'PRIOR_ENTRY')
44192 )
44193 THEN
44194 IF
44195 --
44196 1 = 2
44197 --
44198 THEN
44199 xla_accounting_err_pkg.build_message
44200 (p_appli_s_name => 'XLA'
44201 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44202 ,p_token_1 => 'LINE_NUMBER'
44203 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
44204 ,p_token_2 => 'LINE_TYPE_NAME'
44205 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
44206 l_component_type
44207 ,l_component_code
44208 ,l_component_type_code
44209 ,l_component_appl_id
44210 ,l_amb_context_code
44211 ,l_entity_code
44212 ,l_event_class_code
44213 )
44214 ,p_token_3 => 'OWNER'
44215 ,p_value_3 => xla_lookups_pkg.get_meaning(
44216 p_lookup_type => 'XLA_OWNER_TYPE'
44217 ,p_lookup_code => l_component_type_code
44218 )
44219 ,p_token_4 => 'PRODUCT_NAME'
44220 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44221 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44222 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44223 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44224 ,p_ae_header_id => NULL
44225 );
44226
44227 IF (C_LEVEL_ERROR>= g_log_level) THEN
44228 trace
44229 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44230 ,p_level => C_LEVEL_ERROR
44231 ,p_module => l_log_module);
44232 END IF;
44233 END IF;
44234 END IF;
44235 --
44236 --
44237 ------------------------------------------------------------------------------------------------
44238 -- 4219869 Business Flow
44239 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44240 -- Prior Entry. Currently, the following code is always generated.
44241 ------------------------------------------------------------------------------------------------
44242 XLA_AE_LINES_PKG.ValidateCurrentLine;
44243
44244 ------------------------------------------------------------------------------------
44245 -- 4219869 Business Flow
44246 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44247 ------------------------------------------------------------------------------------
44248 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44249
44250 ----------------------------------------------------------------------------------
44251 -- 4219869 Business Flow
44252 -- Update journal entry status -- Need to generate this within IF <condition>
44253 ----------------------------------------------------------------------------------
44254 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44255 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44256 ,p_balance_type_code => l_balance_type_code
44257 );
44258
44259 -------------------------------------------------------------------------------------------
44260 -- 4262811 - Generate the Accrual Reversal lines
44261 -------------------------------------------------------------------------------------------
44262 BEGIN
44263 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44264 (g_array_event(p_event_id).array_value_num('header_index'));
44265 IF l_acc_rev_flag IS NULL THEN
44266 l_acc_rev_flag := 'N';
44267 END IF;
44268 EXCEPTION
44269 WHEN OTHERS THEN
44270 l_acc_rev_flag := 'N';
44271 END;
44272 --
44273 IF (l_acc_rev_flag = 'Y') THEN
44274
44275 -- 4645092 ------------------------------------------------------------------------------
44276 -- To allow MPA report to determine if it should generate report process
44277 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44278 ------------------------------------------------------------------------------------------
44279
44280 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44281 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44282 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
44283 -- call ADRs
44284 -- Bug 4922099
44285 --
44286 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44287 (NVL(l_actual_upg_option, 'N') = 'O') OR
44288 (NVL(l_enc_upg_option, 'N') = 'O')
44289 )
44290 THEN
44291 NULL;
44292 --
44293 --
44294
44295 l_ccid := AcctDerRule_4(
44296 p_application_id => p_application_id
44297 , p_ae_header_id => l_ae_header_id
44298 , p_source_4 => p_source_4
44299 , x_transaction_coa_id => l_adr_transaction_coa_id
44300 , x_accounting_coa_id => l_adr_accounting_coa_id
44301 , x_value_type_code => l_adr_value_type_code
44302 , p_side => 'NA'
44303 );
44304
44305 xla_ae_lines_pkg.set_ccid(
44306 p_code_combination_id => l_ccid
44307 , p_value_type_code => l_adr_value_type_code
44308 , p_transaction_coa_id => l_adr_transaction_coa_id
44309 , p_accounting_coa_id => l_adr_accounting_coa_id
44310 , p_adr_code => 'CST_DEFAULT'
44311 , p_adr_type_code => 'S'
44312 , p_component_type => l_component_type
44313 , p_component_code => l_component_code
44314 , p_component_type_code => l_component_type_code
44315 , p_component_appl_id => l_component_appl_id
44316 , p_amb_context_code => l_amb_context_code
44317 , p_side => 'NA'
44318 );
44319
44320
44321 --
44322 --
44323 END IF;
44324
44325 --
44326 -- Update the line information that should be overwritten
44327 --
44328 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44329 p_header_num => 1);
44330 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
44331
44332 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44333
44334 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
44335 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44336 END IF;
44337
44338 --
44339 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44340 --
44341 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44342 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
44343 ELSE
44344 ---------------------------------------------------------------------------------------------------
44345 -- 4262811a Switch Sign
44346 ---------------------------------------------------------------------------------------------------
44347 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
44348 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44349 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44350 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44351 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44352 -- 5132302
44353 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44354 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44355
44356 END IF;
44357
44358 -- 4955764
44359 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44360 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44361
44362
44363 XLA_AE_LINES_PKG.ValidateCurrentLine;
44364 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44365
44366 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44367 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44368 ,p_balance_type_code => l_balance_type_code);
44369
44370 END IF;
44371
44372 -----------------------------------------------------------------------------------------
44373 -- 4262811 Multiperiod Accounting
44374 -----------------------------------------------------------------------------------------
44375 -- No MPA option is assigned.
44376
44377
44378 END IF;
44379 END IF;
44380 --
44381
44382 --
44383 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44384 trace
44385 (p_msg => 'END of AcctLineType_82'
44386 ,p_level => C_LEVEL_PROCEDURE
44387 ,p_module => l_log_module);
44388 END IF;
44389 --
44390 EXCEPTION
44391 WHEN xla_exceptions_pkg.application_exception THEN
44392 RAISE;
44393 WHEN OTHERS THEN
44394 xla_exceptions_pkg.raise_message
44395 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_82');
44396 END AcctLineType_82;
44397 --
44398
44399 ---------------------------------------
44400 --
44401 -- PRIVATE FUNCTION
44402 -- AcctLineType_83
44403 --
44404 ---------------------------------------
44405 PROCEDURE AcctLineType_83 (
44406 p_application_id IN NUMBER
44407 ,p_event_id IN NUMBER
44408 ,p_calculate_acctd_flag IN VARCHAR2
44409 ,p_calculate_g_l_flag IN VARCHAR2
44410 ,p_actual_flag IN OUT VARCHAR2
44411 ,p_balance_type_code OUT VARCHAR2
44412 ,p_gain_or_loss_ref OUT VARCHAR2
44413
44414 --Cost Management Default Account
44415 , p_source_4 IN NUMBER
44416 --DISTRIBUTION_IDENTIFIER
44417 , p_source_11 IN NUMBER
44418 --Distribution Type
44419 , p_source_12 IN VARCHAR2
44420 , p_source_12_meaning IN VARCHAR2
44421 --Entered Currency Code
44422 , p_source_15 IN VARCHAR2
44423 --Entered Amount
44424 , p_source_18 IN NUMBER
44425 --Currency Conversion Date
44426 , p_source_19 IN DATE
44427 --Currency Conversion Rate
44428 , p_source_20 IN NUMBER
44429 --Currency Conversion Type
44430 , p_source_21 IN VARCHAR2
44431 --Accounted Amount
44432 , p_source_22 IN NUMBER
44433 --Accounting Line Type
44434 , p_source_24 IN NUMBER
44435 )
44436 IS
44437
44438 l_component_type VARCHAR2(80);
44439 l_component_code VARCHAR2(30);
44440 l_component_type_code VARCHAR2(1);
44441 l_component_appl_id INTEGER;
44442 l_amb_context_code VARCHAR2(30);
44443 l_entity_code VARCHAR2(30);
44444 l_event_class_code VARCHAR2(30);
44445 l_ae_header_id NUMBER;
44446 l_event_type_code VARCHAR2(30);
44447 l_line_definition_code VARCHAR2(30);
44448 l_line_definition_owner_code VARCHAR2(1);
44449 --
44450 -- adr variables
44451 l_segment VARCHAR2(30);
44452 l_ccid NUMBER;
44453 l_adr_transaction_coa_id NUMBER;
44454 l_adr_accounting_coa_id NUMBER;
44455 l_adr_flexfield_segment_code VARCHAR2(30);
44456 l_adr_flex_value_set_id NUMBER;
44457 l_adr_value_type_code VARCHAR2(30);
44458 l_adr_value_combination_id NUMBER;
44459 l_adr_value_segment_code VARCHAR2(30);
44460
44461 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
44462 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
44463 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
44464 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
44465
44466 -- 4262811 Variables ------------------------------------------------------------------------------------------
44467 l_entered_amt_idx NUMBER;
44468 l_accted_amt_idx NUMBER;
44469 l_acc_rev_flag VARCHAR2(1);
44470 l_accrual_line_num NUMBER;
44471 l_tmp_amt NUMBER;
44472 l_acc_rev_natural_side_code VARCHAR2(1);
44473
44474 l_num_entries NUMBER;
44475 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
44476 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
44477 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
44478 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
44479 l_recog_line_1 NUMBER;
44480 l_recog_line_2 NUMBER;
44481
44482 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
44483 l_bflow_applied_to_amt NUMBER; -- 5132302
44484 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
44485
44486 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44487
44488 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
44489 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
44490
44491 ---------------------------------------------------------------------------------------------------------------
44492
44493
44494 --
44495 -- bulk performance
44496 --
44497 l_balance_type_code VARCHAR2(1);
44498 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
44499 l_log_module VARCHAR2(240);
44500
44501 --
44502 -- Upgrade strategy
44503 --
44504 l_actual_upg_option VARCHAR2(1);
44505 l_enc_upg_option VARCHAR2(1);
44506
44507 --
44508 BEGIN
44509 --
44510 IF g_log_enabled THEN
44511 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
44512 END IF;
44513 --
44514 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44515
44516 trace
44517 (p_msg => 'BEGIN of AcctLineType_83'
44518 ,p_level => C_LEVEL_PROCEDURE
44519 ,p_module => l_log_module);
44520
44521 END IF;
44522 --
44523 l_component_type := 'AMB_JLT';
44524 l_component_code := 'INTERORG_PAYABLES';
44525 l_component_type_code := 'S';
44526 l_component_appl_id := 707;
44527 l_amb_context_code := 'DEFAULT';
44528 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
44529 l_event_class_code := 'USER_DEFINE';
44530 l_event_type_code := 'UDIR_INTERORG_RCPT';
44531 l_line_definition_owner_code := 'S';
44532 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
44533 --
44534 l_balance_type_code := 'A';
44535 l_segment := NULL;
44536 l_ccid := NULL;
44537 l_adr_transaction_coa_id := NULL;
44538 l_adr_accounting_coa_id := NULL;
44539 l_adr_flexfield_segment_code := NULL;
44540 l_adr_flex_value_set_id := NULL;
44541 l_adr_value_type_code := NULL;
44542 l_adr_value_combination_id := NULL;
44543 l_adr_value_segment_code := NULL;
44544
44545 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
44546 l_bflow_class_code := ''; -- 4219869 Business Flow
44547 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
44548 l_budgetary_control_flag := 'N';
44549
44550 l_bflow_applied_to_amt_idx := NULL; -- 5132302
44551 l_bflow_applied_to_amt := NULL; -- 5132302
44552 l_entered_amt_idx := NULL; -- 4262811
44553 l_accted_amt_idx := NULL; -- 4262811
44554 l_acc_rev_flag := NULL; -- 4262811
44555 l_accrual_line_num := NULL; -- 4262811
44556 l_tmp_amt := NULL; -- 4262811
44557 --
44558
44559 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44560 l_balance_type_code <> 'B' THEN
44561 IF NVL(p_source_24,9E125) = 9
44562 THEN
44563
44564 --
44565 XLA_AE_LINES_PKG.SetNewLine;
44566
44567 p_balance_type_code := l_balance_type_code;
44568 -- set the flag so later we will know whether the gain loss line needs to be created
44569
44570 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44571 p_actual_flag :='A';
44572 END IF;
44573
44574 --
44575 -- bulk performance
44576 --
44577 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44578 p_header_num => 0); -- 4262811
44579 --
44580 -- set accounting line options
44581 --
44582 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44583 p_natural_side_code => 'D'
44584 , p_gain_or_loss_flag => 'N'
44585 , p_gl_transfer_mode_code => 'S'
44586 , p_acct_entry_type_code => 'A'
44587 , p_switch_side_flag => 'Y'
44588 , p_merge_duplicate_code => 'N'
44589 );
44590 --
44591 l_acc_rev_natural_side_code := 'C'; -- 4262811
44592 --
44593 --
44594 -- set accounting line type info
44595 --
44596 xla_ae_lines_pkg.SetAcctLineType
44597 (p_component_type => l_component_type
44598 ,p_event_type_code => l_event_type_code
44599 ,p_line_definition_owner_code => l_line_definition_owner_code
44600 ,p_line_definition_code => l_line_definition_code
44601 ,p_accounting_line_code => l_component_code
44602 ,p_accounting_line_type_code => l_component_type_code
44603 ,p_accounting_line_appl_id => l_component_appl_id
44604 ,p_amb_context_code => l_amb_context_code
44605 ,p_entity_code => l_entity_code
44606 ,p_event_class_code => l_event_class_code);
44607 --
44608 -- set accounting class
44609 --
44610 xla_ae_lines_pkg.SetAcctClass(
44611 p_accounting_class_code => 'INTERORG_PAYABLES'
44612 , p_ae_header_id => l_ae_header_id
44613 );
44614
44615 --
44616 -- set rounding class
44617 --
44618 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44619 'INTERORG_PAYABLES';
44620
44621 --
44622 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44623 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44624 --
44625 -- bulk performance
44626 --
44627 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44628
44629 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44630 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44631
44632 -- 4955764
44633 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44634 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44635
44636 -- 4458381 Public Sector Enh
44637
44638 --
44639 -- set accounting attributes for the line type
44640 --
44641 l_entered_amt_idx := 3;
44642 l_accted_amt_idx := 8;
44643 l_bflow_applied_to_amt_idx := NULL; -- 5132302
44644 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44645 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
44646 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44647 l_rec_acct_attrs.array_char_value(2) := p_source_12;
44648 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44649 l_rec_acct_attrs.array_num_value(3) := p_source_18;
44650 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44651 l_rec_acct_attrs.array_char_value(4) := p_source_15;
44652 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44653 l_rec_acct_attrs.array_date_value(5) := p_source_19;
44654 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44655 l_rec_acct_attrs.array_num_value(6) := p_source_20;
44656 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44657 l_rec_acct_attrs.array_char_value(7) := p_source_21;
44658 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44659 l_rec_acct_attrs.array_num_value(8) := p_source_22;
44660
44661 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44662 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44663
44664 ---------------------------------------------------------------------------------------------------------------
44665 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44666 ---------------------------------------------------------------------------------------------------------------
44667 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44668
44669 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44670 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44671
44672 IF xla_accounting_cache_pkg.GetValueChar
44673 (p_source_code => 'LEDGER_CATEGORY_CODE'
44674 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44675 AND l_bflow_method_code = 'PRIOR_ENTRY'
44676 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44677 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44678 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44679 )
44680 THEN
44681 xla_ae_lines_pkg.BflowUpgEntry
44682 (p_business_method_code => l_bflow_method_code
44683 ,p_business_class_code => l_bflow_class_code
44684 ,p_balance_type => l_balance_type_code);
44685 ELSE
44686 NULL;
44687 -- No business flow processing for business flow method of NONE.
44688 END IF;
44689
44690 --
44691 -- call analytical criteria
44692 --
44693
44694 --
44695 -- call description
44696 --
44697 -- No description or it is inherited.
44698 --
44699 -- call ADRs
44700 -- Bug 4922099
44701 --
44702 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44703 (NVL(l_actual_upg_option, 'N') = 'O') OR
44704 (NVL(l_enc_upg_option, 'N') = 'O')
44705 )
44706 THEN
44707 NULL;
44708 --
44709 --
44710
44711 l_ccid := AcctDerRule_4(
44712 p_application_id => p_application_id
44713 , p_ae_header_id => l_ae_header_id
44714 , p_source_4 => p_source_4
44715 , x_transaction_coa_id => l_adr_transaction_coa_id
44716 , x_accounting_coa_id => l_adr_accounting_coa_id
44717 , x_value_type_code => l_adr_value_type_code
44718 , p_side => 'NA'
44719 );
44720
44721 xla_ae_lines_pkg.set_ccid(
44722 p_code_combination_id => l_ccid
44723 , p_value_type_code => l_adr_value_type_code
44724 , p_transaction_coa_id => l_adr_transaction_coa_id
44725 , p_accounting_coa_id => l_adr_accounting_coa_id
44726 , p_adr_code => 'CST_DEFAULT'
44727 , p_adr_type_code => 'S'
44728 , p_component_type => l_component_type
44729 , p_component_code => l_component_code
44730 , p_component_type_code => l_component_type_code
44731 , p_component_appl_id => l_component_appl_id
44732 , p_amb_context_code => l_amb_context_code
44733 , p_side => 'NA'
44734 );
44735
44736
44737 --
44738 --
44739 END IF;
44740 --
44741 -- Bug 4922099
44742 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44743 (NVL(l_enc_upg_option, 'N') = 'O')
44744 ) AND
44745 (l_bflow_method_code = 'PRIOR_ENTRY')
44746 )
44747 THEN
44748 IF
44749 --
44750 1 = 2
44751 --
44752 THEN
44753 xla_accounting_err_pkg.build_message
44754 (p_appli_s_name => 'XLA'
44755 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44756 ,p_token_1 => 'LINE_NUMBER'
44757 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
44758 ,p_token_2 => 'LINE_TYPE_NAME'
44759 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
44760 l_component_type
44761 ,l_component_code
44762 ,l_component_type_code
44763 ,l_component_appl_id
44764 ,l_amb_context_code
44765 ,l_entity_code
44766 ,l_event_class_code
44767 )
44768 ,p_token_3 => 'OWNER'
44769 ,p_value_3 => xla_lookups_pkg.get_meaning(
44770 p_lookup_type => 'XLA_OWNER_TYPE'
44771 ,p_lookup_code => l_component_type_code
44772 )
44773 ,p_token_4 => 'PRODUCT_NAME'
44774 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44775 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44776 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44777 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44778 ,p_ae_header_id => NULL
44779 );
44780
44781 IF (C_LEVEL_ERROR>= g_log_level) THEN
44782 trace
44783 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44784 ,p_level => C_LEVEL_ERROR
44785 ,p_module => l_log_module);
44786 END IF;
44787 END IF;
44788 END IF;
44789 --
44790 --
44791 ------------------------------------------------------------------------------------------------
44792 -- 4219869 Business Flow
44793 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44794 -- Prior Entry. Currently, the following code is always generated.
44795 ------------------------------------------------------------------------------------------------
44796 XLA_AE_LINES_PKG.ValidateCurrentLine;
44797
44798 ------------------------------------------------------------------------------------
44799 -- 4219869 Business Flow
44800 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44801 ------------------------------------------------------------------------------------
44802 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44803
44804 ----------------------------------------------------------------------------------
44805 -- 4219869 Business Flow
44806 -- Update journal entry status -- Need to generate this within IF <condition>
44807 ----------------------------------------------------------------------------------
44808 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44809 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44810 ,p_balance_type_code => l_balance_type_code
44811 );
44812
44813 -------------------------------------------------------------------------------------------
44814 -- 4262811 - Generate the Accrual Reversal lines
44815 -------------------------------------------------------------------------------------------
44816 BEGIN
44817 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44818 (g_array_event(p_event_id).array_value_num('header_index'));
44819 IF l_acc_rev_flag IS NULL THEN
44820 l_acc_rev_flag := 'N';
44821 END IF;
44822 EXCEPTION
44823 WHEN OTHERS THEN
44824 l_acc_rev_flag := 'N';
44825 END;
44826 --
44827 IF (l_acc_rev_flag = 'Y') THEN
44828
44829 -- 4645092 ------------------------------------------------------------------------------
44830 -- To allow MPA report to determine if it should generate report process
44831 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44832 ------------------------------------------------------------------------------------------
44833
44834 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44835 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44836 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
44837 -- call ADRs
44838 -- Bug 4922099
44839 --
44840 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44841 (NVL(l_actual_upg_option, 'N') = 'O') OR
44842 (NVL(l_enc_upg_option, 'N') = 'O')
44843 )
44844 THEN
44845 NULL;
44846 --
44847 --
44848
44849 l_ccid := AcctDerRule_4(
44850 p_application_id => p_application_id
44851 , p_ae_header_id => l_ae_header_id
44852 , p_source_4 => p_source_4
44853 , x_transaction_coa_id => l_adr_transaction_coa_id
44854 , x_accounting_coa_id => l_adr_accounting_coa_id
44855 , x_value_type_code => l_adr_value_type_code
44856 , p_side => 'NA'
44857 );
44858
44859 xla_ae_lines_pkg.set_ccid(
44860 p_code_combination_id => l_ccid
44861 , p_value_type_code => l_adr_value_type_code
44862 , p_transaction_coa_id => l_adr_transaction_coa_id
44863 , p_accounting_coa_id => l_adr_accounting_coa_id
44864 , p_adr_code => 'CST_DEFAULT'
44865 , p_adr_type_code => 'S'
44866 , p_component_type => l_component_type
44867 , p_component_code => l_component_code
44868 , p_component_type_code => l_component_type_code
44869 , p_component_appl_id => l_component_appl_id
44870 , p_amb_context_code => l_amb_context_code
44871 , p_side => 'NA'
44872 );
44873
44874
44875 --
44876 --
44877 END IF;
44878
44879 --
44880 -- Update the line information that should be overwritten
44881 --
44882 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44883 p_header_num => 1);
44884 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
44885
44886 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44887
44888 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
44889 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44890 END IF;
44891
44892 --
44893 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44894 --
44895 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44896 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
44897 ELSE
44898 ---------------------------------------------------------------------------------------------------
44899 -- 4262811a Switch Sign
44900 ---------------------------------------------------------------------------------------------------
44901 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
44902 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44903 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44904 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44905 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44906 -- 5132302
44907 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44908 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44909
44910 END IF;
44911
44912 -- 4955764
44913 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44914 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44915
44916
44917 XLA_AE_LINES_PKG.ValidateCurrentLine;
44918 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44919
44920 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44921 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44922 ,p_balance_type_code => l_balance_type_code);
44923
44924 END IF;
44925
44926 -----------------------------------------------------------------------------------------
44927 -- 4262811 Multiperiod Accounting
44928 -----------------------------------------------------------------------------------------
44929 -- No MPA option is assigned.
44930
44931
44932 END IF;
44933 END IF;
44934 --
44935
44936 --
44937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44938 trace
44939 (p_msg => 'END of AcctLineType_83'
44940 ,p_level => C_LEVEL_PROCEDURE
44941 ,p_module => l_log_module);
44942 END IF;
44943 --
44944 EXCEPTION
44945 WHEN xla_exceptions_pkg.application_exception THEN
44946 RAISE;
44947 WHEN OTHERS THEN
44948 xla_exceptions_pkg.raise_message
44949 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_83');
44950 END AcctLineType_83;
44951 --
44952
44953 ---------------------------------------
44954 --
44955 -- PRIVATE FUNCTION
44956 -- AcctLineType_84
44957 --
44958 ---------------------------------------
44959 PROCEDURE AcctLineType_84 (
44960 p_application_id IN NUMBER
44961 ,p_event_id IN NUMBER
44962 ,p_calculate_acctd_flag IN VARCHAR2
44963 ,p_calculate_g_l_flag IN VARCHAR2
44964 ,p_actual_flag IN OUT VARCHAR2
44965 ,p_balance_type_code OUT VARCHAR2
44966 ,p_gain_or_loss_ref OUT VARCHAR2
44967
44968 --Cost Management Default Account
44969 , p_source_4 IN NUMBER
44970 --DISTRIBUTION_IDENTIFIER
44971 , p_source_11 IN NUMBER
44972 --Distribution Type
44973 , p_source_12 IN VARCHAR2
44974 , p_source_12_meaning IN VARCHAR2
44975 --Entered Currency Code
44976 , p_source_15 IN VARCHAR2
44977 --Entered Amount
44978 , p_source_18 IN NUMBER
44979 --Currency Conversion Date
44980 , p_source_19 IN DATE
44981 --Currency Conversion Rate
44982 , p_source_20 IN NUMBER
44983 --Currency Conversion Type
44984 , p_source_21 IN VARCHAR2
44985 --Accounted Amount
44986 , p_source_22 IN NUMBER
44987 --Accounting Line Type
44988 , p_source_24 IN NUMBER
44989 )
44990 IS
44991
44992 l_component_type VARCHAR2(80);
44993 l_component_code VARCHAR2(30);
44994 l_component_type_code VARCHAR2(1);
44995 l_component_appl_id INTEGER;
44996 l_amb_context_code VARCHAR2(30);
44997 l_entity_code VARCHAR2(30);
44998 l_event_class_code VARCHAR2(30);
44999 l_ae_header_id NUMBER;
45000 l_event_type_code VARCHAR2(30);
45001 l_line_definition_code VARCHAR2(30);
45002 l_line_definition_owner_code VARCHAR2(1);
45003 --
45004 -- adr variables
45005 l_segment VARCHAR2(30);
45006 l_ccid NUMBER;
45007 l_adr_transaction_coa_id NUMBER;
45008 l_adr_accounting_coa_id NUMBER;
45009 l_adr_flexfield_segment_code VARCHAR2(30);
45010 l_adr_flex_value_set_id NUMBER;
45011 l_adr_value_type_code VARCHAR2(30);
45012 l_adr_value_combination_id NUMBER;
45013 l_adr_value_segment_code VARCHAR2(30);
45014
45015 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
45016 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
45017 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
45018 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
45019
45020 -- 4262811 Variables ------------------------------------------------------------------------------------------
45021 l_entered_amt_idx NUMBER;
45022 l_accted_amt_idx NUMBER;
45023 l_acc_rev_flag VARCHAR2(1);
45024 l_accrual_line_num NUMBER;
45025 l_tmp_amt NUMBER;
45026 l_acc_rev_natural_side_code VARCHAR2(1);
45027
45028 l_num_entries NUMBER;
45029 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
45030 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
45031 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
45032 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
45033 l_recog_line_1 NUMBER;
45034 l_recog_line_2 NUMBER;
45035
45036 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
45037 l_bflow_applied_to_amt NUMBER; -- 5132302
45038 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
45039
45040 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45041
45042 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
45043 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
45044
45045 ---------------------------------------------------------------------------------------------------------------
45046
45047
45048 --
45049 -- bulk performance
45050 --
45051 l_balance_type_code VARCHAR2(1);
45052 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
45053 l_log_module VARCHAR2(240);
45054
45055 --
45056 -- Upgrade strategy
45057 --
45058 l_actual_upg_option VARCHAR2(1);
45059 l_enc_upg_option VARCHAR2(1);
45060
45061 --
45062 BEGIN
45063 --
45064 IF g_log_enabled THEN
45065 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
45066 END IF;
45067 --
45068 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45069
45070 trace
45071 (p_msg => 'BEGIN of AcctLineType_84'
45072 ,p_level => C_LEVEL_PROCEDURE
45073 ,p_module => l_log_module);
45074
45075 END IF;
45076 --
45077 l_component_type := 'AMB_JLT';
45078 l_component_code := 'INTERORG_PAYABLES';
45079 l_component_type_code := 'S';
45080 l_component_appl_id := 707;
45081 l_amb_context_code := 'DEFAULT';
45082 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
45083 l_event_class_code := 'USER_DEFINE';
45084 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
45085 l_line_definition_owner_code := 'S';
45086 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
45087 --
45088 l_balance_type_code := 'A';
45089 l_segment := NULL;
45090 l_ccid := NULL;
45091 l_adr_transaction_coa_id := NULL;
45092 l_adr_accounting_coa_id := NULL;
45093 l_adr_flexfield_segment_code := NULL;
45094 l_adr_flex_value_set_id := NULL;
45095 l_adr_value_type_code := NULL;
45096 l_adr_value_combination_id := NULL;
45097 l_adr_value_segment_code := NULL;
45098
45099 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
45100 l_bflow_class_code := ''; -- 4219869 Business Flow
45101 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
45102 l_budgetary_control_flag := 'N';
45103
45104 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45105 l_bflow_applied_to_amt := NULL; -- 5132302
45106 l_entered_amt_idx := NULL; -- 4262811
45107 l_accted_amt_idx := NULL; -- 4262811
45108 l_acc_rev_flag := NULL; -- 4262811
45109 l_accrual_line_num := NULL; -- 4262811
45110 l_tmp_amt := NULL; -- 4262811
45111 --
45112
45113 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45114 l_balance_type_code <> 'B' THEN
45115 IF NVL(p_source_24,9E125) = 9
45116 THEN
45117
45118 --
45119 XLA_AE_LINES_PKG.SetNewLine;
45120
45121 p_balance_type_code := l_balance_type_code;
45122 -- set the flag so later we will know whether the gain loss line needs to be created
45123
45124 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45125 p_actual_flag :='A';
45126 END IF;
45127
45128 --
45129 -- bulk performance
45130 --
45131 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45132 p_header_num => 0); -- 4262811
45133 --
45134 -- set accounting line options
45135 --
45136 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45137 p_natural_side_code => 'D'
45138 , p_gain_or_loss_flag => 'N'
45139 , p_gl_transfer_mode_code => 'S'
45140 , p_acct_entry_type_code => 'A'
45141 , p_switch_side_flag => 'Y'
45142 , p_merge_duplicate_code => 'N'
45143 );
45144 --
45145 l_acc_rev_natural_side_code := 'C'; -- 4262811
45146 --
45147 --
45148 -- set accounting line type info
45149 --
45150 xla_ae_lines_pkg.SetAcctLineType
45151 (p_component_type => l_component_type
45152 ,p_event_type_code => l_event_type_code
45153 ,p_line_definition_owner_code => l_line_definition_owner_code
45154 ,p_line_definition_code => l_line_definition_code
45155 ,p_accounting_line_code => l_component_code
45156 ,p_accounting_line_type_code => l_component_type_code
45157 ,p_accounting_line_appl_id => l_component_appl_id
45158 ,p_amb_context_code => l_amb_context_code
45159 ,p_entity_code => l_entity_code
45160 ,p_event_class_code => l_event_class_code);
45161 --
45162 -- set accounting class
45163 --
45164 xla_ae_lines_pkg.SetAcctClass(
45165 p_accounting_class_code => 'INTERORG_PAYABLES'
45166 , p_ae_header_id => l_ae_header_id
45167 );
45168
45169 --
45170 -- set rounding class
45171 --
45172 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45173 'INTERORG_PAYABLES';
45174
45175 --
45176 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45177 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45178 --
45179 -- bulk performance
45180 --
45181 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45182
45183 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45184 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45185
45186 -- 4955764
45187 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45188 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45189
45190 -- 4458381 Public Sector Enh
45191
45192 --
45193 -- set accounting attributes for the line type
45194 --
45195 l_entered_amt_idx := 3;
45196 l_accted_amt_idx := 8;
45197 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45198 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45199 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
45200 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45201 l_rec_acct_attrs.array_char_value(2) := p_source_12;
45202 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45203 l_rec_acct_attrs.array_num_value(3) := p_source_18;
45204 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45205 l_rec_acct_attrs.array_char_value(4) := p_source_15;
45206 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45207 l_rec_acct_attrs.array_date_value(5) := p_source_19;
45208 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45209 l_rec_acct_attrs.array_num_value(6) := p_source_20;
45210 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45211 l_rec_acct_attrs.array_char_value(7) := p_source_21;
45212 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45213 l_rec_acct_attrs.array_num_value(8) := p_source_22;
45214
45215 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45216 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45217
45218 ---------------------------------------------------------------------------------------------------------------
45219 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45220 ---------------------------------------------------------------------------------------------------------------
45221 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45222
45223 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45224 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45225
45226 IF xla_accounting_cache_pkg.GetValueChar
45227 (p_source_code => 'LEDGER_CATEGORY_CODE'
45228 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45229 AND l_bflow_method_code = 'PRIOR_ENTRY'
45230 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45231 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45232 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45233 )
45234 THEN
45235 xla_ae_lines_pkg.BflowUpgEntry
45236 (p_business_method_code => l_bflow_method_code
45237 ,p_business_class_code => l_bflow_class_code
45238 ,p_balance_type => l_balance_type_code);
45239 ELSE
45240 NULL;
45241 -- No business flow processing for business flow method of NONE.
45242 END IF;
45243
45244 --
45245 -- call analytical criteria
45246 --
45247
45248 --
45249 -- call description
45250 --
45251 -- No description or it is inherited.
45252 --
45253 -- call ADRs
45254 -- Bug 4922099
45255 --
45256 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45257 (NVL(l_actual_upg_option, 'N') = 'O') OR
45258 (NVL(l_enc_upg_option, 'N') = 'O')
45259 )
45260 THEN
45261 NULL;
45262 --
45263 --
45264
45265 l_ccid := AcctDerRule_4(
45266 p_application_id => p_application_id
45267 , p_ae_header_id => l_ae_header_id
45268 , p_source_4 => p_source_4
45269 , x_transaction_coa_id => l_adr_transaction_coa_id
45270 , x_accounting_coa_id => l_adr_accounting_coa_id
45271 , x_value_type_code => l_adr_value_type_code
45272 , p_side => 'NA'
45273 );
45274
45275 xla_ae_lines_pkg.set_ccid(
45276 p_code_combination_id => l_ccid
45277 , p_value_type_code => l_adr_value_type_code
45278 , p_transaction_coa_id => l_adr_transaction_coa_id
45279 , p_accounting_coa_id => l_adr_accounting_coa_id
45280 , p_adr_code => 'CST_DEFAULT'
45281 , p_adr_type_code => 'S'
45282 , p_component_type => l_component_type
45283 , p_component_code => l_component_code
45284 , p_component_type_code => l_component_type_code
45285 , p_component_appl_id => l_component_appl_id
45286 , p_amb_context_code => l_amb_context_code
45287 , p_side => 'NA'
45288 );
45289
45290
45291 --
45292 --
45293 END IF;
45294 --
45295 -- Bug 4922099
45296 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45297 (NVL(l_enc_upg_option, 'N') = 'O')
45298 ) AND
45299 (l_bflow_method_code = 'PRIOR_ENTRY')
45300 )
45301 THEN
45302 IF
45303 --
45304 1 = 2
45305 --
45306 THEN
45307 xla_accounting_err_pkg.build_message
45308 (p_appli_s_name => 'XLA'
45309 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45310 ,p_token_1 => 'LINE_NUMBER'
45311 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
45312 ,p_token_2 => 'LINE_TYPE_NAME'
45313 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
45314 l_component_type
45315 ,l_component_code
45316 ,l_component_type_code
45317 ,l_component_appl_id
45318 ,l_amb_context_code
45319 ,l_entity_code
45320 ,l_event_class_code
45321 )
45322 ,p_token_3 => 'OWNER'
45323 ,p_value_3 => xla_lookups_pkg.get_meaning(
45324 p_lookup_type => 'XLA_OWNER_TYPE'
45325 ,p_lookup_code => l_component_type_code
45326 )
45327 ,p_token_4 => 'PRODUCT_NAME'
45328 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45329 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45330 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45331 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45332 ,p_ae_header_id => NULL
45333 );
45334
45335 IF (C_LEVEL_ERROR>= g_log_level) THEN
45336 trace
45337 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45338 ,p_level => C_LEVEL_ERROR
45339 ,p_module => l_log_module);
45340 END IF;
45341 END IF;
45342 END IF;
45343 --
45344 --
45345 ------------------------------------------------------------------------------------------------
45346 -- 4219869 Business Flow
45347 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45348 -- Prior Entry. Currently, the following code is always generated.
45349 ------------------------------------------------------------------------------------------------
45350 XLA_AE_LINES_PKG.ValidateCurrentLine;
45351
45352 ------------------------------------------------------------------------------------
45353 -- 4219869 Business Flow
45354 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45355 ------------------------------------------------------------------------------------
45356 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45357
45358 ----------------------------------------------------------------------------------
45359 -- 4219869 Business Flow
45360 -- Update journal entry status -- Need to generate this within IF <condition>
45361 ----------------------------------------------------------------------------------
45362 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45363 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45364 ,p_balance_type_code => l_balance_type_code
45365 );
45366
45367 -------------------------------------------------------------------------------------------
45368 -- 4262811 - Generate the Accrual Reversal lines
45369 -------------------------------------------------------------------------------------------
45370 BEGIN
45371 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45372 (g_array_event(p_event_id).array_value_num('header_index'));
45373 IF l_acc_rev_flag IS NULL THEN
45374 l_acc_rev_flag := 'N';
45375 END IF;
45376 EXCEPTION
45377 WHEN OTHERS THEN
45378 l_acc_rev_flag := 'N';
45379 END;
45380 --
45381 IF (l_acc_rev_flag = 'Y') THEN
45382
45383 -- 4645092 ------------------------------------------------------------------------------
45384 -- To allow MPA report to determine if it should generate report process
45385 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45386 ------------------------------------------------------------------------------------------
45387
45388 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45389 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45390 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
45391 -- call ADRs
45392 -- Bug 4922099
45393 --
45394 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45395 (NVL(l_actual_upg_option, 'N') = 'O') OR
45396 (NVL(l_enc_upg_option, 'N') = 'O')
45397 )
45398 THEN
45399 NULL;
45400 --
45401 --
45402
45403 l_ccid := AcctDerRule_4(
45404 p_application_id => p_application_id
45405 , p_ae_header_id => l_ae_header_id
45406 , p_source_4 => p_source_4
45407 , x_transaction_coa_id => l_adr_transaction_coa_id
45408 , x_accounting_coa_id => l_adr_accounting_coa_id
45409 , x_value_type_code => l_adr_value_type_code
45410 , p_side => 'NA'
45411 );
45412
45413 xla_ae_lines_pkg.set_ccid(
45414 p_code_combination_id => l_ccid
45415 , p_value_type_code => l_adr_value_type_code
45416 , p_transaction_coa_id => l_adr_transaction_coa_id
45417 , p_accounting_coa_id => l_adr_accounting_coa_id
45418 , p_adr_code => 'CST_DEFAULT'
45419 , p_adr_type_code => 'S'
45420 , p_component_type => l_component_type
45421 , p_component_code => l_component_code
45422 , p_component_type_code => l_component_type_code
45423 , p_component_appl_id => l_component_appl_id
45424 , p_amb_context_code => l_amb_context_code
45425 , p_side => 'NA'
45426 );
45427
45428
45429 --
45430 --
45431 END IF;
45432
45433 --
45434 -- Update the line information that should be overwritten
45435 --
45436 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45437 p_header_num => 1);
45438 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
45439
45440 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45441
45442 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
45443 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45444 END IF;
45445
45446 --
45447 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45448 --
45449 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45450 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
45451 ELSE
45452 ---------------------------------------------------------------------------------------------------
45453 -- 4262811a Switch Sign
45454 ---------------------------------------------------------------------------------------------------
45455 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
45456 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45457 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45458 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45459 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45460 -- 5132302
45461 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45462 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45463
45464 END IF;
45465
45466 -- 4955764
45467 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45468 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45469
45470
45471 XLA_AE_LINES_PKG.ValidateCurrentLine;
45472 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45473
45474 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45475 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45476 ,p_balance_type_code => l_balance_type_code);
45477
45478 END IF;
45479
45480 -----------------------------------------------------------------------------------------
45481 -- 4262811 Multiperiod Accounting
45482 -----------------------------------------------------------------------------------------
45483 -- No MPA option is assigned.
45484
45485
45486 END IF;
45487 END IF;
45488 --
45489
45490 --
45491 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45492 trace
45493 (p_msg => 'END of AcctLineType_84'
45494 ,p_level => C_LEVEL_PROCEDURE
45495 ,p_module => l_log_module);
45496 END IF;
45497 --
45498 EXCEPTION
45499 WHEN xla_exceptions_pkg.application_exception THEN
45500 RAISE;
45501 WHEN OTHERS THEN
45502 xla_exceptions_pkg.raise_message
45503 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_84');
45504 END AcctLineType_84;
45505 --
45506
45507 ---------------------------------------
45508 --
45509 -- PRIVATE FUNCTION
45510 -- AcctLineType_85
45511 --
45512 ---------------------------------------
45513 PROCEDURE AcctLineType_85 (
45514 p_application_id IN NUMBER
45515 ,p_event_id IN NUMBER
45516 ,p_calculate_acctd_flag IN VARCHAR2
45517 ,p_calculate_g_l_flag IN VARCHAR2
45518 ,p_actual_flag IN OUT VARCHAR2
45519 ,p_balance_type_code OUT VARCHAR2
45520 ,p_gain_or_loss_ref OUT VARCHAR2
45521
45522 --Cost Management Default Account
45523 , p_source_4 IN NUMBER
45524 --DISTRIBUTION_IDENTIFIER
45525 , p_source_11 IN NUMBER
45526 --Distribution Type
45527 , p_source_12 IN VARCHAR2
45528 , p_source_12_meaning IN VARCHAR2
45529 --Entered Currency Code
45530 , p_source_15 IN VARCHAR2
45531 --Entered Amount
45532 , p_source_18 IN NUMBER
45533 --Currency Conversion Date
45534 , p_source_19 IN DATE
45535 --Currency Conversion Rate
45536 , p_source_20 IN NUMBER
45537 --Currency Conversion Type
45538 , p_source_21 IN VARCHAR2
45539 --Accounted Amount
45540 , p_source_22 IN NUMBER
45541 --Accounting Line Type
45542 , p_source_24 IN NUMBER
45543 )
45544 IS
45545
45546 l_component_type VARCHAR2(80);
45547 l_component_code VARCHAR2(30);
45548 l_component_type_code VARCHAR2(1);
45549 l_component_appl_id INTEGER;
45550 l_amb_context_code VARCHAR2(30);
45551 l_entity_code VARCHAR2(30);
45552 l_event_class_code VARCHAR2(30);
45553 l_ae_header_id NUMBER;
45554 l_event_type_code VARCHAR2(30);
45555 l_line_definition_code VARCHAR2(30);
45556 l_line_definition_owner_code VARCHAR2(1);
45557 --
45558 -- adr variables
45559 l_segment VARCHAR2(30);
45560 l_ccid NUMBER;
45561 l_adr_transaction_coa_id NUMBER;
45562 l_adr_accounting_coa_id NUMBER;
45563 l_adr_flexfield_segment_code VARCHAR2(30);
45564 l_adr_flex_value_set_id NUMBER;
45565 l_adr_value_type_code VARCHAR2(30);
45566 l_adr_value_combination_id NUMBER;
45567 l_adr_value_segment_code VARCHAR2(30);
45568
45569 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
45570 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
45571 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
45572 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
45573
45574 -- 4262811 Variables ------------------------------------------------------------------------------------------
45575 l_entered_amt_idx NUMBER;
45576 l_accted_amt_idx NUMBER;
45577 l_acc_rev_flag VARCHAR2(1);
45578 l_accrual_line_num NUMBER;
45579 l_tmp_amt NUMBER;
45580 l_acc_rev_natural_side_code VARCHAR2(1);
45581
45582 l_num_entries NUMBER;
45583 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
45584 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
45585 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
45586 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
45587 l_recog_line_1 NUMBER;
45588 l_recog_line_2 NUMBER;
45589
45590 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
45591 l_bflow_applied_to_amt NUMBER; -- 5132302
45592 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
45593
45594 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45595
45596 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
45597 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
45598
45599 ---------------------------------------------------------------------------------------------------------------
45600
45601
45602 --
45603 -- bulk performance
45604 --
45605 l_balance_type_code VARCHAR2(1);
45606 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
45607 l_log_module VARCHAR2(240);
45608
45609 --
45610 -- Upgrade strategy
45611 --
45612 l_actual_upg_option VARCHAR2(1);
45613 l_enc_upg_option VARCHAR2(1);
45614
45615 --
45616 BEGIN
45617 --
45618 IF g_log_enabled THEN
45619 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
45620 END IF;
45621 --
45622 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45623
45624 trace
45625 (p_msg => 'BEGIN of AcctLineType_85'
45626 ,p_level => C_LEVEL_PROCEDURE
45627 ,p_module => l_log_module);
45628
45629 END IF;
45630 --
45631 l_component_type := 'AMB_JLT';
45632 l_component_code := 'INTERORG_PAYABLES';
45633 l_component_type_code := 'S';
45634 l_component_appl_id := 707;
45635 l_amb_context_code := 'DEFAULT';
45636 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
45637 l_event_class_code := 'USER_DEFINE';
45638 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
45639 l_line_definition_owner_code := 'S';
45640 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
45641 --
45642 l_balance_type_code := 'A';
45643 l_segment := NULL;
45644 l_ccid := NULL;
45645 l_adr_transaction_coa_id := NULL;
45646 l_adr_accounting_coa_id := NULL;
45647 l_adr_flexfield_segment_code := NULL;
45648 l_adr_flex_value_set_id := NULL;
45649 l_adr_value_type_code := NULL;
45650 l_adr_value_combination_id := NULL;
45651 l_adr_value_segment_code := NULL;
45652
45653 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
45654 l_bflow_class_code := ''; -- 4219869 Business Flow
45655 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
45656 l_budgetary_control_flag := 'N';
45657
45658 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45659 l_bflow_applied_to_amt := NULL; -- 5132302
45660 l_entered_amt_idx := NULL; -- 4262811
45661 l_accted_amt_idx := NULL; -- 4262811
45662 l_acc_rev_flag := NULL; -- 4262811
45663 l_accrual_line_num := NULL; -- 4262811
45664 l_tmp_amt := NULL; -- 4262811
45665 --
45666
45667 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45668 l_balance_type_code <> 'B' THEN
45669 IF NVL(p_source_24,9E125) = 9
45670 THEN
45671
45672 --
45673 XLA_AE_LINES_PKG.SetNewLine;
45674
45675 p_balance_type_code := l_balance_type_code;
45676 -- set the flag so later we will know whether the gain loss line needs to be created
45677
45678 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45679 p_actual_flag :='A';
45680 END IF;
45681
45682 --
45683 -- bulk performance
45684 --
45685 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45686 p_header_num => 0); -- 4262811
45687 --
45688 -- set accounting line options
45689 --
45690 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45691 p_natural_side_code => 'D'
45692 , p_gain_or_loss_flag => 'N'
45693 , p_gl_transfer_mode_code => 'S'
45694 , p_acct_entry_type_code => 'A'
45695 , p_switch_side_flag => 'Y'
45696 , p_merge_duplicate_code => 'N'
45697 );
45698 --
45699 l_acc_rev_natural_side_code := 'C'; -- 4262811
45700 --
45701 --
45702 -- set accounting line type info
45703 --
45704 xla_ae_lines_pkg.SetAcctLineType
45705 (p_component_type => l_component_type
45706 ,p_event_type_code => l_event_type_code
45707 ,p_line_definition_owner_code => l_line_definition_owner_code
45708 ,p_line_definition_code => l_line_definition_code
45709 ,p_accounting_line_code => l_component_code
45710 ,p_accounting_line_type_code => l_component_type_code
45711 ,p_accounting_line_appl_id => l_component_appl_id
45712 ,p_amb_context_code => l_amb_context_code
45713 ,p_entity_code => l_entity_code
45714 ,p_event_class_code => l_event_class_code);
45715 --
45716 -- set accounting class
45717 --
45718 xla_ae_lines_pkg.SetAcctClass(
45719 p_accounting_class_code => 'INTERORG_PAYABLES'
45720 , p_ae_header_id => l_ae_header_id
45721 );
45722
45723 --
45724 -- set rounding class
45725 --
45726 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45727 'INTERORG_PAYABLES';
45728
45729 --
45730 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45731 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45732 --
45733 -- bulk performance
45734 --
45735 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45736
45737 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45738 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45739
45740 -- 4955764
45741 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45742 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45743
45744 -- 4458381 Public Sector Enh
45745
45746 --
45747 -- set accounting attributes for the line type
45748 --
45749 l_entered_amt_idx := 3;
45750 l_accted_amt_idx := 8;
45751 l_bflow_applied_to_amt_idx := NULL; -- 5132302
45752 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45753 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
45754 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45755 l_rec_acct_attrs.array_char_value(2) := p_source_12;
45756 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45757 l_rec_acct_attrs.array_num_value(3) := p_source_18;
45758 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45759 l_rec_acct_attrs.array_char_value(4) := p_source_15;
45760 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45761 l_rec_acct_attrs.array_date_value(5) := p_source_19;
45762 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45763 l_rec_acct_attrs.array_num_value(6) := p_source_20;
45764 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45765 l_rec_acct_attrs.array_char_value(7) := p_source_21;
45766 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45767 l_rec_acct_attrs.array_num_value(8) := p_source_22;
45768
45769 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45770 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45771
45772 ---------------------------------------------------------------------------------------------------------------
45773 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45774 ---------------------------------------------------------------------------------------------------------------
45775 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45776
45777 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45778 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45779
45780 IF xla_accounting_cache_pkg.GetValueChar
45781 (p_source_code => 'LEDGER_CATEGORY_CODE'
45782 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45783 AND l_bflow_method_code = 'PRIOR_ENTRY'
45784 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45785 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45786 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45787 )
45788 THEN
45789 xla_ae_lines_pkg.BflowUpgEntry
45790 (p_business_method_code => l_bflow_method_code
45791 ,p_business_class_code => l_bflow_class_code
45792 ,p_balance_type => l_balance_type_code);
45793 ELSE
45794 NULL;
45795 -- No business flow processing for business flow method of NONE.
45796 END IF;
45797
45798 --
45799 -- call analytical criteria
45800 --
45801
45802 --
45803 -- call description
45804 --
45805 -- No description or it is inherited.
45806 --
45807 -- call ADRs
45808 -- Bug 4922099
45809 --
45810 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45811 (NVL(l_actual_upg_option, 'N') = 'O') OR
45812 (NVL(l_enc_upg_option, 'N') = 'O')
45813 )
45814 THEN
45815 NULL;
45816 --
45817 --
45818
45819 l_ccid := AcctDerRule_4(
45820 p_application_id => p_application_id
45821 , p_ae_header_id => l_ae_header_id
45822 , p_source_4 => p_source_4
45823 , x_transaction_coa_id => l_adr_transaction_coa_id
45824 , x_accounting_coa_id => l_adr_accounting_coa_id
45825 , x_value_type_code => l_adr_value_type_code
45826 , p_side => 'NA'
45827 );
45828
45829 xla_ae_lines_pkg.set_ccid(
45830 p_code_combination_id => l_ccid
45831 , p_value_type_code => l_adr_value_type_code
45832 , p_transaction_coa_id => l_adr_transaction_coa_id
45833 , p_accounting_coa_id => l_adr_accounting_coa_id
45834 , p_adr_code => 'CST_DEFAULT'
45835 , p_adr_type_code => 'S'
45836 , p_component_type => l_component_type
45837 , p_component_code => l_component_code
45838 , p_component_type_code => l_component_type_code
45839 , p_component_appl_id => l_component_appl_id
45840 , p_amb_context_code => l_amb_context_code
45841 , p_side => 'NA'
45842 );
45843
45844
45845 --
45846 --
45847 END IF;
45848 --
45849 -- Bug 4922099
45850 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45851 (NVL(l_enc_upg_option, 'N') = 'O')
45852 ) AND
45853 (l_bflow_method_code = 'PRIOR_ENTRY')
45854 )
45855 THEN
45856 IF
45857 --
45858 1 = 2
45859 --
45860 THEN
45861 xla_accounting_err_pkg.build_message
45862 (p_appli_s_name => 'XLA'
45863 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45864 ,p_token_1 => 'LINE_NUMBER'
45865 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
45866 ,p_token_2 => 'LINE_TYPE_NAME'
45867 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
45868 l_component_type
45869 ,l_component_code
45870 ,l_component_type_code
45871 ,l_component_appl_id
45872 ,l_amb_context_code
45873 ,l_entity_code
45874 ,l_event_class_code
45875 )
45876 ,p_token_3 => 'OWNER'
45877 ,p_value_3 => xla_lookups_pkg.get_meaning(
45878 p_lookup_type => 'XLA_OWNER_TYPE'
45879 ,p_lookup_code => l_component_type_code
45880 )
45881 ,p_token_4 => 'PRODUCT_NAME'
45882 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45883 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45884 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45885 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45886 ,p_ae_header_id => NULL
45887 );
45888
45889 IF (C_LEVEL_ERROR>= g_log_level) THEN
45890 trace
45891 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45892 ,p_level => C_LEVEL_ERROR
45893 ,p_module => l_log_module);
45894 END IF;
45895 END IF;
45896 END IF;
45897 --
45898 --
45899 ------------------------------------------------------------------------------------------------
45900 -- 4219869 Business Flow
45901 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45902 -- Prior Entry. Currently, the following code is always generated.
45903 ------------------------------------------------------------------------------------------------
45904 XLA_AE_LINES_PKG.ValidateCurrentLine;
45905
45906 ------------------------------------------------------------------------------------
45907 -- 4219869 Business Flow
45908 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45909 ------------------------------------------------------------------------------------
45910 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45911
45912 ----------------------------------------------------------------------------------
45913 -- 4219869 Business Flow
45914 -- Update journal entry status -- Need to generate this within IF <condition>
45915 ----------------------------------------------------------------------------------
45916 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45917 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45918 ,p_balance_type_code => l_balance_type_code
45919 );
45920
45921 -------------------------------------------------------------------------------------------
45922 -- 4262811 - Generate the Accrual Reversal lines
45923 -------------------------------------------------------------------------------------------
45924 BEGIN
45925 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45926 (g_array_event(p_event_id).array_value_num('header_index'));
45927 IF l_acc_rev_flag IS NULL THEN
45928 l_acc_rev_flag := 'N';
45929 END IF;
45930 EXCEPTION
45931 WHEN OTHERS THEN
45932 l_acc_rev_flag := 'N';
45933 END;
45934 --
45935 IF (l_acc_rev_flag = 'Y') THEN
45936
45937 -- 4645092 ------------------------------------------------------------------------------
45938 -- To allow MPA report to determine if it should generate report process
45939 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45940 ------------------------------------------------------------------------------------------
45941
45942 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45943 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45944 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
45945 -- call ADRs
45946 -- Bug 4922099
45947 --
45948 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45949 (NVL(l_actual_upg_option, 'N') = 'O') OR
45950 (NVL(l_enc_upg_option, 'N') = 'O')
45951 )
45952 THEN
45953 NULL;
45954 --
45955 --
45956
45957 l_ccid := AcctDerRule_4(
45958 p_application_id => p_application_id
45959 , p_ae_header_id => l_ae_header_id
45960 , p_source_4 => p_source_4
45961 , x_transaction_coa_id => l_adr_transaction_coa_id
45962 , x_accounting_coa_id => l_adr_accounting_coa_id
45963 , x_value_type_code => l_adr_value_type_code
45964 , p_side => 'NA'
45965 );
45966
45967 xla_ae_lines_pkg.set_ccid(
45968 p_code_combination_id => l_ccid
45969 , p_value_type_code => l_adr_value_type_code
45970 , p_transaction_coa_id => l_adr_transaction_coa_id
45971 , p_accounting_coa_id => l_adr_accounting_coa_id
45972 , p_adr_code => 'CST_DEFAULT'
45973 , p_adr_type_code => 'S'
45974 , p_component_type => l_component_type
45975 , p_component_code => l_component_code
45976 , p_component_type_code => l_component_type_code
45977 , p_component_appl_id => l_component_appl_id
45978 , p_amb_context_code => l_amb_context_code
45979 , p_side => 'NA'
45980 );
45981
45982
45983 --
45984 --
45985 END IF;
45986
45987 --
45988 -- Update the line information that should be overwritten
45989 --
45990 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45991 p_header_num => 1);
45992 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
45993
45994 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45995
45996 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
45997 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45998 END IF;
45999
46000 --
46001 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46002 --
46003 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46004 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
46005 ELSE
46006 ---------------------------------------------------------------------------------------------------
46007 -- 4262811a Switch Sign
46008 ---------------------------------------------------------------------------------------------------
46009 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
46010 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46011 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46012 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46013 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46014 -- 5132302
46015 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46016 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46017
46018 END IF;
46019
46020 -- 4955764
46021 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46022 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46023
46024
46025 XLA_AE_LINES_PKG.ValidateCurrentLine;
46026 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46027
46028 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46029 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46030 ,p_balance_type_code => l_balance_type_code);
46031
46032 END IF;
46033
46034 -----------------------------------------------------------------------------------------
46035 -- 4262811 Multiperiod Accounting
46036 -----------------------------------------------------------------------------------------
46037 -- No MPA option is assigned.
46038
46039
46040 END IF;
46041 END IF;
46042 --
46043
46044 --
46045 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46046 trace
46047 (p_msg => 'END of AcctLineType_85'
46048 ,p_level => C_LEVEL_PROCEDURE
46049 ,p_module => l_log_module);
46050 END IF;
46051 --
46052 EXCEPTION
46053 WHEN xla_exceptions_pkg.application_exception THEN
46054 RAISE;
46055 WHEN OTHERS THEN
46056 xla_exceptions_pkg.raise_message
46057 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_85');
46058 END AcctLineType_85;
46059 --
46060
46061 ---------------------------------------
46062 --
46063 -- PRIVATE FUNCTION
46064 -- AcctLineType_86
46065 --
46066 ---------------------------------------
46067 PROCEDURE AcctLineType_86 (
46068 p_application_id IN NUMBER
46069 ,p_event_id IN NUMBER
46070 ,p_calculate_acctd_flag IN VARCHAR2
46071 ,p_calculate_g_l_flag IN VARCHAR2
46072 ,p_actual_flag IN OUT VARCHAR2
46073 ,p_balance_type_code OUT VARCHAR2
46074 ,p_gain_or_loss_ref OUT VARCHAR2
46075
46076 --Cost Management Default Account
46077 , p_source_4 IN NUMBER
46078 --Applied to Application ID
46079 , p_source_6 IN NUMBER
46080 --Applied to Distribution Link Type
46081 , p_source_7 IN VARCHAR2
46082 --Applied to Entity Code
46083 , p_source_8 IN VARCHAR2
46084 --DISTRIBUTION_IDENTIFIER
46085 , p_source_11 IN NUMBER
46086 --Distribution Type
46087 , p_source_12 IN VARCHAR2
46088 , p_source_12_meaning IN VARCHAR2
46089 --Encumbrance Reversal Amount Entered
46090 , p_source_14 IN NUMBER
46091 --Entered Currency Code
46092 , p_source_15 IN VARCHAR2
46093 --Transaction Encumbrance Reversal Amount
46094 , p_source_16 IN NUMBER
46095 --Entered Amount
46096 , p_source_18 IN NUMBER
46097 --Currency Conversion Date
46098 , p_source_19 IN DATE
46099 --Currency Conversion Rate
46100 , p_source_20 IN NUMBER
46101 --Currency Conversion Type
46102 , p_source_21 IN VARCHAR2
46103 --Accounted Amount
46104 , p_source_22 IN NUMBER
46105 --Accounting Line Type
46106 , p_source_24 IN NUMBER
46107 --Costing Encumbrance Upgrade Option
46108 , p_source_27 IN VARCHAR2
46109 --TXN_PO_DISTRIBUTION_ID
46110 , p_source_28 IN NUMBER
46111 --TXN_PO_HEADER_ID
46112 , p_source_29 IN NUMBER
46113 --Requisition Budget Account
46114 , p_source_30 IN NUMBER
46115 --Requisition Encumbrance Type Identifier
46116 , p_source_31 IN NUMBER
46117 )
46118 IS
46119
46120 l_component_type VARCHAR2(80);
46121 l_component_code VARCHAR2(30);
46122 l_component_type_code VARCHAR2(1);
46123 l_component_appl_id INTEGER;
46124 l_amb_context_code VARCHAR2(30);
46125 l_entity_code VARCHAR2(30);
46126 l_event_class_code VARCHAR2(30);
46127 l_ae_header_id NUMBER;
46128 l_event_type_code VARCHAR2(30);
46129 l_line_definition_code VARCHAR2(30);
46130 l_line_definition_owner_code VARCHAR2(1);
46131 --
46132 -- adr variables
46133 l_segment VARCHAR2(30);
46134 l_ccid NUMBER;
46135 l_adr_transaction_coa_id NUMBER;
46136 l_adr_accounting_coa_id NUMBER;
46137 l_adr_flexfield_segment_code VARCHAR2(30);
46138 l_adr_flex_value_set_id NUMBER;
46139 l_adr_value_type_code VARCHAR2(30);
46140 l_adr_value_combination_id NUMBER;
46141 l_adr_value_segment_code VARCHAR2(30);
46142
46143 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
46144 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
46145 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
46146 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
46147
46148 -- 4262811 Variables ------------------------------------------------------------------------------------------
46149 l_entered_amt_idx NUMBER;
46150 l_accted_amt_idx NUMBER;
46151 l_acc_rev_flag VARCHAR2(1);
46152 l_accrual_line_num NUMBER;
46153 l_tmp_amt NUMBER;
46154 l_acc_rev_natural_side_code VARCHAR2(1);
46155
46156 l_num_entries NUMBER;
46157 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
46158 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
46159 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
46160 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
46161 l_recog_line_1 NUMBER;
46162 l_recog_line_2 NUMBER;
46163
46164 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
46165 l_bflow_applied_to_amt NUMBER; -- 5132302
46166 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
46167
46168 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46169
46170 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
46171 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
46172
46173 ---------------------------------------------------------------------------------------------------------------
46174
46175
46176 --
46177 -- bulk performance
46178 --
46179 l_balance_type_code VARCHAR2(1);
46180 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
46181 l_log_module VARCHAR2(240);
46182
46183 --
46184 -- Upgrade strategy
46185 --
46186 l_actual_upg_option VARCHAR2(1);
46187 l_enc_upg_option VARCHAR2(1);
46188
46189 --
46190 BEGIN
46191 --
46192 IF g_log_enabled THEN
46193 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
46194 END IF;
46195 --
46196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46197
46198 trace
46199 (p_msg => 'BEGIN of AcctLineType_86'
46200 ,p_level => C_LEVEL_PROCEDURE
46201 ,p_module => l_log_module);
46202
46203 END IF;
46204 --
46205 l_component_type := 'AMB_JLT';
46206 l_component_code := 'INTERORG_PAYABLES';
46207 l_component_type_code := 'S';
46208 l_component_appl_id := 707;
46209 l_amb_context_code := 'DEFAULT';
46210 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
46211 l_event_class_code := 'DIR_INTERORG_RCPT';
46212 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
46213 l_line_definition_owner_code := 'S';
46214 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
46215 --
46216 l_balance_type_code := 'A';
46217 l_segment := NULL;
46218 l_ccid := NULL;
46219 l_adr_transaction_coa_id := NULL;
46220 l_adr_accounting_coa_id := NULL;
46221 l_adr_flexfield_segment_code := NULL;
46222 l_adr_flex_value_set_id := NULL;
46223 l_adr_value_type_code := NULL;
46224 l_adr_value_combination_id := NULL;
46225 l_adr_value_segment_code := NULL;
46226
46227 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
46228 l_bflow_class_code := ''; -- 4219869 Business Flow
46229 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
46230 l_budgetary_control_flag := 'N';
46231
46232 l_bflow_applied_to_amt_idx := NULL; -- 5132302
46233 l_bflow_applied_to_amt := NULL; -- 5132302
46234 l_entered_amt_idx := NULL; -- 4262811
46235 l_accted_amt_idx := NULL; -- 4262811
46236 l_acc_rev_flag := NULL; -- 4262811
46237 l_accrual_line_num := NULL; -- 4262811
46238 l_tmp_amt := NULL; -- 4262811
46239 --
46240
46241 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46242 l_balance_type_code <> 'B' THEN
46243 IF NVL(p_source_24,9E125) = 9
46244 THEN
46245
46246 --
46247 XLA_AE_LINES_PKG.SetNewLine;
46248
46249 p_balance_type_code := l_balance_type_code;
46250 -- set the flag so later we will know whether the gain loss line needs to be created
46251
46252 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46253 p_actual_flag :='A';
46254 END IF;
46255
46256 --
46257 -- bulk performance
46258 --
46259 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46260 p_header_num => 0); -- 4262811
46261 --
46262 -- set accounting line options
46263 --
46264 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46265 p_natural_side_code => 'D'
46266 , p_gain_or_loss_flag => 'N'
46267 , p_gl_transfer_mode_code => 'S'
46268 , p_acct_entry_type_code => 'A'
46269 , p_switch_side_flag => 'Y'
46270 , p_merge_duplicate_code => 'N'
46271 );
46272 --
46273 l_acc_rev_natural_side_code := 'C'; -- 4262811
46274 --
46275 --
46276 -- set accounting line type info
46277 --
46278 xla_ae_lines_pkg.SetAcctLineType
46279 (p_component_type => l_component_type
46280 ,p_event_type_code => l_event_type_code
46281 ,p_line_definition_owner_code => l_line_definition_owner_code
46282 ,p_line_definition_code => l_line_definition_code
46283 ,p_accounting_line_code => l_component_code
46284 ,p_accounting_line_type_code => l_component_type_code
46285 ,p_accounting_line_appl_id => l_component_appl_id
46286 ,p_amb_context_code => l_amb_context_code
46287 ,p_entity_code => l_entity_code
46288 ,p_event_class_code => l_event_class_code);
46289 --
46290 -- set accounting class
46291 --
46292 xla_ae_lines_pkg.SetAcctClass(
46293 p_accounting_class_code => 'INTERORG_PAYABLES'
46294 , p_ae_header_id => l_ae_header_id
46295 );
46296
46297 --
46298 -- set rounding class
46299 --
46300 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46301 'INTERORG_PAYABLES';
46302
46303 --
46304 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46305 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46306 --
46307 -- bulk performance
46308 --
46309 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46310
46311 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46312 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46313
46314 -- 4955764
46315 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46316 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46317
46318 -- 4458381 Public Sector Enh
46319
46320 --
46321 -- set accounting attributes for the line type
46322 --
46323 l_entered_amt_idx := 17;
46324 l_accted_amt_idx := 22;
46325 l_bflow_applied_to_amt_idx := NULL; -- 5132302
46326 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
46327 l_rec_acct_attrs.array_num_value(1) := p_source_6;
46328 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46329 l_rec_acct_attrs.array_char_value(2) := p_source_7;
46330 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
46331 l_rec_acct_attrs.array_char_value(3) := p_source_8;
46332 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
46333 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
46334 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46335 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
46336 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
46337 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
46338 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
46339 l_rec_acct_attrs.array_char_value(7) := p_source_12;
46340 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
46341 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
46342 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
46343 l_rec_acct_attrs.array_num_value(9) := p_source_14;
46344 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
46345 l_rec_acct_attrs.array_char_value(10) := p_source_15;
46346 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
46347 l_rec_acct_attrs.array_num_value(11) := p_source_16;
46348 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
46349 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
46350 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
46351 l_rec_acct_attrs.array_num_value(13) := p_source_14;
46352 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
46353 l_rec_acct_attrs.array_char_value(14) := p_source_15;
46354 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
46355 l_rec_acct_attrs.array_num_value(15) := p_source_16;
46356 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
46357 l_rec_acct_attrs.array_char_value(16) := p_source_27;
46358 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
46359 l_rec_acct_attrs.array_num_value(17) := p_source_18;
46360 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
46361 l_rec_acct_attrs.array_char_value(18) := p_source_15;
46362 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
46363 l_rec_acct_attrs.array_date_value(19) := p_source_19;
46364 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
46365 l_rec_acct_attrs.array_num_value(20) := p_source_20;
46366 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
46367 l_rec_acct_attrs.array_char_value(21) := p_source_21;
46368 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
46369 l_rec_acct_attrs.array_num_value(22) := p_source_22;
46370 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
46371 l_rec_acct_attrs.array_num_value(23) := p_source_31;
46372 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
46373 l_rec_acct_attrs.array_num_value(24) := p_source_31;
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_000005_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_NO_TP';
46799 l_line_definition_owner_code := 'S';
46800 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
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_000005_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_000005_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_NO_TP';
47907 l_line_definition_owner_code := 'S';
47908 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
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_000005_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_TP';
48461 l_line_definition_owner_code := 'S';
48462 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
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_000005_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';
49015 l_line_definition_owner_code := 'S';
49016 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
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_000005_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_PROFIT_OPM';
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 := 'FOB_SHIP_SENDER_SHIP';
49568 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
49569 l_line_definition_owner_code := 'S';
49570 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
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) = 34
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_PROFIT'
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_PROFIT';
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_000005_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_PROFIT_OPM';
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 := 'USER_DEFINE';
50122 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
50123 l_line_definition_owner_code := 'S';
50124 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
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) = 34
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_PROFIT'
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_PROFIT';
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_000005_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_PROFIT_OPM';
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 := 'INT_ORDER_TO_EXP';
50676 l_event_type_code := 'INT_ORDER_TO_EXP_ALL';
50677 l_line_definition_owner_code := 'S';
50678 l_line_definition_code := 'INT_ORDER_TO_EXP';
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) = 34
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_PROFIT'
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_PROFIT';
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_000005_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_PROFIT_OPM';
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 := 'DIR_INTERORG_SHIP';
51230 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
51231 l_line_definition_owner_code := 'S';
51232 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
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) = 34
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_PROFIT'
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_PROFIT';
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_000005_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 := 'USER_DEFINE';
51784 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
51785 l_line_definition_owner_code := 'S';
51786 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
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_000005_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 := 'INT_ORDER_TO_EXP';
52338 l_event_type_code := 'INT_ORDER_TO_EXP_ALL';
52339 l_line_definition_owner_code := 'S';
52340 l_line_definition_code := 'INT_ORDER_TO_EXP';
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_000005_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_RCPT';
52893 l_line_definition_owner_code := 'S';
52894 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
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_000005_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 := 'FOB_RCPT_SENDER_RCPT';
53446 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
53447 l_line_definition_owner_code := 'S';
53448 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
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_000005_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 --DISTRIBUTION_IDENTIFIER
53887 , p_source_11 IN NUMBER
53888 --Distribution Type
53889 , p_source_12 IN VARCHAR2
53890 , p_source_12_meaning IN VARCHAR2
53891 --Entered Currency Code
53892 , p_source_15 IN VARCHAR2
53893 --Entered Amount
53894 , p_source_18 IN NUMBER
53895 --Currency Conversion Date
53896 , p_source_19 IN DATE
53897 --Currency Conversion Rate
53898 , p_source_20 IN NUMBER
53899 --Currency Conversion Type
53900 , p_source_21 IN VARCHAR2
53901 --Accounted Amount
53902 , p_source_22 IN NUMBER
53903 --Accounting Line Type
53904 , p_source_24 IN NUMBER
53905 )
53906 IS
53907
53908 l_component_type VARCHAR2(80);
53909 l_component_code VARCHAR2(30);
53910 l_component_type_code VARCHAR2(1);
53911 l_component_appl_id INTEGER;
53912 l_amb_context_code VARCHAR2(30);
53913 l_entity_code VARCHAR2(30);
53914 l_event_class_code VARCHAR2(30);
53915 l_ae_header_id NUMBER;
53916 l_event_type_code VARCHAR2(30);
53917 l_line_definition_code VARCHAR2(30);
53918 l_line_definition_owner_code VARCHAR2(1);
53919 --
53920 -- adr variables
53921 l_segment VARCHAR2(30);
53922 l_ccid NUMBER;
53923 l_adr_transaction_coa_id NUMBER;
53924 l_adr_accounting_coa_id NUMBER;
53925 l_adr_flexfield_segment_code VARCHAR2(30);
53926 l_adr_flex_value_set_id NUMBER;
53927 l_adr_value_type_code VARCHAR2(30);
53928 l_adr_value_combination_id NUMBER;
53929 l_adr_value_segment_code VARCHAR2(30);
53930
53931 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
53932 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
53933 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
53934 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
53935
53936 -- 4262811 Variables ------------------------------------------------------------------------------------------
53937 l_entered_amt_idx NUMBER;
53938 l_accted_amt_idx NUMBER;
53939 l_acc_rev_flag VARCHAR2(1);
53940 l_accrual_line_num NUMBER;
53941 l_tmp_amt NUMBER;
53942 l_acc_rev_natural_side_code VARCHAR2(1);
53943
53944 l_num_entries NUMBER;
53945 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
53946 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
53947 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
53948 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
53949 l_recog_line_1 NUMBER;
53950 l_recog_line_2 NUMBER;
53951
53952 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
53953 l_bflow_applied_to_amt NUMBER; -- 5132302
53954 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
53955
53956 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53957
53958 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
53959 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
53960
53961 ---------------------------------------------------------------------------------------------------------------
53962
53963
53964 --
53965 -- bulk performance
53966 --
53967 l_balance_type_code VARCHAR2(1);
53968 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
53969 l_log_module VARCHAR2(240);
53970
53971 --
53972 -- Upgrade strategy
53973 --
53974 l_actual_upg_option VARCHAR2(1);
53975 l_enc_upg_option VARCHAR2(1);
53976
53977 --
53978 BEGIN
53979 --
53980 IF g_log_enabled THEN
53981 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
53982 END IF;
53983 --
53984 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53985
53986 trace
53987 (p_msg => 'BEGIN of AcctLineType_100'
53988 ,p_level => C_LEVEL_PROCEDURE
53989 ,p_module => l_log_module);
53990
53991 END IF;
53992 --
53993 l_component_type := 'AMB_JLT';
53994 l_component_code := 'INTERORG_RECEIVABLES';
53995 l_component_type_code := 'S';
53996 l_component_appl_id := 707;
53997 l_amb_context_code := 'DEFAULT';
53998 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
53999 l_event_class_code := 'USER_DEFINE';
54000 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_TP';
54001 l_line_definition_owner_code := 'S';
54002 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
54003 --
54004 l_balance_type_code := 'A';
54005 l_segment := NULL;
54006 l_ccid := NULL;
54007 l_adr_transaction_coa_id := NULL;
54008 l_adr_accounting_coa_id := NULL;
54009 l_adr_flexfield_segment_code := NULL;
54010 l_adr_flex_value_set_id := NULL;
54011 l_adr_value_type_code := NULL;
54012 l_adr_value_combination_id := NULL;
54013 l_adr_value_segment_code := NULL;
54014
54015 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
54016 l_bflow_class_code := ''; -- 4219869 Business Flow
54017 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
54018 l_budgetary_control_flag := 'N';
54019
54020 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54021 l_bflow_applied_to_amt := NULL; -- 5132302
54022 l_entered_amt_idx := NULL; -- 4262811
54023 l_accted_amt_idx := NULL; -- 4262811
54024 l_acc_rev_flag := NULL; -- 4262811
54025 l_accrual_line_num := NULL; -- 4262811
54026 l_tmp_amt := NULL; -- 4262811
54027 --
54028
54029 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54030 l_balance_type_code <> 'B' THEN
54031 IF NVL(p_source_24,9E125) = 10
54032 THEN
54033
54034 --
54035 XLA_AE_LINES_PKG.SetNewLine;
54036
54037 p_balance_type_code := l_balance_type_code;
54038 -- set the flag so later we will know whether the gain loss line needs to be created
54039
54040 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54041 p_actual_flag :='A';
54042 END IF;
54043
54044 --
54045 -- bulk performance
54046 --
54047 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54048 p_header_num => 0); -- 4262811
54049 --
54050 -- set accounting line options
54051 --
54052 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54053 p_natural_side_code => 'D'
54054 , p_gain_or_loss_flag => 'N'
54055 , p_gl_transfer_mode_code => 'S'
54056 , p_acct_entry_type_code => 'A'
54057 , p_switch_side_flag => 'Y'
54058 , p_merge_duplicate_code => 'N'
54059 );
54060 --
54061 l_acc_rev_natural_side_code := 'C'; -- 4262811
54062 --
54063 --
54064 -- set accounting line type info
54065 --
54066 xla_ae_lines_pkg.SetAcctLineType
54067 (p_component_type => l_component_type
54068 ,p_event_type_code => l_event_type_code
54069 ,p_line_definition_owner_code => l_line_definition_owner_code
54070 ,p_line_definition_code => l_line_definition_code
54071 ,p_accounting_line_code => l_component_code
54072 ,p_accounting_line_type_code => l_component_type_code
54073 ,p_accounting_line_appl_id => l_component_appl_id
54074 ,p_amb_context_code => l_amb_context_code
54075 ,p_entity_code => l_entity_code
54076 ,p_event_class_code => l_event_class_code);
54077 --
54078 -- set accounting class
54079 --
54080 xla_ae_lines_pkg.SetAcctClass(
54081 p_accounting_class_code => 'INTERORG_RECEIVABLES'
54082 , p_ae_header_id => l_ae_header_id
54083 );
54084
54085 --
54086 -- set rounding class
54087 --
54088 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54089 'INTERORG_RECEIVABLES';
54090
54091 --
54092 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54093 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54094 --
54095 -- bulk performance
54096 --
54097 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54098
54099 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54100 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54101
54102 -- 4955764
54103 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54104 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54105
54106 -- 4458381 Public Sector Enh
54107
54108 --
54109 -- set accounting attributes for the line type
54110 --
54111 l_entered_amt_idx := 3;
54112 l_accted_amt_idx := 8;
54113 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54114 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54115 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
54116 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54117 l_rec_acct_attrs.array_char_value(2) := p_source_12;
54118 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54119 l_rec_acct_attrs.array_num_value(3) := p_source_18;
54120 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54121 l_rec_acct_attrs.array_char_value(4) := p_source_15;
54122 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54123 l_rec_acct_attrs.array_date_value(5) := p_source_19;
54124 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54125 l_rec_acct_attrs.array_num_value(6) := p_source_20;
54126 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54127 l_rec_acct_attrs.array_char_value(7) := p_source_21;
54128 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54129 l_rec_acct_attrs.array_num_value(8) := p_source_22;
54130
54131 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54132 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54133
54134 ---------------------------------------------------------------------------------------------------------------
54135 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54136 ---------------------------------------------------------------------------------------------------------------
54137 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54138
54139 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54140 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54141
54142 IF xla_accounting_cache_pkg.GetValueChar
54143 (p_source_code => 'LEDGER_CATEGORY_CODE'
54144 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54145 AND l_bflow_method_code = 'PRIOR_ENTRY'
54146 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54147 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54148 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54149 )
54150 THEN
54151 xla_ae_lines_pkg.BflowUpgEntry
54152 (p_business_method_code => l_bflow_method_code
54153 ,p_business_class_code => l_bflow_class_code
54154 ,p_balance_type => l_balance_type_code);
54155 ELSE
54156 NULL;
54157 -- No business flow processing for business flow method of NONE.
54158 END IF;
54159
54160 --
54161 -- call analytical criteria
54162 --
54163
54164 --
54165 -- call description
54166 --
54167 -- No description or it is inherited.
54168 --
54169 -- call ADRs
54170 -- Bug 4922099
54171 --
54172 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54173 (NVL(l_actual_upg_option, 'N') = 'O') OR
54174 (NVL(l_enc_upg_option, 'N') = 'O')
54175 )
54176 THEN
54177 NULL;
54178 --
54179 --
54180
54181 l_ccid := AcctDerRule_4(
54182 p_application_id => p_application_id
54183 , p_ae_header_id => l_ae_header_id
54184 , p_source_4 => p_source_4
54185 , x_transaction_coa_id => l_adr_transaction_coa_id
54186 , x_accounting_coa_id => l_adr_accounting_coa_id
54187 , x_value_type_code => l_adr_value_type_code
54188 , p_side => 'NA'
54189 );
54190
54191 xla_ae_lines_pkg.set_ccid(
54192 p_code_combination_id => l_ccid
54193 , p_value_type_code => l_adr_value_type_code
54194 , p_transaction_coa_id => l_adr_transaction_coa_id
54195 , p_accounting_coa_id => l_adr_accounting_coa_id
54196 , p_adr_code => 'CST_DEFAULT'
54197 , p_adr_type_code => 'S'
54198 , p_component_type => l_component_type
54199 , p_component_code => l_component_code
54200 , p_component_type_code => l_component_type_code
54201 , p_component_appl_id => l_component_appl_id
54202 , p_amb_context_code => l_amb_context_code
54203 , p_side => 'NA'
54204 );
54205
54206
54207 --
54208 --
54209 END IF;
54210 --
54211 -- Bug 4922099
54212 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54213 (NVL(l_enc_upg_option, 'N') = 'O')
54214 ) AND
54215 (l_bflow_method_code = 'PRIOR_ENTRY')
54216 )
54217 THEN
54218 IF
54219 --
54220 1 = 2
54221 --
54222 THEN
54223 xla_accounting_err_pkg.build_message
54224 (p_appli_s_name => 'XLA'
54225 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54226 ,p_token_1 => 'LINE_NUMBER'
54227 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
54228 ,p_token_2 => 'LINE_TYPE_NAME'
54229 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
54230 l_component_type
54231 ,l_component_code
54232 ,l_component_type_code
54233 ,l_component_appl_id
54234 ,l_amb_context_code
54235 ,l_entity_code
54236 ,l_event_class_code
54237 )
54238 ,p_token_3 => 'OWNER'
54239 ,p_value_3 => xla_lookups_pkg.get_meaning(
54240 p_lookup_type => 'XLA_OWNER_TYPE'
54241 ,p_lookup_code => l_component_type_code
54242 )
54243 ,p_token_4 => 'PRODUCT_NAME'
54244 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54245 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54246 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54247 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54248 ,p_ae_header_id => NULL
54249 );
54250
54251 IF (C_LEVEL_ERROR>= g_log_level) THEN
54252 trace
54253 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54254 ,p_level => C_LEVEL_ERROR
54255 ,p_module => l_log_module);
54256 END IF;
54257 END IF;
54258 END IF;
54259 --
54260 --
54261 ------------------------------------------------------------------------------------------------
54262 -- 4219869 Business Flow
54263 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54264 -- Prior Entry. Currently, the following code is always generated.
54265 ------------------------------------------------------------------------------------------------
54266 XLA_AE_LINES_PKG.ValidateCurrentLine;
54267
54268 ------------------------------------------------------------------------------------
54269 -- 4219869 Business Flow
54270 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54271 ------------------------------------------------------------------------------------
54272 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54273
54274 ----------------------------------------------------------------------------------
54275 -- 4219869 Business Flow
54276 -- Update journal entry status -- Need to generate this within IF <condition>
54277 ----------------------------------------------------------------------------------
54278 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54279 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54280 ,p_balance_type_code => l_balance_type_code
54281 );
54282
54283 -------------------------------------------------------------------------------------------
54284 -- 4262811 - Generate the Accrual Reversal lines
54285 -------------------------------------------------------------------------------------------
54286 BEGIN
54287 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54288 (g_array_event(p_event_id).array_value_num('header_index'));
54289 IF l_acc_rev_flag IS NULL THEN
54290 l_acc_rev_flag := 'N';
54291 END IF;
54292 EXCEPTION
54293 WHEN OTHERS THEN
54294 l_acc_rev_flag := 'N';
54295 END;
54296 --
54297 IF (l_acc_rev_flag = 'Y') THEN
54298
54299 -- 4645092 ------------------------------------------------------------------------------
54300 -- To allow MPA report to determine if it should generate report process
54301 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54302 ------------------------------------------------------------------------------------------
54303
54304 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54305 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54306 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
54307 -- call ADRs
54308 -- Bug 4922099
54309 --
54310 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54311 (NVL(l_actual_upg_option, 'N') = 'O') OR
54312 (NVL(l_enc_upg_option, 'N') = 'O')
54313 )
54314 THEN
54315 NULL;
54316 --
54317 --
54318
54319 l_ccid := AcctDerRule_4(
54320 p_application_id => p_application_id
54321 , p_ae_header_id => l_ae_header_id
54322 , p_source_4 => p_source_4
54323 , x_transaction_coa_id => l_adr_transaction_coa_id
54324 , x_accounting_coa_id => l_adr_accounting_coa_id
54325 , x_value_type_code => l_adr_value_type_code
54326 , p_side => 'NA'
54327 );
54328
54329 xla_ae_lines_pkg.set_ccid(
54330 p_code_combination_id => l_ccid
54331 , p_value_type_code => l_adr_value_type_code
54332 , p_transaction_coa_id => l_adr_transaction_coa_id
54333 , p_accounting_coa_id => l_adr_accounting_coa_id
54334 , p_adr_code => 'CST_DEFAULT'
54335 , p_adr_type_code => 'S'
54336 , p_component_type => l_component_type
54337 , p_component_code => l_component_code
54338 , p_component_type_code => l_component_type_code
54339 , p_component_appl_id => l_component_appl_id
54340 , p_amb_context_code => l_amb_context_code
54341 , p_side => 'NA'
54342 );
54343
54344
54345 --
54346 --
54347 END IF;
54348
54349 --
54350 -- Update the line information that should be overwritten
54351 --
54352 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54353 p_header_num => 1);
54354 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
54355
54356 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54357
54358 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
54359 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54360 END IF;
54361
54362 --
54363 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54364 --
54365 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54366 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
54367 ELSE
54368 ---------------------------------------------------------------------------------------------------
54369 -- 4262811a Switch Sign
54370 ---------------------------------------------------------------------------------------------------
54371 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
54372 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54373 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54374 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54375 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54376 -- 5132302
54377 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54378 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54379
54380 END IF;
54381
54382 -- 4955764
54383 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54384 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54385
54386
54387 XLA_AE_LINES_PKG.ValidateCurrentLine;
54388 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54389
54390 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54391 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54392 ,p_balance_type_code => l_balance_type_code);
54393
54394 END IF;
54395
54396 -----------------------------------------------------------------------------------------
54397 -- 4262811 Multiperiod Accounting
54398 -----------------------------------------------------------------------------------------
54399 -- No MPA option is assigned.
54400
54401
54402 END IF;
54403 END IF;
54404 --
54405
54406 --
54407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54408 trace
54409 (p_msg => 'END of AcctLineType_100'
54410 ,p_level => C_LEVEL_PROCEDURE
54411 ,p_module => l_log_module);
54412 END IF;
54413 --
54414 EXCEPTION
54415 WHEN xla_exceptions_pkg.application_exception THEN
54416 RAISE;
54417 WHEN OTHERS THEN
54418 xla_exceptions_pkg.raise_message
54419 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_100');
54420 END AcctLineType_100;
54421 --
54422
54423 ---------------------------------------
54424 --
54425 -- PRIVATE FUNCTION
54426 -- AcctLineType_101
54427 --
54428 ---------------------------------------
54429 PROCEDURE AcctLineType_101 (
54430 p_application_id IN NUMBER
54431 ,p_event_id IN NUMBER
54432 ,p_calculate_acctd_flag IN VARCHAR2
54433 ,p_calculate_g_l_flag IN VARCHAR2
54434 ,p_actual_flag IN OUT VARCHAR2
54435 ,p_balance_type_code OUT VARCHAR2
54436 ,p_gain_or_loss_ref OUT VARCHAR2
54437
54438 --Cost Management Default Account
54439 , p_source_4 IN NUMBER
54440 --DISTRIBUTION_IDENTIFIER
54441 , p_source_11 IN NUMBER
54442 --Distribution Type
54443 , p_source_12 IN VARCHAR2
54444 , p_source_12_meaning IN VARCHAR2
54445 --Entered Currency Code
54446 , p_source_15 IN VARCHAR2
54447 --Entered Amount
54448 , p_source_18 IN NUMBER
54449 --Currency Conversion Date
54450 , p_source_19 IN DATE
54451 --Currency Conversion Rate
54452 , p_source_20 IN NUMBER
54453 --Currency Conversion Type
54454 , p_source_21 IN VARCHAR2
54455 --Accounted Amount
54456 , p_source_22 IN NUMBER
54457 --Accounting Line Type
54458 , p_source_24 IN NUMBER
54459 )
54460 IS
54461
54462 l_component_type VARCHAR2(80);
54463 l_component_code VARCHAR2(30);
54464 l_component_type_code VARCHAR2(1);
54465 l_component_appl_id INTEGER;
54466 l_amb_context_code VARCHAR2(30);
54467 l_entity_code VARCHAR2(30);
54468 l_event_class_code VARCHAR2(30);
54469 l_ae_header_id NUMBER;
54470 l_event_type_code VARCHAR2(30);
54471 l_line_definition_code VARCHAR2(30);
54472 l_line_definition_owner_code VARCHAR2(1);
54473 --
54474 -- adr variables
54475 l_segment VARCHAR2(30);
54476 l_ccid NUMBER;
54477 l_adr_transaction_coa_id NUMBER;
54478 l_adr_accounting_coa_id NUMBER;
54479 l_adr_flexfield_segment_code VARCHAR2(30);
54480 l_adr_flex_value_set_id NUMBER;
54481 l_adr_value_type_code VARCHAR2(30);
54482 l_adr_value_combination_id NUMBER;
54483 l_adr_value_segment_code VARCHAR2(30);
54484
54485 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
54486 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
54487 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
54488 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
54489
54490 -- 4262811 Variables ------------------------------------------------------------------------------------------
54491 l_entered_amt_idx NUMBER;
54492 l_accted_amt_idx NUMBER;
54493 l_acc_rev_flag VARCHAR2(1);
54494 l_accrual_line_num NUMBER;
54495 l_tmp_amt NUMBER;
54496 l_acc_rev_natural_side_code VARCHAR2(1);
54497
54498 l_num_entries NUMBER;
54499 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
54500 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
54501 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
54502 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
54503 l_recog_line_1 NUMBER;
54504 l_recog_line_2 NUMBER;
54505
54506 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
54507 l_bflow_applied_to_amt NUMBER; -- 5132302
54508 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
54509
54510 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54511
54512 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
54513 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
54514
54515 ---------------------------------------------------------------------------------------------------------------
54516
54517
54518 --
54519 -- bulk performance
54520 --
54521 l_balance_type_code VARCHAR2(1);
54522 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
54523 l_log_module VARCHAR2(240);
54524
54525 --
54526 -- Upgrade strategy
54527 --
54528 l_actual_upg_option VARCHAR2(1);
54529 l_enc_upg_option VARCHAR2(1);
54530
54531 --
54532 BEGIN
54533 --
54534 IF g_log_enabled THEN
54535 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
54536 END IF;
54537 --
54538 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54539
54540 trace
54541 (p_msg => 'BEGIN of AcctLineType_101'
54542 ,p_level => C_LEVEL_PROCEDURE
54543 ,p_module => l_log_module);
54544
54545 END IF;
54546 --
54547 l_component_type := 'AMB_JLT';
54548 l_component_code := 'INTERORG_RECEIVABLES';
54549 l_component_type_code := 'S';
54550 l_component_appl_id := 707;
54551 l_amb_context_code := 'DEFAULT';
54552 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
54553 l_event_class_code := 'USER_DEFINE';
54554 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
54555 l_line_definition_owner_code := 'S';
54556 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
54557 --
54558 l_balance_type_code := 'A';
54559 l_segment := NULL;
54560 l_ccid := NULL;
54561 l_adr_transaction_coa_id := NULL;
54562 l_adr_accounting_coa_id := NULL;
54563 l_adr_flexfield_segment_code := NULL;
54564 l_adr_flex_value_set_id := NULL;
54565 l_adr_value_type_code := NULL;
54566 l_adr_value_combination_id := NULL;
54567 l_adr_value_segment_code := NULL;
54568
54569 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
54570 l_bflow_class_code := ''; -- 4219869 Business Flow
54571 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
54572 l_budgetary_control_flag := 'N';
54573
54574 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54575 l_bflow_applied_to_amt := NULL; -- 5132302
54576 l_entered_amt_idx := NULL; -- 4262811
54577 l_accted_amt_idx := NULL; -- 4262811
54578 l_acc_rev_flag := NULL; -- 4262811
54579 l_accrual_line_num := NULL; -- 4262811
54580 l_tmp_amt := NULL; -- 4262811
54581 --
54582
54583 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54584 l_balance_type_code <> 'B' THEN
54585 IF NVL(p_source_24,9E125) = 10
54586 THEN
54587
54588 --
54589 XLA_AE_LINES_PKG.SetNewLine;
54590
54591 p_balance_type_code := l_balance_type_code;
54592 -- set the flag so later we will know whether the gain loss line needs to be created
54593
54594 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54595 p_actual_flag :='A';
54596 END IF;
54597
54598 --
54599 -- bulk performance
54600 --
54601 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54602 p_header_num => 0); -- 4262811
54603 --
54604 -- set accounting line options
54605 --
54606 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54607 p_natural_side_code => 'D'
54608 , p_gain_or_loss_flag => 'N'
54609 , p_gl_transfer_mode_code => 'S'
54610 , p_acct_entry_type_code => 'A'
54611 , p_switch_side_flag => 'Y'
54612 , p_merge_duplicate_code => 'N'
54613 );
54614 --
54615 l_acc_rev_natural_side_code := 'C'; -- 4262811
54616 --
54617 --
54618 -- set accounting line type info
54619 --
54620 xla_ae_lines_pkg.SetAcctLineType
54621 (p_component_type => l_component_type
54622 ,p_event_type_code => l_event_type_code
54623 ,p_line_definition_owner_code => l_line_definition_owner_code
54624 ,p_line_definition_code => l_line_definition_code
54625 ,p_accounting_line_code => l_component_code
54626 ,p_accounting_line_type_code => l_component_type_code
54627 ,p_accounting_line_appl_id => l_component_appl_id
54628 ,p_amb_context_code => l_amb_context_code
54629 ,p_entity_code => l_entity_code
54630 ,p_event_class_code => l_event_class_code);
54631 --
54632 -- set accounting class
54633 --
54634 xla_ae_lines_pkg.SetAcctClass(
54635 p_accounting_class_code => 'INTERORG_RECEIVABLES'
54636 , p_ae_header_id => l_ae_header_id
54637 );
54638
54639 --
54640 -- set rounding class
54641 --
54642 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54643 'INTERORG_RECEIVABLES';
54644
54645 --
54646 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54647 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54648 --
54649 -- bulk performance
54650 --
54651 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54652
54653 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54654 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54655
54656 -- 4955764
54657 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54658 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54659
54660 -- 4458381 Public Sector Enh
54661
54662 --
54663 -- set accounting attributes for the line type
54664 --
54665 l_entered_amt_idx := 3;
54666 l_accted_amt_idx := 8;
54667 l_bflow_applied_to_amt_idx := NULL; -- 5132302
54668 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54669 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
54670 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
54671 l_rec_acct_attrs.array_char_value(2) := p_source_12;
54672 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
54673 l_rec_acct_attrs.array_num_value(3) := p_source_18;
54674 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
54675 l_rec_acct_attrs.array_char_value(4) := p_source_15;
54676 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
54677 l_rec_acct_attrs.array_date_value(5) := p_source_19;
54678 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
54679 l_rec_acct_attrs.array_num_value(6) := p_source_20;
54680 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
54681 l_rec_acct_attrs.array_char_value(7) := p_source_21;
54682 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
54683 l_rec_acct_attrs.array_num_value(8) := p_source_22;
54684
54685 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54686 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54687
54688 ---------------------------------------------------------------------------------------------------------------
54689 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54690 ---------------------------------------------------------------------------------------------------------------
54691 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54692
54693 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54694 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54695
54696 IF xla_accounting_cache_pkg.GetValueChar
54697 (p_source_code => 'LEDGER_CATEGORY_CODE'
54698 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54699 AND l_bflow_method_code = 'PRIOR_ENTRY'
54700 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54701 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54702 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54703 )
54704 THEN
54705 xla_ae_lines_pkg.BflowUpgEntry
54706 (p_business_method_code => l_bflow_method_code
54707 ,p_business_class_code => l_bflow_class_code
54708 ,p_balance_type => l_balance_type_code);
54709 ELSE
54710 NULL;
54711 -- No business flow processing for business flow method of NONE.
54712 END IF;
54713
54714 --
54715 -- call analytical criteria
54716 --
54717
54718 --
54719 -- call description
54720 --
54721 -- No description or it is inherited.
54722 --
54723 -- call ADRs
54724 -- Bug 4922099
54725 --
54726 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54727 (NVL(l_actual_upg_option, 'N') = 'O') OR
54728 (NVL(l_enc_upg_option, 'N') = 'O')
54729 )
54730 THEN
54731 NULL;
54732 --
54733 --
54734
54735 l_ccid := AcctDerRule_4(
54736 p_application_id => p_application_id
54737 , p_ae_header_id => l_ae_header_id
54738 , p_source_4 => p_source_4
54739 , x_transaction_coa_id => l_adr_transaction_coa_id
54740 , x_accounting_coa_id => l_adr_accounting_coa_id
54741 , x_value_type_code => l_adr_value_type_code
54742 , p_side => 'NA'
54743 );
54744
54745 xla_ae_lines_pkg.set_ccid(
54746 p_code_combination_id => l_ccid
54747 , p_value_type_code => l_adr_value_type_code
54748 , p_transaction_coa_id => l_adr_transaction_coa_id
54749 , p_accounting_coa_id => l_adr_accounting_coa_id
54750 , p_adr_code => 'CST_DEFAULT'
54751 , p_adr_type_code => 'S'
54752 , p_component_type => l_component_type
54753 , p_component_code => l_component_code
54754 , p_component_type_code => l_component_type_code
54755 , p_component_appl_id => l_component_appl_id
54756 , p_amb_context_code => l_amb_context_code
54757 , p_side => 'NA'
54758 );
54759
54760
54761 --
54762 --
54763 END IF;
54764 --
54765 -- Bug 4922099
54766 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54767 (NVL(l_enc_upg_option, 'N') = 'O')
54768 ) AND
54769 (l_bflow_method_code = 'PRIOR_ENTRY')
54770 )
54771 THEN
54772 IF
54773 --
54774 1 = 2
54775 --
54776 THEN
54777 xla_accounting_err_pkg.build_message
54778 (p_appli_s_name => 'XLA'
54779 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54780 ,p_token_1 => 'LINE_NUMBER'
54781 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
54782 ,p_token_2 => 'LINE_TYPE_NAME'
54783 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
54784 l_component_type
54785 ,l_component_code
54786 ,l_component_type_code
54787 ,l_component_appl_id
54788 ,l_amb_context_code
54789 ,l_entity_code
54790 ,l_event_class_code
54791 )
54792 ,p_token_3 => 'OWNER'
54793 ,p_value_3 => xla_lookups_pkg.get_meaning(
54794 p_lookup_type => 'XLA_OWNER_TYPE'
54795 ,p_lookup_code => l_component_type_code
54796 )
54797 ,p_token_4 => 'PRODUCT_NAME'
54798 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54799 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54800 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54801 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54802 ,p_ae_header_id => NULL
54803 );
54804
54805 IF (C_LEVEL_ERROR>= g_log_level) THEN
54806 trace
54807 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54808 ,p_level => C_LEVEL_ERROR
54809 ,p_module => l_log_module);
54810 END IF;
54811 END IF;
54812 END IF;
54813 --
54814 --
54815 ------------------------------------------------------------------------------------------------
54816 -- 4219869 Business Flow
54817 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54818 -- Prior Entry. Currently, the following code is always generated.
54819 ------------------------------------------------------------------------------------------------
54820 XLA_AE_LINES_PKG.ValidateCurrentLine;
54821
54822 ------------------------------------------------------------------------------------
54823 -- 4219869 Business Flow
54824 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54825 ------------------------------------------------------------------------------------
54826 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54827
54828 ----------------------------------------------------------------------------------
54829 -- 4219869 Business Flow
54830 -- Update journal entry status -- Need to generate this within IF <condition>
54831 ----------------------------------------------------------------------------------
54832 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54833 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54834 ,p_balance_type_code => l_balance_type_code
54835 );
54836
54837 -------------------------------------------------------------------------------------------
54838 -- 4262811 - Generate the Accrual Reversal lines
54839 -------------------------------------------------------------------------------------------
54840 BEGIN
54841 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54842 (g_array_event(p_event_id).array_value_num('header_index'));
54843 IF l_acc_rev_flag IS NULL THEN
54844 l_acc_rev_flag := 'N';
54845 END IF;
54846 EXCEPTION
54847 WHEN OTHERS THEN
54848 l_acc_rev_flag := 'N';
54849 END;
54850 --
54851 IF (l_acc_rev_flag = 'Y') THEN
54852
54853 -- 4645092 ------------------------------------------------------------------------------
54854 -- To allow MPA report to determine if it should generate report process
54855 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54856 ------------------------------------------------------------------------------------------
54857
54858 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54859 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54860 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
54861 -- call ADRs
54862 -- Bug 4922099
54863 --
54864 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54865 (NVL(l_actual_upg_option, 'N') = 'O') OR
54866 (NVL(l_enc_upg_option, 'N') = 'O')
54867 )
54868 THEN
54869 NULL;
54870 --
54871 --
54872
54873 l_ccid := AcctDerRule_4(
54874 p_application_id => p_application_id
54875 , p_ae_header_id => l_ae_header_id
54876 , p_source_4 => p_source_4
54877 , x_transaction_coa_id => l_adr_transaction_coa_id
54878 , x_accounting_coa_id => l_adr_accounting_coa_id
54879 , x_value_type_code => l_adr_value_type_code
54880 , p_side => 'NA'
54881 );
54882
54883 xla_ae_lines_pkg.set_ccid(
54884 p_code_combination_id => l_ccid
54885 , p_value_type_code => l_adr_value_type_code
54886 , p_transaction_coa_id => l_adr_transaction_coa_id
54887 , p_accounting_coa_id => l_adr_accounting_coa_id
54888 , p_adr_code => 'CST_DEFAULT'
54889 , p_adr_type_code => 'S'
54890 , p_component_type => l_component_type
54891 , p_component_code => l_component_code
54892 , p_component_type_code => l_component_type_code
54893 , p_component_appl_id => l_component_appl_id
54894 , p_amb_context_code => l_amb_context_code
54895 , p_side => 'NA'
54896 );
54897
54898
54899 --
54900 --
54901 END IF;
54902
54903 --
54904 -- Update the line information that should be overwritten
54905 --
54906 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54907 p_header_num => 1);
54908 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
54909
54910 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54911
54912 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
54913 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54914 END IF;
54915
54916 --
54917 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54918 --
54919 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54920 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
54921 ELSE
54922 ---------------------------------------------------------------------------------------------------
54923 -- 4262811a Switch Sign
54924 ---------------------------------------------------------------------------------------------------
54925 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
54926 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54927 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54928 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54929 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54930 -- 5132302
54931 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54932 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54933
54934 END IF;
54935
54936 -- 4955764
54937 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54938 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54939
54940
54941 XLA_AE_LINES_PKG.ValidateCurrentLine;
54942 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54943
54944 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54945 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54946 ,p_balance_type_code => l_balance_type_code);
54947
54948 END IF;
54949
54950 -----------------------------------------------------------------------------------------
54951 -- 4262811 Multiperiod Accounting
54952 -----------------------------------------------------------------------------------------
54953 -- No MPA option is assigned.
54954
54955
54956 END IF;
54957 END IF;
54958 --
54959
54960 --
54961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54962 trace
54963 (p_msg => 'END of AcctLineType_101'
54964 ,p_level => C_LEVEL_PROCEDURE
54965 ,p_module => l_log_module);
54966 END IF;
54967 --
54968 EXCEPTION
54969 WHEN xla_exceptions_pkg.application_exception THEN
54970 RAISE;
54971 WHEN OTHERS THEN
54972 xla_exceptions_pkg.raise_message
54973 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_101');
54974 END AcctLineType_101;
54975 --
54976
54977 ---------------------------------------
54978 --
54979 -- PRIVATE FUNCTION
54980 -- AcctLineType_102
54981 --
54982 ---------------------------------------
54983 PROCEDURE AcctLineType_102 (
54984 p_application_id IN NUMBER
54985 ,p_event_id IN NUMBER
54986 ,p_calculate_acctd_flag IN VARCHAR2
54987 ,p_calculate_g_l_flag IN VARCHAR2
54988 ,p_actual_flag IN OUT VARCHAR2
54989 ,p_balance_type_code OUT VARCHAR2
54990 ,p_gain_or_loss_ref OUT VARCHAR2
54991
54992 --Cost Management Default Account
54993 , p_source_4 IN NUMBER
54994 --DISTRIBUTION_IDENTIFIER
54995 , p_source_11 IN NUMBER
54996 --Distribution Type
54997 , p_source_12 IN VARCHAR2
54998 , p_source_12_meaning IN VARCHAR2
54999 --Entered Currency Code
55000 , p_source_15 IN VARCHAR2
55001 --Entered Amount
55002 , p_source_18 IN NUMBER
55003 --Currency Conversion Date
55004 , p_source_19 IN DATE
55005 --Currency Conversion Rate
55006 , p_source_20 IN NUMBER
55007 --Currency Conversion Type
55008 , p_source_21 IN VARCHAR2
55009 --Accounted Amount
55010 , p_source_22 IN NUMBER
55011 --Accounting Line Type
55012 , p_source_24 IN NUMBER
55013 )
55014 IS
55015
55016 l_component_type VARCHAR2(80);
55017 l_component_code VARCHAR2(30);
55018 l_component_type_code VARCHAR2(1);
55019 l_component_appl_id INTEGER;
55020 l_amb_context_code VARCHAR2(30);
55021 l_entity_code VARCHAR2(30);
55022 l_event_class_code VARCHAR2(30);
55023 l_ae_header_id NUMBER;
55024 l_event_type_code VARCHAR2(30);
55025 l_line_definition_code VARCHAR2(30);
55026 l_line_definition_owner_code VARCHAR2(1);
55027 --
55028 -- adr variables
55029 l_segment VARCHAR2(30);
55030 l_ccid NUMBER;
55031 l_adr_transaction_coa_id NUMBER;
55032 l_adr_accounting_coa_id NUMBER;
55033 l_adr_flexfield_segment_code VARCHAR2(30);
55034 l_adr_flex_value_set_id NUMBER;
55035 l_adr_value_type_code VARCHAR2(30);
55036 l_adr_value_combination_id NUMBER;
55037 l_adr_value_segment_code VARCHAR2(30);
55038
55039 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
55040 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
55041 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
55042 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
55043
55044 -- 4262811 Variables ------------------------------------------------------------------------------------------
55045 l_entered_amt_idx NUMBER;
55046 l_accted_amt_idx NUMBER;
55047 l_acc_rev_flag VARCHAR2(1);
55048 l_accrual_line_num NUMBER;
55049 l_tmp_amt NUMBER;
55050 l_acc_rev_natural_side_code VARCHAR2(1);
55051
55052 l_num_entries NUMBER;
55053 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
55054 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
55055 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
55056 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
55057 l_recog_line_1 NUMBER;
55058 l_recog_line_2 NUMBER;
55059
55060 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
55061 l_bflow_applied_to_amt NUMBER; -- 5132302
55062 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
55063
55064 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55065
55066 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
55067 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
55068
55069 ---------------------------------------------------------------------------------------------------------------
55070
55071
55072 --
55073 -- bulk performance
55074 --
55075 l_balance_type_code VARCHAR2(1);
55076 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
55077 l_log_module VARCHAR2(240);
55078
55079 --
55080 -- Upgrade strategy
55081 --
55082 l_actual_upg_option VARCHAR2(1);
55083 l_enc_upg_option VARCHAR2(1);
55084
55085 --
55086 BEGIN
55087 --
55088 IF g_log_enabled THEN
55089 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
55090 END IF;
55091 --
55092 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55093
55094 trace
55095 (p_msg => 'BEGIN of AcctLineType_102'
55096 ,p_level => C_LEVEL_PROCEDURE
55097 ,p_module => l_log_module);
55098
55099 END IF;
55100 --
55101 l_component_type := 'AMB_JLT';
55102 l_component_code := 'INTERORG_RECEIVABLES';
55103 l_component_type_code := 'S';
55104 l_component_appl_id := 707;
55105 l_amb_context_code := 'DEFAULT';
55106 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
55107 l_event_class_code := 'USER_DEFINE';
55108 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
55109 l_line_definition_owner_code := 'S';
55110 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
55111 --
55112 l_balance_type_code := 'A';
55113 l_segment := NULL;
55114 l_ccid := NULL;
55115 l_adr_transaction_coa_id := NULL;
55116 l_adr_accounting_coa_id := NULL;
55117 l_adr_flexfield_segment_code := NULL;
55118 l_adr_flex_value_set_id := NULL;
55119 l_adr_value_type_code := NULL;
55120 l_adr_value_combination_id := NULL;
55121 l_adr_value_segment_code := NULL;
55122
55123 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
55124 l_bflow_class_code := ''; -- 4219869 Business Flow
55125 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
55126 l_budgetary_control_flag := 'N';
55127
55128 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55129 l_bflow_applied_to_amt := NULL; -- 5132302
55130 l_entered_amt_idx := NULL; -- 4262811
55131 l_accted_amt_idx := NULL; -- 4262811
55132 l_acc_rev_flag := NULL; -- 4262811
55133 l_accrual_line_num := NULL; -- 4262811
55134 l_tmp_amt := NULL; -- 4262811
55135 --
55136
55137 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55138 l_balance_type_code <> 'B' THEN
55139 IF NVL(p_source_24,9E125) = 10
55140 THEN
55141
55142 --
55143 XLA_AE_LINES_PKG.SetNewLine;
55144
55145 p_balance_type_code := l_balance_type_code;
55146 -- set the flag so later we will know whether the gain loss line needs to be created
55147
55148 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55149 p_actual_flag :='A';
55150 END IF;
55151
55152 --
55153 -- bulk performance
55154 --
55155 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55156 p_header_num => 0); -- 4262811
55157 --
55158 -- set accounting line options
55159 --
55160 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55161 p_natural_side_code => 'D'
55162 , p_gain_or_loss_flag => 'N'
55163 , p_gl_transfer_mode_code => 'S'
55164 , p_acct_entry_type_code => 'A'
55165 , p_switch_side_flag => 'Y'
55166 , p_merge_duplicate_code => 'N'
55167 );
55168 --
55169 l_acc_rev_natural_side_code := 'C'; -- 4262811
55170 --
55171 --
55172 -- set accounting line type info
55173 --
55174 xla_ae_lines_pkg.SetAcctLineType
55175 (p_component_type => l_component_type
55176 ,p_event_type_code => l_event_type_code
55177 ,p_line_definition_owner_code => l_line_definition_owner_code
55178 ,p_line_definition_code => l_line_definition_code
55179 ,p_accounting_line_code => l_component_code
55180 ,p_accounting_line_type_code => l_component_type_code
55181 ,p_accounting_line_appl_id => l_component_appl_id
55182 ,p_amb_context_code => l_amb_context_code
55183 ,p_entity_code => l_entity_code
55184 ,p_event_class_code => l_event_class_code);
55185 --
55186 -- set accounting class
55187 --
55188 xla_ae_lines_pkg.SetAcctClass(
55189 p_accounting_class_code => 'INTERORG_RECEIVABLES'
55190 , p_ae_header_id => l_ae_header_id
55191 );
55192
55193 --
55194 -- set rounding class
55195 --
55196 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55197 'INTERORG_RECEIVABLES';
55198
55199 --
55200 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55201 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55202 --
55203 -- bulk performance
55204 --
55205 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55206
55207 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55208 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55209
55210 -- 4955764
55211 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55212 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55213
55214 -- 4458381 Public Sector Enh
55215
55216 --
55217 -- set accounting attributes for the line type
55218 --
55219 l_entered_amt_idx := 3;
55220 l_accted_amt_idx := 8;
55221 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55222 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55223 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
55224 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
55225 l_rec_acct_attrs.array_char_value(2) := p_source_12;
55226 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
55227 l_rec_acct_attrs.array_num_value(3) := p_source_18;
55228 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
55229 l_rec_acct_attrs.array_char_value(4) := p_source_15;
55230 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
55231 l_rec_acct_attrs.array_date_value(5) := p_source_19;
55232 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
55233 l_rec_acct_attrs.array_num_value(6) := p_source_20;
55234 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
55235 l_rec_acct_attrs.array_char_value(7) := p_source_21;
55236 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
55237 l_rec_acct_attrs.array_num_value(8) := p_source_22;
55238
55239 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55240 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55241
55242 ---------------------------------------------------------------------------------------------------------------
55243 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55244 ---------------------------------------------------------------------------------------------------------------
55245 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55246
55247 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55248 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55249
55250 IF xla_accounting_cache_pkg.GetValueChar
55251 (p_source_code => 'LEDGER_CATEGORY_CODE'
55252 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55253 AND l_bflow_method_code = 'PRIOR_ENTRY'
55254 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55255 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55256 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55257 )
55258 THEN
55259 xla_ae_lines_pkg.BflowUpgEntry
55260 (p_business_method_code => l_bflow_method_code
55261 ,p_business_class_code => l_bflow_class_code
55262 ,p_balance_type => l_balance_type_code);
55263 ELSE
55264 NULL;
55265 -- No business flow processing for business flow method of NONE.
55266 END IF;
55267
55268 --
55269 -- call analytical criteria
55270 --
55271
55272 --
55273 -- call description
55274 --
55275 -- No description or it is inherited.
55276 --
55277 -- call ADRs
55278 -- Bug 4922099
55279 --
55280 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55281 (NVL(l_actual_upg_option, 'N') = 'O') OR
55282 (NVL(l_enc_upg_option, 'N') = 'O')
55283 )
55284 THEN
55285 NULL;
55286 --
55287 --
55288
55289 l_ccid := AcctDerRule_4(
55290 p_application_id => p_application_id
55291 , p_ae_header_id => l_ae_header_id
55292 , p_source_4 => p_source_4
55293 , x_transaction_coa_id => l_adr_transaction_coa_id
55294 , x_accounting_coa_id => l_adr_accounting_coa_id
55295 , x_value_type_code => l_adr_value_type_code
55296 , p_side => 'NA'
55297 );
55298
55299 xla_ae_lines_pkg.set_ccid(
55300 p_code_combination_id => l_ccid
55301 , p_value_type_code => l_adr_value_type_code
55302 , p_transaction_coa_id => l_adr_transaction_coa_id
55303 , p_accounting_coa_id => l_adr_accounting_coa_id
55304 , p_adr_code => 'CST_DEFAULT'
55305 , p_adr_type_code => 'S'
55306 , p_component_type => l_component_type
55307 , p_component_code => l_component_code
55308 , p_component_type_code => l_component_type_code
55309 , p_component_appl_id => l_component_appl_id
55310 , p_amb_context_code => l_amb_context_code
55311 , p_side => 'NA'
55312 );
55313
55314
55315 --
55316 --
55317 END IF;
55318 --
55319 -- Bug 4922099
55320 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55321 (NVL(l_enc_upg_option, 'N') = 'O')
55322 ) AND
55323 (l_bflow_method_code = 'PRIOR_ENTRY')
55324 )
55325 THEN
55326 IF
55327 --
55328 1 = 2
55329 --
55330 THEN
55331 xla_accounting_err_pkg.build_message
55332 (p_appli_s_name => 'XLA'
55333 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55334 ,p_token_1 => 'LINE_NUMBER'
55335 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
55336 ,p_token_2 => 'LINE_TYPE_NAME'
55337 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
55338 l_component_type
55339 ,l_component_code
55340 ,l_component_type_code
55341 ,l_component_appl_id
55342 ,l_amb_context_code
55343 ,l_entity_code
55344 ,l_event_class_code
55345 )
55346 ,p_token_3 => 'OWNER'
55347 ,p_value_3 => xla_lookups_pkg.get_meaning(
55348 p_lookup_type => 'XLA_OWNER_TYPE'
55349 ,p_lookup_code => l_component_type_code
55350 )
55351 ,p_token_4 => 'PRODUCT_NAME'
55352 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55353 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55354 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55355 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55356 ,p_ae_header_id => NULL
55357 );
55358
55359 IF (C_LEVEL_ERROR>= g_log_level) THEN
55360 trace
55361 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55362 ,p_level => C_LEVEL_ERROR
55363 ,p_module => l_log_module);
55364 END IF;
55365 END IF;
55366 END IF;
55367 --
55368 --
55369 ------------------------------------------------------------------------------------------------
55370 -- 4219869 Business Flow
55371 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55372 -- Prior Entry. Currently, the following code is always generated.
55373 ------------------------------------------------------------------------------------------------
55374 XLA_AE_LINES_PKG.ValidateCurrentLine;
55375
55376 ------------------------------------------------------------------------------------
55377 -- 4219869 Business Flow
55378 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55379 ------------------------------------------------------------------------------------
55380 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55381
55382 ----------------------------------------------------------------------------------
55383 -- 4219869 Business Flow
55384 -- Update journal entry status -- Need to generate this within IF <condition>
55385 ----------------------------------------------------------------------------------
55386 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55387 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55388 ,p_balance_type_code => l_balance_type_code
55389 );
55390
55391 -------------------------------------------------------------------------------------------
55392 -- 4262811 - Generate the Accrual Reversal lines
55393 -------------------------------------------------------------------------------------------
55394 BEGIN
55395 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55396 (g_array_event(p_event_id).array_value_num('header_index'));
55397 IF l_acc_rev_flag IS NULL THEN
55398 l_acc_rev_flag := 'N';
55399 END IF;
55400 EXCEPTION
55401 WHEN OTHERS THEN
55402 l_acc_rev_flag := 'N';
55403 END;
55404 --
55405 IF (l_acc_rev_flag = 'Y') THEN
55406
55407 -- 4645092 ------------------------------------------------------------------------------
55408 -- To allow MPA report to determine if it should generate report process
55409 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55410 ------------------------------------------------------------------------------------------
55411
55412 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55413 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55414 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
55415 -- call ADRs
55416 -- Bug 4922099
55417 --
55418 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55419 (NVL(l_actual_upg_option, 'N') = 'O') OR
55420 (NVL(l_enc_upg_option, 'N') = 'O')
55421 )
55422 THEN
55423 NULL;
55424 --
55425 --
55426
55427 l_ccid := AcctDerRule_4(
55428 p_application_id => p_application_id
55429 , p_ae_header_id => l_ae_header_id
55430 , p_source_4 => p_source_4
55431 , x_transaction_coa_id => l_adr_transaction_coa_id
55432 , x_accounting_coa_id => l_adr_accounting_coa_id
55433 , x_value_type_code => l_adr_value_type_code
55434 , p_side => 'NA'
55435 );
55436
55437 xla_ae_lines_pkg.set_ccid(
55438 p_code_combination_id => l_ccid
55439 , p_value_type_code => l_adr_value_type_code
55440 , p_transaction_coa_id => l_adr_transaction_coa_id
55441 , p_accounting_coa_id => l_adr_accounting_coa_id
55442 , p_adr_code => 'CST_DEFAULT'
55443 , p_adr_type_code => 'S'
55444 , p_component_type => l_component_type
55445 , p_component_code => l_component_code
55446 , p_component_type_code => l_component_type_code
55447 , p_component_appl_id => l_component_appl_id
55448 , p_amb_context_code => l_amb_context_code
55449 , p_side => 'NA'
55450 );
55451
55452
55453 --
55454 --
55455 END IF;
55456
55457 --
55458 -- Update the line information that should be overwritten
55459 --
55460 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55461 p_header_num => 1);
55462 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
55463
55464 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55465
55466 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
55467 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55468 END IF;
55469
55470 --
55471 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55472 --
55473 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55474 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
55475 ELSE
55476 ---------------------------------------------------------------------------------------------------
55477 -- 4262811a Switch Sign
55478 ---------------------------------------------------------------------------------------------------
55479 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
55480 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55481 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55482 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55483 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55484 -- 5132302
55485 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55486 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55487
55488 END IF;
55489
55490 -- 4955764
55491 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55492 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55493
55494
55495 XLA_AE_LINES_PKG.ValidateCurrentLine;
55496 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55497
55498 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55499 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55500 ,p_balance_type_code => l_balance_type_code);
55501
55502 END IF;
55503
55504 -----------------------------------------------------------------------------------------
55505 -- 4262811 Multiperiod Accounting
55506 -----------------------------------------------------------------------------------------
55507 -- No MPA option is assigned.
55508
55509
55510 END IF;
55511 END IF;
55512 --
55513
55514 --
55515 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55516 trace
55517 (p_msg => 'END of AcctLineType_102'
55518 ,p_level => C_LEVEL_PROCEDURE
55519 ,p_module => l_log_module);
55520 END IF;
55521 --
55522 EXCEPTION
55523 WHEN xla_exceptions_pkg.application_exception THEN
55524 RAISE;
55525 WHEN OTHERS THEN
55526 xla_exceptions_pkg.raise_message
55527 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_102');
55528 END AcctLineType_102;
55529 --
55530
55531 ---------------------------------------
55532 --
55533 -- PRIVATE FUNCTION
55534 -- AcctLineType_103
55535 --
55536 ---------------------------------------
55537 PROCEDURE AcctLineType_103 (
55538 p_application_id IN NUMBER
55539 ,p_event_id IN NUMBER
55540 ,p_calculate_acctd_flag IN VARCHAR2
55541 ,p_calculate_g_l_flag IN VARCHAR2
55542 ,p_actual_flag IN OUT VARCHAR2
55543 ,p_balance_type_code OUT VARCHAR2
55544 ,p_gain_or_loss_ref OUT VARCHAR2
55545
55546 --Cost Management Default Account
55547 , p_source_4 IN NUMBER
55548 --Applied to Application ID
55549 , p_source_6 IN NUMBER
55550 --Applied to Distribution Link Type
55551 , p_source_7 IN VARCHAR2
55552 --Applied to Entity Code
55553 , p_source_8 IN VARCHAR2
55554 --DISTRIBUTION_IDENTIFIER
55555 , p_source_11 IN NUMBER
55556 --Distribution Type
55557 , p_source_12 IN VARCHAR2
55558 , p_source_12_meaning IN VARCHAR2
55559 --Encumbrance Reversal Amount Entered
55560 , p_source_14 IN NUMBER
55561 --Entered Currency Code
55562 , p_source_15 IN VARCHAR2
55563 --Transaction Encumbrance Reversal Amount
55564 , p_source_16 IN NUMBER
55565 --Entered Amount
55566 , p_source_18 IN NUMBER
55567 --Currency Conversion Date
55568 , p_source_19 IN DATE
55569 --Currency Conversion Rate
55570 , p_source_20 IN NUMBER
55571 --Currency Conversion Type
55572 , p_source_21 IN VARCHAR2
55573 --Accounted Amount
55574 , p_source_22 IN NUMBER
55575 --Accounting Line Type
55576 , p_source_24 IN NUMBER
55577 --Costing Encumbrance Upgrade Option
55578 , p_source_27 IN VARCHAR2
55579 --TXN_PO_DISTRIBUTION_ID
55580 , p_source_28 IN NUMBER
55581 --TXN_PO_HEADER_ID
55582 , p_source_29 IN NUMBER
55583 --Requisition Budget Account
55584 , p_source_30 IN NUMBER
55585 --Requisition Encumbrance Type Identifier
55586 , p_source_31 IN NUMBER
55587 )
55588 IS
55589
55590 l_component_type VARCHAR2(80);
55591 l_component_code VARCHAR2(30);
55592 l_component_type_code VARCHAR2(1);
55593 l_component_appl_id INTEGER;
55594 l_amb_context_code VARCHAR2(30);
55595 l_entity_code VARCHAR2(30);
55596 l_event_class_code VARCHAR2(30);
55597 l_ae_header_id NUMBER;
55598 l_event_type_code VARCHAR2(30);
55599 l_line_definition_code VARCHAR2(30);
55600 l_line_definition_owner_code VARCHAR2(1);
55601 --
55602 -- adr variables
55603 l_segment VARCHAR2(30);
55604 l_ccid NUMBER;
55605 l_adr_transaction_coa_id NUMBER;
55606 l_adr_accounting_coa_id NUMBER;
55607 l_adr_flexfield_segment_code VARCHAR2(30);
55608 l_adr_flex_value_set_id NUMBER;
55609 l_adr_value_type_code VARCHAR2(30);
55610 l_adr_value_combination_id NUMBER;
55611 l_adr_value_segment_code VARCHAR2(30);
55612
55613 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
55614 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
55615 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
55616 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
55617
55618 -- 4262811 Variables ------------------------------------------------------------------------------------------
55619 l_entered_amt_idx NUMBER;
55620 l_accted_amt_idx NUMBER;
55621 l_acc_rev_flag VARCHAR2(1);
55622 l_accrual_line_num NUMBER;
55623 l_tmp_amt NUMBER;
55624 l_acc_rev_natural_side_code VARCHAR2(1);
55625
55626 l_num_entries NUMBER;
55627 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
55628 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
55629 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
55630 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
55631 l_recog_line_1 NUMBER;
55632 l_recog_line_2 NUMBER;
55633
55634 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
55635 l_bflow_applied_to_amt NUMBER; -- 5132302
55636 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
55637
55638 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55639
55640 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
55641 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
55642
55643 ---------------------------------------------------------------------------------------------------------------
55644
55645
55646 --
55647 -- bulk performance
55648 --
55649 l_balance_type_code VARCHAR2(1);
55650 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
55651 l_log_module VARCHAR2(240);
55652
55653 --
55654 -- Upgrade strategy
55655 --
55656 l_actual_upg_option VARCHAR2(1);
55657 l_enc_upg_option VARCHAR2(1);
55658
55659 --
55660 BEGIN
55661 --
55662 IF g_log_enabled THEN
55663 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
55664 END IF;
55665 --
55666 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55667
55668 trace
55669 (p_msg => 'BEGIN of AcctLineType_103'
55670 ,p_level => C_LEVEL_PROCEDURE
55671 ,p_module => l_log_module);
55672
55673 END IF;
55674 --
55675 l_component_type := 'AMB_JLT';
55676 l_component_code := 'INTERORG_RECEIVABLES';
55677 l_component_type_code := 'S';
55678 l_component_appl_id := 707;
55679 l_amb_context_code := 'DEFAULT';
55680 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
55681 l_event_class_code := 'DIR_INTERORG_RCPT';
55682 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
55683 l_line_definition_owner_code := 'S';
55684 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
55685 --
55686 l_balance_type_code := 'A';
55687 l_segment := NULL;
55688 l_ccid := NULL;
55689 l_adr_transaction_coa_id := NULL;
55690 l_adr_accounting_coa_id := NULL;
55691 l_adr_flexfield_segment_code := NULL;
55692 l_adr_flex_value_set_id := NULL;
55693 l_adr_value_type_code := NULL;
55694 l_adr_value_combination_id := NULL;
55695 l_adr_value_segment_code := NULL;
55696
55697 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
55698 l_bflow_class_code := ''; -- 4219869 Business Flow
55699 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
55700 l_budgetary_control_flag := 'N';
55701
55702 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55703 l_bflow_applied_to_amt := NULL; -- 5132302
55704 l_entered_amt_idx := NULL; -- 4262811
55705 l_accted_amt_idx := NULL; -- 4262811
55706 l_acc_rev_flag := NULL; -- 4262811
55707 l_accrual_line_num := NULL; -- 4262811
55708 l_tmp_amt := NULL; -- 4262811
55709 --
55710
55711 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55712 l_balance_type_code <> 'B' THEN
55713 IF NVL(p_source_24,9E125) = 10
55714 THEN
55715
55716 --
55717 XLA_AE_LINES_PKG.SetNewLine;
55718
55719 p_balance_type_code := l_balance_type_code;
55720 -- set the flag so later we will know whether the gain loss line needs to be created
55721
55722 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55723 p_actual_flag :='A';
55724 END IF;
55725
55726 --
55727 -- bulk performance
55728 --
55729 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55730 p_header_num => 0); -- 4262811
55731 --
55732 -- set accounting line options
55733 --
55734 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55735 p_natural_side_code => 'D'
55736 , p_gain_or_loss_flag => 'N'
55737 , p_gl_transfer_mode_code => 'S'
55738 , p_acct_entry_type_code => 'A'
55739 , p_switch_side_flag => 'Y'
55740 , p_merge_duplicate_code => 'N'
55741 );
55742 --
55743 l_acc_rev_natural_side_code := 'C'; -- 4262811
55744 --
55745 --
55746 -- set accounting line type info
55747 --
55748 xla_ae_lines_pkg.SetAcctLineType
55749 (p_component_type => l_component_type
55750 ,p_event_type_code => l_event_type_code
55751 ,p_line_definition_owner_code => l_line_definition_owner_code
55752 ,p_line_definition_code => l_line_definition_code
55753 ,p_accounting_line_code => l_component_code
55754 ,p_accounting_line_type_code => l_component_type_code
55755 ,p_accounting_line_appl_id => l_component_appl_id
55756 ,p_amb_context_code => l_amb_context_code
55757 ,p_entity_code => l_entity_code
55758 ,p_event_class_code => l_event_class_code);
55759 --
55760 -- set accounting class
55761 --
55762 xla_ae_lines_pkg.SetAcctClass(
55763 p_accounting_class_code => 'INTERORG_RECEIVABLES'
55764 , p_ae_header_id => l_ae_header_id
55765 );
55766
55767 --
55768 -- set rounding class
55769 --
55770 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55771 'INTERORG_RECEIVABLES';
55772
55773 --
55774 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55775 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55776 --
55777 -- bulk performance
55778 --
55779 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55780
55781 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55782 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55783
55784 -- 4955764
55785 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55786 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55787
55788 -- 4458381 Public Sector Enh
55789
55790 --
55791 -- set accounting attributes for the line type
55792 --
55793 l_entered_amt_idx := 17;
55794 l_accted_amt_idx := 22;
55795 l_bflow_applied_to_amt_idx := NULL; -- 5132302
55796 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
55797 l_rec_acct_attrs.array_num_value(1) := p_source_6;
55798 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
55799 l_rec_acct_attrs.array_char_value(2) := p_source_7;
55800 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
55801 l_rec_acct_attrs.array_char_value(3) := p_source_8;
55802 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
55803 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
55804 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
55805 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
55806 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
55807 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
55808 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
55809 l_rec_acct_attrs.array_char_value(7) := p_source_12;
55810 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
55811 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
55812 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
55813 l_rec_acct_attrs.array_num_value(9) := p_source_14;
55814 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
55815 l_rec_acct_attrs.array_char_value(10) := p_source_15;
55816 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
55817 l_rec_acct_attrs.array_num_value(11) := p_source_16;
55818 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
55819 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
55820 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
55821 l_rec_acct_attrs.array_num_value(13) := p_source_14;
55822 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
55823 l_rec_acct_attrs.array_char_value(14) := p_source_15;
55824 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
55825 l_rec_acct_attrs.array_num_value(15) := p_source_16;
55826 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
55827 l_rec_acct_attrs.array_char_value(16) := p_source_27;
55828 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
55829 l_rec_acct_attrs.array_num_value(17) := p_source_18;
55830 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
55831 l_rec_acct_attrs.array_char_value(18) := p_source_15;
55832 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
55833 l_rec_acct_attrs.array_date_value(19) := p_source_19;
55834 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
55835 l_rec_acct_attrs.array_num_value(20) := p_source_20;
55836 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
55837 l_rec_acct_attrs.array_char_value(21) := p_source_21;
55838 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
55839 l_rec_acct_attrs.array_num_value(22) := p_source_22;
55840 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
55841 l_rec_acct_attrs.array_num_value(23) := p_source_31;
55842 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
55843 l_rec_acct_attrs.array_num_value(24) := p_source_31;
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_000005_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 := 'FOB_SHIP_SENDER_SHIP';
56268 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
56269 l_line_definition_owner_code := 'S';
56270 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
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_000005_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_RECEIVABLES';
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 := 'DIR_INTERORG_SHIP';
56822 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
56823 l_line_definition_owner_code := 'S';
56824 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
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) = 10
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_RECEIVABLES'
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_RECEIVABLES';
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_000005_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_RECEIVABLES';
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_SHIP';
57377 l_line_definition_owner_code := 'S';
57378 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
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) = 10
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_RECEIVABLES'
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_RECEIVABLES';
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_000005_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_RECEIVABLES';
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 := 'USER_DEFINE';
57930 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
57931 l_line_definition_owner_code := 'S';
57932 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
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) = 10
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_RECEIVABLES'
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_RECEIVABLES';
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_000005_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_RECEIVABLES';
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_RCPT_NO_TP';
58485 l_line_definition_owner_code := 'S';
58486 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_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) = 10
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_RECEIVABLES'
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_RECEIVABLES';
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_000005_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 := 'USER_DEFINE';
59038 l_event_type_code := 'UDIR_INTERORG_RCPT';
59039 l_line_definition_owner_code := 'S';
59040 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
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_000005_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 := 'UFOB_SHIP_SENDER_SHIP_TP';
59593 l_line_definition_owner_code := 'S';
59594 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
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_000005_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';
60147 l_line_definition_owner_code := 'S';
60148 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
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_000005_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 := 'UDIR_INTERORG_RCPT_NO_TP';
60701 l_line_definition_owner_code := 'S';
60702 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
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_000005_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 --DISTRIBUTION_IDENTIFIER
61141 , p_source_11 IN NUMBER
61142 --Distribution Type
61143 , p_source_12 IN VARCHAR2
61144 , p_source_12_meaning IN VARCHAR2
61145 --Entered Currency Code
61146 , p_source_15 IN VARCHAR2
61147 --Entered Amount
61148 , p_source_18 IN NUMBER
61149 --Currency Conversion Date
61150 , p_source_19 IN DATE
61151 --Currency Conversion Rate
61152 , p_source_20 IN NUMBER
61153 --Currency Conversion Type
61154 , p_source_21 IN VARCHAR2
61155 --Accounted Amount
61156 , p_source_22 IN NUMBER
61157 --Accounting Line Type
61158 , p_source_24 IN NUMBER
61159 )
61160 IS
61161
61162 l_component_type VARCHAR2(80);
61163 l_component_code VARCHAR2(30);
61164 l_component_type_code VARCHAR2(1);
61165 l_component_appl_id INTEGER;
61166 l_amb_context_code VARCHAR2(30);
61167 l_entity_code VARCHAR2(30);
61168 l_event_class_code VARCHAR2(30);
61169 l_ae_header_id NUMBER;
61170 l_event_type_code VARCHAR2(30);
61171 l_line_definition_code VARCHAR2(30);
61172 l_line_definition_owner_code VARCHAR2(1);
61173 --
61174 -- adr variables
61175 l_segment VARCHAR2(30);
61176 l_ccid NUMBER;
61177 l_adr_transaction_coa_id NUMBER;
61178 l_adr_accounting_coa_id NUMBER;
61179 l_adr_flexfield_segment_code VARCHAR2(30);
61180 l_adr_flex_value_set_id NUMBER;
61181 l_adr_value_type_code VARCHAR2(30);
61182 l_adr_value_combination_id NUMBER;
61183 l_adr_value_segment_code VARCHAR2(30);
61184
61185 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
61186 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
61187 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
61188 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
61189
61190 -- 4262811 Variables ------------------------------------------------------------------------------------------
61191 l_entered_amt_idx NUMBER;
61192 l_accted_amt_idx NUMBER;
61193 l_acc_rev_flag VARCHAR2(1);
61194 l_accrual_line_num NUMBER;
61195 l_tmp_amt NUMBER;
61196 l_acc_rev_natural_side_code VARCHAR2(1);
61197
61198 l_num_entries NUMBER;
61199 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
61200 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
61201 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
61202 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
61203 l_recog_line_1 NUMBER;
61204 l_recog_line_2 NUMBER;
61205
61206 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
61207 l_bflow_applied_to_amt NUMBER; -- 5132302
61208 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
61209
61210 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61211
61212 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
61213 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
61214
61215 ---------------------------------------------------------------------------------------------------------------
61216
61217
61218 --
61219 -- bulk performance
61220 --
61221 l_balance_type_code VARCHAR2(1);
61222 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
61223 l_log_module VARCHAR2(240);
61224
61225 --
61226 -- Upgrade strategy
61227 --
61228 l_actual_upg_option VARCHAR2(1);
61229 l_enc_upg_option VARCHAR2(1);
61230
61231 --
61232 BEGIN
61233 --
61234 IF g_log_enabled THEN
61235 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_113';
61236 END IF;
61237 --
61238 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61239
61240 trace
61241 (p_msg => 'BEGIN of AcctLineType_113'
61242 ,p_level => C_LEVEL_PROCEDURE
61243 ,p_module => l_log_module);
61244
61245 END IF;
61246 --
61247 l_component_type := 'AMB_JLT';
61248 l_component_code := 'INTERORG_TRANSFER_CREDIT';
61249 l_component_type_code := 'S';
61250 l_component_appl_id := 707;
61251 l_amb_context_code := 'DEFAULT';
61252 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
61253 l_event_class_code := 'USER_DEFINE';
61254 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
61255 l_line_definition_owner_code := 'S';
61256 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
61257 --
61258 l_balance_type_code := 'A';
61259 l_segment := NULL;
61260 l_ccid := NULL;
61261 l_adr_transaction_coa_id := NULL;
61262 l_adr_accounting_coa_id := NULL;
61263 l_adr_flexfield_segment_code := NULL;
61264 l_adr_flex_value_set_id := NULL;
61265 l_adr_value_type_code := NULL;
61266 l_adr_value_combination_id := NULL;
61267 l_adr_value_segment_code := NULL;
61268
61269 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
61270 l_bflow_class_code := ''; -- 4219869 Business Flow
61271 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
61272 l_budgetary_control_flag := 'N';
61273
61274 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61275 l_bflow_applied_to_amt := NULL; -- 5132302
61276 l_entered_amt_idx := NULL; -- 4262811
61277 l_accted_amt_idx := NULL; -- 4262811
61278 l_acc_rev_flag := NULL; -- 4262811
61279 l_accrual_line_num := NULL; -- 4262811
61280 l_tmp_amt := NULL; -- 4262811
61281 --
61282
61283 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61284 l_balance_type_code <> 'B' THEN
61285 IF NVL(p_source_24,9E125) = 11
61286 THEN
61287
61288 --
61289 XLA_AE_LINES_PKG.SetNewLine;
61290
61291 p_balance_type_code := l_balance_type_code;
61292 -- set the flag so later we will know whether the gain loss line needs to be created
61293
61294 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61295 p_actual_flag :='A';
61296 END IF;
61297
61298 --
61299 -- bulk performance
61300 --
61301 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61302 p_header_num => 0); -- 4262811
61303 --
61304 -- set accounting line options
61305 --
61306 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61307 p_natural_side_code => 'D'
61308 , p_gain_or_loss_flag => 'N'
61309 , p_gl_transfer_mode_code => 'S'
61310 , p_acct_entry_type_code => 'A'
61311 , p_switch_side_flag => 'Y'
61312 , p_merge_duplicate_code => 'N'
61313 );
61314 --
61315 l_acc_rev_natural_side_code := 'C'; -- 4262811
61316 --
61317 --
61318 -- set accounting line type info
61319 --
61320 xla_ae_lines_pkg.SetAcctLineType
61321 (p_component_type => l_component_type
61322 ,p_event_type_code => l_event_type_code
61323 ,p_line_definition_owner_code => l_line_definition_owner_code
61324 ,p_line_definition_code => l_line_definition_code
61325 ,p_accounting_line_code => l_component_code
61326 ,p_accounting_line_type_code => l_component_type_code
61327 ,p_accounting_line_appl_id => l_component_appl_id
61328 ,p_amb_context_code => l_amb_context_code
61329 ,p_entity_code => l_entity_code
61330 ,p_event_class_code => l_event_class_code);
61331 --
61332 -- set accounting class
61333 --
61334 xla_ae_lines_pkg.SetAcctClass(
61335 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
61336 , p_ae_header_id => l_ae_header_id
61337 );
61338
61339 --
61340 -- set rounding class
61341 --
61342 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61343 'INTERORG_TRANSFER_CREDIT';
61344
61345 --
61346 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61347 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61348 --
61349 -- bulk performance
61350 --
61351 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61352
61353 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61354 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61355
61356 -- 4955764
61357 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61358 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61359
61360 -- 4458381 Public Sector Enh
61361
61362 --
61363 -- set accounting attributes for the line type
61364 --
61365 l_entered_amt_idx := 3;
61366 l_accted_amt_idx := 8;
61367 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61368 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61369 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
61370 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61371 l_rec_acct_attrs.array_char_value(2) := p_source_12;
61372 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61373 l_rec_acct_attrs.array_num_value(3) := p_source_18;
61374 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61375 l_rec_acct_attrs.array_char_value(4) := p_source_15;
61376 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61377 l_rec_acct_attrs.array_date_value(5) := p_source_19;
61378 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61379 l_rec_acct_attrs.array_num_value(6) := p_source_20;
61380 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61381 l_rec_acct_attrs.array_char_value(7) := p_source_21;
61382 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61383 l_rec_acct_attrs.array_num_value(8) := p_source_22;
61384
61385 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61386 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61387
61388 ---------------------------------------------------------------------------------------------------------------
61389 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61390 ---------------------------------------------------------------------------------------------------------------
61391 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61392
61393 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61394 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61395
61396 IF xla_accounting_cache_pkg.GetValueChar
61397 (p_source_code => 'LEDGER_CATEGORY_CODE'
61398 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61399 AND l_bflow_method_code = 'PRIOR_ENTRY'
61400 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61401 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61402 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61403 )
61404 THEN
61405 xla_ae_lines_pkg.BflowUpgEntry
61406 (p_business_method_code => l_bflow_method_code
61407 ,p_business_class_code => l_bflow_class_code
61408 ,p_balance_type => l_balance_type_code);
61409 ELSE
61410 NULL;
61411 -- No business flow processing for business flow method of NONE.
61412 END IF;
61413
61414 --
61415 -- call analytical criteria
61416 --
61417
61418 --
61419 -- call description
61420 --
61421 -- No description or it is inherited.
61422 --
61423 -- call ADRs
61424 -- Bug 4922099
61425 --
61426 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61427 (NVL(l_actual_upg_option, 'N') = 'O') OR
61428 (NVL(l_enc_upg_option, 'N') = 'O')
61429 )
61430 THEN
61431 NULL;
61432 --
61433 --
61434
61435 l_ccid := AcctDerRule_4(
61436 p_application_id => p_application_id
61437 , p_ae_header_id => l_ae_header_id
61438 , p_source_4 => p_source_4
61439 , x_transaction_coa_id => l_adr_transaction_coa_id
61440 , x_accounting_coa_id => l_adr_accounting_coa_id
61441 , x_value_type_code => l_adr_value_type_code
61442 , p_side => 'NA'
61443 );
61444
61445 xla_ae_lines_pkg.set_ccid(
61446 p_code_combination_id => l_ccid
61447 , p_value_type_code => l_adr_value_type_code
61448 , p_transaction_coa_id => l_adr_transaction_coa_id
61449 , p_accounting_coa_id => l_adr_accounting_coa_id
61450 , p_adr_code => 'CST_DEFAULT'
61451 , p_adr_type_code => 'S'
61452 , p_component_type => l_component_type
61453 , p_component_code => l_component_code
61454 , p_component_type_code => l_component_type_code
61455 , p_component_appl_id => l_component_appl_id
61456 , p_amb_context_code => l_amb_context_code
61457 , p_side => 'NA'
61458 );
61459
61460
61461 --
61462 --
61463 END IF;
61464 --
61465 -- Bug 4922099
61466 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61467 (NVL(l_enc_upg_option, 'N') = 'O')
61468 ) AND
61469 (l_bflow_method_code = 'PRIOR_ENTRY')
61470 )
61471 THEN
61472 IF
61473 --
61474 1 = 2
61475 --
61476 THEN
61477 xla_accounting_err_pkg.build_message
61478 (p_appli_s_name => 'XLA'
61479 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61480 ,p_token_1 => 'LINE_NUMBER'
61481 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
61482 ,p_token_2 => 'LINE_TYPE_NAME'
61483 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
61484 l_component_type
61485 ,l_component_code
61486 ,l_component_type_code
61487 ,l_component_appl_id
61488 ,l_amb_context_code
61489 ,l_entity_code
61490 ,l_event_class_code
61491 )
61492 ,p_token_3 => 'OWNER'
61493 ,p_value_3 => xla_lookups_pkg.get_meaning(
61494 p_lookup_type => 'XLA_OWNER_TYPE'
61495 ,p_lookup_code => l_component_type_code
61496 )
61497 ,p_token_4 => 'PRODUCT_NAME'
61498 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61499 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61500 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61501 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61502 ,p_ae_header_id => NULL
61503 );
61504
61505 IF (C_LEVEL_ERROR>= g_log_level) THEN
61506 trace
61507 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61508 ,p_level => C_LEVEL_ERROR
61509 ,p_module => l_log_module);
61510 END IF;
61511 END IF;
61512 END IF;
61513 --
61514 --
61515 ------------------------------------------------------------------------------------------------
61516 -- 4219869 Business Flow
61517 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61518 -- Prior Entry. Currently, the following code is always generated.
61519 ------------------------------------------------------------------------------------------------
61520 XLA_AE_LINES_PKG.ValidateCurrentLine;
61521
61522 ------------------------------------------------------------------------------------
61523 -- 4219869 Business Flow
61524 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61525 ------------------------------------------------------------------------------------
61526 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61527
61528 ----------------------------------------------------------------------------------
61529 -- 4219869 Business Flow
61530 -- Update journal entry status -- Need to generate this within IF <condition>
61531 ----------------------------------------------------------------------------------
61532 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61533 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61534 ,p_balance_type_code => l_balance_type_code
61535 );
61536
61537 -------------------------------------------------------------------------------------------
61538 -- 4262811 - Generate the Accrual Reversal lines
61539 -------------------------------------------------------------------------------------------
61540 BEGIN
61541 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61542 (g_array_event(p_event_id).array_value_num('header_index'));
61543 IF l_acc_rev_flag IS NULL THEN
61544 l_acc_rev_flag := 'N';
61545 END IF;
61546 EXCEPTION
61547 WHEN OTHERS THEN
61548 l_acc_rev_flag := 'N';
61549 END;
61550 --
61551 IF (l_acc_rev_flag = 'Y') THEN
61552
61553 -- 4645092 ------------------------------------------------------------------------------
61554 -- To allow MPA report to determine if it should generate report process
61555 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61556 ------------------------------------------------------------------------------------------
61557
61558 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61559 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61560 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
61561 -- call ADRs
61562 -- Bug 4922099
61563 --
61564 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61565 (NVL(l_actual_upg_option, 'N') = 'O') OR
61566 (NVL(l_enc_upg_option, 'N') = 'O')
61567 )
61568 THEN
61569 NULL;
61570 --
61571 --
61572
61573 l_ccid := AcctDerRule_4(
61574 p_application_id => p_application_id
61575 , p_ae_header_id => l_ae_header_id
61576 , p_source_4 => p_source_4
61577 , x_transaction_coa_id => l_adr_transaction_coa_id
61578 , x_accounting_coa_id => l_adr_accounting_coa_id
61579 , x_value_type_code => l_adr_value_type_code
61580 , p_side => 'NA'
61581 );
61582
61583 xla_ae_lines_pkg.set_ccid(
61584 p_code_combination_id => l_ccid
61585 , p_value_type_code => l_adr_value_type_code
61586 , p_transaction_coa_id => l_adr_transaction_coa_id
61587 , p_accounting_coa_id => l_adr_accounting_coa_id
61588 , p_adr_code => 'CST_DEFAULT'
61589 , p_adr_type_code => 'S'
61590 , p_component_type => l_component_type
61591 , p_component_code => l_component_code
61592 , p_component_type_code => l_component_type_code
61593 , p_component_appl_id => l_component_appl_id
61594 , p_amb_context_code => l_amb_context_code
61595 , p_side => 'NA'
61596 );
61597
61598
61599 --
61600 --
61601 END IF;
61602
61603 --
61604 -- Update the line information that should be overwritten
61605 --
61606 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61607 p_header_num => 1);
61608 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
61609
61610 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61611
61612 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
61613 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61614 END IF;
61615
61616 --
61617 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61618 --
61619 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61620 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
61621 ELSE
61622 ---------------------------------------------------------------------------------------------------
61623 -- 4262811a Switch Sign
61624 ---------------------------------------------------------------------------------------------------
61625 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
61626 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61627 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61628 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61629 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61630 -- 5132302
61631 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61632 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61633
61634 END IF;
61635
61636 -- 4955764
61637 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61638 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61639
61640
61641 XLA_AE_LINES_PKG.ValidateCurrentLine;
61642 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61643
61644 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61645 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61646 ,p_balance_type_code => l_balance_type_code);
61647
61648 END IF;
61649
61650 -----------------------------------------------------------------------------------------
61651 -- 4262811 Multiperiod Accounting
61652 -----------------------------------------------------------------------------------------
61653 -- No MPA option is assigned.
61654
61655
61656 END IF;
61657 END IF;
61658 --
61659
61660 --
61661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61662 trace
61663 (p_msg => 'END of AcctLineType_113'
61664 ,p_level => C_LEVEL_PROCEDURE
61665 ,p_module => l_log_module);
61666 END IF;
61667 --
61668 EXCEPTION
61669 WHEN xla_exceptions_pkg.application_exception THEN
61670 RAISE;
61671 WHEN OTHERS THEN
61672 xla_exceptions_pkg.raise_message
61673 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_113');
61674 END AcctLineType_113;
61675 --
61676
61677 ---------------------------------------
61678 --
61679 -- PRIVATE FUNCTION
61680 -- AcctLineType_114
61681 --
61682 ---------------------------------------
61683 PROCEDURE AcctLineType_114 (
61684 p_application_id IN NUMBER
61685 ,p_event_id IN NUMBER
61686 ,p_calculate_acctd_flag IN VARCHAR2
61687 ,p_calculate_g_l_flag IN VARCHAR2
61688 ,p_actual_flag IN OUT VARCHAR2
61689 ,p_balance_type_code OUT VARCHAR2
61690 ,p_gain_or_loss_ref OUT VARCHAR2
61691
61692 --Cost Management Default Account
61693 , p_source_4 IN NUMBER
61694 --DISTRIBUTION_IDENTIFIER
61695 , p_source_11 IN NUMBER
61696 --Distribution Type
61697 , p_source_12 IN VARCHAR2
61698 , p_source_12_meaning IN VARCHAR2
61699 --Entered Currency Code
61700 , p_source_15 IN VARCHAR2
61701 --Entered Amount
61702 , p_source_18 IN NUMBER
61703 --Currency Conversion Date
61704 , p_source_19 IN DATE
61705 --Currency Conversion Rate
61706 , p_source_20 IN NUMBER
61707 --Currency Conversion Type
61708 , p_source_21 IN VARCHAR2
61709 --Accounted Amount
61710 , p_source_22 IN NUMBER
61711 --Accounting Line Type
61712 , p_source_24 IN NUMBER
61713 )
61714 IS
61715
61716 l_component_type VARCHAR2(80);
61717 l_component_code VARCHAR2(30);
61718 l_component_type_code VARCHAR2(1);
61719 l_component_appl_id INTEGER;
61720 l_amb_context_code VARCHAR2(30);
61721 l_entity_code VARCHAR2(30);
61722 l_event_class_code VARCHAR2(30);
61723 l_ae_header_id NUMBER;
61724 l_event_type_code VARCHAR2(30);
61725 l_line_definition_code VARCHAR2(30);
61726 l_line_definition_owner_code VARCHAR2(1);
61727 --
61728 -- adr variables
61729 l_segment VARCHAR2(30);
61730 l_ccid NUMBER;
61731 l_adr_transaction_coa_id NUMBER;
61732 l_adr_accounting_coa_id NUMBER;
61733 l_adr_flexfield_segment_code VARCHAR2(30);
61734 l_adr_flex_value_set_id NUMBER;
61735 l_adr_value_type_code VARCHAR2(30);
61736 l_adr_value_combination_id NUMBER;
61737 l_adr_value_segment_code VARCHAR2(30);
61738
61739 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
61740 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
61741 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
61742 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
61743
61744 -- 4262811 Variables ------------------------------------------------------------------------------------------
61745 l_entered_amt_idx NUMBER;
61746 l_accted_amt_idx NUMBER;
61747 l_acc_rev_flag VARCHAR2(1);
61748 l_accrual_line_num NUMBER;
61749 l_tmp_amt NUMBER;
61750 l_acc_rev_natural_side_code VARCHAR2(1);
61751
61752 l_num_entries NUMBER;
61753 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
61754 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
61755 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
61756 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
61757 l_recog_line_1 NUMBER;
61758 l_recog_line_2 NUMBER;
61759
61760 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
61761 l_bflow_applied_to_amt NUMBER; -- 5132302
61762 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
61763
61764 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61765
61766 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
61767 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
61768
61769 ---------------------------------------------------------------------------------------------------------------
61770
61771
61772 --
61773 -- bulk performance
61774 --
61775 l_balance_type_code VARCHAR2(1);
61776 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
61777 l_log_module VARCHAR2(240);
61778
61779 --
61780 -- Upgrade strategy
61781 --
61782 l_actual_upg_option VARCHAR2(1);
61783 l_enc_upg_option VARCHAR2(1);
61784
61785 --
61786 BEGIN
61787 --
61788 IF g_log_enabled THEN
61789 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_114';
61790 END IF;
61791 --
61792 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61793
61794 trace
61795 (p_msg => 'BEGIN of AcctLineType_114'
61796 ,p_level => C_LEVEL_PROCEDURE
61797 ,p_module => l_log_module);
61798
61799 END IF;
61800 --
61801 l_component_type := 'AMB_JLT';
61802 l_component_code := 'INTERORG_TRANSFER_CREDIT';
61803 l_component_type_code := 'S';
61804 l_component_appl_id := 707;
61805 l_amb_context_code := 'DEFAULT';
61806 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
61807 l_event_class_code := 'USER_DEFINE';
61808 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
61809 l_line_definition_owner_code := 'S';
61810 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
61811 --
61812 l_balance_type_code := 'A';
61813 l_segment := NULL;
61814 l_ccid := NULL;
61815 l_adr_transaction_coa_id := NULL;
61816 l_adr_accounting_coa_id := NULL;
61817 l_adr_flexfield_segment_code := NULL;
61818 l_adr_flex_value_set_id := NULL;
61819 l_adr_value_type_code := NULL;
61820 l_adr_value_combination_id := NULL;
61821 l_adr_value_segment_code := NULL;
61822
61823 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
61824 l_bflow_class_code := ''; -- 4219869 Business Flow
61825 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
61826 l_budgetary_control_flag := 'N';
61827
61828 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61829 l_bflow_applied_to_amt := NULL; -- 5132302
61830 l_entered_amt_idx := NULL; -- 4262811
61831 l_accted_amt_idx := NULL; -- 4262811
61832 l_acc_rev_flag := NULL; -- 4262811
61833 l_accrual_line_num := NULL; -- 4262811
61834 l_tmp_amt := NULL; -- 4262811
61835 --
61836
61837 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61838 l_balance_type_code <> 'B' THEN
61839 IF NVL(p_source_24,9E125) = 11
61840 THEN
61841
61842 --
61843 XLA_AE_LINES_PKG.SetNewLine;
61844
61845 p_balance_type_code := l_balance_type_code;
61846 -- set the flag so later we will know whether the gain loss line needs to be created
61847
61848 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61849 p_actual_flag :='A';
61850 END IF;
61851
61852 --
61853 -- bulk performance
61854 --
61855 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61856 p_header_num => 0); -- 4262811
61857 --
61858 -- set accounting line options
61859 --
61860 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61861 p_natural_side_code => 'D'
61862 , p_gain_or_loss_flag => 'N'
61863 , p_gl_transfer_mode_code => 'S'
61864 , p_acct_entry_type_code => 'A'
61865 , p_switch_side_flag => 'Y'
61866 , p_merge_duplicate_code => 'N'
61867 );
61868 --
61869 l_acc_rev_natural_side_code := 'C'; -- 4262811
61870 --
61871 --
61872 -- set accounting line type info
61873 --
61874 xla_ae_lines_pkg.SetAcctLineType
61875 (p_component_type => l_component_type
61876 ,p_event_type_code => l_event_type_code
61877 ,p_line_definition_owner_code => l_line_definition_owner_code
61878 ,p_line_definition_code => l_line_definition_code
61879 ,p_accounting_line_code => l_component_code
61880 ,p_accounting_line_type_code => l_component_type_code
61881 ,p_accounting_line_appl_id => l_component_appl_id
61882 ,p_amb_context_code => l_amb_context_code
61883 ,p_entity_code => l_entity_code
61884 ,p_event_class_code => l_event_class_code);
61885 --
61886 -- set accounting class
61887 --
61888 xla_ae_lines_pkg.SetAcctClass(
61889 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
61890 , p_ae_header_id => l_ae_header_id
61891 );
61892
61893 --
61894 -- set rounding class
61895 --
61896 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61897 'INTERORG_TRANSFER_CREDIT';
61898
61899 --
61900 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61901 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61902 --
61903 -- bulk performance
61904 --
61905 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61906
61907 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61908 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61909
61910 -- 4955764
61911 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61912 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61913
61914 -- 4458381 Public Sector Enh
61915
61916 --
61917 -- set accounting attributes for the line type
61918 --
61919 l_entered_amt_idx := 3;
61920 l_accted_amt_idx := 8;
61921 l_bflow_applied_to_amt_idx := NULL; -- 5132302
61922 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
61923 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
61924 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
61925 l_rec_acct_attrs.array_char_value(2) := p_source_12;
61926 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
61927 l_rec_acct_attrs.array_num_value(3) := p_source_18;
61928 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
61929 l_rec_acct_attrs.array_char_value(4) := p_source_15;
61930 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
61931 l_rec_acct_attrs.array_date_value(5) := p_source_19;
61932 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
61933 l_rec_acct_attrs.array_num_value(6) := p_source_20;
61934 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
61935 l_rec_acct_attrs.array_char_value(7) := p_source_21;
61936 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
61937 l_rec_acct_attrs.array_num_value(8) := p_source_22;
61938
61939 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61940 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61941
61942 ---------------------------------------------------------------------------------------------------------------
61943 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61944 ---------------------------------------------------------------------------------------------------------------
61945 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61946
61947 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61948 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61949
61950 IF xla_accounting_cache_pkg.GetValueChar
61951 (p_source_code => 'LEDGER_CATEGORY_CODE'
61952 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61953 AND l_bflow_method_code = 'PRIOR_ENTRY'
61954 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61955 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61956 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61957 )
61958 THEN
61959 xla_ae_lines_pkg.BflowUpgEntry
61960 (p_business_method_code => l_bflow_method_code
61961 ,p_business_class_code => l_bflow_class_code
61962 ,p_balance_type => l_balance_type_code);
61963 ELSE
61964 NULL;
61965 -- No business flow processing for business flow method of NONE.
61966 END IF;
61967
61968 --
61969 -- call analytical criteria
61970 --
61971
61972 --
61973 -- call description
61974 --
61975 -- No description or it is inherited.
61976 --
61977 -- call ADRs
61978 -- Bug 4922099
61979 --
61980 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61981 (NVL(l_actual_upg_option, 'N') = 'O') OR
61982 (NVL(l_enc_upg_option, 'N') = 'O')
61983 )
61984 THEN
61985 NULL;
61986 --
61987 --
61988
61989 l_ccid := AcctDerRule_4(
61990 p_application_id => p_application_id
61991 , p_ae_header_id => l_ae_header_id
61992 , p_source_4 => p_source_4
61993 , x_transaction_coa_id => l_adr_transaction_coa_id
61994 , x_accounting_coa_id => l_adr_accounting_coa_id
61995 , x_value_type_code => l_adr_value_type_code
61996 , p_side => 'NA'
61997 );
61998
61999 xla_ae_lines_pkg.set_ccid(
62000 p_code_combination_id => l_ccid
62001 , p_value_type_code => l_adr_value_type_code
62002 , p_transaction_coa_id => l_adr_transaction_coa_id
62003 , p_accounting_coa_id => l_adr_accounting_coa_id
62004 , p_adr_code => 'CST_DEFAULT'
62005 , p_adr_type_code => 'S'
62006 , p_component_type => l_component_type
62007 , p_component_code => l_component_code
62008 , p_component_type_code => l_component_type_code
62009 , p_component_appl_id => l_component_appl_id
62010 , p_amb_context_code => l_amb_context_code
62011 , p_side => 'NA'
62012 );
62013
62014
62015 --
62016 --
62017 END IF;
62018 --
62019 -- Bug 4922099
62020 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62021 (NVL(l_enc_upg_option, 'N') = 'O')
62022 ) AND
62023 (l_bflow_method_code = 'PRIOR_ENTRY')
62024 )
62025 THEN
62026 IF
62027 --
62028 1 = 2
62029 --
62030 THEN
62031 xla_accounting_err_pkg.build_message
62032 (p_appli_s_name => 'XLA'
62033 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62034 ,p_token_1 => 'LINE_NUMBER'
62035 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
62036 ,p_token_2 => 'LINE_TYPE_NAME'
62037 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
62038 l_component_type
62039 ,l_component_code
62040 ,l_component_type_code
62041 ,l_component_appl_id
62042 ,l_amb_context_code
62043 ,l_entity_code
62044 ,l_event_class_code
62045 )
62046 ,p_token_3 => 'OWNER'
62047 ,p_value_3 => xla_lookups_pkg.get_meaning(
62048 p_lookup_type => 'XLA_OWNER_TYPE'
62049 ,p_lookup_code => l_component_type_code
62050 )
62051 ,p_token_4 => 'PRODUCT_NAME'
62052 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62053 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62054 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62055 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62056 ,p_ae_header_id => NULL
62057 );
62058
62059 IF (C_LEVEL_ERROR>= g_log_level) THEN
62060 trace
62061 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62062 ,p_level => C_LEVEL_ERROR
62063 ,p_module => l_log_module);
62064 END IF;
62065 END IF;
62066 END IF;
62067 --
62068 --
62069 ------------------------------------------------------------------------------------------------
62070 -- 4219869 Business Flow
62071 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62072 -- Prior Entry. Currently, the following code is always generated.
62073 ------------------------------------------------------------------------------------------------
62074 XLA_AE_LINES_PKG.ValidateCurrentLine;
62075
62076 ------------------------------------------------------------------------------------
62077 -- 4219869 Business Flow
62078 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62079 ------------------------------------------------------------------------------------
62080 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62081
62082 ----------------------------------------------------------------------------------
62083 -- 4219869 Business Flow
62084 -- Update journal entry status -- Need to generate this within IF <condition>
62085 ----------------------------------------------------------------------------------
62086 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62087 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62088 ,p_balance_type_code => l_balance_type_code
62089 );
62090
62091 -------------------------------------------------------------------------------------------
62092 -- 4262811 - Generate the Accrual Reversal lines
62093 -------------------------------------------------------------------------------------------
62094 BEGIN
62095 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62096 (g_array_event(p_event_id).array_value_num('header_index'));
62097 IF l_acc_rev_flag IS NULL THEN
62098 l_acc_rev_flag := 'N';
62099 END IF;
62100 EXCEPTION
62101 WHEN OTHERS THEN
62102 l_acc_rev_flag := 'N';
62103 END;
62104 --
62105 IF (l_acc_rev_flag = 'Y') THEN
62106
62107 -- 4645092 ------------------------------------------------------------------------------
62108 -- To allow MPA report to determine if it should generate report process
62109 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62110 ------------------------------------------------------------------------------------------
62111
62112 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62113 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62114 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
62115 -- call ADRs
62116 -- Bug 4922099
62117 --
62118 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62119 (NVL(l_actual_upg_option, 'N') = 'O') OR
62120 (NVL(l_enc_upg_option, 'N') = 'O')
62121 )
62122 THEN
62123 NULL;
62124 --
62125 --
62126
62127 l_ccid := AcctDerRule_4(
62128 p_application_id => p_application_id
62129 , p_ae_header_id => l_ae_header_id
62130 , p_source_4 => p_source_4
62131 , x_transaction_coa_id => l_adr_transaction_coa_id
62132 , x_accounting_coa_id => l_adr_accounting_coa_id
62133 , x_value_type_code => l_adr_value_type_code
62134 , p_side => 'NA'
62135 );
62136
62137 xla_ae_lines_pkg.set_ccid(
62138 p_code_combination_id => l_ccid
62139 , p_value_type_code => l_adr_value_type_code
62140 , p_transaction_coa_id => l_adr_transaction_coa_id
62141 , p_accounting_coa_id => l_adr_accounting_coa_id
62142 , p_adr_code => 'CST_DEFAULT'
62143 , p_adr_type_code => 'S'
62144 , p_component_type => l_component_type
62145 , p_component_code => l_component_code
62146 , p_component_type_code => l_component_type_code
62147 , p_component_appl_id => l_component_appl_id
62148 , p_amb_context_code => l_amb_context_code
62149 , p_side => 'NA'
62150 );
62151
62152
62153 --
62154 --
62155 END IF;
62156
62157 --
62158 -- Update the line information that should be overwritten
62159 --
62160 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62161 p_header_num => 1);
62162 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
62163
62164 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62165
62166 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
62167 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62168 END IF;
62169
62170 --
62171 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62172 --
62173 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62174 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
62175 ELSE
62176 ---------------------------------------------------------------------------------------------------
62177 -- 4262811a Switch Sign
62178 ---------------------------------------------------------------------------------------------------
62179 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
62180 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62181 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62182 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62183 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62184 -- 5132302
62185 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62186 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62187
62188 END IF;
62189
62190 -- 4955764
62191 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62192 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62193
62194
62195 XLA_AE_LINES_PKG.ValidateCurrentLine;
62196 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62197
62198 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62199 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62200 ,p_balance_type_code => l_balance_type_code);
62201
62202 END IF;
62203
62204 -----------------------------------------------------------------------------------------
62205 -- 4262811 Multiperiod Accounting
62206 -----------------------------------------------------------------------------------------
62207 -- No MPA option is assigned.
62208
62209
62210 END IF;
62211 END IF;
62212 --
62213
62214 --
62215 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62216 trace
62217 (p_msg => 'END of AcctLineType_114'
62218 ,p_level => C_LEVEL_PROCEDURE
62219 ,p_module => l_log_module);
62220 END IF;
62221 --
62222 EXCEPTION
62223 WHEN xla_exceptions_pkg.application_exception THEN
62224 RAISE;
62225 WHEN OTHERS THEN
62226 xla_exceptions_pkg.raise_message
62227 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_114');
62228 END AcctLineType_114;
62229 --
62230
62231 ---------------------------------------
62232 --
62233 -- PRIVATE FUNCTION
62234 -- AcctLineType_115
62235 --
62236 ---------------------------------------
62237 PROCEDURE AcctLineType_115 (
62238 p_application_id IN NUMBER
62239 ,p_event_id IN NUMBER
62240 ,p_calculate_acctd_flag IN VARCHAR2
62241 ,p_calculate_g_l_flag IN VARCHAR2
62242 ,p_actual_flag IN OUT VARCHAR2
62243 ,p_balance_type_code OUT VARCHAR2
62244 ,p_gain_or_loss_ref OUT VARCHAR2
62245
62246 --Cost Management Default Account
62247 , p_source_4 IN NUMBER
62248 --DISTRIBUTION_IDENTIFIER
62249 , p_source_11 IN NUMBER
62250 --Distribution Type
62251 , p_source_12 IN VARCHAR2
62252 , p_source_12_meaning IN VARCHAR2
62253 --Entered Currency Code
62254 , p_source_15 IN VARCHAR2
62255 --Entered Amount
62256 , p_source_18 IN NUMBER
62257 --Currency Conversion Date
62258 , p_source_19 IN DATE
62259 --Currency Conversion Rate
62260 , p_source_20 IN NUMBER
62261 --Currency Conversion Type
62262 , p_source_21 IN VARCHAR2
62263 --Accounted Amount
62264 , p_source_22 IN NUMBER
62265 --Accounting Line Type
62266 , p_source_24 IN NUMBER
62267 )
62268 IS
62269
62270 l_component_type VARCHAR2(80);
62271 l_component_code VARCHAR2(30);
62272 l_component_type_code VARCHAR2(1);
62273 l_component_appl_id INTEGER;
62274 l_amb_context_code VARCHAR2(30);
62275 l_entity_code VARCHAR2(30);
62276 l_event_class_code VARCHAR2(30);
62277 l_ae_header_id NUMBER;
62278 l_event_type_code VARCHAR2(30);
62279 l_line_definition_code VARCHAR2(30);
62280 l_line_definition_owner_code VARCHAR2(1);
62281 --
62282 -- adr variables
62283 l_segment VARCHAR2(30);
62284 l_ccid NUMBER;
62285 l_adr_transaction_coa_id NUMBER;
62286 l_adr_accounting_coa_id NUMBER;
62287 l_adr_flexfield_segment_code VARCHAR2(30);
62288 l_adr_flex_value_set_id NUMBER;
62289 l_adr_value_type_code VARCHAR2(30);
62290 l_adr_value_combination_id NUMBER;
62291 l_adr_value_segment_code VARCHAR2(30);
62292
62293 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
62294 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
62295 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
62296 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
62297
62298 -- 4262811 Variables ------------------------------------------------------------------------------------------
62299 l_entered_amt_idx NUMBER;
62300 l_accted_amt_idx NUMBER;
62301 l_acc_rev_flag VARCHAR2(1);
62302 l_accrual_line_num NUMBER;
62303 l_tmp_amt NUMBER;
62304 l_acc_rev_natural_side_code VARCHAR2(1);
62305
62306 l_num_entries NUMBER;
62307 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
62308 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
62309 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
62310 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
62311 l_recog_line_1 NUMBER;
62312 l_recog_line_2 NUMBER;
62313
62314 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
62315 l_bflow_applied_to_amt NUMBER; -- 5132302
62316 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
62317
62318 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62319
62320 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
62321 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
62322
62323 ---------------------------------------------------------------------------------------------------------------
62324
62325
62326 --
62327 -- bulk performance
62328 --
62329 l_balance_type_code VARCHAR2(1);
62330 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
62331 l_log_module VARCHAR2(240);
62332
62333 --
62334 -- Upgrade strategy
62335 --
62336 l_actual_upg_option VARCHAR2(1);
62337 l_enc_upg_option VARCHAR2(1);
62338
62339 --
62340 BEGIN
62341 --
62342 IF g_log_enabled THEN
62343 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_115';
62344 END IF;
62345 --
62346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62347
62348 trace
62349 (p_msg => 'BEGIN of AcctLineType_115'
62350 ,p_level => C_LEVEL_PROCEDURE
62351 ,p_module => l_log_module);
62352
62353 END IF;
62354 --
62355 l_component_type := 'AMB_JLT';
62356 l_component_code := 'INTERORG_TRANSFER_CREDIT';
62357 l_component_type_code := 'S';
62358 l_component_appl_id := 707;
62359 l_amb_context_code := 'DEFAULT';
62360 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
62361 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
62362 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
62363 l_line_definition_owner_code := 'S';
62364 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
62365 --
62366 l_balance_type_code := 'A';
62367 l_segment := NULL;
62368 l_ccid := NULL;
62369 l_adr_transaction_coa_id := NULL;
62370 l_adr_accounting_coa_id := NULL;
62371 l_adr_flexfield_segment_code := NULL;
62372 l_adr_flex_value_set_id := NULL;
62373 l_adr_value_type_code := NULL;
62374 l_adr_value_combination_id := NULL;
62375 l_adr_value_segment_code := NULL;
62376
62377 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
62378 l_bflow_class_code := ''; -- 4219869 Business Flow
62379 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
62380 l_budgetary_control_flag := 'N';
62381
62382 l_bflow_applied_to_amt_idx := NULL; -- 5132302
62383 l_bflow_applied_to_amt := NULL; -- 5132302
62384 l_entered_amt_idx := NULL; -- 4262811
62385 l_accted_amt_idx := NULL; -- 4262811
62386 l_acc_rev_flag := NULL; -- 4262811
62387 l_accrual_line_num := NULL; -- 4262811
62388 l_tmp_amt := NULL; -- 4262811
62389 --
62390
62391 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62392 l_balance_type_code <> 'B' THEN
62393 IF NVL(p_source_24,9E125) = 11
62394 THEN
62395
62396 --
62397 XLA_AE_LINES_PKG.SetNewLine;
62398
62399 p_balance_type_code := l_balance_type_code;
62400 -- set the flag so later we will know whether the gain loss line needs to be created
62401
62402 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62403 p_actual_flag :='A';
62404 END IF;
62405
62406 --
62407 -- bulk performance
62408 --
62409 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62410 p_header_num => 0); -- 4262811
62411 --
62412 -- set accounting line options
62413 --
62414 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62415 p_natural_side_code => 'D'
62416 , p_gain_or_loss_flag => 'N'
62417 , p_gl_transfer_mode_code => 'S'
62418 , p_acct_entry_type_code => 'A'
62419 , p_switch_side_flag => 'Y'
62420 , p_merge_duplicate_code => 'N'
62421 );
62422 --
62423 l_acc_rev_natural_side_code := 'C'; -- 4262811
62424 --
62425 --
62426 -- set accounting line type info
62427 --
62428 xla_ae_lines_pkg.SetAcctLineType
62429 (p_component_type => l_component_type
62430 ,p_event_type_code => l_event_type_code
62431 ,p_line_definition_owner_code => l_line_definition_owner_code
62432 ,p_line_definition_code => l_line_definition_code
62433 ,p_accounting_line_code => l_component_code
62434 ,p_accounting_line_type_code => l_component_type_code
62435 ,p_accounting_line_appl_id => l_component_appl_id
62436 ,p_amb_context_code => l_amb_context_code
62437 ,p_entity_code => l_entity_code
62438 ,p_event_class_code => l_event_class_code);
62439 --
62440 -- set accounting class
62441 --
62442 xla_ae_lines_pkg.SetAcctClass(
62443 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
62444 , p_ae_header_id => l_ae_header_id
62445 );
62446
62447 --
62448 -- set rounding class
62449 --
62450 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62451 'INTERORG_TRANSFER_CREDIT';
62452
62453 --
62454 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62455 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62456 --
62457 -- bulk performance
62458 --
62459 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62460
62461 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62462 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62463
62464 -- 4955764
62465 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62466 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62467
62468 -- 4458381 Public Sector Enh
62469
62470 --
62471 -- set accounting attributes for the line type
62472 --
62473 l_entered_amt_idx := 3;
62474 l_accted_amt_idx := 8;
62475 l_bflow_applied_to_amt_idx := NULL; -- 5132302
62476 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
62477 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
62478 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
62479 l_rec_acct_attrs.array_char_value(2) := p_source_12;
62480 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
62481 l_rec_acct_attrs.array_num_value(3) := p_source_18;
62482 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
62483 l_rec_acct_attrs.array_char_value(4) := p_source_15;
62484 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
62485 l_rec_acct_attrs.array_date_value(5) := p_source_19;
62486 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
62487 l_rec_acct_attrs.array_num_value(6) := p_source_20;
62488 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
62489 l_rec_acct_attrs.array_char_value(7) := p_source_21;
62490 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
62491 l_rec_acct_attrs.array_num_value(8) := p_source_22;
62492
62493 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62494 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62495
62496 ---------------------------------------------------------------------------------------------------------------
62497 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62498 ---------------------------------------------------------------------------------------------------------------
62499 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62500
62501 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62502 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62503
62504 IF xla_accounting_cache_pkg.GetValueChar
62505 (p_source_code => 'LEDGER_CATEGORY_CODE'
62506 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62507 AND l_bflow_method_code = 'PRIOR_ENTRY'
62508 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62509 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62510 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62511 )
62512 THEN
62513 xla_ae_lines_pkg.BflowUpgEntry
62514 (p_business_method_code => l_bflow_method_code
62515 ,p_business_class_code => l_bflow_class_code
62516 ,p_balance_type => l_balance_type_code);
62517 ELSE
62518 NULL;
62519 -- No business flow processing for business flow method of NONE.
62520 END IF;
62521
62522 --
62523 -- call analytical criteria
62524 --
62525
62526 --
62527 -- call description
62528 --
62529 -- No description or it is inherited.
62530 --
62531 -- call ADRs
62532 -- Bug 4922099
62533 --
62534 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62535 (NVL(l_actual_upg_option, 'N') = 'O') OR
62536 (NVL(l_enc_upg_option, 'N') = 'O')
62537 )
62538 THEN
62539 NULL;
62540 --
62541 --
62542
62543 l_ccid := AcctDerRule_4(
62544 p_application_id => p_application_id
62545 , p_ae_header_id => l_ae_header_id
62546 , p_source_4 => p_source_4
62547 , x_transaction_coa_id => l_adr_transaction_coa_id
62548 , x_accounting_coa_id => l_adr_accounting_coa_id
62549 , x_value_type_code => l_adr_value_type_code
62550 , p_side => 'NA'
62551 );
62552
62553 xla_ae_lines_pkg.set_ccid(
62554 p_code_combination_id => l_ccid
62555 , p_value_type_code => l_adr_value_type_code
62556 , p_transaction_coa_id => l_adr_transaction_coa_id
62557 , p_accounting_coa_id => l_adr_accounting_coa_id
62558 , p_adr_code => 'CST_DEFAULT'
62559 , p_adr_type_code => 'S'
62560 , p_component_type => l_component_type
62561 , p_component_code => l_component_code
62562 , p_component_type_code => l_component_type_code
62563 , p_component_appl_id => l_component_appl_id
62564 , p_amb_context_code => l_amb_context_code
62565 , p_side => 'NA'
62566 );
62567
62568
62569 --
62570 --
62571 END IF;
62572 --
62573 -- Bug 4922099
62574 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62575 (NVL(l_enc_upg_option, 'N') = 'O')
62576 ) AND
62577 (l_bflow_method_code = 'PRIOR_ENTRY')
62578 )
62579 THEN
62580 IF
62581 --
62582 1 = 2
62583 --
62584 THEN
62585 xla_accounting_err_pkg.build_message
62586 (p_appli_s_name => 'XLA'
62587 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62588 ,p_token_1 => 'LINE_NUMBER'
62589 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
62590 ,p_token_2 => 'LINE_TYPE_NAME'
62591 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
62592 l_component_type
62593 ,l_component_code
62594 ,l_component_type_code
62595 ,l_component_appl_id
62596 ,l_amb_context_code
62597 ,l_entity_code
62598 ,l_event_class_code
62599 )
62600 ,p_token_3 => 'OWNER'
62601 ,p_value_3 => xla_lookups_pkg.get_meaning(
62602 p_lookup_type => 'XLA_OWNER_TYPE'
62603 ,p_lookup_code => l_component_type_code
62604 )
62605 ,p_token_4 => 'PRODUCT_NAME'
62606 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62607 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62608 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62609 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62610 ,p_ae_header_id => NULL
62611 );
62612
62613 IF (C_LEVEL_ERROR>= g_log_level) THEN
62614 trace
62615 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62616 ,p_level => C_LEVEL_ERROR
62617 ,p_module => l_log_module);
62618 END IF;
62619 END IF;
62620 END IF;
62621 --
62622 --
62623 ------------------------------------------------------------------------------------------------
62624 -- 4219869 Business Flow
62625 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62626 -- Prior Entry. Currently, the following code is always generated.
62627 ------------------------------------------------------------------------------------------------
62628 XLA_AE_LINES_PKG.ValidateCurrentLine;
62629
62630 ------------------------------------------------------------------------------------
62631 -- 4219869 Business Flow
62632 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62633 ------------------------------------------------------------------------------------
62634 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62635
62636 ----------------------------------------------------------------------------------
62637 -- 4219869 Business Flow
62638 -- Update journal entry status -- Need to generate this within IF <condition>
62639 ----------------------------------------------------------------------------------
62640 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62641 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62642 ,p_balance_type_code => l_balance_type_code
62643 );
62644
62645 -------------------------------------------------------------------------------------------
62646 -- 4262811 - Generate the Accrual Reversal lines
62647 -------------------------------------------------------------------------------------------
62648 BEGIN
62649 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62650 (g_array_event(p_event_id).array_value_num('header_index'));
62651 IF l_acc_rev_flag IS NULL THEN
62652 l_acc_rev_flag := 'N';
62653 END IF;
62654 EXCEPTION
62655 WHEN OTHERS THEN
62656 l_acc_rev_flag := 'N';
62657 END;
62658 --
62659 IF (l_acc_rev_flag = 'Y') THEN
62660
62661 -- 4645092 ------------------------------------------------------------------------------
62662 -- To allow MPA report to determine if it should generate report process
62663 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62664 ------------------------------------------------------------------------------------------
62665
62666 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62667 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62668 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
62669 -- call ADRs
62670 -- Bug 4922099
62671 --
62672 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62673 (NVL(l_actual_upg_option, 'N') = 'O') OR
62674 (NVL(l_enc_upg_option, 'N') = 'O')
62675 )
62676 THEN
62677 NULL;
62678 --
62679 --
62680
62681 l_ccid := AcctDerRule_4(
62682 p_application_id => p_application_id
62683 , p_ae_header_id => l_ae_header_id
62684 , p_source_4 => p_source_4
62685 , x_transaction_coa_id => l_adr_transaction_coa_id
62686 , x_accounting_coa_id => l_adr_accounting_coa_id
62687 , x_value_type_code => l_adr_value_type_code
62688 , p_side => 'NA'
62689 );
62690
62691 xla_ae_lines_pkg.set_ccid(
62692 p_code_combination_id => l_ccid
62693 , p_value_type_code => l_adr_value_type_code
62694 , p_transaction_coa_id => l_adr_transaction_coa_id
62695 , p_accounting_coa_id => l_adr_accounting_coa_id
62696 , p_adr_code => 'CST_DEFAULT'
62697 , p_adr_type_code => 'S'
62698 , p_component_type => l_component_type
62699 , p_component_code => l_component_code
62700 , p_component_type_code => l_component_type_code
62701 , p_component_appl_id => l_component_appl_id
62702 , p_amb_context_code => l_amb_context_code
62703 , p_side => 'NA'
62704 );
62705
62706
62707 --
62708 --
62709 END IF;
62710
62711 --
62712 -- Update the line information that should be overwritten
62713 --
62714 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62715 p_header_num => 1);
62716 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
62717
62718 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62719
62720 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
62721 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62722 END IF;
62723
62724 --
62725 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62726 --
62727 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62728 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
62729 ELSE
62730 ---------------------------------------------------------------------------------------------------
62731 -- 4262811a Switch Sign
62732 ---------------------------------------------------------------------------------------------------
62733 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
62734 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62735 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62736 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62737 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62738 -- 5132302
62739 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62740 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62741
62742 END IF;
62743
62744 -- 4955764
62745 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62746 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62747
62748
62749 XLA_AE_LINES_PKG.ValidateCurrentLine;
62750 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62751
62752 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62753 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62754 ,p_balance_type_code => l_balance_type_code);
62755
62756 END IF;
62757
62758 -----------------------------------------------------------------------------------------
62759 -- 4262811 Multiperiod Accounting
62760 -----------------------------------------------------------------------------------------
62761 -- No MPA option is assigned.
62762
62763
62764 END IF;
62765 END IF;
62766 --
62767
62768 --
62769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62770 trace
62771 (p_msg => 'END of AcctLineType_115'
62772 ,p_level => C_LEVEL_PROCEDURE
62773 ,p_module => l_log_module);
62774 END IF;
62775 --
62776 EXCEPTION
62777 WHEN xla_exceptions_pkg.application_exception THEN
62778 RAISE;
62779 WHEN OTHERS THEN
62780 xla_exceptions_pkg.raise_message
62781 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_115');
62782 END AcctLineType_115;
62783 --
62784
62785 ---------------------------------------
62786 --
62787 -- PRIVATE FUNCTION
62788 -- AcctLineType_116
62789 --
62790 ---------------------------------------
62791 PROCEDURE AcctLineType_116 (
62792 p_application_id IN NUMBER
62793 ,p_event_id IN NUMBER
62794 ,p_calculate_acctd_flag IN VARCHAR2
62795 ,p_calculate_g_l_flag IN VARCHAR2
62796 ,p_actual_flag IN OUT VARCHAR2
62797 ,p_balance_type_code OUT VARCHAR2
62798 ,p_gain_or_loss_ref OUT VARCHAR2
62799
62800 --Cost Management Default Account
62801 , p_source_4 IN NUMBER
62802 --DISTRIBUTION_IDENTIFIER
62803 , p_source_11 IN NUMBER
62804 --Distribution Type
62805 , p_source_12 IN VARCHAR2
62806 , p_source_12_meaning IN VARCHAR2
62807 --Entered Currency Code
62808 , p_source_15 IN VARCHAR2
62809 --Entered Amount
62810 , p_source_18 IN NUMBER
62811 --Currency Conversion Date
62812 , p_source_19 IN DATE
62813 --Currency Conversion Rate
62814 , p_source_20 IN NUMBER
62815 --Currency Conversion Type
62816 , p_source_21 IN VARCHAR2
62817 --Accounted Amount
62818 , p_source_22 IN NUMBER
62819 --Accounting Line Type
62820 , p_source_24 IN NUMBER
62821 )
62822 IS
62823
62824 l_component_type VARCHAR2(80);
62825 l_component_code VARCHAR2(30);
62826 l_component_type_code VARCHAR2(1);
62827 l_component_appl_id INTEGER;
62828 l_amb_context_code VARCHAR2(30);
62829 l_entity_code VARCHAR2(30);
62830 l_event_class_code VARCHAR2(30);
62831 l_ae_header_id NUMBER;
62832 l_event_type_code VARCHAR2(30);
62833 l_line_definition_code VARCHAR2(30);
62834 l_line_definition_owner_code VARCHAR2(1);
62835 --
62836 -- adr variables
62837 l_segment VARCHAR2(30);
62838 l_ccid NUMBER;
62839 l_adr_transaction_coa_id NUMBER;
62840 l_adr_accounting_coa_id NUMBER;
62841 l_adr_flexfield_segment_code VARCHAR2(30);
62842 l_adr_flex_value_set_id NUMBER;
62843 l_adr_value_type_code VARCHAR2(30);
62844 l_adr_value_combination_id NUMBER;
62845 l_adr_value_segment_code VARCHAR2(30);
62846
62847 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
62848 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
62849 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
62850 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
62851
62852 -- 4262811 Variables ------------------------------------------------------------------------------------------
62853 l_entered_amt_idx NUMBER;
62854 l_accted_amt_idx NUMBER;
62855 l_acc_rev_flag VARCHAR2(1);
62856 l_accrual_line_num NUMBER;
62857 l_tmp_amt NUMBER;
62858 l_acc_rev_natural_side_code VARCHAR2(1);
62859
62860 l_num_entries NUMBER;
62861 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
62862 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
62863 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
62864 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
62865 l_recog_line_1 NUMBER;
62866 l_recog_line_2 NUMBER;
62867
62868 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
62869 l_bflow_applied_to_amt NUMBER; -- 5132302
62870 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
62871
62872 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62873
62874 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
62875 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
62876
62877 ---------------------------------------------------------------------------------------------------------------
62878
62879
62880 --
62881 -- bulk performance
62882 --
62883 l_balance_type_code VARCHAR2(1);
62884 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
62885 l_log_module VARCHAR2(240);
62886
62887 --
62888 -- Upgrade strategy
62889 --
62890 l_actual_upg_option VARCHAR2(1);
62891 l_enc_upg_option VARCHAR2(1);
62892
62893 --
62894 BEGIN
62895 --
62896 IF g_log_enabled THEN
62897 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_116';
62898 END IF;
62899 --
62900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62901
62902 trace
62903 (p_msg => 'BEGIN of AcctLineType_116'
62904 ,p_level => C_LEVEL_PROCEDURE
62905 ,p_module => l_log_module);
62906
62907 END IF;
62908 --
62909 l_component_type := 'AMB_JLT';
62910 l_component_code := 'INTERORG_TRANSFER_CREDIT';
62911 l_component_type_code := 'S';
62912 l_component_appl_id := 707;
62913 l_amb_context_code := 'DEFAULT';
62914 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
62915 l_event_class_code := 'DIR_INTERORG_SHIP';
62916 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
62917 l_line_definition_owner_code := 'S';
62918 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
62919 --
62920 l_balance_type_code := 'A';
62921 l_segment := NULL;
62922 l_ccid := NULL;
62923 l_adr_transaction_coa_id := NULL;
62924 l_adr_accounting_coa_id := NULL;
62925 l_adr_flexfield_segment_code := NULL;
62926 l_adr_flex_value_set_id := NULL;
62927 l_adr_value_type_code := NULL;
62928 l_adr_value_combination_id := NULL;
62929 l_adr_value_segment_code := NULL;
62930
62931 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
62932 l_bflow_class_code := ''; -- 4219869 Business Flow
62933 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
62934 l_budgetary_control_flag := 'N';
62935
62936 l_bflow_applied_to_amt_idx := NULL; -- 5132302
62937 l_bflow_applied_to_amt := NULL; -- 5132302
62938 l_entered_amt_idx := NULL; -- 4262811
62939 l_accted_amt_idx := NULL; -- 4262811
62940 l_acc_rev_flag := NULL; -- 4262811
62941 l_accrual_line_num := NULL; -- 4262811
62942 l_tmp_amt := NULL; -- 4262811
62943 --
62944
62945 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62946 l_balance_type_code <> 'B' THEN
62947 IF NVL(p_source_24,9E125) = 11
62948 THEN
62949
62950 --
62951 XLA_AE_LINES_PKG.SetNewLine;
62952
62953 p_balance_type_code := l_balance_type_code;
62954 -- set the flag so later we will know whether the gain loss line needs to be created
62955
62956 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62957 p_actual_flag :='A';
62958 END IF;
62959
62960 --
62961 -- bulk performance
62962 --
62963 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62964 p_header_num => 0); -- 4262811
62965 --
62966 -- set accounting line options
62967 --
62968 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62969 p_natural_side_code => 'D'
62970 , p_gain_or_loss_flag => 'N'
62971 , p_gl_transfer_mode_code => 'S'
62972 , p_acct_entry_type_code => 'A'
62973 , p_switch_side_flag => 'Y'
62974 , p_merge_duplicate_code => 'N'
62975 );
62976 --
62977 l_acc_rev_natural_side_code := 'C'; -- 4262811
62978 --
62979 --
62980 -- set accounting line type info
62981 --
62982 xla_ae_lines_pkg.SetAcctLineType
62983 (p_component_type => l_component_type
62984 ,p_event_type_code => l_event_type_code
62985 ,p_line_definition_owner_code => l_line_definition_owner_code
62986 ,p_line_definition_code => l_line_definition_code
62987 ,p_accounting_line_code => l_component_code
62988 ,p_accounting_line_type_code => l_component_type_code
62989 ,p_accounting_line_appl_id => l_component_appl_id
62990 ,p_amb_context_code => l_amb_context_code
62991 ,p_entity_code => l_entity_code
62992 ,p_event_class_code => l_event_class_code);
62993 --
62994 -- set accounting class
62995 --
62996 xla_ae_lines_pkg.SetAcctClass(
62997 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
62998 , p_ae_header_id => l_ae_header_id
62999 );
63000
63001 --
63002 -- set rounding class
63003 --
63004 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63005 'INTERORG_TRANSFER_CREDIT';
63006
63007 --
63008 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63009 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63010 --
63011 -- bulk performance
63012 --
63013 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63014
63015 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63016 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63017
63018 -- 4955764
63019 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63020 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63021
63022 -- 4458381 Public Sector Enh
63023
63024 --
63025 -- set accounting attributes for the line type
63026 --
63027 l_entered_amt_idx := 3;
63028 l_accted_amt_idx := 8;
63029 l_bflow_applied_to_amt_idx := NULL; -- 5132302
63030 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63031 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
63032 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63033 l_rec_acct_attrs.array_char_value(2) := p_source_12;
63034 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63035 l_rec_acct_attrs.array_num_value(3) := p_source_18;
63036 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63037 l_rec_acct_attrs.array_char_value(4) := p_source_15;
63038 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63039 l_rec_acct_attrs.array_date_value(5) := p_source_19;
63040 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63041 l_rec_acct_attrs.array_num_value(6) := p_source_20;
63042 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63043 l_rec_acct_attrs.array_char_value(7) := p_source_21;
63044 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63045 l_rec_acct_attrs.array_num_value(8) := p_source_22;
63046
63047 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63048 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63049
63050 ---------------------------------------------------------------------------------------------------------------
63051 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63052 ---------------------------------------------------------------------------------------------------------------
63053 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63054
63055 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63056 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63057
63058 IF xla_accounting_cache_pkg.GetValueChar
63059 (p_source_code => 'LEDGER_CATEGORY_CODE'
63060 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63061 AND l_bflow_method_code = 'PRIOR_ENTRY'
63062 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63063 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63064 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63065 )
63066 THEN
63067 xla_ae_lines_pkg.BflowUpgEntry
63068 (p_business_method_code => l_bflow_method_code
63069 ,p_business_class_code => l_bflow_class_code
63070 ,p_balance_type => l_balance_type_code);
63071 ELSE
63072 NULL;
63073 -- No business flow processing for business flow method of NONE.
63074 END IF;
63075
63076 --
63077 -- call analytical criteria
63078 --
63079
63080 --
63081 -- call description
63082 --
63083 -- No description or it is inherited.
63084 --
63085 -- call ADRs
63086 -- Bug 4922099
63087 --
63088 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63089 (NVL(l_actual_upg_option, 'N') = 'O') OR
63090 (NVL(l_enc_upg_option, 'N') = 'O')
63091 )
63092 THEN
63093 NULL;
63094 --
63095 --
63096
63097 l_ccid := AcctDerRule_4(
63098 p_application_id => p_application_id
63099 , p_ae_header_id => l_ae_header_id
63100 , p_source_4 => p_source_4
63101 , x_transaction_coa_id => l_adr_transaction_coa_id
63102 , x_accounting_coa_id => l_adr_accounting_coa_id
63103 , x_value_type_code => l_adr_value_type_code
63104 , p_side => 'NA'
63105 );
63106
63107 xla_ae_lines_pkg.set_ccid(
63108 p_code_combination_id => l_ccid
63109 , p_value_type_code => l_adr_value_type_code
63110 , p_transaction_coa_id => l_adr_transaction_coa_id
63111 , p_accounting_coa_id => l_adr_accounting_coa_id
63112 , p_adr_code => 'CST_DEFAULT'
63113 , p_adr_type_code => 'S'
63114 , p_component_type => l_component_type
63115 , p_component_code => l_component_code
63116 , p_component_type_code => l_component_type_code
63117 , p_component_appl_id => l_component_appl_id
63118 , p_amb_context_code => l_amb_context_code
63119 , p_side => 'NA'
63120 );
63121
63122
63123 --
63124 --
63125 END IF;
63126 --
63127 -- Bug 4922099
63128 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63129 (NVL(l_enc_upg_option, 'N') = 'O')
63130 ) AND
63131 (l_bflow_method_code = 'PRIOR_ENTRY')
63132 )
63133 THEN
63134 IF
63135 --
63136 1 = 2
63137 --
63138 THEN
63139 xla_accounting_err_pkg.build_message
63140 (p_appli_s_name => 'XLA'
63141 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63142 ,p_token_1 => 'LINE_NUMBER'
63143 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
63144 ,p_token_2 => 'LINE_TYPE_NAME'
63145 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
63146 l_component_type
63147 ,l_component_code
63148 ,l_component_type_code
63149 ,l_component_appl_id
63150 ,l_amb_context_code
63151 ,l_entity_code
63152 ,l_event_class_code
63153 )
63154 ,p_token_3 => 'OWNER'
63155 ,p_value_3 => xla_lookups_pkg.get_meaning(
63156 p_lookup_type => 'XLA_OWNER_TYPE'
63157 ,p_lookup_code => l_component_type_code
63158 )
63159 ,p_token_4 => 'PRODUCT_NAME'
63160 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63161 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63162 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63163 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63164 ,p_ae_header_id => NULL
63165 );
63166
63167 IF (C_LEVEL_ERROR>= g_log_level) THEN
63168 trace
63169 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63170 ,p_level => C_LEVEL_ERROR
63171 ,p_module => l_log_module);
63172 END IF;
63173 END IF;
63174 END IF;
63175 --
63176 --
63177 ------------------------------------------------------------------------------------------------
63178 -- 4219869 Business Flow
63179 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63180 -- Prior Entry. Currently, the following code is always generated.
63181 ------------------------------------------------------------------------------------------------
63182 XLA_AE_LINES_PKG.ValidateCurrentLine;
63183
63184 ------------------------------------------------------------------------------------
63185 -- 4219869 Business Flow
63186 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63187 ------------------------------------------------------------------------------------
63188 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63189
63190 ----------------------------------------------------------------------------------
63191 -- 4219869 Business Flow
63192 -- Update journal entry status -- Need to generate this within IF <condition>
63193 ----------------------------------------------------------------------------------
63194 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63195 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63196 ,p_balance_type_code => l_balance_type_code
63197 );
63198
63199 -------------------------------------------------------------------------------------------
63200 -- 4262811 - Generate the Accrual Reversal lines
63201 -------------------------------------------------------------------------------------------
63202 BEGIN
63203 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63204 (g_array_event(p_event_id).array_value_num('header_index'));
63205 IF l_acc_rev_flag IS NULL THEN
63206 l_acc_rev_flag := 'N';
63207 END IF;
63208 EXCEPTION
63209 WHEN OTHERS THEN
63210 l_acc_rev_flag := 'N';
63211 END;
63212 --
63213 IF (l_acc_rev_flag = 'Y') THEN
63214
63215 -- 4645092 ------------------------------------------------------------------------------
63216 -- To allow MPA report to determine if it should generate report process
63217 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63218 ------------------------------------------------------------------------------------------
63219
63220 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63221 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63222 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
63223 -- call ADRs
63224 -- Bug 4922099
63225 --
63226 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63227 (NVL(l_actual_upg_option, 'N') = 'O') OR
63228 (NVL(l_enc_upg_option, 'N') = 'O')
63229 )
63230 THEN
63231 NULL;
63232 --
63233 --
63234
63235 l_ccid := AcctDerRule_4(
63236 p_application_id => p_application_id
63237 , p_ae_header_id => l_ae_header_id
63238 , p_source_4 => p_source_4
63239 , x_transaction_coa_id => l_adr_transaction_coa_id
63240 , x_accounting_coa_id => l_adr_accounting_coa_id
63241 , x_value_type_code => l_adr_value_type_code
63242 , p_side => 'NA'
63243 );
63244
63245 xla_ae_lines_pkg.set_ccid(
63246 p_code_combination_id => l_ccid
63247 , p_value_type_code => l_adr_value_type_code
63248 , p_transaction_coa_id => l_adr_transaction_coa_id
63249 , p_accounting_coa_id => l_adr_accounting_coa_id
63250 , p_adr_code => 'CST_DEFAULT'
63251 , p_adr_type_code => 'S'
63252 , p_component_type => l_component_type
63253 , p_component_code => l_component_code
63254 , p_component_type_code => l_component_type_code
63255 , p_component_appl_id => l_component_appl_id
63256 , p_amb_context_code => l_amb_context_code
63257 , p_side => 'NA'
63258 );
63259
63260
63261 --
63262 --
63263 END IF;
63264
63265 --
63266 -- Update the line information that should be overwritten
63267 --
63268 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63269 p_header_num => 1);
63270 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
63271
63272 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63273
63274 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
63275 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63276 END IF;
63277
63278 --
63279 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63280 --
63281 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63282 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
63283 ELSE
63284 ---------------------------------------------------------------------------------------------------
63285 -- 4262811a Switch Sign
63286 ---------------------------------------------------------------------------------------------------
63287 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
63288 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63289 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63290 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63291 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63292 -- 5132302
63293 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63294 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63295
63296 END IF;
63297
63298 -- 4955764
63299 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63300 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63301
63302
63303 XLA_AE_LINES_PKG.ValidateCurrentLine;
63304 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63305
63306 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63307 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63308 ,p_balance_type_code => l_balance_type_code);
63309
63310 END IF;
63311
63312 -----------------------------------------------------------------------------------------
63313 -- 4262811 Multiperiod Accounting
63314 -----------------------------------------------------------------------------------------
63315 -- No MPA option is assigned.
63316
63317
63318 END IF;
63319 END IF;
63320 --
63321
63322 --
63323 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63324 trace
63325 (p_msg => 'END of AcctLineType_116'
63326 ,p_level => C_LEVEL_PROCEDURE
63327 ,p_module => l_log_module);
63328 END IF;
63329 --
63330 EXCEPTION
63331 WHEN xla_exceptions_pkg.application_exception THEN
63332 RAISE;
63333 WHEN OTHERS THEN
63334 xla_exceptions_pkg.raise_message
63335 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_116');
63336 END AcctLineType_116;
63337 --
63338
63339 ---------------------------------------
63340 --
63341 -- PRIVATE FUNCTION
63342 -- AcctLineType_117
63343 --
63344 ---------------------------------------
63345 PROCEDURE AcctLineType_117 (
63346 p_application_id IN NUMBER
63347 ,p_event_id IN NUMBER
63348 ,p_calculate_acctd_flag IN VARCHAR2
63349 ,p_calculate_g_l_flag IN VARCHAR2
63350 ,p_actual_flag IN OUT VARCHAR2
63351 ,p_balance_type_code OUT VARCHAR2
63352 ,p_gain_or_loss_ref OUT VARCHAR2
63353
63354 --Cost Management Default Account
63355 , p_source_4 IN NUMBER
63356 --DISTRIBUTION_IDENTIFIER
63357 , p_source_11 IN NUMBER
63358 --Distribution Type
63359 , p_source_12 IN VARCHAR2
63360 , p_source_12_meaning IN VARCHAR2
63361 --Entered Currency Code
63362 , p_source_15 IN VARCHAR2
63363 --Entered Amount
63364 , p_source_18 IN NUMBER
63365 --Currency Conversion Date
63366 , p_source_19 IN DATE
63367 --Currency Conversion Rate
63368 , p_source_20 IN NUMBER
63369 --Currency Conversion Type
63370 , p_source_21 IN VARCHAR2
63371 --Accounted Amount
63372 , p_source_22 IN NUMBER
63373 --Accounting Line Type
63374 , p_source_24 IN NUMBER
63375 )
63376 IS
63377
63378 l_component_type VARCHAR2(80);
63379 l_component_code VARCHAR2(30);
63380 l_component_type_code VARCHAR2(1);
63381 l_component_appl_id INTEGER;
63382 l_amb_context_code VARCHAR2(30);
63383 l_entity_code VARCHAR2(30);
63384 l_event_class_code VARCHAR2(30);
63385 l_ae_header_id NUMBER;
63386 l_event_type_code VARCHAR2(30);
63387 l_line_definition_code VARCHAR2(30);
63388 l_line_definition_owner_code VARCHAR2(1);
63389 --
63390 -- adr variables
63391 l_segment VARCHAR2(30);
63392 l_ccid NUMBER;
63393 l_adr_transaction_coa_id NUMBER;
63394 l_adr_accounting_coa_id NUMBER;
63395 l_adr_flexfield_segment_code VARCHAR2(30);
63396 l_adr_flex_value_set_id NUMBER;
63397 l_adr_value_type_code VARCHAR2(30);
63398 l_adr_value_combination_id NUMBER;
63399 l_adr_value_segment_code VARCHAR2(30);
63400
63401 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
63402 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
63403 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
63404 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
63405
63406 -- 4262811 Variables ------------------------------------------------------------------------------------------
63407 l_entered_amt_idx NUMBER;
63408 l_accted_amt_idx NUMBER;
63409 l_acc_rev_flag VARCHAR2(1);
63410 l_accrual_line_num NUMBER;
63411 l_tmp_amt NUMBER;
63412 l_acc_rev_natural_side_code VARCHAR2(1);
63413
63414 l_num_entries NUMBER;
63415 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
63416 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
63417 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
63418 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
63419 l_recog_line_1 NUMBER;
63420 l_recog_line_2 NUMBER;
63421
63422 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
63423 l_bflow_applied_to_amt NUMBER; -- 5132302
63424 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
63425
63426 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63427
63428 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
63429 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
63430
63431 ---------------------------------------------------------------------------------------------------------------
63432
63433
63434 --
63435 -- bulk performance
63436 --
63437 l_balance_type_code VARCHAR2(1);
63438 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
63439 l_log_module VARCHAR2(240);
63440
63441 --
63442 -- Upgrade strategy
63443 --
63444 l_actual_upg_option VARCHAR2(1);
63445 l_enc_upg_option VARCHAR2(1);
63446
63447 --
63448 BEGIN
63449 --
63450 IF g_log_enabled THEN
63451 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_117';
63452 END IF;
63453 --
63454 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63455
63456 trace
63457 (p_msg => 'BEGIN of AcctLineType_117'
63458 ,p_level => C_LEVEL_PROCEDURE
63459 ,p_module => l_log_module);
63460
63461 END IF;
63462 --
63463 l_component_type := 'AMB_JLT';
63464 l_component_code := 'INTERORG_TRANSFER_CREDIT';
63465 l_component_type_code := 'S';
63466 l_component_appl_id := 707;
63467 l_amb_context_code := 'DEFAULT';
63468 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
63469 l_event_class_code := 'USER_DEFINE';
63470 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
63471 l_line_definition_owner_code := 'S';
63472 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
63473 --
63474 l_balance_type_code := 'A';
63475 l_segment := NULL;
63476 l_ccid := NULL;
63477 l_adr_transaction_coa_id := NULL;
63478 l_adr_accounting_coa_id := NULL;
63479 l_adr_flexfield_segment_code := NULL;
63480 l_adr_flex_value_set_id := NULL;
63481 l_adr_value_type_code := NULL;
63482 l_adr_value_combination_id := NULL;
63483 l_adr_value_segment_code := NULL;
63484
63485 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
63486 l_bflow_class_code := ''; -- 4219869 Business Flow
63487 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
63488 l_budgetary_control_flag := 'N';
63489
63490 l_bflow_applied_to_amt_idx := NULL; -- 5132302
63491 l_bflow_applied_to_amt := NULL; -- 5132302
63492 l_entered_amt_idx := NULL; -- 4262811
63493 l_accted_amt_idx := NULL; -- 4262811
63494 l_acc_rev_flag := NULL; -- 4262811
63495 l_accrual_line_num := NULL; -- 4262811
63496 l_tmp_amt := NULL; -- 4262811
63497 --
63498
63499 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63500 l_balance_type_code <> 'B' THEN
63501 IF NVL(p_source_24,9E125) = 11
63502 THEN
63503
63504 --
63505 XLA_AE_LINES_PKG.SetNewLine;
63506
63507 p_balance_type_code := l_balance_type_code;
63508 -- set the flag so later we will know whether the gain loss line needs to be created
63509
63510 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63511 p_actual_flag :='A';
63512 END IF;
63513
63514 --
63515 -- bulk performance
63516 --
63517 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63518 p_header_num => 0); -- 4262811
63519 --
63520 -- set accounting line options
63521 --
63522 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63523 p_natural_side_code => 'D'
63524 , p_gain_or_loss_flag => 'N'
63525 , p_gl_transfer_mode_code => 'S'
63526 , p_acct_entry_type_code => 'A'
63527 , p_switch_side_flag => 'Y'
63528 , p_merge_duplicate_code => 'N'
63529 );
63530 --
63531 l_acc_rev_natural_side_code := 'C'; -- 4262811
63532 --
63533 --
63534 -- set accounting line type info
63535 --
63536 xla_ae_lines_pkg.SetAcctLineType
63537 (p_component_type => l_component_type
63538 ,p_event_type_code => l_event_type_code
63539 ,p_line_definition_owner_code => l_line_definition_owner_code
63540 ,p_line_definition_code => l_line_definition_code
63541 ,p_accounting_line_code => l_component_code
63542 ,p_accounting_line_type_code => l_component_type_code
63543 ,p_accounting_line_appl_id => l_component_appl_id
63544 ,p_amb_context_code => l_amb_context_code
63545 ,p_entity_code => l_entity_code
63546 ,p_event_class_code => l_event_class_code);
63547 --
63548 -- set accounting class
63549 --
63550 xla_ae_lines_pkg.SetAcctClass(
63551 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
63552 , p_ae_header_id => l_ae_header_id
63553 );
63554
63555 --
63556 -- set rounding class
63557 --
63558 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63559 'INTERORG_TRANSFER_CREDIT';
63560
63561 --
63562 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63563 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63564 --
63565 -- bulk performance
63566 --
63567 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63568
63569 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63570 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63571
63572 -- 4955764
63573 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63574 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63575
63576 -- 4458381 Public Sector Enh
63577
63578 --
63579 -- set accounting attributes for the line type
63580 --
63581 l_entered_amt_idx := 3;
63582 l_accted_amt_idx := 8;
63583 l_bflow_applied_to_amt_idx := NULL; -- 5132302
63584 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
63585 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
63586 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
63587 l_rec_acct_attrs.array_char_value(2) := p_source_12;
63588 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
63589 l_rec_acct_attrs.array_num_value(3) := p_source_18;
63590 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
63591 l_rec_acct_attrs.array_char_value(4) := p_source_15;
63592 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
63593 l_rec_acct_attrs.array_date_value(5) := p_source_19;
63594 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
63595 l_rec_acct_attrs.array_num_value(6) := p_source_20;
63596 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
63597 l_rec_acct_attrs.array_char_value(7) := p_source_21;
63598 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
63599 l_rec_acct_attrs.array_num_value(8) := p_source_22;
63600
63601 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63602 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63603
63604 ---------------------------------------------------------------------------------------------------------------
63605 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63606 ---------------------------------------------------------------------------------------------------------------
63607 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63608
63609 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63610 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63611
63612 IF xla_accounting_cache_pkg.GetValueChar
63613 (p_source_code => 'LEDGER_CATEGORY_CODE'
63614 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63615 AND l_bflow_method_code = 'PRIOR_ENTRY'
63616 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63617 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63618 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63619 )
63620 THEN
63621 xla_ae_lines_pkg.BflowUpgEntry
63622 (p_business_method_code => l_bflow_method_code
63623 ,p_business_class_code => l_bflow_class_code
63624 ,p_balance_type => l_balance_type_code);
63625 ELSE
63626 NULL;
63627 -- No business flow processing for business flow method of NONE.
63628 END IF;
63629
63630 --
63631 -- call analytical criteria
63632 --
63633
63634 --
63635 -- call description
63636 --
63637 -- No description or it is inherited.
63638 --
63639 -- call ADRs
63640 -- Bug 4922099
63641 --
63642 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63643 (NVL(l_actual_upg_option, 'N') = 'O') OR
63644 (NVL(l_enc_upg_option, 'N') = 'O')
63645 )
63646 THEN
63647 NULL;
63648 --
63649 --
63650
63651 l_ccid := AcctDerRule_4(
63652 p_application_id => p_application_id
63653 , p_ae_header_id => l_ae_header_id
63654 , p_source_4 => p_source_4
63655 , x_transaction_coa_id => l_adr_transaction_coa_id
63656 , x_accounting_coa_id => l_adr_accounting_coa_id
63657 , x_value_type_code => l_adr_value_type_code
63658 , p_side => 'NA'
63659 );
63660
63661 xla_ae_lines_pkg.set_ccid(
63662 p_code_combination_id => l_ccid
63663 , p_value_type_code => l_adr_value_type_code
63664 , p_transaction_coa_id => l_adr_transaction_coa_id
63665 , p_accounting_coa_id => l_adr_accounting_coa_id
63666 , p_adr_code => 'CST_DEFAULT'
63667 , p_adr_type_code => 'S'
63668 , p_component_type => l_component_type
63669 , p_component_code => l_component_code
63670 , p_component_type_code => l_component_type_code
63671 , p_component_appl_id => l_component_appl_id
63672 , p_amb_context_code => l_amb_context_code
63673 , p_side => 'NA'
63674 );
63675
63676
63677 --
63678 --
63679 END IF;
63680 --
63681 -- Bug 4922099
63682 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63683 (NVL(l_enc_upg_option, 'N') = 'O')
63684 ) AND
63685 (l_bflow_method_code = 'PRIOR_ENTRY')
63686 )
63687 THEN
63688 IF
63689 --
63690 1 = 2
63691 --
63692 THEN
63693 xla_accounting_err_pkg.build_message
63694 (p_appli_s_name => 'XLA'
63695 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63696 ,p_token_1 => 'LINE_NUMBER'
63697 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
63698 ,p_token_2 => 'LINE_TYPE_NAME'
63699 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
63700 l_component_type
63701 ,l_component_code
63702 ,l_component_type_code
63703 ,l_component_appl_id
63704 ,l_amb_context_code
63705 ,l_entity_code
63706 ,l_event_class_code
63707 )
63708 ,p_token_3 => 'OWNER'
63709 ,p_value_3 => xla_lookups_pkg.get_meaning(
63710 p_lookup_type => 'XLA_OWNER_TYPE'
63711 ,p_lookup_code => l_component_type_code
63712 )
63713 ,p_token_4 => 'PRODUCT_NAME'
63714 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63715 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63716 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63717 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63718 ,p_ae_header_id => NULL
63719 );
63720
63721 IF (C_LEVEL_ERROR>= g_log_level) THEN
63722 trace
63723 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63724 ,p_level => C_LEVEL_ERROR
63725 ,p_module => l_log_module);
63726 END IF;
63727 END IF;
63728 END IF;
63729 --
63730 --
63731 ------------------------------------------------------------------------------------------------
63732 -- 4219869 Business Flow
63733 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63734 -- Prior Entry. Currently, the following code is always generated.
63735 ------------------------------------------------------------------------------------------------
63736 XLA_AE_LINES_PKG.ValidateCurrentLine;
63737
63738 ------------------------------------------------------------------------------------
63739 -- 4219869 Business Flow
63740 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63741 ------------------------------------------------------------------------------------
63742 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63743
63744 ----------------------------------------------------------------------------------
63745 -- 4219869 Business Flow
63746 -- Update journal entry status -- Need to generate this within IF <condition>
63747 ----------------------------------------------------------------------------------
63748 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63749 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63750 ,p_balance_type_code => l_balance_type_code
63751 );
63752
63753 -------------------------------------------------------------------------------------------
63754 -- 4262811 - Generate the Accrual Reversal lines
63755 -------------------------------------------------------------------------------------------
63756 BEGIN
63757 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63758 (g_array_event(p_event_id).array_value_num('header_index'));
63759 IF l_acc_rev_flag IS NULL THEN
63760 l_acc_rev_flag := 'N';
63761 END IF;
63762 EXCEPTION
63763 WHEN OTHERS THEN
63764 l_acc_rev_flag := 'N';
63765 END;
63766 --
63767 IF (l_acc_rev_flag = 'Y') THEN
63768
63769 -- 4645092 ------------------------------------------------------------------------------
63770 -- To allow MPA report to determine if it should generate report process
63771 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63772 ------------------------------------------------------------------------------------------
63773
63774 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63775 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63776 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
63777 -- call ADRs
63778 -- Bug 4922099
63779 --
63780 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63781 (NVL(l_actual_upg_option, 'N') = 'O') OR
63782 (NVL(l_enc_upg_option, 'N') = 'O')
63783 )
63784 THEN
63785 NULL;
63786 --
63787 --
63788
63789 l_ccid := AcctDerRule_4(
63790 p_application_id => p_application_id
63791 , p_ae_header_id => l_ae_header_id
63792 , p_source_4 => p_source_4
63793 , x_transaction_coa_id => l_adr_transaction_coa_id
63794 , x_accounting_coa_id => l_adr_accounting_coa_id
63795 , x_value_type_code => l_adr_value_type_code
63796 , p_side => 'NA'
63797 );
63798
63799 xla_ae_lines_pkg.set_ccid(
63800 p_code_combination_id => l_ccid
63801 , p_value_type_code => l_adr_value_type_code
63802 , p_transaction_coa_id => l_adr_transaction_coa_id
63803 , p_accounting_coa_id => l_adr_accounting_coa_id
63804 , p_adr_code => 'CST_DEFAULT'
63805 , p_adr_type_code => 'S'
63806 , p_component_type => l_component_type
63807 , p_component_code => l_component_code
63808 , p_component_type_code => l_component_type_code
63809 , p_component_appl_id => l_component_appl_id
63810 , p_amb_context_code => l_amb_context_code
63811 , p_side => 'NA'
63812 );
63813
63814
63815 --
63816 --
63817 END IF;
63818
63819 --
63820 -- Update the line information that should be overwritten
63821 --
63822 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63823 p_header_num => 1);
63824 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
63825
63826 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63827
63828 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
63829 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63830 END IF;
63831
63832 --
63833 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63834 --
63835 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63836 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
63837 ELSE
63838 ---------------------------------------------------------------------------------------------------
63839 -- 4262811a Switch Sign
63840 ---------------------------------------------------------------------------------------------------
63841 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
63842 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63843 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63844 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63845 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63846 -- 5132302
63847 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63848 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63849
63850 END IF;
63851
63852 -- 4955764
63853 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63854 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63855
63856
63857 XLA_AE_LINES_PKG.ValidateCurrentLine;
63858 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63859
63860 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63861 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63862 ,p_balance_type_code => l_balance_type_code);
63863
63864 END IF;
63865
63866 -----------------------------------------------------------------------------------------
63867 -- 4262811 Multiperiod Accounting
63868 -----------------------------------------------------------------------------------------
63869 -- No MPA option is assigned.
63870
63871
63872 END IF;
63873 END IF;
63874 --
63875
63876 --
63877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63878 trace
63879 (p_msg => 'END of AcctLineType_117'
63880 ,p_level => C_LEVEL_PROCEDURE
63881 ,p_module => l_log_module);
63882 END IF;
63883 --
63884 EXCEPTION
63885 WHEN xla_exceptions_pkg.application_exception THEN
63886 RAISE;
63887 WHEN OTHERS THEN
63888 xla_exceptions_pkg.raise_message
63889 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_117');
63890 END AcctLineType_117;
63891 --
63892
63893 ---------------------------------------
63894 --
63895 -- PRIVATE FUNCTION
63896 -- AcctLineType_118
63897 --
63898 ---------------------------------------
63899 PROCEDURE AcctLineType_118 (
63900 p_application_id IN NUMBER
63901 ,p_event_id IN NUMBER
63902 ,p_calculate_acctd_flag IN VARCHAR2
63903 ,p_calculate_g_l_flag IN VARCHAR2
63904 ,p_actual_flag IN OUT VARCHAR2
63905 ,p_balance_type_code OUT VARCHAR2
63906 ,p_gain_or_loss_ref OUT VARCHAR2
63907
63908 --Cost Management Default Account
63909 , p_source_4 IN NUMBER
63910 --DISTRIBUTION_IDENTIFIER
63911 , p_source_11 IN NUMBER
63912 --Distribution Type
63913 , p_source_12 IN VARCHAR2
63914 , p_source_12_meaning IN VARCHAR2
63915 --Entered Currency Code
63916 , p_source_15 IN VARCHAR2
63917 --Entered Amount
63918 , p_source_18 IN NUMBER
63919 --Currency Conversion Date
63920 , p_source_19 IN DATE
63921 --Currency Conversion Rate
63922 , p_source_20 IN NUMBER
63923 --Currency Conversion Type
63924 , p_source_21 IN VARCHAR2
63925 --Accounted Amount
63926 , p_source_22 IN NUMBER
63927 --Accounting Line Type
63928 , p_source_24 IN NUMBER
63929 )
63930 IS
63931
63932 l_component_type VARCHAR2(80);
63933 l_component_code VARCHAR2(30);
63934 l_component_type_code VARCHAR2(1);
63935 l_component_appl_id INTEGER;
63936 l_amb_context_code VARCHAR2(30);
63937 l_entity_code VARCHAR2(30);
63938 l_event_class_code VARCHAR2(30);
63939 l_ae_header_id NUMBER;
63940 l_event_type_code VARCHAR2(30);
63941 l_line_definition_code VARCHAR2(30);
63942 l_line_definition_owner_code VARCHAR2(1);
63943 --
63944 -- adr variables
63945 l_segment VARCHAR2(30);
63946 l_ccid NUMBER;
63947 l_adr_transaction_coa_id NUMBER;
63948 l_adr_accounting_coa_id NUMBER;
63949 l_adr_flexfield_segment_code VARCHAR2(30);
63950 l_adr_flex_value_set_id NUMBER;
63951 l_adr_value_type_code VARCHAR2(30);
63952 l_adr_value_combination_id NUMBER;
63953 l_adr_value_segment_code VARCHAR2(30);
63954
63955 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
63956 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
63957 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
63958 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
63959
63960 -- 4262811 Variables ------------------------------------------------------------------------------------------
63961 l_entered_amt_idx NUMBER;
63962 l_accted_amt_idx NUMBER;
63963 l_acc_rev_flag VARCHAR2(1);
63964 l_accrual_line_num NUMBER;
63965 l_tmp_amt NUMBER;
63966 l_acc_rev_natural_side_code VARCHAR2(1);
63967
63968 l_num_entries NUMBER;
63969 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
63970 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
63971 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
63972 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
63973 l_recog_line_1 NUMBER;
63974 l_recog_line_2 NUMBER;
63975
63976 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
63977 l_bflow_applied_to_amt NUMBER; -- 5132302
63978 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
63979
63980 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63981
63982 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
63983 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
63984
63985 ---------------------------------------------------------------------------------------------------------------
63986
63987
63988 --
63989 -- bulk performance
63990 --
63991 l_balance_type_code VARCHAR2(1);
63992 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
63993 l_log_module VARCHAR2(240);
63994
63995 --
63996 -- Upgrade strategy
63997 --
63998 l_actual_upg_option VARCHAR2(1);
63999 l_enc_upg_option VARCHAR2(1);
64000
64001 --
64002 BEGIN
64003 --
64004 IF g_log_enabled THEN
64005 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_118';
64006 END IF;
64007 --
64008 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64009
64010 trace
64011 (p_msg => 'BEGIN of AcctLineType_118'
64012 ,p_level => C_LEVEL_PROCEDURE
64013 ,p_module => l_log_module);
64014
64015 END IF;
64016 --
64017 l_component_type := 'AMB_JLT';
64018 l_component_code := 'INTERORG_TRANSFER_CREDIT';
64019 l_component_type_code := 'S';
64020 l_component_appl_id := 707;
64021 l_amb_context_code := 'DEFAULT';
64022 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
64023 l_event_class_code := 'USER_DEFINE';
64024 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
64025 l_line_definition_owner_code := 'S';
64026 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
64027 --
64028 l_balance_type_code := 'A';
64029 l_segment := NULL;
64030 l_ccid := NULL;
64031 l_adr_transaction_coa_id := NULL;
64032 l_adr_accounting_coa_id := NULL;
64033 l_adr_flexfield_segment_code := NULL;
64034 l_adr_flex_value_set_id := NULL;
64035 l_adr_value_type_code := NULL;
64036 l_adr_value_combination_id := NULL;
64037 l_adr_value_segment_code := NULL;
64038
64039 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
64040 l_bflow_class_code := ''; -- 4219869 Business Flow
64041 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
64042 l_budgetary_control_flag := 'N';
64043
64044 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64045 l_bflow_applied_to_amt := NULL; -- 5132302
64046 l_entered_amt_idx := NULL; -- 4262811
64047 l_accted_amt_idx := NULL; -- 4262811
64048 l_acc_rev_flag := NULL; -- 4262811
64049 l_accrual_line_num := NULL; -- 4262811
64050 l_tmp_amt := NULL; -- 4262811
64051 --
64052
64053 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64054 l_balance_type_code <> 'B' THEN
64055 IF NVL(p_source_24,9E125) = 11
64056 THEN
64057
64058 --
64059 XLA_AE_LINES_PKG.SetNewLine;
64060
64061 p_balance_type_code := l_balance_type_code;
64062 -- set the flag so later we will know whether the gain loss line needs to be created
64063
64064 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64065 p_actual_flag :='A';
64066 END IF;
64067
64068 --
64069 -- bulk performance
64070 --
64071 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64072 p_header_num => 0); -- 4262811
64073 --
64074 -- set accounting line options
64075 --
64076 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64077 p_natural_side_code => 'D'
64078 , p_gain_or_loss_flag => 'N'
64079 , p_gl_transfer_mode_code => 'S'
64080 , p_acct_entry_type_code => 'A'
64081 , p_switch_side_flag => 'Y'
64082 , p_merge_duplicate_code => 'N'
64083 );
64084 --
64085 l_acc_rev_natural_side_code := 'C'; -- 4262811
64086 --
64087 --
64088 -- set accounting line type info
64089 --
64090 xla_ae_lines_pkg.SetAcctLineType
64091 (p_component_type => l_component_type
64092 ,p_event_type_code => l_event_type_code
64093 ,p_line_definition_owner_code => l_line_definition_owner_code
64094 ,p_line_definition_code => l_line_definition_code
64095 ,p_accounting_line_code => l_component_code
64096 ,p_accounting_line_type_code => l_component_type_code
64097 ,p_accounting_line_appl_id => l_component_appl_id
64098 ,p_amb_context_code => l_amb_context_code
64099 ,p_entity_code => l_entity_code
64100 ,p_event_class_code => l_event_class_code);
64101 --
64102 -- set accounting class
64103 --
64104 xla_ae_lines_pkg.SetAcctClass(
64105 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
64106 , p_ae_header_id => l_ae_header_id
64107 );
64108
64109 --
64110 -- set rounding class
64111 --
64112 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64113 'INTERORG_TRANSFER_CREDIT';
64114
64115 --
64116 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64117 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64118 --
64119 -- bulk performance
64120 --
64121 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64122
64123 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64124 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64125
64126 -- 4955764
64127 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64128 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64129
64130 -- 4458381 Public Sector Enh
64131
64132 --
64133 -- set accounting attributes for the line type
64134 --
64135 l_entered_amt_idx := 3;
64136 l_accted_amt_idx := 8;
64137 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64138 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
64139 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
64140 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
64141 l_rec_acct_attrs.array_char_value(2) := p_source_12;
64142 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
64143 l_rec_acct_attrs.array_num_value(3) := p_source_18;
64144 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
64145 l_rec_acct_attrs.array_char_value(4) := p_source_15;
64146 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
64147 l_rec_acct_attrs.array_date_value(5) := p_source_19;
64148 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
64149 l_rec_acct_attrs.array_num_value(6) := p_source_20;
64150 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
64151 l_rec_acct_attrs.array_char_value(7) := p_source_21;
64152 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
64153 l_rec_acct_attrs.array_num_value(8) := p_source_22;
64154
64155 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64156 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64157
64158 ---------------------------------------------------------------------------------------------------------------
64159 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64160 ---------------------------------------------------------------------------------------------------------------
64161 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64162
64163 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64164 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64165
64166 IF xla_accounting_cache_pkg.GetValueChar
64167 (p_source_code => 'LEDGER_CATEGORY_CODE'
64168 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64169 AND l_bflow_method_code = 'PRIOR_ENTRY'
64170 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64171 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64172 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64173 )
64174 THEN
64175 xla_ae_lines_pkg.BflowUpgEntry
64176 (p_business_method_code => l_bflow_method_code
64177 ,p_business_class_code => l_bflow_class_code
64178 ,p_balance_type => l_balance_type_code);
64179 ELSE
64180 NULL;
64181 -- No business flow processing for business flow method of NONE.
64182 END IF;
64183
64184 --
64185 -- call analytical criteria
64186 --
64187
64188 --
64189 -- call description
64190 --
64191 -- No description or it is inherited.
64192 --
64193 -- call ADRs
64194 -- Bug 4922099
64195 --
64196 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64197 (NVL(l_actual_upg_option, 'N') = 'O') OR
64198 (NVL(l_enc_upg_option, 'N') = 'O')
64199 )
64200 THEN
64201 NULL;
64202 --
64203 --
64204
64205 l_ccid := AcctDerRule_4(
64206 p_application_id => p_application_id
64207 , p_ae_header_id => l_ae_header_id
64208 , p_source_4 => p_source_4
64209 , x_transaction_coa_id => l_adr_transaction_coa_id
64210 , x_accounting_coa_id => l_adr_accounting_coa_id
64211 , x_value_type_code => l_adr_value_type_code
64212 , p_side => 'NA'
64213 );
64214
64215 xla_ae_lines_pkg.set_ccid(
64216 p_code_combination_id => l_ccid
64217 , p_value_type_code => l_adr_value_type_code
64218 , p_transaction_coa_id => l_adr_transaction_coa_id
64219 , p_accounting_coa_id => l_adr_accounting_coa_id
64220 , p_adr_code => 'CST_DEFAULT'
64221 , p_adr_type_code => 'S'
64222 , p_component_type => l_component_type
64223 , p_component_code => l_component_code
64224 , p_component_type_code => l_component_type_code
64225 , p_component_appl_id => l_component_appl_id
64226 , p_amb_context_code => l_amb_context_code
64227 , p_side => 'NA'
64228 );
64229
64230
64231 --
64232 --
64233 END IF;
64234 --
64235 -- Bug 4922099
64236 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64237 (NVL(l_enc_upg_option, 'N') = 'O')
64238 ) AND
64239 (l_bflow_method_code = 'PRIOR_ENTRY')
64240 )
64241 THEN
64242 IF
64243 --
64244 1 = 2
64245 --
64246 THEN
64247 xla_accounting_err_pkg.build_message
64248 (p_appli_s_name => 'XLA'
64249 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64250 ,p_token_1 => 'LINE_NUMBER'
64251 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
64252 ,p_token_2 => 'LINE_TYPE_NAME'
64253 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
64254 l_component_type
64255 ,l_component_code
64256 ,l_component_type_code
64257 ,l_component_appl_id
64258 ,l_amb_context_code
64259 ,l_entity_code
64260 ,l_event_class_code
64261 )
64262 ,p_token_3 => 'OWNER'
64263 ,p_value_3 => xla_lookups_pkg.get_meaning(
64264 p_lookup_type => 'XLA_OWNER_TYPE'
64265 ,p_lookup_code => l_component_type_code
64266 )
64267 ,p_token_4 => 'PRODUCT_NAME'
64268 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64269 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64270 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64271 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64272 ,p_ae_header_id => NULL
64273 );
64274
64275 IF (C_LEVEL_ERROR>= g_log_level) THEN
64276 trace
64277 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64278 ,p_level => C_LEVEL_ERROR
64279 ,p_module => l_log_module);
64280 END IF;
64281 END IF;
64282 END IF;
64283 --
64284 --
64285 ------------------------------------------------------------------------------------------------
64286 -- 4219869 Business Flow
64287 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64288 -- Prior Entry. Currently, the following code is always generated.
64289 ------------------------------------------------------------------------------------------------
64290 XLA_AE_LINES_PKG.ValidateCurrentLine;
64291
64292 ------------------------------------------------------------------------------------
64293 -- 4219869 Business Flow
64294 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64295 ------------------------------------------------------------------------------------
64296 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64297
64298 ----------------------------------------------------------------------------------
64299 -- 4219869 Business Flow
64300 -- Update journal entry status -- Need to generate this within IF <condition>
64301 ----------------------------------------------------------------------------------
64302 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64303 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64304 ,p_balance_type_code => l_balance_type_code
64305 );
64306
64307 -------------------------------------------------------------------------------------------
64308 -- 4262811 - Generate the Accrual Reversal lines
64309 -------------------------------------------------------------------------------------------
64310 BEGIN
64311 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64312 (g_array_event(p_event_id).array_value_num('header_index'));
64313 IF l_acc_rev_flag IS NULL THEN
64314 l_acc_rev_flag := 'N';
64315 END IF;
64316 EXCEPTION
64317 WHEN OTHERS THEN
64318 l_acc_rev_flag := 'N';
64319 END;
64320 --
64321 IF (l_acc_rev_flag = 'Y') THEN
64322
64323 -- 4645092 ------------------------------------------------------------------------------
64324 -- To allow MPA report to determine if it should generate report process
64325 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64326 ------------------------------------------------------------------------------------------
64327
64328 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64329 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64330 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
64331 -- call ADRs
64332 -- Bug 4922099
64333 --
64334 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64335 (NVL(l_actual_upg_option, 'N') = 'O') OR
64336 (NVL(l_enc_upg_option, 'N') = 'O')
64337 )
64338 THEN
64339 NULL;
64340 --
64341 --
64342
64343 l_ccid := AcctDerRule_4(
64344 p_application_id => p_application_id
64345 , p_ae_header_id => l_ae_header_id
64346 , p_source_4 => p_source_4
64347 , x_transaction_coa_id => l_adr_transaction_coa_id
64348 , x_accounting_coa_id => l_adr_accounting_coa_id
64349 , x_value_type_code => l_adr_value_type_code
64350 , p_side => 'NA'
64351 );
64352
64353 xla_ae_lines_pkg.set_ccid(
64354 p_code_combination_id => l_ccid
64355 , p_value_type_code => l_adr_value_type_code
64356 , p_transaction_coa_id => l_adr_transaction_coa_id
64357 , p_accounting_coa_id => l_adr_accounting_coa_id
64358 , p_adr_code => 'CST_DEFAULT'
64359 , p_adr_type_code => 'S'
64360 , p_component_type => l_component_type
64361 , p_component_code => l_component_code
64362 , p_component_type_code => l_component_type_code
64363 , p_component_appl_id => l_component_appl_id
64364 , p_amb_context_code => l_amb_context_code
64365 , p_side => 'NA'
64366 );
64367
64368
64369 --
64370 --
64371 END IF;
64372
64373 --
64374 -- Update the line information that should be overwritten
64375 --
64376 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64377 p_header_num => 1);
64378 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
64379
64380 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64381
64382 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
64383 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64384 END IF;
64385
64386 --
64387 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64388 --
64389 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64390 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
64391 ELSE
64392 ---------------------------------------------------------------------------------------------------
64393 -- 4262811a Switch Sign
64394 ---------------------------------------------------------------------------------------------------
64395 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
64396 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64397 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64398 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64399 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64400 -- 5132302
64401 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64402 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64403
64404 END IF;
64405
64406 -- 4955764
64407 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64408 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64409
64410
64411 XLA_AE_LINES_PKG.ValidateCurrentLine;
64412 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64413
64414 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64415 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64416 ,p_balance_type_code => l_balance_type_code);
64417
64418 END IF;
64419
64420 -----------------------------------------------------------------------------------------
64421 -- 4262811 Multiperiod Accounting
64422 -----------------------------------------------------------------------------------------
64423 -- No MPA option is assigned.
64424
64425
64426 END IF;
64427 END IF;
64428 --
64429
64430 --
64431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64432 trace
64433 (p_msg => 'END of AcctLineType_118'
64434 ,p_level => C_LEVEL_PROCEDURE
64435 ,p_module => l_log_module);
64436 END IF;
64437 --
64438 EXCEPTION
64439 WHEN xla_exceptions_pkg.application_exception THEN
64440 RAISE;
64441 WHEN OTHERS THEN
64442 xla_exceptions_pkg.raise_message
64443 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_118');
64444 END AcctLineType_118;
64445 --
64446
64447 ---------------------------------------
64448 --
64449 -- PRIVATE FUNCTION
64450 -- AcctLineType_119
64451 --
64452 ---------------------------------------
64453 PROCEDURE AcctLineType_119 (
64454 p_application_id IN NUMBER
64455 ,p_event_id IN NUMBER
64456 ,p_calculate_acctd_flag IN VARCHAR2
64457 ,p_calculate_g_l_flag IN VARCHAR2
64458 ,p_actual_flag IN OUT VARCHAR2
64459 ,p_balance_type_code OUT VARCHAR2
64460 ,p_gain_or_loss_ref OUT VARCHAR2
64461
64462 --Cost Management Default Account
64463 , p_source_4 IN NUMBER
64464 --Applied to Application ID
64465 , p_source_6 IN NUMBER
64466 --Applied to Distribution Link Type
64467 , p_source_7 IN VARCHAR2
64468 --Applied to Entity Code
64469 , p_source_8 IN VARCHAR2
64470 --DISTRIBUTION_IDENTIFIER
64471 , p_source_11 IN NUMBER
64472 --Distribution Type
64473 , p_source_12 IN VARCHAR2
64474 , p_source_12_meaning IN VARCHAR2
64475 --Encumbrance Reversal Amount Entered
64476 , p_source_14 IN NUMBER
64477 --Entered Currency Code
64478 , p_source_15 IN VARCHAR2
64479 --Transaction Encumbrance Reversal Amount
64480 , p_source_16 IN NUMBER
64481 --Entered Amount
64482 , p_source_18 IN NUMBER
64483 --Currency Conversion Date
64484 , p_source_19 IN DATE
64485 --Currency Conversion Rate
64486 , p_source_20 IN NUMBER
64487 --Currency Conversion Type
64488 , p_source_21 IN VARCHAR2
64489 --Accounted Amount
64490 , p_source_22 IN NUMBER
64491 --Accounting Line Type
64492 , p_source_24 IN NUMBER
64493 --Costing Encumbrance Upgrade Option
64494 , p_source_27 IN VARCHAR2
64495 --TXN_PO_DISTRIBUTION_ID
64496 , p_source_28 IN NUMBER
64497 --TXN_PO_HEADER_ID
64498 , p_source_29 IN NUMBER
64499 --Requisition Budget Account
64500 , p_source_30 IN NUMBER
64501 --Requisition Encumbrance Type Identifier
64502 , p_source_31 IN NUMBER
64503 )
64504 IS
64505
64506 l_component_type VARCHAR2(80);
64507 l_component_code VARCHAR2(30);
64508 l_component_type_code VARCHAR2(1);
64509 l_component_appl_id INTEGER;
64510 l_amb_context_code VARCHAR2(30);
64511 l_entity_code VARCHAR2(30);
64512 l_event_class_code VARCHAR2(30);
64513 l_ae_header_id NUMBER;
64514 l_event_type_code VARCHAR2(30);
64515 l_line_definition_code VARCHAR2(30);
64516 l_line_definition_owner_code VARCHAR2(1);
64517 --
64518 -- adr variables
64519 l_segment VARCHAR2(30);
64520 l_ccid NUMBER;
64521 l_adr_transaction_coa_id NUMBER;
64522 l_adr_accounting_coa_id NUMBER;
64523 l_adr_flexfield_segment_code VARCHAR2(30);
64524 l_adr_flex_value_set_id NUMBER;
64525 l_adr_value_type_code VARCHAR2(30);
64526 l_adr_value_combination_id NUMBER;
64527 l_adr_value_segment_code VARCHAR2(30);
64528
64529 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
64530 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
64531 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
64532 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
64533
64534 -- 4262811 Variables ------------------------------------------------------------------------------------------
64535 l_entered_amt_idx NUMBER;
64536 l_accted_amt_idx NUMBER;
64537 l_acc_rev_flag VARCHAR2(1);
64538 l_accrual_line_num NUMBER;
64539 l_tmp_amt NUMBER;
64540 l_acc_rev_natural_side_code VARCHAR2(1);
64541
64542 l_num_entries NUMBER;
64543 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
64544 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
64545 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
64546 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
64547 l_recog_line_1 NUMBER;
64548 l_recog_line_2 NUMBER;
64549
64550 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
64551 l_bflow_applied_to_amt NUMBER; -- 5132302
64552 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
64553
64554 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64555
64556 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
64557 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
64558
64559 ---------------------------------------------------------------------------------------------------------------
64560
64561
64562 --
64563 -- bulk performance
64564 --
64565 l_balance_type_code VARCHAR2(1);
64566 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
64567 l_log_module VARCHAR2(240);
64568
64569 --
64570 -- Upgrade strategy
64571 --
64572 l_actual_upg_option VARCHAR2(1);
64573 l_enc_upg_option VARCHAR2(1);
64574
64575 --
64576 BEGIN
64577 --
64578 IF g_log_enabled THEN
64579 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_119';
64580 END IF;
64581 --
64582 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64583
64584 trace
64585 (p_msg => 'BEGIN of AcctLineType_119'
64586 ,p_level => C_LEVEL_PROCEDURE
64587 ,p_module => l_log_module);
64588
64589 END IF;
64590 --
64591 l_component_type := 'AMB_JLT';
64592 l_component_code := 'INTERORG_TRANSFER_CREDIT';
64593 l_component_type_code := 'S';
64594 l_component_appl_id := 707;
64595 l_amb_context_code := 'DEFAULT';
64596 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
64597 l_event_class_code := 'DIR_INTERORG_RCPT';
64598 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
64599 l_line_definition_owner_code := 'S';
64600 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
64601 --
64602 l_balance_type_code := 'A';
64603 l_segment := NULL;
64604 l_ccid := NULL;
64605 l_adr_transaction_coa_id := NULL;
64606 l_adr_accounting_coa_id := NULL;
64607 l_adr_flexfield_segment_code := NULL;
64608 l_adr_flex_value_set_id := NULL;
64609 l_adr_value_type_code := NULL;
64610 l_adr_value_combination_id := NULL;
64611 l_adr_value_segment_code := NULL;
64612
64613 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
64614 l_bflow_class_code := ''; -- 4219869 Business Flow
64615 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
64616 l_budgetary_control_flag := 'N';
64617
64618 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64619 l_bflow_applied_to_amt := NULL; -- 5132302
64620 l_entered_amt_idx := NULL; -- 4262811
64621 l_accted_amt_idx := NULL; -- 4262811
64622 l_acc_rev_flag := NULL; -- 4262811
64623 l_accrual_line_num := NULL; -- 4262811
64624 l_tmp_amt := NULL; -- 4262811
64625 --
64626
64627 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64628 l_balance_type_code <> 'B' THEN
64629 IF NVL(p_source_24,9E125) = 11
64630 THEN
64631
64632 --
64633 XLA_AE_LINES_PKG.SetNewLine;
64634
64635 p_balance_type_code := l_balance_type_code;
64636 -- set the flag so later we will know whether the gain loss line needs to be created
64637
64638 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64639 p_actual_flag :='A';
64640 END IF;
64641
64642 --
64643 -- bulk performance
64644 --
64645 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64646 p_header_num => 0); -- 4262811
64647 --
64648 -- set accounting line options
64649 --
64650 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64651 p_natural_side_code => 'D'
64652 , p_gain_or_loss_flag => 'N'
64653 , p_gl_transfer_mode_code => 'S'
64654 , p_acct_entry_type_code => 'A'
64655 , p_switch_side_flag => 'Y'
64656 , p_merge_duplicate_code => 'N'
64657 );
64658 --
64659 l_acc_rev_natural_side_code := 'C'; -- 4262811
64660 --
64661 --
64662 -- set accounting line type info
64663 --
64664 xla_ae_lines_pkg.SetAcctLineType
64665 (p_component_type => l_component_type
64666 ,p_event_type_code => l_event_type_code
64667 ,p_line_definition_owner_code => l_line_definition_owner_code
64668 ,p_line_definition_code => l_line_definition_code
64669 ,p_accounting_line_code => l_component_code
64670 ,p_accounting_line_type_code => l_component_type_code
64671 ,p_accounting_line_appl_id => l_component_appl_id
64672 ,p_amb_context_code => l_amb_context_code
64673 ,p_entity_code => l_entity_code
64674 ,p_event_class_code => l_event_class_code);
64675 --
64676 -- set accounting class
64677 --
64678 xla_ae_lines_pkg.SetAcctClass(
64679 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
64680 , p_ae_header_id => l_ae_header_id
64681 );
64682
64683 --
64684 -- set rounding class
64685 --
64686 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64687 'INTERORG_TRANSFER_CREDIT';
64688
64689 --
64690 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64691 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64692 --
64693 -- bulk performance
64694 --
64695 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64696
64697 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64698 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64699
64700 -- 4955764
64701 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64702 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64703
64704 -- 4458381 Public Sector Enh
64705
64706 --
64707 -- set accounting attributes for the line type
64708 --
64709 l_entered_amt_idx := 17;
64710 l_accted_amt_idx := 22;
64711 l_bflow_applied_to_amt_idx := NULL; -- 5132302
64712 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
64713 l_rec_acct_attrs.array_num_value(1) := p_source_6;
64714 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
64715 l_rec_acct_attrs.array_char_value(2) := p_source_7;
64716 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
64717 l_rec_acct_attrs.array_char_value(3) := p_source_8;
64718 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
64719 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
64720 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
64721 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
64722 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
64723 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
64724 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
64725 l_rec_acct_attrs.array_char_value(7) := p_source_12;
64726 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
64727 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
64728 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
64729 l_rec_acct_attrs.array_num_value(9) := p_source_14;
64730 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
64731 l_rec_acct_attrs.array_char_value(10) := p_source_15;
64732 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
64733 l_rec_acct_attrs.array_num_value(11) := p_source_16;
64734 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
64735 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
64736 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
64737 l_rec_acct_attrs.array_num_value(13) := p_source_14;
64738 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
64739 l_rec_acct_attrs.array_char_value(14) := p_source_15;
64740 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
64741 l_rec_acct_attrs.array_num_value(15) := p_source_16;
64742 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
64743 l_rec_acct_attrs.array_char_value(16) := p_source_27;
64744 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
64745 l_rec_acct_attrs.array_num_value(17) := p_source_18;
64746 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
64747 l_rec_acct_attrs.array_char_value(18) := p_source_15;
64748 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
64749 l_rec_acct_attrs.array_date_value(19) := p_source_19;
64750 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
64751 l_rec_acct_attrs.array_num_value(20) := p_source_20;
64752 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
64753 l_rec_acct_attrs.array_char_value(21) := p_source_21;
64754 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
64755 l_rec_acct_attrs.array_num_value(22) := p_source_22;
64756 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
64757 l_rec_acct_attrs.array_num_value(23) := p_source_31;
64758 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
64759 l_rec_acct_attrs.array_num_value(24) := p_source_31;
64760
64761 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64762 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64763
64764 ---------------------------------------------------------------------------------------------------------------
64765 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64766 ---------------------------------------------------------------------------------------------------------------
64767 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64768
64769 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64770 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64771
64772 IF xla_accounting_cache_pkg.GetValueChar
64773 (p_source_code => 'LEDGER_CATEGORY_CODE'
64774 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64775 AND l_bflow_method_code = 'PRIOR_ENTRY'
64776 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64777 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64778 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64779 )
64780 THEN
64781 xla_ae_lines_pkg.BflowUpgEntry
64782 (p_business_method_code => l_bflow_method_code
64783 ,p_business_class_code => l_bflow_class_code
64784 ,p_balance_type => l_balance_type_code);
64785 ELSE
64786 NULL;
64787 -- No business flow processing for business flow method of NONE.
64788 END IF;
64789
64790 --
64791 -- call analytical criteria
64792 --
64793
64794 --
64795 -- call description
64796 --
64797 -- No description or it is inherited.
64798 --
64799 -- call ADRs
64800 -- Bug 4922099
64801 --
64802 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64803 (NVL(l_actual_upg_option, 'N') = 'O') OR
64804 (NVL(l_enc_upg_option, 'N') = 'O')
64805 )
64806 THEN
64807 NULL;
64808 --
64809 --
64810
64811 l_ccid := AcctDerRule_4(
64812 p_application_id => p_application_id
64813 , p_ae_header_id => l_ae_header_id
64814 , p_source_4 => p_source_4
64815 , x_transaction_coa_id => l_adr_transaction_coa_id
64816 , x_accounting_coa_id => l_adr_accounting_coa_id
64817 , x_value_type_code => l_adr_value_type_code
64818 , p_side => 'NA'
64819 );
64820
64821 xla_ae_lines_pkg.set_ccid(
64822 p_code_combination_id => l_ccid
64823 , p_value_type_code => l_adr_value_type_code
64824 , p_transaction_coa_id => l_adr_transaction_coa_id
64825 , p_accounting_coa_id => l_adr_accounting_coa_id
64826 , p_adr_code => 'CST_DEFAULT'
64827 , p_adr_type_code => 'S'
64828 , p_component_type => l_component_type
64829 , p_component_code => l_component_code
64830 , p_component_type_code => l_component_type_code
64831 , p_component_appl_id => l_component_appl_id
64832 , p_amb_context_code => l_amb_context_code
64833 , p_side => 'NA'
64834 );
64835
64836
64837 --
64838 --
64839 END IF;
64840 --
64841 -- Bug 4922099
64842 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64843 (NVL(l_enc_upg_option, 'N') = 'O')
64844 ) AND
64845 (l_bflow_method_code = 'PRIOR_ENTRY')
64846 )
64847 THEN
64848 IF
64849 --
64850 1 = 2
64851 --
64852 THEN
64853 xla_accounting_err_pkg.build_message
64854 (p_appli_s_name => 'XLA'
64855 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64856 ,p_token_1 => 'LINE_NUMBER'
64857 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
64858 ,p_token_2 => 'LINE_TYPE_NAME'
64859 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
64860 l_component_type
64861 ,l_component_code
64862 ,l_component_type_code
64863 ,l_component_appl_id
64864 ,l_amb_context_code
64865 ,l_entity_code
64866 ,l_event_class_code
64867 )
64868 ,p_token_3 => 'OWNER'
64869 ,p_value_3 => xla_lookups_pkg.get_meaning(
64870 p_lookup_type => 'XLA_OWNER_TYPE'
64871 ,p_lookup_code => l_component_type_code
64872 )
64873 ,p_token_4 => 'PRODUCT_NAME'
64874 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64875 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64876 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64877 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64878 ,p_ae_header_id => NULL
64879 );
64880
64881 IF (C_LEVEL_ERROR>= g_log_level) THEN
64882 trace
64883 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64884 ,p_level => C_LEVEL_ERROR
64885 ,p_module => l_log_module);
64886 END IF;
64887 END IF;
64888 END IF;
64889 --
64890 --
64891 ------------------------------------------------------------------------------------------------
64892 -- 4219869 Business Flow
64893 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64894 -- Prior Entry. Currently, the following code is always generated.
64895 ------------------------------------------------------------------------------------------------
64896 XLA_AE_LINES_PKG.ValidateCurrentLine;
64897
64898 ------------------------------------------------------------------------------------
64899 -- 4219869 Business Flow
64900 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64901 ------------------------------------------------------------------------------------
64902 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64903
64904 ----------------------------------------------------------------------------------
64905 -- 4219869 Business Flow
64906 -- Update journal entry status -- Need to generate this within IF <condition>
64907 ----------------------------------------------------------------------------------
64908 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64909 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64910 ,p_balance_type_code => l_balance_type_code
64911 );
64912
64913 -------------------------------------------------------------------------------------------
64914 -- 4262811 - Generate the Accrual Reversal lines
64915 -------------------------------------------------------------------------------------------
64916 BEGIN
64917 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64918 (g_array_event(p_event_id).array_value_num('header_index'));
64919 IF l_acc_rev_flag IS NULL THEN
64920 l_acc_rev_flag := 'N';
64921 END IF;
64922 EXCEPTION
64923 WHEN OTHERS THEN
64924 l_acc_rev_flag := 'N';
64925 END;
64926 --
64927 IF (l_acc_rev_flag = 'Y') THEN
64928
64929 -- 4645092 ------------------------------------------------------------------------------
64930 -- To allow MPA report to determine if it should generate report process
64931 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64932 ------------------------------------------------------------------------------------------
64933
64934 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64935 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64936 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
64937 -- call ADRs
64938 -- Bug 4922099
64939 --
64940 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64941 (NVL(l_actual_upg_option, 'N') = 'O') OR
64942 (NVL(l_enc_upg_option, 'N') = 'O')
64943 )
64944 THEN
64945 NULL;
64946 --
64947 --
64948
64949 l_ccid := AcctDerRule_4(
64950 p_application_id => p_application_id
64951 , p_ae_header_id => l_ae_header_id
64952 , p_source_4 => p_source_4
64953 , x_transaction_coa_id => l_adr_transaction_coa_id
64954 , x_accounting_coa_id => l_adr_accounting_coa_id
64955 , x_value_type_code => l_adr_value_type_code
64956 , p_side => 'NA'
64957 );
64958
64959 xla_ae_lines_pkg.set_ccid(
64960 p_code_combination_id => l_ccid
64961 , p_value_type_code => l_adr_value_type_code
64962 , p_transaction_coa_id => l_adr_transaction_coa_id
64963 , p_accounting_coa_id => l_adr_accounting_coa_id
64964 , p_adr_code => 'CST_DEFAULT'
64965 , p_adr_type_code => 'S'
64966 , p_component_type => l_component_type
64967 , p_component_code => l_component_code
64968 , p_component_type_code => l_component_type_code
64969 , p_component_appl_id => l_component_appl_id
64970 , p_amb_context_code => l_amb_context_code
64971 , p_side => 'NA'
64972 );
64973
64974
64975 --
64976 --
64977 END IF;
64978
64979 --
64980 -- Update the line information that should be overwritten
64981 --
64982 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64983 p_header_num => 1);
64984 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
64985
64986 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64987
64988 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
64989 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64990 END IF;
64991
64992 --
64993 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64994 --
64995 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64996 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
64997 ELSE
64998 ---------------------------------------------------------------------------------------------------
64999 -- 4262811a Switch Sign
65000 ---------------------------------------------------------------------------------------------------
65001 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
65002 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65003 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65004 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65005 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65006 -- 5132302
65007 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65008 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65009
65010 END IF;
65011
65012 -- 4955764
65013 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65014 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65015
65016
65017 XLA_AE_LINES_PKG.ValidateCurrentLine;
65018 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65019
65020 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65021 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65022 ,p_balance_type_code => l_balance_type_code);
65023
65024 END IF;
65025
65026 -----------------------------------------------------------------------------------------
65027 -- 4262811 Multiperiod Accounting
65028 -----------------------------------------------------------------------------------------
65029 -- No MPA option is assigned.
65030
65031
65032 END IF;
65033 END IF;
65034 --
65035
65036 --
65037 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65038 trace
65039 (p_msg => 'END of AcctLineType_119'
65040 ,p_level => C_LEVEL_PROCEDURE
65041 ,p_module => l_log_module);
65042 END IF;
65043 --
65044 EXCEPTION
65045 WHEN xla_exceptions_pkg.application_exception THEN
65046 RAISE;
65047 WHEN OTHERS THEN
65048 xla_exceptions_pkg.raise_message
65049 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_119');
65050 END AcctLineType_119;
65051 --
65052
65053 ---------------------------------------
65054 --
65055 -- PRIVATE FUNCTION
65056 -- AcctLineType_120
65057 --
65058 ---------------------------------------
65059 PROCEDURE AcctLineType_120 (
65060 p_application_id IN NUMBER
65061 ,p_event_id IN NUMBER
65062 ,p_calculate_acctd_flag IN VARCHAR2
65063 ,p_calculate_g_l_flag IN VARCHAR2
65064 ,p_actual_flag IN OUT VARCHAR2
65065 ,p_balance_type_code OUT VARCHAR2
65066 ,p_gain_or_loss_ref OUT VARCHAR2
65067
65068 --Cost Management Default Account
65069 , p_source_4 IN NUMBER
65070 --DISTRIBUTION_IDENTIFIER
65071 , p_source_11 IN NUMBER
65072 --Distribution Type
65073 , p_source_12 IN VARCHAR2
65074 , p_source_12_meaning IN VARCHAR2
65075 --Entered Currency Code
65076 , p_source_15 IN VARCHAR2
65077 --Entered Amount
65078 , p_source_18 IN NUMBER
65079 --Currency Conversion Date
65080 , p_source_19 IN DATE
65081 --Currency Conversion Rate
65082 , p_source_20 IN NUMBER
65083 --Currency Conversion Type
65084 , p_source_21 IN VARCHAR2
65085 --Accounted Amount
65086 , p_source_22 IN NUMBER
65087 --Accounting Line Type
65088 , p_source_24 IN NUMBER
65089 )
65090 IS
65091
65092 l_component_type VARCHAR2(80);
65093 l_component_code VARCHAR2(30);
65094 l_component_type_code VARCHAR2(1);
65095 l_component_appl_id INTEGER;
65096 l_amb_context_code VARCHAR2(30);
65097 l_entity_code VARCHAR2(30);
65098 l_event_class_code VARCHAR2(30);
65099 l_ae_header_id NUMBER;
65100 l_event_type_code VARCHAR2(30);
65101 l_line_definition_code VARCHAR2(30);
65102 l_line_definition_owner_code VARCHAR2(1);
65103 --
65104 -- adr variables
65105 l_segment VARCHAR2(30);
65106 l_ccid NUMBER;
65107 l_adr_transaction_coa_id NUMBER;
65108 l_adr_accounting_coa_id NUMBER;
65109 l_adr_flexfield_segment_code VARCHAR2(30);
65110 l_adr_flex_value_set_id NUMBER;
65111 l_adr_value_type_code VARCHAR2(30);
65112 l_adr_value_combination_id NUMBER;
65113 l_adr_value_segment_code VARCHAR2(30);
65114
65115 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
65116 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
65117 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
65118 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
65119
65120 -- 4262811 Variables ------------------------------------------------------------------------------------------
65121 l_entered_amt_idx NUMBER;
65122 l_accted_amt_idx NUMBER;
65123 l_acc_rev_flag VARCHAR2(1);
65124 l_accrual_line_num NUMBER;
65125 l_tmp_amt NUMBER;
65126 l_acc_rev_natural_side_code VARCHAR2(1);
65127
65128 l_num_entries NUMBER;
65129 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
65130 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
65131 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
65132 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
65133 l_recog_line_1 NUMBER;
65134 l_recog_line_2 NUMBER;
65135
65136 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
65137 l_bflow_applied_to_amt NUMBER; -- 5132302
65138 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
65139
65140 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65141
65142 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
65143 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
65144
65145 ---------------------------------------------------------------------------------------------------------------
65146
65147
65148 --
65149 -- bulk performance
65150 --
65151 l_balance_type_code VARCHAR2(1);
65152 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
65153 l_log_module VARCHAR2(240);
65154
65155 --
65156 -- Upgrade strategy
65157 --
65158 l_actual_upg_option VARCHAR2(1);
65159 l_enc_upg_option VARCHAR2(1);
65160
65161 --
65162 BEGIN
65163 --
65164 IF g_log_enabled THEN
65165 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_120';
65166 END IF;
65167 --
65168 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65169
65170 trace
65171 (p_msg => 'BEGIN of AcctLineType_120'
65172 ,p_level => C_LEVEL_PROCEDURE
65173 ,p_module => l_log_module);
65174
65175 END IF;
65176 --
65177 l_component_type := 'AMB_JLT';
65178 l_component_code := 'INTERORG_TRANSFER_CREDIT';
65179 l_component_type_code := 'S';
65180 l_component_appl_id := 707;
65181 l_amb_context_code := 'DEFAULT';
65182 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
65183 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
65184 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
65185 l_line_definition_owner_code := 'S';
65186 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
65187 --
65188 l_balance_type_code := 'A';
65189 l_segment := NULL;
65190 l_ccid := NULL;
65191 l_adr_transaction_coa_id := NULL;
65192 l_adr_accounting_coa_id := NULL;
65193 l_adr_flexfield_segment_code := NULL;
65194 l_adr_flex_value_set_id := NULL;
65195 l_adr_value_type_code := NULL;
65196 l_adr_value_combination_id := NULL;
65197 l_adr_value_segment_code := NULL;
65198
65199 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
65200 l_bflow_class_code := ''; -- 4219869 Business Flow
65201 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
65202 l_budgetary_control_flag := 'N';
65203
65204 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65205 l_bflow_applied_to_amt := NULL; -- 5132302
65206 l_entered_amt_idx := NULL; -- 4262811
65207 l_accted_amt_idx := NULL; -- 4262811
65208 l_acc_rev_flag := NULL; -- 4262811
65209 l_accrual_line_num := NULL; -- 4262811
65210 l_tmp_amt := NULL; -- 4262811
65211 --
65212
65213 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65214 l_balance_type_code <> 'B' THEN
65215 IF NVL(p_source_24,9E125) = 11
65216 THEN
65217
65218 --
65219 XLA_AE_LINES_PKG.SetNewLine;
65220
65221 p_balance_type_code := l_balance_type_code;
65222 -- set the flag so later we will know whether the gain loss line needs to be created
65223
65224 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65225 p_actual_flag :='A';
65226 END IF;
65227
65228 --
65229 -- bulk performance
65230 --
65231 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65232 p_header_num => 0); -- 4262811
65233 --
65234 -- set accounting line options
65235 --
65236 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65237 p_natural_side_code => 'D'
65238 , p_gain_or_loss_flag => 'N'
65239 , p_gl_transfer_mode_code => 'S'
65240 , p_acct_entry_type_code => 'A'
65241 , p_switch_side_flag => 'Y'
65242 , p_merge_duplicate_code => 'N'
65243 );
65244 --
65245 l_acc_rev_natural_side_code := 'C'; -- 4262811
65246 --
65247 --
65248 -- set accounting line type info
65249 --
65250 xla_ae_lines_pkg.SetAcctLineType
65251 (p_component_type => l_component_type
65252 ,p_event_type_code => l_event_type_code
65253 ,p_line_definition_owner_code => l_line_definition_owner_code
65254 ,p_line_definition_code => l_line_definition_code
65255 ,p_accounting_line_code => l_component_code
65256 ,p_accounting_line_type_code => l_component_type_code
65257 ,p_accounting_line_appl_id => l_component_appl_id
65258 ,p_amb_context_code => l_amb_context_code
65259 ,p_entity_code => l_entity_code
65260 ,p_event_class_code => l_event_class_code);
65261 --
65262 -- set accounting class
65263 --
65264 xla_ae_lines_pkg.SetAcctClass(
65265 p_accounting_class_code => 'INTERORG_TRANSFER_CREDIT'
65266 , p_ae_header_id => l_ae_header_id
65267 );
65268
65269 --
65270 -- set rounding class
65271 --
65272 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65273 'INTERORG_TRANSFER_CREDIT';
65274
65275 --
65276 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65277 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65278 --
65279 -- bulk performance
65280 --
65281 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65282
65283 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65284 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65285
65286 -- 4955764
65287 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65288 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65289
65290 -- 4458381 Public Sector Enh
65291
65292 --
65293 -- set accounting attributes for the line type
65294 --
65295 l_entered_amt_idx := 3;
65296 l_accted_amt_idx := 8;
65297 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65298 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65299 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
65300 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65301 l_rec_acct_attrs.array_char_value(2) := p_source_12;
65302 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65303 l_rec_acct_attrs.array_num_value(3) := p_source_18;
65304 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65305 l_rec_acct_attrs.array_char_value(4) := p_source_15;
65306 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65307 l_rec_acct_attrs.array_date_value(5) := p_source_19;
65308 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65309 l_rec_acct_attrs.array_num_value(6) := p_source_20;
65310 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65311 l_rec_acct_attrs.array_char_value(7) := p_source_21;
65312 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65313 l_rec_acct_attrs.array_num_value(8) := p_source_22;
65314
65315 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65316 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65317
65318 ---------------------------------------------------------------------------------------------------------------
65319 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65320 ---------------------------------------------------------------------------------------------------------------
65321 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65322
65323 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65324 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65325
65326 IF xla_accounting_cache_pkg.GetValueChar
65327 (p_source_code => 'LEDGER_CATEGORY_CODE'
65328 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65329 AND l_bflow_method_code = 'PRIOR_ENTRY'
65330 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65331 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65332 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65333 )
65334 THEN
65335 xla_ae_lines_pkg.BflowUpgEntry
65336 (p_business_method_code => l_bflow_method_code
65337 ,p_business_class_code => l_bflow_class_code
65338 ,p_balance_type => l_balance_type_code);
65339 ELSE
65340 NULL;
65341 -- No business flow processing for business flow method of NONE.
65342 END IF;
65343
65344 --
65345 -- call analytical criteria
65346 --
65347
65348 --
65349 -- call description
65350 --
65351 -- No description or it is inherited.
65352 --
65353 -- call ADRs
65354 -- Bug 4922099
65355 --
65356 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65357 (NVL(l_actual_upg_option, 'N') = 'O') OR
65358 (NVL(l_enc_upg_option, 'N') = 'O')
65359 )
65360 THEN
65361 NULL;
65362 --
65363 --
65364
65365 l_ccid := AcctDerRule_4(
65366 p_application_id => p_application_id
65367 , p_ae_header_id => l_ae_header_id
65368 , p_source_4 => p_source_4
65369 , x_transaction_coa_id => l_adr_transaction_coa_id
65370 , x_accounting_coa_id => l_adr_accounting_coa_id
65371 , x_value_type_code => l_adr_value_type_code
65372 , p_side => 'NA'
65373 );
65374
65375 xla_ae_lines_pkg.set_ccid(
65376 p_code_combination_id => l_ccid
65377 , p_value_type_code => l_adr_value_type_code
65378 , p_transaction_coa_id => l_adr_transaction_coa_id
65379 , p_accounting_coa_id => l_adr_accounting_coa_id
65380 , p_adr_code => 'CST_DEFAULT'
65381 , p_adr_type_code => 'S'
65382 , p_component_type => l_component_type
65383 , p_component_code => l_component_code
65384 , p_component_type_code => l_component_type_code
65385 , p_component_appl_id => l_component_appl_id
65386 , p_amb_context_code => l_amb_context_code
65387 , p_side => 'NA'
65388 );
65389
65390
65391 --
65392 --
65393 END IF;
65394 --
65395 -- Bug 4922099
65396 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65397 (NVL(l_enc_upg_option, 'N') = 'O')
65398 ) AND
65399 (l_bflow_method_code = 'PRIOR_ENTRY')
65400 )
65401 THEN
65402 IF
65403 --
65404 1 = 2
65405 --
65406 THEN
65407 xla_accounting_err_pkg.build_message
65408 (p_appli_s_name => 'XLA'
65409 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65410 ,p_token_1 => 'LINE_NUMBER'
65411 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
65412 ,p_token_2 => 'LINE_TYPE_NAME'
65413 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
65414 l_component_type
65415 ,l_component_code
65416 ,l_component_type_code
65417 ,l_component_appl_id
65418 ,l_amb_context_code
65419 ,l_entity_code
65420 ,l_event_class_code
65421 )
65422 ,p_token_3 => 'OWNER'
65423 ,p_value_3 => xla_lookups_pkg.get_meaning(
65424 p_lookup_type => 'XLA_OWNER_TYPE'
65425 ,p_lookup_code => l_component_type_code
65426 )
65427 ,p_token_4 => 'PRODUCT_NAME'
65428 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65429 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65430 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65431 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65432 ,p_ae_header_id => NULL
65433 );
65434
65435 IF (C_LEVEL_ERROR>= g_log_level) THEN
65436 trace
65437 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65438 ,p_level => C_LEVEL_ERROR
65439 ,p_module => l_log_module);
65440 END IF;
65441 END IF;
65442 END IF;
65443 --
65444 --
65445 ------------------------------------------------------------------------------------------------
65446 -- 4219869 Business Flow
65447 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65448 -- Prior Entry. Currently, the following code is always generated.
65449 ------------------------------------------------------------------------------------------------
65450 XLA_AE_LINES_PKG.ValidateCurrentLine;
65451
65452 ------------------------------------------------------------------------------------
65453 -- 4219869 Business Flow
65454 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65455 ------------------------------------------------------------------------------------
65456 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65457
65458 ----------------------------------------------------------------------------------
65459 -- 4219869 Business Flow
65460 -- Update journal entry status -- Need to generate this within IF <condition>
65461 ----------------------------------------------------------------------------------
65462 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65463 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65464 ,p_balance_type_code => l_balance_type_code
65465 );
65466
65467 -------------------------------------------------------------------------------------------
65468 -- 4262811 - Generate the Accrual Reversal lines
65469 -------------------------------------------------------------------------------------------
65470 BEGIN
65471 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65472 (g_array_event(p_event_id).array_value_num('header_index'));
65473 IF l_acc_rev_flag IS NULL THEN
65474 l_acc_rev_flag := 'N';
65475 END IF;
65476 EXCEPTION
65477 WHEN OTHERS THEN
65478 l_acc_rev_flag := 'N';
65479 END;
65480 --
65481 IF (l_acc_rev_flag = 'Y') THEN
65482
65483 -- 4645092 ------------------------------------------------------------------------------
65484 -- To allow MPA report to determine if it should generate report process
65485 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65486 ------------------------------------------------------------------------------------------
65487
65488 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65489 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65490 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
65491 -- call ADRs
65492 -- Bug 4922099
65493 --
65494 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65495 (NVL(l_actual_upg_option, 'N') = 'O') OR
65496 (NVL(l_enc_upg_option, 'N') = 'O')
65497 )
65498 THEN
65499 NULL;
65500 --
65501 --
65502
65503 l_ccid := AcctDerRule_4(
65504 p_application_id => p_application_id
65505 , p_ae_header_id => l_ae_header_id
65506 , p_source_4 => p_source_4
65507 , x_transaction_coa_id => l_adr_transaction_coa_id
65508 , x_accounting_coa_id => l_adr_accounting_coa_id
65509 , x_value_type_code => l_adr_value_type_code
65510 , p_side => 'NA'
65511 );
65512
65513 xla_ae_lines_pkg.set_ccid(
65514 p_code_combination_id => l_ccid
65515 , p_value_type_code => l_adr_value_type_code
65516 , p_transaction_coa_id => l_adr_transaction_coa_id
65517 , p_accounting_coa_id => l_adr_accounting_coa_id
65518 , p_adr_code => 'CST_DEFAULT'
65519 , p_adr_type_code => 'S'
65520 , p_component_type => l_component_type
65521 , p_component_code => l_component_code
65522 , p_component_type_code => l_component_type_code
65523 , p_component_appl_id => l_component_appl_id
65524 , p_amb_context_code => l_amb_context_code
65525 , p_side => 'NA'
65526 );
65527
65528
65529 --
65530 --
65531 END IF;
65532
65533 --
65534 -- Update the line information that should be overwritten
65535 --
65536 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65537 p_header_num => 1);
65538 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
65539
65540 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65541
65542 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
65543 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65544 END IF;
65545
65546 --
65547 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65548 --
65549 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65550 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
65551 ELSE
65552 ---------------------------------------------------------------------------------------------------
65553 -- 4262811a Switch Sign
65554 ---------------------------------------------------------------------------------------------------
65555 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
65556 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65557 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65558 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65559 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65560 -- 5132302
65561 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65562 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65563
65564 END IF;
65565
65566 -- 4955764
65567 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65568 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65569
65570
65571 XLA_AE_LINES_PKG.ValidateCurrentLine;
65572 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65573
65574 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65575 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65576 ,p_balance_type_code => l_balance_type_code);
65577
65578 END IF;
65579
65580 -----------------------------------------------------------------------------------------
65581 -- 4262811 Multiperiod Accounting
65582 -----------------------------------------------------------------------------------------
65583 -- No MPA option is assigned.
65584
65585
65586 END IF;
65587 END IF;
65588 --
65589
65590 --
65591 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65592 trace
65593 (p_msg => 'END of AcctLineType_120'
65594 ,p_level => C_LEVEL_PROCEDURE
65595 ,p_module => l_log_module);
65596 END IF;
65597 --
65598 EXCEPTION
65599 WHEN xla_exceptions_pkg.application_exception THEN
65600 RAISE;
65601 WHEN OTHERS THEN
65602 xla_exceptions_pkg.raise_message
65603 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_120');
65604 END AcctLineType_120;
65605 --
65606
65607 ---------------------------------------
65608 --
65609 -- PRIVATE FUNCTION
65610 -- AcctLineType_121
65611 --
65612 ---------------------------------------
65613 PROCEDURE AcctLineType_121 (
65614 p_application_id IN NUMBER
65615 ,p_event_id IN NUMBER
65616 ,p_calculate_acctd_flag IN VARCHAR2
65617 ,p_calculate_g_l_flag IN VARCHAR2
65618 ,p_actual_flag IN OUT VARCHAR2
65619 ,p_balance_type_code OUT VARCHAR2
65620 ,p_gain_or_loss_ref OUT VARCHAR2
65621
65622 --Cost Management Default Account
65623 , p_source_4 IN NUMBER
65624 --DISTRIBUTION_IDENTIFIER
65625 , p_source_11 IN NUMBER
65626 --Distribution Type
65627 , p_source_12 IN VARCHAR2
65628 , p_source_12_meaning IN VARCHAR2
65629 --Entered Currency Code
65630 , p_source_15 IN VARCHAR2
65631 --Entered Amount
65632 , p_source_18 IN NUMBER
65633 --Currency Conversion Date
65634 , p_source_19 IN DATE
65635 --Currency Conversion Rate
65636 , p_source_20 IN NUMBER
65637 --Currency Conversion Type
65638 , p_source_21 IN VARCHAR2
65639 --Accounted Amount
65640 , p_source_22 IN NUMBER
65641 --Accounting Line Type
65642 , p_source_24 IN NUMBER
65643 )
65644 IS
65645
65646 l_component_type VARCHAR2(80);
65647 l_component_code VARCHAR2(30);
65648 l_component_type_code VARCHAR2(1);
65649 l_component_appl_id INTEGER;
65650 l_amb_context_code VARCHAR2(30);
65651 l_entity_code VARCHAR2(30);
65652 l_event_class_code VARCHAR2(30);
65653 l_ae_header_id NUMBER;
65654 l_event_type_code VARCHAR2(30);
65655 l_line_definition_code VARCHAR2(30);
65656 l_line_definition_owner_code VARCHAR2(1);
65657 --
65658 -- adr variables
65659 l_segment VARCHAR2(30);
65660 l_ccid NUMBER;
65661 l_adr_transaction_coa_id NUMBER;
65662 l_adr_accounting_coa_id NUMBER;
65663 l_adr_flexfield_segment_code VARCHAR2(30);
65664 l_adr_flex_value_set_id NUMBER;
65665 l_adr_value_type_code VARCHAR2(30);
65666 l_adr_value_combination_id NUMBER;
65667 l_adr_value_segment_code VARCHAR2(30);
65668
65669 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
65670 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
65671 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
65672 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
65673
65674 -- 4262811 Variables ------------------------------------------------------------------------------------------
65675 l_entered_amt_idx NUMBER;
65676 l_accted_amt_idx NUMBER;
65677 l_acc_rev_flag VARCHAR2(1);
65678 l_accrual_line_num NUMBER;
65679 l_tmp_amt NUMBER;
65680 l_acc_rev_natural_side_code VARCHAR2(1);
65681
65682 l_num_entries NUMBER;
65683 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
65684 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
65685 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
65686 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
65687 l_recog_line_1 NUMBER;
65688 l_recog_line_2 NUMBER;
65689
65690 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
65691 l_bflow_applied_to_amt NUMBER; -- 5132302
65692 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
65693
65694 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65695
65696 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
65697 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
65698
65699 ---------------------------------------------------------------------------------------------------------------
65700
65701
65702 --
65703 -- bulk performance
65704 --
65705 l_balance_type_code VARCHAR2(1);
65706 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
65707 l_log_module VARCHAR2(240);
65708
65709 --
65710 -- Upgrade strategy
65711 --
65712 l_actual_upg_option VARCHAR2(1);
65713 l_enc_upg_option VARCHAR2(1);
65714
65715 --
65716 BEGIN
65717 --
65718 IF g_log_enabled THEN
65719 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_121';
65720 END IF;
65721 --
65722 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65723
65724 trace
65725 (p_msg => 'BEGIN of AcctLineType_121'
65726 ,p_level => C_LEVEL_PROCEDURE
65727 ,p_module => l_log_module);
65728
65729 END IF;
65730 --
65731 l_component_type := 'AMB_JLT';
65732 l_component_code := 'INTRANSIT_VALUATION';
65733 l_component_type_code := 'S';
65734 l_component_appl_id := 707;
65735 l_amb_context_code := 'DEFAULT';
65736 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
65737 l_event_class_code := 'USER_DEFINE';
65738 l_event_type_code := 'UFOB_RCPT_SENDER_SHIP';
65739 l_line_definition_owner_code := 'S';
65740 l_line_definition_code := 'USER_FOB_RCPT_SENDER_SHIP';
65741 --
65742 l_balance_type_code := 'A';
65743 l_segment := NULL;
65744 l_ccid := NULL;
65745 l_adr_transaction_coa_id := NULL;
65746 l_adr_accounting_coa_id := NULL;
65747 l_adr_flexfield_segment_code := NULL;
65748 l_adr_flex_value_set_id := NULL;
65749 l_adr_value_type_code := NULL;
65750 l_adr_value_combination_id := NULL;
65751 l_adr_value_segment_code := NULL;
65752
65753 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
65754 l_bflow_class_code := ''; -- 4219869 Business Flow
65755 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
65756 l_budgetary_control_flag := 'N';
65757
65758 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65759 l_bflow_applied_to_amt := NULL; -- 5132302
65760 l_entered_amt_idx := NULL; -- 4262811
65761 l_accted_amt_idx := NULL; -- 4262811
65762 l_acc_rev_flag := NULL; -- 4262811
65763 l_accrual_line_num := NULL; -- 4262811
65764 l_tmp_amt := NULL; -- 4262811
65765 --
65766
65767 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65768 l_balance_type_code <> 'B' THEN
65769 IF NVL(p_source_24,9E125) = 14
65770 THEN
65771
65772 --
65773 XLA_AE_LINES_PKG.SetNewLine;
65774
65775 p_balance_type_code := l_balance_type_code;
65776 -- set the flag so later we will know whether the gain loss line needs to be created
65777
65778 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65779 p_actual_flag :='A';
65780 END IF;
65781
65782 --
65783 -- bulk performance
65784 --
65785 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65786 p_header_num => 0); -- 4262811
65787 --
65788 -- set accounting line options
65789 --
65790 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65791 p_natural_side_code => 'D'
65792 , p_gain_or_loss_flag => 'N'
65793 , p_gl_transfer_mode_code => 'S'
65794 , p_acct_entry_type_code => 'A'
65795 , p_switch_side_flag => 'Y'
65796 , p_merge_duplicate_code => 'N'
65797 );
65798 --
65799 l_acc_rev_natural_side_code := 'C'; -- 4262811
65800 --
65801 --
65802 -- set accounting line type info
65803 --
65804 xla_ae_lines_pkg.SetAcctLineType
65805 (p_component_type => l_component_type
65806 ,p_event_type_code => l_event_type_code
65807 ,p_line_definition_owner_code => l_line_definition_owner_code
65808 ,p_line_definition_code => l_line_definition_code
65809 ,p_accounting_line_code => l_component_code
65810 ,p_accounting_line_type_code => l_component_type_code
65811 ,p_accounting_line_appl_id => l_component_appl_id
65812 ,p_amb_context_code => l_amb_context_code
65813 ,p_entity_code => l_entity_code
65814 ,p_event_class_code => l_event_class_code);
65815 --
65816 -- set accounting class
65817 --
65818 xla_ae_lines_pkg.SetAcctClass(
65819 p_accounting_class_code => 'INTRANSIT_VALUATION'
65820 , p_ae_header_id => l_ae_header_id
65821 );
65822
65823 --
65824 -- set rounding class
65825 --
65826 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65827 'INTRANSIT_VALUATION';
65828
65829 --
65830 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65831 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65832 --
65833 -- bulk performance
65834 --
65835 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65836
65837 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65838 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65839
65840 -- 4955764
65841 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65842 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65843
65844 -- 4458381 Public Sector Enh
65845
65846 --
65847 -- set accounting attributes for the line type
65848 --
65849 l_entered_amt_idx := 3;
65850 l_accted_amt_idx := 8;
65851 l_bflow_applied_to_amt_idx := NULL; -- 5132302
65852 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
65853 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
65854 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
65855 l_rec_acct_attrs.array_char_value(2) := p_source_12;
65856 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
65857 l_rec_acct_attrs.array_num_value(3) := p_source_18;
65858 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
65859 l_rec_acct_attrs.array_char_value(4) := p_source_15;
65860 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
65861 l_rec_acct_attrs.array_date_value(5) := p_source_19;
65862 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
65863 l_rec_acct_attrs.array_num_value(6) := p_source_20;
65864 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
65865 l_rec_acct_attrs.array_char_value(7) := p_source_21;
65866 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
65867 l_rec_acct_attrs.array_num_value(8) := p_source_22;
65868
65869 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65870 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65871
65872 ---------------------------------------------------------------------------------------------------------------
65873 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65874 ---------------------------------------------------------------------------------------------------------------
65875 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65876
65877 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65878 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65879
65880 IF xla_accounting_cache_pkg.GetValueChar
65881 (p_source_code => 'LEDGER_CATEGORY_CODE'
65882 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65883 AND l_bflow_method_code = 'PRIOR_ENTRY'
65884 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65885 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65886 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65887 )
65888 THEN
65889 xla_ae_lines_pkg.BflowUpgEntry
65890 (p_business_method_code => l_bflow_method_code
65891 ,p_business_class_code => l_bflow_class_code
65892 ,p_balance_type => l_balance_type_code);
65893 ELSE
65894 NULL;
65895 -- No business flow processing for business flow method of NONE.
65896 END IF;
65897
65898 --
65899 -- call analytical criteria
65900 --
65901
65902 --
65903 -- call description
65904 --
65905 -- No description or it is inherited.
65906 --
65907 -- call ADRs
65908 -- Bug 4922099
65909 --
65910 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65911 (NVL(l_actual_upg_option, 'N') = 'O') OR
65912 (NVL(l_enc_upg_option, 'N') = 'O')
65913 )
65914 THEN
65915 NULL;
65916 --
65917 --
65918
65919 l_ccid := AcctDerRule_4(
65920 p_application_id => p_application_id
65921 , p_ae_header_id => l_ae_header_id
65922 , p_source_4 => p_source_4
65923 , x_transaction_coa_id => l_adr_transaction_coa_id
65924 , x_accounting_coa_id => l_adr_accounting_coa_id
65925 , x_value_type_code => l_adr_value_type_code
65926 , p_side => 'NA'
65927 );
65928
65929 xla_ae_lines_pkg.set_ccid(
65930 p_code_combination_id => l_ccid
65931 , p_value_type_code => l_adr_value_type_code
65932 , p_transaction_coa_id => l_adr_transaction_coa_id
65933 , p_accounting_coa_id => l_adr_accounting_coa_id
65934 , p_adr_code => 'CST_DEFAULT'
65935 , p_adr_type_code => 'S'
65936 , p_component_type => l_component_type
65937 , p_component_code => l_component_code
65938 , p_component_type_code => l_component_type_code
65939 , p_component_appl_id => l_component_appl_id
65940 , p_amb_context_code => l_amb_context_code
65941 , p_side => 'NA'
65942 );
65943
65944
65945 --
65946 --
65947 END IF;
65948 --
65949 -- Bug 4922099
65950 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65951 (NVL(l_enc_upg_option, 'N') = 'O')
65952 ) AND
65953 (l_bflow_method_code = 'PRIOR_ENTRY')
65954 )
65955 THEN
65956 IF
65957 --
65958 1 = 2
65959 --
65960 THEN
65961 xla_accounting_err_pkg.build_message
65962 (p_appli_s_name => 'XLA'
65963 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65964 ,p_token_1 => 'LINE_NUMBER'
65965 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
65966 ,p_token_2 => 'LINE_TYPE_NAME'
65967 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
65968 l_component_type
65969 ,l_component_code
65970 ,l_component_type_code
65971 ,l_component_appl_id
65972 ,l_amb_context_code
65973 ,l_entity_code
65974 ,l_event_class_code
65975 )
65976 ,p_token_3 => 'OWNER'
65977 ,p_value_3 => xla_lookups_pkg.get_meaning(
65978 p_lookup_type => 'XLA_OWNER_TYPE'
65979 ,p_lookup_code => l_component_type_code
65980 )
65981 ,p_token_4 => 'PRODUCT_NAME'
65982 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65983 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65984 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65985 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65986 ,p_ae_header_id => NULL
65987 );
65988
65989 IF (C_LEVEL_ERROR>= g_log_level) THEN
65990 trace
65991 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65992 ,p_level => C_LEVEL_ERROR
65993 ,p_module => l_log_module);
65994 END IF;
65995 END IF;
65996 END IF;
65997 --
65998 --
65999 ------------------------------------------------------------------------------------------------
66000 -- 4219869 Business Flow
66001 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66002 -- Prior Entry. Currently, the following code is always generated.
66003 ------------------------------------------------------------------------------------------------
66004 XLA_AE_LINES_PKG.ValidateCurrentLine;
66005
66006 ------------------------------------------------------------------------------------
66007 -- 4219869 Business Flow
66008 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66009 ------------------------------------------------------------------------------------
66010 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66011
66012 ----------------------------------------------------------------------------------
66013 -- 4219869 Business Flow
66014 -- Update journal entry status -- Need to generate this within IF <condition>
66015 ----------------------------------------------------------------------------------
66016 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66017 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66018 ,p_balance_type_code => l_balance_type_code
66019 );
66020
66021 -------------------------------------------------------------------------------------------
66022 -- 4262811 - Generate the Accrual Reversal lines
66023 -------------------------------------------------------------------------------------------
66024 BEGIN
66025 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66026 (g_array_event(p_event_id).array_value_num('header_index'));
66027 IF l_acc_rev_flag IS NULL THEN
66028 l_acc_rev_flag := 'N';
66029 END IF;
66030 EXCEPTION
66031 WHEN OTHERS THEN
66032 l_acc_rev_flag := 'N';
66033 END;
66034 --
66035 IF (l_acc_rev_flag = 'Y') THEN
66036
66037 -- 4645092 ------------------------------------------------------------------------------
66038 -- To allow MPA report to determine if it should generate report process
66039 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66040 ------------------------------------------------------------------------------------------
66041
66042 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66043 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66044 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
66045 -- call ADRs
66046 -- Bug 4922099
66047 --
66048 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66049 (NVL(l_actual_upg_option, 'N') = 'O') OR
66050 (NVL(l_enc_upg_option, 'N') = 'O')
66051 )
66052 THEN
66053 NULL;
66054 --
66055 --
66056
66057 l_ccid := AcctDerRule_4(
66058 p_application_id => p_application_id
66059 , p_ae_header_id => l_ae_header_id
66060 , p_source_4 => p_source_4
66061 , x_transaction_coa_id => l_adr_transaction_coa_id
66062 , x_accounting_coa_id => l_adr_accounting_coa_id
66063 , x_value_type_code => l_adr_value_type_code
66064 , p_side => 'NA'
66065 );
66066
66067 xla_ae_lines_pkg.set_ccid(
66068 p_code_combination_id => l_ccid
66069 , p_value_type_code => l_adr_value_type_code
66070 , p_transaction_coa_id => l_adr_transaction_coa_id
66071 , p_accounting_coa_id => l_adr_accounting_coa_id
66072 , p_adr_code => 'CST_DEFAULT'
66073 , p_adr_type_code => 'S'
66074 , p_component_type => l_component_type
66075 , p_component_code => l_component_code
66076 , p_component_type_code => l_component_type_code
66077 , p_component_appl_id => l_component_appl_id
66078 , p_amb_context_code => l_amb_context_code
66079 , p_side => 'NA'
66080 );
66081
66082
66083 --
66084 --
66085 END IF;
66086
66087 --
66088 -- Update the line information that should be overwritten
66089 --
66090 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66091 p_header_num => 1);
66092 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
66093
66094 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66095
66096 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
66097 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66098 END IF;
66099
66100 --
66101 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66102 --
66103 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66104 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
66105 ELSE
66106 ---------------------------------------------------------------------------------------------------
66107 -- 4262811a Switch Sign
66108 ---------------------------------------------------------------------------------------------------
66109 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
66110 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66111 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66112 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66113 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66114 -- 5132302
66115 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66116 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66117
66118 END IF;
66119
66120 -- 4955764
66121 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66122 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66123
66124
66125 XLA_AE_LINES_PKG.ValidateCurrentLine;
66126 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66127
66128 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66129 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66130 ,p_balance_type_code => l_balance_type_code);
66131
66132 END IF;
66133
66134 -----------------------------------------------------------------------------------------
66135 -- 4262811 Multiperiod Accounting
66136 -----------------------------------------------------------------------------------------
66137 -- No MPA option is assigned.
66138
66139
66140 END IF;
66141 END IF;
66142 --
66143
66144 --
66145 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66146 trace
66147 (p_msg => 'END of AcctLineType_121'
66148 ,p_level => C_LEVEL_PROCEDURE
66149 ,p_module => l_log_module);
66150 END IF;
66151 --
66152 EXCEPTION
66153 WHEN xla_exceptions_pkg.application_exception THEN
66154 RAISE;
66155 WHEN OTHERS THEN
66156 xla_exceptions_pkg.raise_message
66157 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_121');
66158 END AcctLineType_121;
66159 --
66160
66161 ---------------------------------------
66162 --
66163 -- PRIVATE FUNCTION
66164 -- AcctLineType_122
66165 --
66166 ---------------------------------------
66167 PROCEDURE AcctLineType_122 (
66168 p_application_id IN NUMBER
66169 ,p_event_id IN NUMBER
66170 ,p_calculate_acctd_flag IN VARCHAR2
66171 ,p_calculate_g_l_flag IN VARCHAR2
66172 ,p_actual_flag IN OUT VARCHAR2
66173 ,p_balance_type_code OUT VARCHAR2
66174 ,p_gain_or_loss_ref OUT VARCHAR2
66175
66176 --Cost Management Default Account
66177 , p_source_4 IN NUMBER
66178 --DISTRIBUTION_IDENTIFIER
66179 , p_source_11 IN NUMBER
66180 --Distribution Type
66181 , p_source_12 IN VARCHAR2
66182 , p_source_12_meaning IN VARCHAR2
66183 --Entered Currency Code
66184 , p_source_15 IN VARCHAR2
66185 --Entered Amount
66186 , p_source_18 IN NUMBER
66187 --Currency Conversion Date
66188 , p_source_19 IN DATE
66189 --Currency Conversion Rate
66190 , p_source_20 IN NUMBER
66191 --Currency Conversion Type
66192 , p_source_21 IN VARCHAR2
66193 --Accounted Amount
66194 , p_source_22 IN NUMBER
66195 --Accounting Line Type
66196 , p_source_24 IN NUMBER
66197 )
66198 IS
66199
66200 l_component_type VARCHAR2(80);
66201 l_component_code VARCHAR2(30);
66202 l_component_type_code VARCHAR2(1);
66203 l_component_appl_id INTEGER;
66204 l_amb_context_code VARCHAR2(30);
66205 l_entity_code VARCHAR2(30);
66206 l_event_class_code VARCHAR2(30);
66207 l_ae_header_id NUMBER;
66208 l_event_type_code VARCHAR2(30);
66209 l_line_definition_code VARCHAR2(30);
66210 l_line_definition_owner_code VARCHAR2(1);
66211 --
66212 -- adr variables
66213 l_segment VARCHAR2(30);
66214 l_ccid NUMBER;
66215 l_adr_transaction_coa_id NUMBER;
66216 l_adr_accounting_coa_id NUMBER;
66217 l_adr_flexfield_segment_code VARCHAR2(30);
66218 l_adr_flex_value_set_id NUMBER;
66219 l_adr_value_type_code VARCHAR2(30);
66220 l_adr_value_combination_id NUMBER;
66221 l_adr_value_segment_code VARCHAR2(30);
66222
66223 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
66224 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
66225 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
66226 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
66227
66228 -- 4262811 Variables ------------------------------------------------------------------------------------------
66229 l_entered_amt_idx NUMBER;
66230 l_accted_amt_idx NUMBER;
66231 l_acc_rev_flag VARCHAR2(1);
66232 l_accrual_line_num NUMBER;
66233 l_tmp_amt NUMBER;
66234 l_acc_rev_natural_side_code VARCHAR2(1);
66235
66236 l_num_entries NUMBER;
66237 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
66238 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
66239 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
66240 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
66241 l_recog_line_1 NUMBER;
66242 l_recog_line_2 NUMBER;
66243
66244 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
66245 l_bflow_applied_to_amt NUMBER; -- 5132302
66246 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
66247
66248 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66249
66250 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
66251 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
66252
66253 ---------------------------------------------------------------------------------------------------------------
66254
66255
66256 --
66257 -- bulk performance
66258 --
66259 l_balance_type_code VARCHAR2(1);
66260 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
66261 l_log_module VARCHAR2(240);
66262
66263 --
66264 -- Upgrade strategy
66265 --
66266 l_actual_upg_option VARCHAR2(1);
66267 l_enc_upg_option VARCHAR2(1);
66268
66269 --
66270 BEGIN
66271 --
66272 IF g_log_enabled THEN
66273 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_122';
66274 END IF;
66275 --
66276 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66277
66278 trace
66279 (p_msg => 'BEGIN of AcctLineType_122'
66280 ,p_level => C_LEVEL_PROCEDURE
66281 ,p_module => l_log_module);
66282
66283 END IF;
66284 --
66285 l_component_type := 'AMB_JLT';
66286 l_component_code := 'INTRANSIT_VALUATION';
66287 l_component_type_code := 'S';
66288 l_component_appl_id := 707;
66289 l_amb_context_code := 'DEFAULT';
66290 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
66291 l_event_class_code := 'USER_DEFINE';
66292 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
66293 l_line_definition_owner_code := 'S';
66294 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
66295 --
66296 l_balance_type_code := 'A';
66297 l_segment := NULL;
66298 l_ccid := NULL;
66299 l_adr_transaction_coa_id := NULL;
66300 l_adr_accounting_coa_id := NULL;
66301 l_adr_flexfield_segment_code := NULL;
66302 l_adr_flex_value_set_id := NULL;
66303 l_adr_value_type_code := NULL;
66304 l_adr_value_combination_id := NULL;
66305 l_adr_value_segment_code := NULL;
66306
66307 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
66308 l_bflow_class_code := ''; -- 4219869 Business Flow
66309 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
66310 l_budgetary_control_flag := 'N';
66311
66312 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66313 l_bflow_applied_to_amt := NULL; -- 5132302
66314 l_entered_amt_idx := NULL; -- 4262811
66315 l_accted_amt_idx := NULL; -- 4262811
66316 l_acc_rev_flag := NULL; -- 4262811
66317 l_accrual_line_num := NULL; -- 4262811
66318 l_tmp_amt := NULL; -- 4262811
66319 --
66320
66321 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66322 l_balance_type_code <> 'B' THEN
66323 IF NVL(p_source_24,9E125) = 14
66324 THEN
66325
66326 --
66327 XLA_AE_LINES_PKG.SetNewLine;
66328
66329 p_balance_type_code := l_balance_type_code;
66330 -- set the flag so later we will know whether the gain loss line needs to be created
66331
66332 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66333 p_actual_flag :='A';
66334 END IF;
66335
66336 --
66337 -- bulk performance
66338 --
66339 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66340 p_header_num => 0); -- 4262811
66341 --
66342 -- set accounting line options
66343 --
66344 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66345 p_natural_side_code => 'D'
66346 , p_gain_or_loss_flag => 'N'
66347 , p_gl_transfer_mode_code => 'S'
66348 , p_acct_entry_type_code => 'A'
66349 , p_switch_side_flag => 'Y'
66350 , p_merge_duplicate_code => 'N'
66351 );
66352 --
66353 l_acc_rev_natural_side_code := 'C'; -- 4262811
66354 --
66355 --
66356 -- set accounting line type info
66357 --
66358 xla_ae_lines_pkg.SetAcctLineType
66359 (p_component_type => l_component_type
66360 ,p_event_type_code => l_event_type_code
66361 ,p_line_definition_owner_code => l_line_definition_owner_code
66362 ,p_line_definition_code => l_line_definition_code
66363 ,p_accounting_line_code => l_component_code
66364 ,p_accounting_line_type_code => l_component_type_code
66365 ,p_accounting_line_appl_id => l_component_appl_id
66366 ,p_amb_context_code => l_amb_context_code
66367 ,p_entity_code => l_entity_code
66368 ,p_event_class_code => l_event_class_code);
66369 --
66370 -- set accounting class
66371 --
66372 xla_ae_lines_pkg.SetAcctClass(
66373 p_accounting_class_code => 'INTRANSIT_VALUATION'
66374 , p_ae_header_id => l_ae_header_id
66375 );
66376
66377 --
66378 -- set rounding class
66379 --
66380 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66381 'INTRANSIT_VALUATION';
66382
66383 --
66384 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66385 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66386 --
66387 -- bulk performance
66388 --
66389 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66390
66391 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66392 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66393
66394 -- 4955764
66395 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66396 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66397
66398 -- 4458381 Public Sector Enh
66399
66400 --
66401 -- set accounting attributes for the line type
66402 --
66403 l_entered_amt_idx := 3;
66404 l_accted_amt_idx := 8;
66405 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66406 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66407 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
66408 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66409 l_rec_acct_attrs.array_char_value(2) := p_source_12;
66410 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66411 l_rec_acct_attrs.array_num_value(3) := p_source_18;
66412 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66413 l_rec_acct_attrs.array_char_value(4) := p_source_15;
66414 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66415 l_rec_acct_attrs.array_date_value(5) := p_source_19;
66416 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66417 l_rec_acct_attrs.array_num_value(6) := p_source_20;
66418 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66419 l_rec_acct_attrs.array_char_value(7) := p_source_21;
66420 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66421 l_rec_acct_attrs.array_num_value(8) := p_source_22;
66422
66423 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66424 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66425
66426 ---------------------------------------------------------------------------------------------------------------
66427 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66428 ---------------------------------------------------------------------------------------------------------------
66429 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66430
66431 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66432 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66433
66434 IF xla_accounting_cache_pkg.GetValueChar
66435 (p_source_code => 'LEDGER_CATEGORY_CODE'
66436 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66437 AND l_bflow_method_code = 'PRIOR_ENTRY'
66438 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66439 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66440 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66441 )
66442 THEN
66443 xla_ae_lines_pkg.BflowUpgEntry
66444 (p_business_method_code => l_bflow_method_code
66445 ,p_business_class_code => l_bflow_class_code
66446 ,p_balance_type => l_balance_type_code);
66447 ELSE
66448 NULL;
66449 -- No business flow processing for business flow method of NONE.
66450 END IF;
66451
66452 --
66453 -- call analytical criteria
66454 --
66455
66456 --
66457 -- call description
66458 --
66459 -- No description or it is inherited.
66460 --
66461 -- call ADRs
66462 -- Bug 4922099
66463 --
66464 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66465 (NVL(l_actual_upg_option, 'N') = 'O') OR
66466 (NVL(l_enc_upg_option, 'N') = 'O')
66467 )
66468 THEN
66469 NULL;
66470 --
66471 --
66472
66473 l_ccid := AcctDerRule_4(
66474 p_application_id => p_application_id
66475 , p_ae_header_id => l_ae_header_id
66476 , p_source_4 => p_source_4
66477 , x_transaction_coa_id => l_adr_transaction_coa_id
66478 , x_accounting_coa_id => l_adr_accounting_coa_id
66479 , x_value_type_code => l_adr_value_type_code
66480 , p_side => 'NA'
66481 );
66482
66483 xla_ae_lines_pkg.set_ccid(
66484 p_code_combination_id => l_ccid
66485 , p_value_type_code => l_adr_value_type_code
66486 , p_transaction_coa_id => l_adr_transaction_coa_id
66487 , p_accounting_coa_id => l_adr_accounting_coa_id
66488 , p_adr_code => 'CST_DEFAULT'
66489 , p_adr_type_code => 'S'
66490 , p_component_type => l_component_type
66491 , p_component_code => l_component_code
66492 , p_component_type_code => l_component_type_code
66493 , p_component_appl_id => l_component_appl_id
66494 , p_amb_context_code => l_amb_context_code
66495 , p_side => 'NA'
66496 );
66497
66498
66499 --
66500 --
66501 END IF;
66502 --
66503 -- Bug 4922099
66504 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66505 (NVL(l_enc_upg_option, 'N') = 'O')
66506 ) AND
66507 (l_bflow_method_code = 'PRIOR_ENTRY')
66508 )
66509 THEN
66510 IF
66511 --
66512 1 = 2
66513 --
66514 THEN
66515 xla_accounting_err_pkg.build_message
66516 (p_appli_s_name => 'XLA'
66517 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66518 ,p_token_1 => 'LINE_NUMBER'
66519 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
66520 ,p_token_2 => 'LINE_TYPE_NAME'
66521 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
66522 l_component_type
66523 ,l_component_code
66524 ,l_component_type_code
66525 ,l_component_appl_id
66526 ,l_amb_context_code
66527 ,l_entity_code
66528 ,l_event_class_code
66529 )
66530 ,p_token_3 => 'OWNER'
66531 ,p_value_3 => xla_lookups_pkg.get_meaning(
66532 p_lookup_type => 'XLA_OWNER_TYPE'
66533 ,p_lookup_code => l_component_type_code
66534 )
66535 ,p_token_4 => 'PRODUCT_NAME'
66536 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66537 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66538 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66539 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66540 ,p_ae_header_id => NULL
66541 );
66542
66543 IF (C_LEVEL_ERROR>= g_log_level) THEN
66544 trace
66545 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66546 ,p_level => C_LEVEL_ERROR
66547 ,p_module => l_log_module);
66548 END IF;
66549 END IF;
66550 END IF;
66551 --
66552 --
66553 ------------------------------------------------------------------------------------------------
66554 -- 4219869 Business Flow
66555 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66556 -- Prior Entry. Currently, the following code is always generated.
66557 ------------------------------------------------------------------------------------------------
66558 XLA_AE_LINES_PKG.ValidateCurrentLine;
66559
66560 ------------------------------------------------------------------------------------
66561 -- 4219869 Business Flow
66562 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66563 ------------------------------------------------------------------------------------
66564 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66565
66566 ----------------------------------------------------------------------------------
66567 -- 4219869 Business Flow
66568 -- Update journal entry status -- Need to generate this within IF <condition>
66569 ----------------------------------------------------------------------------------
66570 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66571 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66572 ,p_balance_type_code => l_balance_type_code
66573 );
66574
66575 -------------------------------------------------------------------------------------------
66576 -- 4262811 - Generate the Accrual Reversal lines
66577 -------------------------------------------------------------------------------------------
66578 BEGIN
66579 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66580 (g_array_event(p_event_id).array_value_num('header_index'));
66581 IF l_acc_rev_flag IS NULL THEN
66582 l_acc_rev_flag := 'N';
66583 END IF;
66584 EXCEPTION
66585 WHEN OTHERS THEN
66586 l_acc_rev_flag := 'N';
66587 END;
66588 --
66589 IF (l_acc_rev_flag = 'Y') THEN
66590
66591 -- 4645092 ------------------------------------------------------------------------------
66592 -- To allow MPA report to determine if it should generate report process
66593 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66594 ------------------------------------------------------------------------------------------
66595
66596 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66597 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66598 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
66599 -- call ADRs
66600 -- Bug 4922099
66601 --
66602 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66603 (NVL(l_actual_upg_option, 'N') = 'O') OR
66604 (NVL(l_enc_upg_option, 'N') = 'O')
66605 )
66606 THEN
66607 NULL;
66608 --
66609 --
66610
66611 l_ccid := AcctDerRule_4(
66612 p_application_id => p_application_id
66613 , p_ae_header_id => l_ae_header_id
66614 , p_source_4 => p_source_4
66615 , x_transaction_coa_id => l_adr_transaction_coa_id
66616 , x_accounting_coa_id => l_adr_accounting_coa_id
66617 , x_value_type_code => l_adr_value_type_code
66618 , p_side => 'NA'
66619 );
66620
66621 xla_ae_lines_pkg.set_ccid(
66622 p_code_combination_id => l_ccid
66623 , p_value_type_code => l_adr_value_type_code
66624 , p_transaction_coa_id => l_adr_transaction_coa_id
66625 , p_accounting_coa_id => l_adr_accounting_coa_id
66626 , p_adr_code => 'CST_DEFAULT'
66627 , p_adr_type_code => 'S'
66628 , p_component_type => l_component_type
66629 , p_component_code => l_component_code
66630 , p_component_type_code => l_component_type_code
66631 , p_component_appl_id => l_component_appl_id
66632 , p_amb_context_code => l_amb_context_code
66633 , p_side => 'NA'
66634 );
66635
66636
66637 --
66638 --
66639 END IF;
66640
66641 --
66642 -- Update the line information that should be overwritten
66643 --
66644 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66645 p_header_num => 1);
66646 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
66647
66648 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66649
66650 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
66651 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66652 END IF;
66653
66654 --
66655 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66656 --
66657 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66658 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
66659 ELSE
66660 ---------------------------------------------------------------------------------------------------
66661 -- 4262811a Switch Sign
66662 ---------------------------------------------------------------------------------------------------
66663 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
66664 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66665 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66666 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66667 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66668 -- 5132302
66669 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66670 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66671
66672 END IF;
66673
66674 -- 4955764
66675 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66676 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66677
66678
66679 XLA_AE_LINES_PKG.ValidateCurrentLine;
66680 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66681
66682 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66683 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66684 ,p_balance_type_code => l_balance_type_code);
66685
66686 END IF;
66687
66688 -----------------------------------------------------------------------------------------
66689 -- 4262811 Multiperiod Accounting
66690 -----------------------------------------------------------------------------------------
66691 -- No MPA option is assigned.
66692
66693
66694 END IF;
66695 END IF;
66696 --
66697
66698 --
66699 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66700 trace
66701 (p_msg => 'END of AcctLineType_122'
66702 ,p_level => C_LEVEL_PROCEDURE
66703 ,p_module => l_log_module);
66704 END IF;
66705 --
66706 EXCEPTION
66707 WHEN xla_exceptions_pkg.application_exception THEN
66708 RAISE;
66709 WHEN OTHERS THEN
66710 xla_exceptions_pkg.raise_message
66711 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_122');
66712 END AcctLineType_122;
66713 --
66714
66715 ---------------------------------------
66716 --
66717 -- PRIVATE FUNCTION
66718 -- AcctLineType_123
66719 --
66720 ---------------------------------------
66721 PROCEDURE AcctLineType_123 (
66722 p_application_id IN NUMBER
66723 ,p_event_id IN NUMBER
66724 ,p_calculate_acctd_flag IN VARCHAR2
66725 ,p_calculate_g_l_flag IN VARCHAR2
66726 ,p_actual_flag IN OUT VARCHAR2
66727 ,p_balance_type_code OUT VARCHAR2
66728 ,p_gain_or_loss_ref OUT VARCHAR2
66729
66730 --Cost Management Default Account
66731 , p_source_4 IN NUMBER
66732 --DISTRIBUTION_IDENTIFIER
66733 , p_source_11 IN NUMBER
66734 --Distribution Type
66735 , p_source_12 IN VARCHAR2
66736 , p_source_12_meaning IN VARCHAR2
66737 --Entered Currency Code
66738 , p_source_15 IN VARCHAR2
66739 --Entered Amount
66740 , p_source_18 IN NUMBER
66741 --Currency Conversion Date
66742 , p_source_19 IN DATE
66743 --Currency Conversion Rate
66744 , p_source_20 IN NUMBER
66745 --Currency Conversion Type
66746 , p_source_21 IN VARCHAR2
66747 --Accounted Amount
66748 , p_source_22 IN NUMBER
66749 --Accounting Line Type
66750 , p_source_24 IN NUMBER
66751 )
66752 IS
66753
66754 l_component_type VARCHAR2(80);
66755 l_component_code VARCHAR2(30);
66756 l_component_type_code VARCHAR2(1);
66757 l_component_appl_id INTEGER;
66758 l_amb_context_code VARCHAR2(30);
66759 l_entity_code VARCHAR2(30);
66760 l_event_class_code VARCHAR2(30);
66761 l_ae_header_id NUMBER;
66762 l_event_type_code VARCHAR2(30);
66763 l_line_definition_code VARCHAR2(30);
66764 l_line_definition_owner_code VARCHAR2(1);
66765 --
66766 -- adr variables
66767 l_segment VARCHAR2(30);
66768 l_ccid NUMBER;
66769 l_adr_transaction_coa_id NUMBER;
66770 l_adr_accounting_coa_id NUMBER;
66771 l_adr_flexfield_segment_code VARCHAR2(30);
66772 l_adr_flex_value_set_id NUMBER;
66773 l_adr_value_type_code VARCHAR2(30);
66774 l_adr_value_combination_id NUMBER;
66775 l_adr_value_segment_code VARCHAR2(30);
66776
66777 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
66778 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
66779 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
66780 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
66781
66782 -- 4262811 Variables ------------------------------------------------------------------------------------------
66783 l_entered_amt_idx NUMBER;
66784 l_accted_amt_idx NUMBER;
66785 l_acc_rev_flag VARCHAR2(1);
66786 l_accrual_line_num NUMBER;
66787 l_tmp_amt NUMBER;
66788 l_acc_rev_natural_side_code VARCHAR2(1);
66789
66790 l_num_entries NUMBER;
66791 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
66792 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
66793 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
66794 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
66795 l_recog_line_1 NUMBER;
66796 l_recog_line_2 NUMBER;
66797
66798 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
66799 l_bflow_applied_to_amt NUMBER; -- 5132302
66800 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
66801
66802 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66803
66804 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
66805 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
66806
66807 ---------------------------------------------------------------------------------------------------------------
66808
66809
66810 --
66811 -- bulk performance
66812 --
66813 l_balance_type_code VARCHAR2(1);
66814 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
66815 l_log_module VARCHAR2(240);
66816
66817 --
66818 -- Upgrade strategy
66819 --
66820 l_actual_upg_option VARCHAR2(1);
66821 l_enc_upg_option VARCHAR2(1);
66822
66823 --
66824 BEGIN
66825 --
66826 IF g_log_enabled THEN
66827 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_123';
66828 END IF;
66829 --
66830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66831
66832 trace
66833 (p_msg => 'BEGIN of AcctLineType_123'
66834 ,p_level => C_LEVEL_PROCEDURE
66835 ,p_module => l_log_module);
66836
66837 END IF;
66838 --
66839 l_component_type := 'AMB_JLT';
66840 l_component_code := 'INTRANSIT_VALUATION';
66841 l_component_type_code := 'S';
66842 l_component_appl_id := 707;
66843 l_amb_context_code := 'DEFAULT';
66844 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
66845 l_event_class_code := 'USER_DEFINE';
66846 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
66847 l_line_definition_owner_code := 'S';
66848 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
66849 --
66850 l_balance_type_code := 'A';
66851 l_segment := NULL;
66852 l_ccid := NULL;
66853 l_adr_transaction_coa_id := NULL;
66854 l_adr_accounting_coa_id := NULL;
66855 l_adr_flexfield_segment_code := NULL;
66856 l_adr_flex_value_set_id := NULL;
66857 l_adr_value_type_code := NULL;
66858 l_adr_value_combination_id := NULL;
66859 l_adr_value_segment_code := NULL;
66860
66861 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
66862 l_bflow_class_code := ''; -- 4219869 Business Flow
66863 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
66864 l_budgetary_control_flag := 'N';
66865
66866 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66867 l_bflow_applied_to_amt := NULL; -- 5132302
66868 l_entered_amt_idx := NULL; -- 4262811
66869 l_accted_amt_idx := NULL; -- 4262811
66870 l_acc_rev_flag := NULL; -- 4262811
66871 l_accrual_line_num := NULL; -- 4262811
66872 l_tmp_amt := NULL; -- 4262811
66873 --
66874
66875 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66876 l_balance_type_code <> 'B' THEN
66877 IF NVL(p_source_24,9E125) = 14
66878 THEN
66879
66880 --
66881 XLA_AE_LINES_PKG.SetNewLine;
66882
66883 p_balance_type_code := l_balance_type_code;
66884 -- set the flag so later we will know whether the gain loss line needs to be created
66885
66886 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66887 p_actual_flag :='A';
66888 END IF;
66889
66890 --
66891 -- bulk performance
66892 --
66893 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66894 p_header_num => 0); -- 4262811
66895 --
66896 -- set accounting line options
66897 --
66898 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66899 p_natural_side_code => 'D'
66900 , p_gain_or_loss_flag => 'N'
66901 , p_gl_transfer_mode_code => 'S'
66902 , p_acct_entry_type_code => 'A'
66903 , p_switch_side_flag => 'Y'
66904 , p_merge_duplicate_code => 'N'
66905 );
66906 --
66907 l_acc_rev_natural_side_code := 'C'; -- 4262811
66908 --
66909 --
66910 -- set accounting line type info
66911 --
66912 xla_ae_lines_pkg.SetAcctLineType
66913 (p_component_type => l_component_type
66914 ,p_event_type_code => l_event_type_code
66915 ,p_line_definition_owner_code => l_line_definition_owner_code
66916 ,p_line_definition_code => l_line_definition_code
66917 ,p_accounting_line_code => l_component_code
66918 ,p_accounting_line_type_code => l_component_type_code
66919 ,p_accounting_line_appl_id => l_component_appl_id
66920 ,p_amb_context_code => l_amb_context_code
66921 ,p_entity_code => l_entity_code
66922 ,p_event_class_code => l_event_class_code);
66923 --
66924 -- set accounting class
66925 --
66926 xla_ae_lines_pkg.SetAcctClass(
66927 p_accounting_class_code => 'INTRANSIT_VALUATION'
66928 , p_ae_header_id => l_ae_header_id
66929 );
66930
66931 --
66932 -- set rounding class
66933 --
66934 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66935 'INTRANSIT_VALUATION';
66936
66937 --
66938 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66939 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66940 --
66941 -- bulk performance
66942 --
66943 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66944
66945 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66946 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66947
66948 -- 4955764
66949 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66950 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66951
66952 -- 4458381 Public Sector Enh
66953
66954 --
66955 -- set accounting attributes for the line type
66956 --
66957 l_entered_amt_idx := 3;
66958 l_accted_amt_idx := 8;
66959 l_bflow_applied_to_amt_idx := NULL; -- 5132302
66960 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66961 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
66962 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
66963 l_rec_acct_attrs.array_char_value(2) := p_source_12;
66964 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
66965 l_rec_acct_attrs.array_num_value(3) := p_source_18;
66966 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
66967 l_rec_acct_attrs.array_char_value(4) := p_source_15;
66968 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
66969 l_rec_acct_attrs.array_date_value(5) := p_source_19;
66970 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
66971 l_rec_acct_attrs.array_num_value(6) := p_source_20;
66972 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
66973 l_rec_acct_attrs.array_char_value(7) := p_source_21;
66974 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
66975 l_rec_acct_attrs.array_num_value(8) := p_source_22;
66976
66977 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66978 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66979
66980 ---------------------------------------------------------------------------------------------------------------
66981 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66982 ---------------------------------------------------------------------------------------------------------------
66983 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66984
66985 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66986 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66987
66988 IF xla_accounting_cache_pkg.GetValueChar
66989 (p_source_code => 'LEDGER_CATEGORY_CODE'
66990 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66991 AND l_bflow_method_code = 'PRIOR_ENTRY'
66992 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66993 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66994 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66995 )
66996 THEN
66997 xla_ae_lines_pkg.BflowUpgEntry
66998 (p_business_method_code => l_bflow_method_code
66999 ,p_business_class_code => l_bflow_class_code
67000 ,p_balance_type => l_balance_type_code);
67001 ELSE
67002 NULL;
67003 -- No business flow processing for business flow method of NONE.
67004 END IF;
67005
67006 --
67007 -- call analytical criteria
67008 --
67009
67010 --
67011 -- call description
67012 --
67013 -- No description or it is inherited.
67014 --
67015 -- call ADRs
67016 -- Bug 4922099
67017 --
67018 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67019 (NVL(l_actual_upg_option, 'N') = 'O') OR
67020 (NVL(l_enc_upg_option, 'N') = 'O')
67021 )
67022 THEN
67023 NULL;
67024 --
67025 --
67026
67027 l_ccid := AcctDerRule_4(
67028 p_application_id => p_application_id
67029 , p_ae_header_id => l_ae_header_id
67030 , p_source_4 => p_source_4
67031 , x_transaction_coa_id => l_adr_transaction_coa_id
67032 , x_accounting_coa_id => l_adr_accounting_coa_id
67033 , x_value_type_code => l_adr_value_type_code
67034 , p_side => 'NA'
67035 );
67036
67037 xla_ae_lines_pkg.set_ccid(
67038 p_code_combination_id => l_ccid
67039 , p_value_type_code => l_adr_value_type_code
67040 , p_transaction_coa_id => l_adr_transaction_coa_id
67041 , p_accounting_coa_id => l_adr_accounting_coa_id
67042 , p_adr_code => 'CST_DEFAULT'
67043 , p_adr_type_code => 'S'
67044 , p_component_type => l_component_type
67045 , p_component_code => l_component_code
67046 , p_component_type_code => l_component_type_code
67047 , p_component_appl_id => l_component_appl_id
67048 , p_amb_context_code => l_amb_context_code
67049 , p_side => 'NA'
67050 );
67051
67052
67053 --
67054 --
67055 END IF;
67056 --
67057 -- Bug 4922099
67058 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67059 (NVL(l_enc_upg_option, 'N') = 'O')
67060 ) AND
67061 (l_bflow_method_code = 'PRIOR_ENTRY')
67062 )
67063 THEN
67064 IF
67065 --
67066 1 = 2
67067 --
67068 THEN
67069 xla_accounting_err_pkg.build_message
67070 (p_appli_s_name => 'XLA'
67071 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67072 ,p_token_1 => 'LINE_NUMBER'
67073 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
67074 ,p_token_2 => 'LINE_TYPE_NAME'
67075 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
67076 l_component_type
67077 ,l_component_code
67078 ,l_component_type_code
67079 ,l_component_appl_id
67080 ,l_amb_context_code
67081 ,l_entity_code
67082 ,l_event_class_code
67083 )
67084 ,p_token_3 => 'OWNER'
67085 ,p_value_3 => xla_lookups_pkg.get_meaning(
67086 p_lookup_type => 'XLA_OWNER_TYPE'
67087 ,p_lookup_code => l_component_type_code
67088 )
67089 ,p_token_4 => 'PRODUCT_NAME'
67090 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67091 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67092 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67093 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67094 ,p_ae_header_id => NULL
67095 );
67096
67097 IF (C_LEVEL_ERROR>= g_log_level) THEN
67098 trace
67099 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67100 ,p_level => C_LEVEL_ERROR
67101 ,p_module => l_log_module);
67102 END IF;
67103 END IF;
67104 END IF;
67105 --
67106 --
67107 ------------------------------------------------------------------------------------------------
67108 -- 4219869 Business Flow
67109 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67110 -- Prior Entry. Currently, the following code is always generated.
67111 ------------------------------------------------------------------------------------------------
67112 XLA_AE_LINES_PKG.ValidateCurrentLine;
67113
67114 ------------------------------------------------------------------------------------
67115 -- 4219869 Business Flow
67116 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67117 ------------------------------------------------------------------------------------
67118 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67119
67120 ----------------------------------------------------------------------------------
67121 -- 4219869 Business Flow
67122 -- Update journal entry status -- Need to generate this within IF <condition>
67123 ----------------------------------------------------------------------------------
67124 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67125 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67126 ,p_balance_type_code => l_balance_type_code
67127 );
67128
67129 -------------------------------------------------------------------------------------------
67130 -- 4262811 - Generate the Accrual Reversal lines
67131 -------------------------------------------------------------------------------------------
67132 BEGIN
67133 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67134 (g_array_event(p_event_id).array_value_num('header_index'));
67135 IF l_acc_rev_flag IS NULL THEN
67136 l_acc_rev_flag := 'N';
67137 END IF;
67138 EXCEPTION
67139 WHEN OTHERS THEN
67140 l_acc_rev_flag := 'N';
67141 END;
67142 --
67143 IF (l_acc_rev_flag = 'Y') THEN
67144
67145 -- 4645092 ------------------------------------------------------------------------------
67146 -- To allow MPA report to determine if it should generate report process
67147 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67148 ------------------------------------------------------------------------------------------
67149
67150 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67151 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67152 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
67153 -- call ADRs
67154 -- Bug 4922099
67155 --
67156 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67157 (NVL(l_actual_upg_option, 'N') = 'O') OR
67158 (NVL(l_enc_upg_option, 'N') = 'O')
67159 )
67160 THEN
67161 NULL;
67162 --
67163 --
67164
67165 l_ccid := AcctDerRule_4(
67166 p_application_id => p_application_id
67167 , p_ae_header_id => l_ae_header_id
67168 , p_source_4 => p_source_4
67169 , x_transaction_coa_id => l_adr_transaction_coa_id
67170 , x_accounting_coa_id => l_adr_accounting_coa_id
67171 , x_value_type_code => l_adr_value_type_code
67172 , p_side => 'NA'
67173 );
67174
67175 xla_ae_lines_pkg.set_ccid(
67176 p_code_combination_id => l_ccid
67177 , p_value_type_code => l_adr_value_type_code
67178 , p_transaction_coa_id => l_adr_transaction_coa_id
67179 , p_accounting_coa_id => l_adr_accounting_coa_id
67180 , p_adr_code => 'CST_DEFAULT'
67181 , p_adr_type_code => 'S'
67182 , p_component_type => l_component_type
67183 , p_component_code => l_component_code
67184 , p_component_type_code => l_component_type_code
67185 , p_component_appl_id => l_component_appl_id
67186 , p_amb_context_code => l_amb_context_code
67187 , p_side => 'NA'
67188 );
67189
67190
67191 --
67192 --
67193 END IF;
67194
67195 --
67196 -- Update the line information that should be overwritten
67197 --
67198 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67199 p_header_num => 1);
67200 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
67201
67202 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67203
67204 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
67205 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67206 END IF;
67207
67208 --
67209 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67210 --
67211 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67212 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
67213 ELSE
67214 ---------------------------------------------------------------------------------------------------
67215 -- 4262811a Switch Sign
67216 ---------------------------------------------------------------------------------------------------
67217 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
67218 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67219 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67220 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67221 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67222 -- 5132302
67223 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67224 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67225
67226 END IF;
67227
67228 -- 4955764
67229 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67230 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67231
67232
67233 XLA_AE_LINES_PKG.ValidateCurrentLine;
67234 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67235
67236 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67237 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67238 ,p_balance_type_code => l_balance_type_code);
67239
67240 END IF;
67241
67242 -----------------------------------------------------------------------------------------
67243 -- 4262811 Multiperiod Accounting
67244 -----------------------------------------------------------------------------------------
67245 -- No MPA option is assigned.
67246
67247
67248 END IF;
67249 END IF;
67250 --
67251
67252 --
67253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67254 trace
67255 (p_msg => 'END of AcctLineType_123'
67256 ,p_level => C_LEVEL_PROCEDURE
67257 ,p_module => l_log_module);
67258 END IF;
67259 --
67260 EXCEPTION
67261 WHEN xla_exceptions_pkg.application_exception THEN
67262 RAISE;
67263 WHEN OTHERS THEN
67264 xla_exceptions_pkg.raise_message
67265 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_123');
67266 END AcctLineType_123;
67267 --
67268
67269 ---------------------------------------
67270 --
67271 -- PRIVATE FUNCTION
67272 -- AcctLineType_124
67273 --
67274 ---------------------------------------
67275 PROCEDURE AcctLineType_124 (
67276 p_application_id IN NUMBER
67277 ,p_event_id IN NUMBER
67278 ,p_calculate_acctd_flag IN VARCHAR2
67279 ,p_calculate_g_l_flag IN VARCHAR2
67280 ,p_actual_flag IN OUT VARCHAR2
67281 ,p_balance_type_code OUT VARCHAR2
67282 ,p_gain_or_loss_ref OUT VARCHAR2
67283
67284 --Cost Management Default Account
67285 , p_source_4 IN NUMBER
67286 --DISTRIBUTION_IDENTIFIER
67287 , p_source_11 IN NUMBER
67288 --Distribution Type
67289 , p_source_12 IN VARCHAR2
67290 , p_source_12_meaning IN VARCHAR2
67291 --Entered Currency Code
67292 , p_source_15 IN VARCHAR2
67293 --Entered Amount
67294 , p_source_18 IN NUMBER
67295 --Currency Conversion Date
67296 , p_source_19 IN DATE
67297 --Currency Conversion Rate
67298 , p_source_20 IN NUMBER
67299 --Currency Conversion Type
67300 , p_source_21 IN VARCHAR2
67301 --Accounted Amount
67302 , p_source_22 IN NUMBER
67303 --Accounting Line Type
67304 , p_source_24 IN NUMBER
67305 )
67306 IS
67307
67308 l_component_type VARCHAR2(80);
67309 l_component_code VARCHAR2(30);
67310 l_component_type_code VARCHAR2(1);
67311 l_component_appl_id INTEGER;
67312 l_amb_context_code VARCHAR2(30);
67313 l_entity_code VARCHAR2(30);
67314 l_event_class_code VARCHAR2(30);
67315 l_ae_header_id NUMBER;
67316 l_event_type_code VARCHAR2(30);
67317 l_line_definition_code VARCHAR2(30);
67318 l_line_definition_owner_code VARCHAR2(1);
67319 --
67320 -- adr variables
67321 l_segment VARCHAR2(30);
67322 l_ccid NUMBER;
67323 l_adr_transaction_coa_id NUMBER;
67324 l_adr_accounting_coa_id NUMBER;
67325 l_adr_flexfield_segment_code VARCHAR2(30);
67326 l_adr_flex_value_set_id NUMBER;
67327 l_adr_value_type_code VARCHAR2(30);
67328 l_adr_value_combination_id NUMBER;
67329 l_adr_value_segment_code VARCHAR2(30);
67330
67331 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
67332 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
67333 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
67334 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
67335
67336 -- 4262811 Variables ------------------------------------------------------------------------------------------
67337 l_entered_amt_idx NUMBER;
67338 l_accted_amt_idx NUMBER;
67339 l_acc_rev_flag VARCHAR2(1);
67340 l_accrual_line_num NUMBER;
67341 l_tmp_amt NUMBER;
67342 l_acc_rev_natural_side_code VARCHAR2(1);
67343
67344 l_num_entries NUMBER;
67345 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
67346 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
67347 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
67348 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
67349 l_recog_line_1 NUMBER;
67350 l_recog_line_2 NUMBER;
67351
67352 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
67353 l_bflow_applied_to_amt NUMBER; -- 5132302
67354 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
67355
67356 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67357
67358 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
67359 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
67360
67361 ---------------------------------------------------------------------------------------------------------------
67362
67363
67364 --
67365 -- bulk performance
67366 --
67367 l_balance_type_code VARCHAR2(1);
67368 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
67369 l_log_module VARCHAR2(240);
67370
67371 --
67372 -- Upgrade strategy
67373 --
67374 l_actual_upg_option VARCHAR2(1);
67375 l_enc_upg_option VARCHAR2(1);
67376
67377 --
67378 BEGIN
67379 --
67380 IF g_log_enabled THEN
67381 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_124';
67382 END IF;
67383 --
67384 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67385
67386 trace
67387 (p_msg => 'BEGIN of AcctLineType_124'
67388 ,p_level => C_LEVEL_PROCEDURE
67389 ,p_module => l_log_module);
67390
67391 END IF;
67392 --
67393 l_component_type := 'AMB_JLT';
67394 l_component_code := 'INTRANSIT_VALUATION';
67395 l_component_type_code := 'S';
67396 l_component_appl_id := 707;
67397 l_amb_context_code := 'DEFAULT';
67398 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
67399 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
67400 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
67401 l_line_definition_owner_code := 'S';
67402 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
67403 --
67404 l_balance_type_code := 'A';
67405 l_segment := NULL;
67406 l_ccid := NULL;
67407 l_adr_transaction_coa_id := NULL;
67408 l_adr_accounting_coa_id := NULL;
67409 l_adr_flexfield_segment_code := NULL;
67410 l_adr_flex_value_set_id := NULL;
67411 l_adr_value_type_code := NULL;
67412 l_adr_value_combination_id := NULL;
67413 l_adr_value_segment_code := NULL;
67414
67415 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
67416 l_bflow_class_code := ''; -- 4219869 Business Flow
67417 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
67418 l_budgetary_control_flag := 'N';
67419
67420 l_bflow_applied_to_amt_idx := NULL; -- 5132302
67421 l_bflow_applied_to_amt := NULL; -- 5132302
67422 l_entered_amt_idx := NULL; -- 4262811
67423 l_accted_amt_idx := NULL; -- 4262811
67424 l_acc_rev_flag := NULL; -- 4262811
67425 l_accrual_line_num := NULL; -- 4262811
67426 l_tmp_amt := NULL; -- 4262811
67427 --
67428
67429 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67430 l_balance_type_code <> 'B' THEN
67431 IF NVL(p_source_24,9E125) = 14
67432 THEN
67433
67434 --
67435 XLA_AE_LINES_PKG.SetNewLine;
67436
67437 p_balance_type_code := l_balance_type_code;
67438 -- set the flag so later we will know whether the gain loss line needs to be created
67439
67440 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67441 p_actual_flag :='A';
67442 END IF;
67443
67444 --
67445 -- bulk performance
67446 --
67447 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67448 p_header_num => 0); -- 4262811
67449 --
67450 -- set accounting line options
67451 --
67452 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67453 p_natural_side_code => 'D'
67454 , p_gain_or_loss_flag => 'N'
67455 , p_gl_transfer_mode_code => 'S'
67456 , p_acct_entry_type_code => 'A'
67457 , p_switch_side_flag => 'Y'
67458 , p_merge_duplicate_code => 'N'
67459 );
67460 --
67461 l_acc_rev_natural_side_code := 'C'; -- 4262811
67462 --
67463 --
67464 -- set accounting line type info
67465 --
67466 xla_ae_lines_pkg.SetAcctLineType
67467 (p_component_type => l_component_type
67468 ,p_event_type_code => l_event_type_code
67469 ,p_line_definition_owner_code => l_line_definition_owner_code
67470 ,p_line_definition_code => l_line_definition_code
67471 ,p_accounting_line_code => l_component_code
67472 ,p_accounting_line_type_code => l_component_type_code
67473 ,p_accounting_line_appl_id => l_component_appl_id
67474 ,p_amb_context_code => l_amb_context_code
67475 ,p_entity_code => l_entity_code
67476 ,p_event_class_code => l_event_class_code);
67477 --
67478 -- set accounting class
67479 --
67480 xla_ae_lines_pkg.SetAcctClass(
67481 p_accounting_class_code => 'INTRANSIT_VALUATION'
67482 , p_ae_header_id => l_ae_header_id
67483 );
67484
67485 --
67486 -- set rounding class
67487 --
67488 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67489 'INTRANSIT_VALUATION';
67490
67491 --
67492 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67493 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67494 --
67495 -- bulk performance
67496 --
67497 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67498
67499 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67500 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67501
67502 -- 4955764
67503 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67504 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67505
67506 -- 4458381 Public Sector Enh
67507
67508 --
67509 -- set accounting attributes for the line type
67510 --
67511 l_entered_amt_idx := 3;
67512 l_accted_amt_idx := 8;
67513 l_bflow_applied_to_amt_idx := NULL; -- 5132302
67514 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
67515 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
67516 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
67517 l_rec_acct_attrs.array_char_value(2) := p_source_12;
67518 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
67519 l_rec_acct_attrs.array_num_value(3) := p_source_18;
67520 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
67521 l_rec_acct_attrs.array_char_value(4) := p_source_15;
67522 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
67523 l_rec_acct_attrs.array_date_value(5) := p_source_19;
67524 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
67525 l_rec_acct_attrs.array_num_value(6) := p_source_20;
67526 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
67527 l_rec_acct_attrs.array_char_value(7) := p_source_21;
67528 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
67529 l_rec_acct_attrs.array_num_value(8) := p_source_22;
67530
67531 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67532 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67533
67534 ---------------------------------------------------------------------------------------------------------------
67535 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67536 ---------------------------------------------------------------------------------------------------------------
67537 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
67538
67539 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67540 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67541
67542 IF xla_accounting_cache_pkg.GetValueChar
67543 (p_source_code => 'LEDGER_CATEGORY_CODE'
67544 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
67545 AND l_bflow_method_code = 'PRIOR_ENTRY'
67546 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
67547 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
67548 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
67549 )
67550 THEN
67551 xla_ae_lines_pkg.BflowUpgEntry
67552 (p_business_method_code => l_bflow_method_code
67553 ,p_business_class_code => l_bflow_class_code
67554 ,p_balance_type => l_balance_type_code);
67555 ELSE
67556 NULL;
67557 -- No business flow processing for business flow method of NONE.
67558 END IF;
67559
67560 --
67561 -- call analytical criteria
67562 --
67563
67564 --
67565 -- call description
67566 --
67567 -- No description or it is inherited.
67568 --
67569 -- call ADRs
67570 -- Bug 4922099
67571 --
67572 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67573 (NVL(l_actual_upg_option, 'N') = 'O') OR
67574 (NVL(l_enc_upg_option, 'N') = 'O')
67575 )
67576 THEN
67577 NULL;
67578 --
67579 --
67580
67581 l_ccid := AcctDerRule_4(
67582 p_application_id => p_application_id
67583 , p_ae_header_id => l_ae_header_id
67584 , p_source_4 => p_source_4
67585 , x_transaction_coa_id => l_adr_transaction_coa_id
67586 , x_accounting_coa_id => l_adr_accounting_coa_id
67587 , x_value_type_code => l_adr_value_type_code
67588 , p_side => 'NA'
67589 );
67590
67591 xla_ae_lines_pkg.set_ccid(
67592 p_code_combination_id => l_ccid
67593 , p_value_type_code => l_adr_value_type_code
67594 , p_transaction_coa_id => l_adr_transaction_coa_id
67595 , p_accounting_coa_id => l_adr_accounting_coa_id
67596 , p_adr_code => 'CST_DEFAULT'
67597 , p_adr_type_code => 'S'
67598 , p_component_type => l_component_type
67599 , p_component_code => l_component_code
67600 , p_component_type_code => l_component_type_code
67601 , p_component_appl_id => l_component_appl_id
67602 , p_amb_context_code => l_amb_context_code
67603 , p_side => 'NA'
67604 );
67605
67606
67607 --
67608 --
67609 END IF;
67610 --
67611 -- Bug 4922099
67612 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67613 (NVL(l_enc_upg_option, 'N') = 'O')
67614 ) AND
67615 (l_bflow_method_code = 'PRIOR_ENTRY')
67616 )
67617 THEN
67618 IF
67619 --
67620 1 = 2
67621 --
67622 THEN
67623 xla_accounting_err_pkg.build_message
67624 (p_appli_s_name => 'XLA'
67625 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67626 ,p_token_1 => 'LINE_NUMBER'
67627 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
67628 ,p_token_2 => 'LINE_TYPE_NAME'
67629 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
67630 l_component_type
67631 ,l_component_code
67632 ,l_component_type_code
67633 ,l_component_appl_id
67634 ,l_amb_context_code
67635 ,l_entity_code
67636 ,l_event_class_code
67637 )
67638 ,p_token_3 => 'OWNER'
67639 ,p_value_3 => xla_lookups_pkg.get_meaning(
67640 p_lookup_type => 'XLA_OWNER_TYPE'
67641 ,p_lookup_code => l_component_type_code
67642 )
67643 ,p_token_4 => 'PRODUCT_NAME'
67644 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67645 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67646 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67647 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67648 ,p_ae_header_id => NULL
67649 );
67650
67651 IF (C_LEVEL_ERROR>= g_log_level) THEN
67652 trace
67653 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67654 ,p_level => C_LEVEL_ERROR
67655 ,p_module => l_log_module);
67656 END IF;
67657 END IF;
67658 END IF;
67659 --
67660 --
67661 ------------------------------------------------------------------------------------------------
67662 -- 4219869 Business Flow
67663 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67664 -- Prior Entry. Currently, the following code is always generated.
67665 ------------------------------------------------------------------------------------------------
67666 XLA_AE_LINES_PKG.ValidateCurrentLine;
67667
67668 ------------------------------------------------------------------------------------
67669 -- 4219869 Business Flow
67670 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67671 ------------------------------------------------------------------------------------
67672 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67673
67674 ----------------------------------------------------------------------------------
67675 -- 4219869 Business Flow
67676 -- Update journal entry status -- Need to generate this within IF <condition>
67677 ----------------------------------------------------------------------------------
67678 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67679 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67680 ,p_balance_type_code => l_balance_type_code
67681 );
67682
67683 -------------------------------------------------------------------------------------------
67684 -- 4262811 - Generate the Accrual Reversal lines
67685 -------------------------------------------------------------------------------------------
67686 BEGIN
67687 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67688 (g_array_event(p_event_id).array_value_num('header_index'));
67689 IF l_acc_rev_flag IS NULL THEN
67690 l_acc_rev_flag := 'N';
67691 END IF;
67692 EXCEPTION
67693 WHEN OTHERS THEN
67694 l_acc_rev_flag := 'N';
67695 END;
67696 --
67697 IF (l_acc_rev_flag = 'Y') THEN
67698
67699 -- 4645092 ------------------------------------------------------------------------------
67700 -- To allow MPA report to determine if it should generate report process
67701 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67702 ------------------------------------------------------------------------------------------
67703
67704 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67705 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67706 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
67707 -- call ADRs
67708 -- Bug 4922099
67709 --
67710 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67711 (NVL(l_actual_upg_option, 'N') = 'O') OR
67712 (NVL(l_enc_upg_option, 'N') = 'O')
67713 )
67714 THEN
67715 NULL;
67716 --
67717 --
67718
67719 l_ccid := AcctDerRule_4(
67720 p_application_id => p_application_id
67721 , p_ae_header_id => l_ae_header_id
67722 , p_source_4 => p_source_4
67723 , x_transaction_coa_id => l_adr_transaction_coa_id
67724 , x_accounting_coa_id => l_adr_accounting_coa_id
67725 , x_value_type_code => l_adr_value_type_code
67726 , p_side => 'NA'
67727 );
67728
67729 xla_ae_lines_pkg.set_ccid(
67730 p_code_combination_id => l_ccid
67731 , p_value_type_code => l_adr_value_type_code
67732 , p_transaction_coa_id => l_adr_transaction_coa_id
67733 , p_accounting_coa_id => l_adr_accounting_coa_id
67734 , p_adr_code => 'CST_DEFAULT'
67735 , p_adr_type_code => 'S'
67736 , p_component_type => l_component_type
67737 , p_component_code => l_component_code
67738 , p_component_type_code => l_component_type_code
67739 , p_component_appl_id => l_component_appl_id
67740 , p_amb_context_code => l_amb_context_code
67741 , p_side => 'NA'
67742 );
67743
67744
67745 --
67746 --
67747 END IF;
67748
67749 --
67750 -- Update the line information that should be overwritten
67751 --
67752 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67753 p_header_num => 1);
67754 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
67755
67756 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67757
67758 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
67759 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67760 END IF;
67761
67762 --
67763 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67764 --
67765 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67766 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
67767 ELSE
67768 ---------------------------------------------------------------------------------------------------
67769 -- 4262811a Switch Sign
67770 ---------------------------------------------------------------------------------------------------
67771 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
67772 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67773 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67774 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67775 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67776 -- 5132302
67777 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67778 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67779
67780 END IF;
67781
67782 -- 4955764
67783 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67784 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67785
67786
67787 XLA_AE_LINES_PKG.ValidateCurrentLine;
67788 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67789
67790 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67791 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67792 ,p_balance_type_code => l_balance_type_code);
67793
67794 END IF;
67795
67796 -----------------------------------------------------------------------------------------
67797 -- 4262811 Multiperiod Accounting
67798 -----------------------------------------------------------------------------------------
67799 -- No MPA option is assigned.
67800
67801
67802 END IF;
67803 END IF;
67804 --
67805
67806 --
67807 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67808 trace
67809 (p_msg => 'END of AcctLineType_124'
67810 ,p_level => C_LEVEL_PROCEDURE
67811 ,p_module => l_log_module);
67812 END IF;
67813 --
67814 EXCEPTION
67815 WHEN xla_exceptions_pkg.application_exception THEN
67816 RAISE;
67817 WHEN OTHERS THEN
67818 xla_exceptions_pkg.raise_message
67819 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_124');
67820 END AcctLineType_124;
67821 --
67822
67823 ---------------------------------------
67824 --
67825 -- PRIVATE FUNCTION
67826 -- AcctLineType_125
67827 --
67828 ---------------------------------------
67829 PROCEDURE AcctLineType_125 (
67830 p_application_id IN NUMBER
67831 ,p_event_id IN NUMBER
67832 ,p_calculate_acctd_flag IN VARCHAR2
67833 ,p_calculate_g_l_flag IN VARCHAR2
67834 ,p_actual_flag IN OUT VARCHAR2
67835 ,p_balance_type_code OUT VARCHAR2
67836 ,p_gain_or_loss_ref OUT VARCHAR2
67837
67838 --Cost Management Default Account
67839 , p_source_4 IN NUMBER
67840 --DISTRIBUTION_IDENTIFIER
67841 , p_source_11 IN NUMBER
67842 --Distribution Type
67843 , p_source_12 IN VARCHAR2
67844 , p_source_12_meaning IN VARCHAR2
67845 --Entered Currency Code
67846 , p_source_15 IN VARCHAR2
67847 --Entered Amount
67848 , p_source_18 IN NUMBER
67849 --Currency Conversion Date
67850 , p_source_19 IN DATE
67851 --Currency Conversion Rate
67852 , p_source_20 IN NUMBER
67853 --Currency Conversion Type
67854 , p_source_21 IN VARCHAR2
67855 --Accounted Amount
67856 , p_source_22 IN NUMBER
67857 --Accounting Line Type
67858 , p_source_24 IN NUMBER
67859 )
67860 IS
67861
67862 l_component_type VARCHAR2(80);
67863 l_component_code VARCHAR2(30);
67864 l_component_type_code VARCHAR2(1);
67865 l_component_appl_id INTEGER;
67866 l_amb_context_code VARCHAR2(30);
67867 l_entity_code VARCHAR2(30);
67868 l_event_class_code VARCHAR2(30);
67869 l_ae_header_id NUMBER;
67870 l_event_type_code VARCHAR2(30);
67871 l_line_definition_code VARCHAR2(30);
67872 l_line_definition_owner_code VARCHAR2(1);
67873 --
67874 -- adr variables
67875 l_segment VARCHAR2(30);
67876 l_ccid NUMBER;
67877 l_adr_transaction_coa_id NUMBER;
67878 l_adr_accounting_coa_id NUMBER;
67879 l_adr_flexfield_segment_code VARCHAR2(30);
67880 l_adr_flex_value_set_id NUMBER;
67881 l_adr_value_type_code VARCHAR2(30);
67882 l_adr_value_combination_id NUMBER;
67883 l_adr_value_segment_code VARCHAR2(30);
67884
67885 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
67886 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
67887 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
67888 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
67889
67890 -- 4262811 Variables ------------------------------------------------------------------------------------------
67891 l_entered_amt_idx NUMBER;
67892 l_accted_amt_idx NUMBER;
67893 l_acc_rev_flag VARCHAR2(1);
67894 l_accrual_line_num NUMBER;
67895 l_tmp_amt NUMBER;
67896 l_acc_rev_natural_side_code VARCHAR2(1);
67897
67898 l_num_entries NUMBER;
67899 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
67900 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
67901 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
67902 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
67903 l_recog_line_1 NUMBER;
67904 l_recog_line_2 NUMBER;
67905
67906 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
67907 l_bflow_applied_to_amt NUMBER; -- 5132302
67908 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
67909
67910 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67911
67912 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
67913 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
67914
67915 ---------------------------------------------------------------------------------------------------------------
67916
67917
67918 --
67919 -- bulk performance
67920 --
67921 l_balance_type_code VARCHAR2(1);
67922 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
67923 l_log_module VARCHAR2(240);
67924
67925 --
67926 -- Upgrade strategy
67927 --
67928 l_actual_upg_option VARCHAR2(1);
67929 l_enc_upg_option VARCHAR2(1);
67930
67931 --
67932 BEGIN
67933 --
67934 IF g_log_enabled THEN
67935 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_125';
67936 END IF;
67937 --
67938 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67939
67940 trace
67941 (p_msg => 'BEGIN of AcctLineType_125'
67942 ,p_level => C_LEVEL_PROCEDURE
67943 ,p_module => l_log_module);
67944
67945 END IF;
67946 --
67947 l_component_type := 'AMB_JLT';
67948 l_component_code := 'INTRANSIT_VALUATION';
67949 l_component_type_code := 'S';
67950 l_component_appl_id := 707;
67951 l_amb_context_code := 'DEFAULT';
67952 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
67953 l_event_class_code := 'MTL_COST_UPD';
67954 l_event_type_code := 'MTL_COST_UPD_ALL';
67955 l_line_definition_owner_code := 'S';
67956 l_line_definition_code := 'MTL_COST_UPD';
67957 --
67958 l_balance_type_code := 'A';
67959 l_segment := NULL;
67960 l_ccid := NULL;
67961 l_adr_transaction_coa_id := NULL;
67962 l_adr_accounting_coa_id := NULL;
67963 l_adr_flexfield_segment_code := NULL;
67964 l_adr_flex_value_set_id := NULL;
67965 l_adr_value_type_code := NULL;
67966 l_adr_value_combination_id := NULL;
67967 l_adr_value_segment_code := NULL;
67968
67969 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
67970 l_bflow_class_code := ''; -- 4219869 Business Flow
67971 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
67972 l_budgetary_control_flag := 'N';
67973
67974 l_bflow_applied_to_amt_idx := NULL; -- 5132302
67975 l_bflow_applied_to_amt := NULL; -- 5132302
67976 l_entered_amt_idx := NULL; -- 4262811
67977 l_accted_amt_idx := NULL; -- 4262811
67978 l_acc_rev_flag := NULL; -- 4262811
67979 l_accrual_line_num := NULL; -- 4262811
67980 l_tmp_amt := NULL; -- 4262811
67981 --
67982
67983 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67984 l_balance_type_code <> 'B' THEN
67985 IF NVL(p_source_24,9E125) = 14
67986 THEN
67987
67988 --
67989 XLA_AE_LINES_PKG.SetNewLine;
67990
67991 p_balance_type_code := l_balance_type_code;
67992 -- set the flag so later we will know whether the gain loss line needs to be created
67993
67994 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67995 p_actual_flag :='A';
67996 END IF;
67997
67998 --
67999 -- bulk performance
68000 --
68001 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68002 p_header_num => 0); -- 4262811
68003 --
68004 -- set accounting line options
68005 --
68006 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68007 p_natural_side_code => 'D'
68008 , p_gain_or_loss_flag => 'N'
68009 , p_gl_transfer_mode_code => 'S'
68010 , p_acct_entry_type_code => 'A'
68011 , p_switch_side_flag => 'Y'
68012 , p_merge_duplicate_code => 'N'
68013 );
68014 --
68015 l_acc_rev_natural_side_code := 'C'; -- 4262811
68016 --
68017 --
68018 -- set accounting line type info
68019 --
68020 xla_ae_lines_pkg.SetAcctLineType
68021 (p_component_type => l_component_type
68022 ,p_event_type_code => l_event_type_code
68023 ,p_line_definition_owner_code => l_line_definition_owner_code
68024 ,p_line_definition_code => l_line_definition_code
68025 ,p_accounting_line_code => l_component_code
68026 ,p_accounting_line_type_code => l_component_type_code
68027 ,p_accounting_line_appl_id => l_component_appl_id
68028 ,p_amb_context_code => l_amb_context_code
68029 ,p_entity_code => l_entity_code
68030 ,p_event_class_code => l_event_class_code);
68031 --
68032 -- set accounting class
68033 --
68034 xla_ae_lines_pkg.SetAcctClass(
68035 p_accounting_class_code => 'INTRANSIT_VALUATION'
68036 , p_ae_header_id => l_ae_header_id
68037 );
68038
68039 --
68040 -- set rounding class
68041 --
68042 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68043 'INTRANSIT_VALUATION';
68044
68045 --
68046 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68047 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68048 --
68049 -- bulk performance
68050 --
68051 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68052
68053 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68054 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68055
68056 -- 4955764
68057 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68058 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68059
68060 -- 4458381 Public Sector Enh
68061
68062 --
68063 -- set accounting attributes for the line type
68064 --
68065 l_entered_amt_idx := 3;
68066 l_accted_amt_idx := 8;
68067 l_bflow_applied_to_amt_idx := NULL; -- 5132302
68068 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68069 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
68070 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68071 l_rec_acct_attrs.array_char_value(2) := p_source_12;
68072 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68073 l_rec_acct_attrs.array_num_value(3) := p_source_18;
68074 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68075 l_rec_acct_attrs.array_char_value(4) := p_source_15;
68076 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68077 l_rec_acct_attrs.array_date_value(5) := p_source_19;
68078 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68079 l_rec_acct_attrs.array_num_value(6) := p_source_20;
68080 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68081 l_rec_acct_attrs.array_char_value(7) := p_source_21;
68082 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68083 l_rec_acct_attrs.array_num_value(8) := p_source_22;
68084
68085 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68086 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68087
68088 ---------------------------------------------------------------------------------------------------------------
68089 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68090 ---------------------------------------------------------------------------------------------------------------
68091 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68092
68093 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68094 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68095
68096 IF xla_accounting_cache_pkg.GetValueChar
68097 (p_source_code => 'LEDGER_CATEGORY_CODE'
68098 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68099 AND l_bflow_method_code = 'PRIOR_ENTRY'
68100 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68101 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68102 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68103 )
68104 THEN
68105 xla_ae_lines_pkg.BflowUpgEntry
68106 (p_business_method_code => l_bflow_method_code
68107 ,p_business_class_code => l_bflow_class_code
68108 ,p_balance_type => l_balance_type_code);
68109 ELSE
68110 NULL;
68111 -- No business flow processing for business flow method of NONE.
68112 END IF;
68113
68114 --
68115 -- call analytical criteria
68116 --
68117
68118 --
68119 -- call description
68120 --
68121 -- No description or it is inherited.
68122 --
68123 -- call ADRs
68124 -- Bug 4922099
68125 --
68126 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68127 (NVL(l_actual_upg_option, 'N') = 'O') OR
68128 (NVL(l_enc_upg_option, 'N') = 'O')
68129 )
68130 THEN
68131 NULL;
68132 --
68133 --
68134
68135 l_ccid := AcctDerRule_4(
68136 p_application_id => p_application_id
68137 , p_ae_header_id => l_ae_header_id
68138 , p_source_4 => p_source_4
68139 , x_transaction_coa_id => l_adr_transaction_coa_id
68140 , x_accounting_coa_id => l_adr_accounting_coa_id
68141 , x_value_type_code => l_adr_value_type_code
68142 , p_side => 'NA'
68143 );
68144
68145 xla_ae_lines_pkg.set_ccid(
68146 p_code_combination_id => l_ccid
68147 , p_value_type_code => l_adr_value_type_code
68148 , p_transaction_coa_id => l_adr_transaction_coa_id
68149 , p_accounting_coa_id => l_adr_accounting_coa_id
68150 , p_adr_code => 'CST_DEFAULT'
68151 , p_adr_type_code => 'S'
68152 , p_component_type => l_component_type
68153 , p_component_code => l_component_code
68154 , p_component_type_code => l_component_type_code
68155 , p_component_appl_id => l_component_appl_id
68156 , p_amb_context_code => l_amb_context_code
68157 , p_side => 'NA'
68158 );
68159
68160
68161 --
68162 --
68163 END IF;
68164 --
68165 -- Bug 4922099
68166 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68167 (NVL(l_enc_upg_option, 'N') = 'O')
68168 ) AND
68169 (l_bflow_method_code = 'PRIOR_ENTRY')
68170 )
68171 THEN
68172 IF
68173 --
68174 1 = 2
68175 --
68176 THEN
68177 xla_accounting_err_pkg.build_message
68178 (p_appli_s_name => 'XLA'
68179 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68180 ,p_token_1 => 'LINE_NUMBER'
68181 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
68182 ,p_token_2 => 'LINE_TYPE_NAME'
68183 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
68184 l_component_type
68185 ,l_component_code
68186 ,l_component_type_code
68187 ,l_component_appl_id
68188 ,l_amb_context_code
68189 ,l_entity_code
68190 ,l_event_class_code
68191 )
68192 ,p_token_3 => 'OWNER'
68193 ,p_value_3 => xla_lookups_pkg.get_meaning(
68194 p_lookup_type => 'XLA_OWNER_TYPE'
68195 ,p_lookup_code => l_component_type_code
68196 )
68197 ,p_token_4 => 'PRODUCT_NAME'
68198 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68199 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68200 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68201 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68202 ,p_ae_header_id => NULL
68203 );
68204
68205 IF (C_LEVEL_ERROR>= g_log_level) THEN
68206 trace
68207 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68208 ,p_level => C_LEVEL_ERROR
68209 ,p_module => l_log_module);
68210 END IF;
68211 END IF;
68212 END IF;
68213 --
68214 --
68215 ------------------------------------------------------------------------------------------------
68216 -- 4219869 Business Flow
68217 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68218 -- Prior Entry. Currently, the following code is always generated.
68219 ------------------------------------------------------------------------------------------------
68220 XLA_AE_LINES_PKG.ValidateCurrentLine;
68221
68222 ------------------------------------------------------------------------------------
68223 -- 4219869 Business Flow
68224 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68225 ------------------------------------------------------------------------------------
68226 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68227
68228 ----------------------------------------------------------------------------------
68229 -- 4219869 Business Flow
68230 -- Update journal entry status -- Need to generate this within IF <condition>
68231 ----------------------------------------------------------------------------------
68232 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68233 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68234 ,p_balance_type_code => l_balance_type_code
68235 );
68236
68237 -------------------------------------------------------------------------------------------
68238 -- 4262811 - Generate the Accrual Reversal lines
68239 -------------------------------------------------------------------------------------------
68240 BEGIN
68241 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68242 (g_array_event(p_event_id).array_value_num('header_index'));
68243 IF l_acc_rev_flag IS NULL THEN
68244 l_acc_rev_flag := 'N';
68245 END IF;
68246 EXCEPTION
68247 WHEN OTHERS THEN
68248 l_acc_rev_flag := 'N';
68249 END;
68250 --
68251 IF (l_acc_rev_flag = 'Y') THEN
68252
68253 -- 4645092 ------------------------------------------------------------------------------
68254 -- To allow MPA report to determine if it should generate report process
68255 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68256 ------------------------------------------------------------------------------------------
68257
68258 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68259 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68260 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
68261 -- call ADRs
68262 -- Bug 4922099
68263 --
68264 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68265 (NVL(l_actual_upg_option, 'N') = 'O') OR
68266 (NVL(l_enc_upg_option, 'N') = 'O')
68267 )
68268 THEN
68269 NULL;
68270 --
68271 --
68272
68273 l_ccid := AcctDerRule_4(
68274 p_application_id => p_application_id
68275 , p_ae_header_id => l_ae_header_id
68276 , p_source_4 => p_source_4
68277 , x_transaction_coa_id => l_adr_transaction_coa_id
68278 , x_accounting_coa_id => l_adr_accounting_coa_id
68279 , x_value_type_code => l_adr_value_type_code
68280 , p_side => 'NA'
68281 );
68282
68283 xla_ae_lines_pkg.set_ccid(
68284 p_code_combination_id => l_ccid
68285 , p_value_type_code => l_adr_value_type_code
68286 , p_transaction_coa_id => l_adr_transaction_coa_id
68287 , p_accounting_coa_id => l_adr_accounting_coa_id
68288 , p_adr_code => 'CST_DEFAULT'
68289 , p_adr_type_code => 'S'
68290 , p_component_type => l_component_type
68291 , p_component_code => l_component_code
68292 , p_component_type_code => l_component_type_code
68293 , p_component_appl_id => l_component_appl_id
68294 , p_amb_context_code => l_amb_context_code
68295 , p_side => 'NA'
68296 );
68297
68298
68299 --
68300 --
68301 END IF;
68302
68303 --
68304 -- Update the line information that should be overwritten
68305 --
68306 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68307 p_header_num => 1);
68308 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
68309
68310 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68311
68312 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
68313 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68314 END IF;
68315
68316 --
68317 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68318 --
68319 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68320 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
68321 ELSE
68322 ---------------------------------------------------------------------------------------------------
68323 -- 4262811a Switch Sign
68324 ---------------------------------------------------------------------------------------------------
68325 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
68326 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68327 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68328 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68329 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68330 -- 5132302
68331 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68332 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68333
68334 END IF;
68335
68336 -- 4955764
68337 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68338 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68339
68340
68341 XLA_AE_LINES_PKG.ValidateCurrentLine;
68342 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68343
68344 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68345 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68346 ,p_balance_type_code => l_balance_type_code);
68347
68348 END IF;
68349
68350 -----------------------------------------------------------------------------------------
68351 -- 4262811 Multiperiod Accounting
68352 -----------------------------------------------------------------------------------------
68353 -- No MPA option is assigned.
68354
68355
68356 END IF;
68357 END IF;
68358 --
68359
68360 --
68361 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68362 trace
68363 (p_msg => 'END of AcctLineType_125'
68364 ,p_level => C_LEVEL_PROCEDURE
68365 ,p_module => l_log_module);
68366 END IF;
68367 --
68368 EXCEPTION
68369 WHEN xla_exceptions_pkg.application_exception THEN
68370 RAISE;
68371 WHEN OTHERS THEN
68372 xla_exceptions_pkg.raise_message
68373 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_125');
68374 END AcctLineType_125;
68375 --
68376
68377 ---------------------------------------
68378 --
68379 -- PRIVATE FUNCTION
68380 -- AcctLineType_126
68381 --
68382 ---------------------------------------
68383 PROCEDURE AcctLineType_126 (
68384 p_application_id IN NUMBER
68385 ,p_event_id IN NUMBER
68386 ,p_calculate_acctd_flag IN VARCHAR2
68387 ,p_calculate_g_l_flag IN VARCHAR2
68388 ,p_actual_flag IN OUT VARCHAR2
68389 ,p_balance_type_code OUT VARCHAR2
68390 ,p_gain_or_loss_ref OUT VARCHAR2
68391
68392 --Cost Management Default Account
68393 , p_source_4 IN NUMBER
68394 --DISTRIBUTION_IDENTIFIER
68395 , p_source_11 IN NUMBER
68396 --Distribution Type
68397 , p_source_12 IN VARCHAR2
68398 , p_source_12_meaning IN VARCHAR2
68399 --Entered Currency Code
68400 , p_source_15 IN VARCHAR2
68401 --Entered Amount
68402 , p_source_18 IN NUMBER
68403 --Currency Conversion Date
68404 , p_source_19 IN DATE
68405 --Currency Conversion Rate
68406 , p_source_20 IN NUMBER
68407 --Currency Conversion Type
68408 , p_source_21 IN VARCHAR2
68409 --Accounted Amount
68410 , p_source_22 IN NUMBER
68411 --Accounting Line Type
68412 , p_source_24 IN NUMBER
68413 )
68414 IS
68415
68416 l_component_type VARCHAR2(80);
68417 l_component_code VARCHAR2(30);
68418 l_component_type_code VARCHAR2(1);
68419 l_component_appl_id INTEGER;
68420 l_amb_context_code VARCHAR2(30);
68421 l_entity_code VARCHAR2(30);
68422 l_event_class_code VARCHAR2(30);
68423 l_ae_header_id NUMBER;
68424 l_event_type_code VARCHAR2(30);
68425 l_line_definition_code VARCHAR2(30);
68426 l_line_definition_owner_code VARCHAR2(1);
68427 --
68428 -- adr variables
68429 l_segment VARCHAR2(30);
68430 l_ccid NUMBER;
68431 l_adr_transaction_coa_id NUMBER;
68432 l_adr_accounting_coa_id NUMBER;
68433 l_adr_flexfield_segment_code VARCHAR2(30);
68434 l_adr_flex_value_set_id NUMBER;
68435 l_adr_value_type_code VARCHAR2(30);
68436 l_adr_value_combination_id NUMBER;
68437 l_adr_value_segment_code VARCHAR2(30);
68438
68439 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
68440 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
68441 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
68442 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
68443
68444 -- 4262811 Variables ------------------------------------------------------------------------------------------
68445 l_entered_amt_idx NUMBER;
68446 l_accted_amt_idx NUMBER;
68447 l_acc_rev_flag VARCHAR2(1);
68448 l_accrual_line_num NUMBER;
68449 l_tmp_amt NUMBER;
68450 l_acc_rev_natural_side_code VARCHAR2(1);
68451
68452 l_num_entries NUMBER;
68453 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
68454 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
68455 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
68456 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
68457 l_recog_line_1 NUMBER;
68458 l_recog_line_2 NUMBER;
68459
68460 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
68461 l_bflow_applied_to_amt NUMBER; -- 5132302
68462 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
68463
68464 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68465
68466 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
68467 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
68468
68469 ---------------------------------------------------------------------------------------------------------------
68470
68471
68472 --
68473 -- bulk performance
68474 --
68475 l_balance_type_code VARCHAR2(1);
68476 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
68477 l_log_module VARCHAR2(240);
68478
68479 --
68480 -- Upgrade strategy
68481 --
68482 l_actual_upg_option VARCHAR2(1);
68483 l_enc_upg_option VARCHAR2(1);
68484
68485 --
68486 BEGIN
68487 --
68488 IF g_log_enabled THEN
68489 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_126';
68490 END IF;
68491 --
68492 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68493
68494 trace
68495 (p_msg => 'BEGIN of AcctLineType_126'
68496 ,p_level => C_LEVEL_PROCEDURE
68497 ,p_module => l_log_module);
68498
68499 END IF;
68500 --
68501 l_component_type := 'AMB_JLT';
68502 l_component_code := 'INTRANSIT_VALUATION';
68503 l_component_type_code := 'S';
68504 l_component_appl_id := 707;
68505 l_amb_context_code := 'DEFAULT';
68506 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
68507 l_event_class_code := 'FOB_RCPT_SENDER_RCPT';
68508 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
68509 l_line_definition_owner_code := 'S';
68510 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
68511 --
68512 l_balance_type_code := 'A';
68513 l_segment := NULL;
68514 l_ccid := NULL;
68515 l_adr_transaction_coa_id := NULL;
68516 l_adr_accounting_coa_id := NULL;
68517 l_adr_flexfield_segment_code := NULL;
68518 l_adr_flex_value_set_id := NULL;
68519 l_adr_value_type_code := NULL;
68520 l_adr_value_combination_id := NULL;
68521 l_adr_value_segment_code := NULL;
68522
68523 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
68524 l_bflow_class_code := ''; -- 4219869 Business Flow
68525 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
68526 l_budgetary_control_flag := 'N';
68527
68528 l_bflow_applied_to_amt_idx := NULL; -- 5132302
68529 l_bflow_applied_to_amt := NULL; -- 5132302
68530 l_entered_amt_idx := NULL; -- 4262811
68531 l_accted_amt_idx := NULL; -- 4262811
68532 l_acc_rev_flag := NULL; -- 4262811
68533 l_accrual_line_num := NULL; -- 4262811
68534 l_tmp_amt := NULL; -- 4262811
68535 --
68536
68537 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
68538 l_balance_type_code <> 'B' THEN
68539 IF NVL(p_source_24,9E125) = 14
68540 THEN
68541
68542 --
68543 XLA_AE_LINES_PKG.SetNewLine;
68544
68545 p_balance_type_code := l_balance_type_code;
68546 -- set the flag so later we will know whether the gain loss line needs to be created
68547
68548 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
68549 p_actual_flag :='A';
68550 END IF;
68551
68552 --
68553 -- bulk performance
68554 --
68555 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68556 p_header_num => 0); -- 4262811
68557 --
68558 -- set accounting line options
68559 --
68560 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68561 p_natural_side_code => 'D'
68562 , p_gain_or_loss_flag => 'N'
68563 , p_gl_transfer_mode_code => 'S'
68564 , p_acct_entry_type_code => 'A'
68565 , p_switch_side_flag => 'Y'
68566 , p_merge_duplicate_code => 'N'
68567 );
68568 --
68569 l_acc_rev_natural_side_code := 'C'; -- 4262811
68570 --
68571 --
68572 -- set accounting line type info
68573 --
68574 xla_ae_lines_pkg.SetAcctLineType
68575 (p_component_type => l_component_type
68576 ,p_event_type_code => l_event_type_code
68577 ,p_line_definition_owner_code => l_line_definition_owner_code
68578 ,p_line_definition_code => l_line_definition_code
68579 ,p_accounting_line_code => l_component_code
68580 ,p_accounting_line_type_code => l_component_type_code
68581 ,p_accounting_line_appl_id => l_component_appl_id
68582 ,p_amb_context_code => l_amb_context_code
68583 ,p_entity_code => l_entity_code
68584 ,p_event_class_code => l_event_class_code);
68585 --
68586 -- set accounting class
68587 --
68588 xla_ae_lines_pkg.SetAcctClass(
68589 p_accounting_class_code => 'INTRANSIT_VALUATION'
68590 , p_ae_header_id => l_ae_header_id
68591 );
68592
68593 --
68594 -- set rounding class
68595 --
68596 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68597 'INTRANSIT_VALUATION';
68598
68599 --
68600 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68601 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68602 --
68603 -- bulk performance
68604 --
68605 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68606
68607 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68608 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68609
68610 -- 4955764
68611 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68612 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68613
68614 -- 4458381 Public Sector Enh
68615
68616 --
68617 -- set accounting attributes for the line type
68618 --
68619 l_entered_amt_idx := 3;
68620 l_accted_amt_idx := 8;
68621 l_bflow_applied_to_amt_idx := NULL; -- 5132302
68622 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68623 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
68624 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
68625 l_rec_acct_attrs.array_char_value(2) := p_source_12;
68626 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
68627 l_rec_acct_attrs.array_num_value(3) := p_source_18;
68628 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
68629 l_rec_acct_attrs.array_char_value(4) := p_source_15;
68630 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
68631 l_rec_acct_attrs.array_date_value(5) := p_source_19;
68632 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
68633 l_rec_acct_attrs.array_num_value(6) := p_source_20;
68634 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
68635 l_rec_acct_attrs.array_char_value(7) := p_source_21;
68636 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
68637 l_rec_acct_attrs.array_num_value(8) := p_source_22;
68638
68639 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68640 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68641
68642 ---------------------------------------------------------------------------------------------------------------
68643 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68644 ---------------------------------------------------------------------------------------------------------------
68645 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68646
68647 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68648 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68649
68650 IF xla_accounting_cache_pkg.GetValueChar
68651 (p_source_code => 'LEDGER_CATEGORY_CODE'
68652 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68653 AND l_bflow_method_code = 'PRIOR_ENTRY'
68654 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68655 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68656 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68657 )
68658 THEN
68659 xla_ae_lines_pkg.BflowUpgEntry
68660 (p_business_method_code => l_bflow_method_code
68661 ,p_business_class_code => l_bflow_class_code
68662 ,p_balance_type => l_balance_type_code);
68663 ELSE
68664 NULL;
68665 -- No business flow processing for business flow method of NONE.
68666 END IF;
68667
68668 --
68669 -- call analytical criteria
68670 --
68671
68672 --
68673 -- call description
68674 --
68675 -- No description or it is inherited.
68676 --
68677 -- call ADRs
68678 -- Bug 4922099
68679 --
68680 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68681 (NVL(l_actual_upg_option, 'N') = 'O') OR
68682 (NVL(l_enc_upg_option, 'N') = 'O')
68683 )
68684 THEN
68685 NULL;
68686 --
68687 --
68688
68689 l_ccid := AcctDerRule_4(
68690 p_application_id => p_application_id
68691 , p_ae_header_id => l_ae_header_id
68692 , p_source_4 => p_source_4
68693 , x_transaction_coa_id => l_adr_transaction_coa_id
68694 , x_accounting_coa_id => l_adr_accounting_coa_id
68695 , x_value_type_code => l_adr_value_type_code
68696 , p_side => 'NA'
68697 );
68698
68699 xla_ae_lines_pkg.set_ccid(
68700 p_code_combination_id => l_ccid
68701 , p_value_type_code => l_adr_value_type_code
68702 , p_transaction_coa_id => l_adr_transaction_coa_id
68703 , p_accounting_coa_id => l_adr_accounting_coa_id
68704 , p_adr_code => 'CST_DEFAULT'
68705 , p_adr_type_code => 'S'
68706 , p_component_type => l_component_type
68707 , p_component_code => l_component_code
68708 , p_component_type_code => l_component_type_code
68709 , p_component_appl_id => l_component_appl_id
68710 , p_amb_context_code => l_amb_context_code
68711 , p_side => 'NA'
68712 );
68713
68714
68715 --
68716 --
68717 END IF;
68718 --
68719 -- Bug 4922099
68720 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68721 (NVL(l_enc_upg_option, 'N') = 'O')
68722 ) AND
68723 (l_bflow_method_code = 'PRIOR_ENTRY')
68724 )
68725 THEN
68726 IF
68727 --
68728 1 = 2
68729 --
68730 THEN
68731 xla_accounting_err_pkg.build_message
68732 (p_appli_s_name => 'XLA'
68733 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68734 ,p_token_1 => 'LINE_NUMBER'
68735 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
68736 ,p_token_2 => 'LINE_TYPE_NAME'
68737 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
68738 l_component_type
68739 ,l_component_code
68740 ,l_component_type_code
68741 ,l_component_appl_id
68742 ,l_amb_context_code
68743 ,l_entity_code
68744 ,l_event_class_code
68745 )
68746 ,p_token_3 => 'OWNER'
68747 ,p_value_3 => xla_lookups_pkg.get_meaning(
68748 p_lookup_type => 'XLA_OWNER_TYPE'
68749 ,p_lookup_code => l_component_type_code
68750 )
68751 ,p_token_4 => 'PRODUCT_NAME'
68752 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68753 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68754 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68755 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68756 ,p_ae_header_id => NULL
68757 );
68758
68759 IF (C_LEVEL_ERROR>= g_log_level) THEN
68760 trace
68761 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68762 ,p_level => C_LEVEL_ERROR
68763 ,p_module => l_log_module);
68764 END IF;
68765 END IF;
68766 END IF;
68767 --
68768 --
68769 ------------------------------------------------------------------------------------------------
68770 -- 4219869 Business Flow
68771 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68772 -- Prior Entry. Currently, the following code is always generated.
68773 ------------------------------------------------------------------------------------------------
68774 XLA_AE_LINES_PKG.ValidateCurrentLine;
68775
68776 ------------------------------------------------------------------------------------
68777 -- 4219869 Business Flow
68778 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68779 ------------------------------------------------------------------------------------
68780 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68781
68782 ----------------------------------------------------------------------------------
68783 -- 4219869 Business Flow
68784 -- Update journal entry status -- Need to generate this within IF <condition>
68785 ----------------------------------------------------------------------------------
68786 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68787 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68788 ,p_balance_type_code => l_balance_type_code
68789 );
68790
68791 -------------------------------------------------------------------------------------------
68792 -- 4262811 - Generate the Accrual Reversal lines
68793 -------------------------------------------------------------------------------------------
68794 BEGIN
68795 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68796 (g_array_event(p_event_id).array_value_num('header_index'));
68797 IF l_acc_rev_flag IS NULL THEN
68798 l_acc_rev_flag := 'N';
68799 END IF;
68800 EXCEPTION
68801 WHEN OTHERS THEN
68802 l_acc_rev_flag := 'N';
68803 END;
68804 --
68805 IF (l_acc_rev_flag = 'Y') THEN
68806
68807 -- 4645092 ------------------------------------------------------------------------------
68808 -- To allow MPA report to determine if it should generate report process
68809 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68810 ------------------------------------------------------------------------------------------
68811
68812 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68813 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68814 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
68815 -- call ADRs
68816 -- Bug 4922099
68817 --
68818 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68819 (NVL(l_actual_upg_option, 'N') = 'O') OR
68820 (NVL(l_enc_upg_option, 'N') = 'O')
68821 )
68822 THEN
68823 NULL;
68824 --
68825 --
68826
68827 l_ccid := AcctDerRule_4(
68828 p_application_id => p_application_id
68829 , p_ae_header_id => l_ae_header_id
68830 , p_source_4 => p_source_4
68831 , x_transaction_coa_id => l_adr_transaction_coa_id
68832 , x_accounting_coa_id => l_adr_accounting_coa_id
68833 , x_value_type_code => l_adr_value_type_code
68834 , p_side => 'NA'
68835 );
68836
68837 xla_ae_lines_pkg.set_ccid(
68838 p_code_combination_id => l_ccid
68839 , p_value_type_code => l_adr_value_type_code
68840 , p_transaction_coa_id => l_adr_transaction_coa_id
68841 , p_accounting_coa_id => l_adr_accounting_coa_id
68842 , p_adr_code => 'CST_DEFAULT'
68843 , p_adr_type_code => 'S'
68844 , p_component_type => l_component_type
68845 , p_component_code => l_component_code
68846 , p_component_type_code => l_component_type_code
68847 , p_component_appl_id => l_component_appl_id
68848 , p_amb_context_code => l_amb_context_code
68849 , p_side => 'NA'
68850 );
68851
68852
68853 --
68854 --
68855 END IF;
68856
68857 --
68858 -- Update the line information that should be overwritten
68859 --
68860 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68861 p_header_num => 1);
68862 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
68863
68864 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68865
68866 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
68867 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68868 END IF;
68869
68870 --
68871 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68872 --
68873 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68874 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
68875 ELSE
68876 ---------------------------------------------------------------------------------------------------
68877 -- 4262811a Switch Sign
68878 ---------------------------------------------------------------------------------------------------
68879 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
68880 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68881 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68882 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68883 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68884 -- 5132302
68885 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68886 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68887
68888 END IF;
68889
68890 -- 4955764
68891 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68892 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68893
68894
68895 XLA_AE_LINES_PKG.ValidateCurrentLine;
68896 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68897
68898 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68899 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68900 ,p_balance_type_code => l_balance_type_code);
68901
68902 END IF;
68903
68904 -----------------------------------------------------------------------------------------
68905 -- 4262811 Multiperiod Accounting
68906 -----------------------------------------------------------------------------------------
68907 -- No MPA option is assigned.
68908
68909
68910 END IF;
68911 END IF;
68912 --
68913
68914 --
68915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68916 trace
68917 (p_msg => 'END of AcctLineType_126'
68918 ,p_level => C_LEVEL_PROCEDURE
68919 ,p_module => l_log_module);
68920 END IF;
68921 --
68922 EXCEPTION
68923 WHEN xla_exceptions_pkg.application_exception THEN
68924 RAISE;
68925 WHEN OTHERS THEN
68926 xla_exceptions_pkg.raise_message
68927 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_126');
68928 END AcctLineType_126;
68929 --
68930
68931 ---------------------------------------
68932 --
68933 -- PRIVATE FUNCTION
68934 -- AcctLineType_127
68935 --
68936 ---------------------------------------
68937 PROCEDURE AcctLineType_127 (
68938 p_application_id IN NUMBER
68939 ,p_event_id IN NUMBER
68940 ,p_calculate_acctd_flag IN VARCHAR2
68941 ,p_calculate_g_l_flag IN VARCHAR2
68942 ,p_actual_flag IN OUT VARCHAR2
68943 ,p_balance_type_code OUT VARCHAR2
68944 ,p_gain_or_loss_ref OUT VARCHAR2
68945
68946 --Cost Management Default Account
68947 , p_source_4 IN NUMBER
68948 --DISTRIBUTION_IDENTIFIER
68949 , p_source_11 IN NUMBER
68950 --Distribution Type
68951 , p_source_12 IN VARCHAR2
68952 , p_source_12_meaning IN VARCHAR2
68953 --Entered Currency Code
68954 , p_source_15 IN VARCHAR2
68955 --Entered Amount
68956 , p_source_18 IN NUMBER
68957 --Currency Conversion Date
68958 , p_source_19 IN DATE
68959 --Currency Conversion Rate
68960 , p_source_20 IN NUMBER
68961 --Currency Conversion Type
68962 , p_source_21 IN VARCHAR2
68963 --Accounted Amount
68964 , p_source_22 IN NUMBER
68965 --Accounting Line Type
68966 , p_source_24 IN NUMBER
68967 )
68968 IS
68969
68970 l_component_type VARCHAR2(80);
68971 l_component_code VARCHAR2(30);
68972 l_component_type_code VARCHAR2(1);
68973 l_component_appl_id INTEGER;
68974 l_amb_context_code VARCHAR2(30);
68975 l_entity_code VARCHAR2(30);
68976 l_event_class_code VARCHAR2(30);
68977 l_ae_header_id NUMBER;
68978 l_event_type_code VARCHAR2(30);
68979 l_line_definition_code VARCHAR2(30);
68980 l_line_definition_owner_code VARCHAR2(1);
68981 --
68982 -- adr variables
68983 l_segment VARCHAR2(30);
68984 l_ccid NUMBER;
68985 l_adr_transaction_coa_id NUMBER;
68986 l_adr_accounting_coa_id NUMBER;
68987 l_adr_flexfield_segment_code VARCHAR2(30);
68988 l_adr_flex_value_set_id NUMBER;
68989 l_adr_value_type_code VARCHAR2(30);
68990 l_adr_value_combination_id NUMBER;
68991 l_adr_value_segment_code VARCHAR2(30);
68992
68993 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
68994 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
68995 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
68996 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
68997
68998 -- 4262811 Variables ------------------------------------------------------------------------------------------
68999 l_entered_amt_idx NUMBER;
69000 l_accted_amt_idx NUMBER;
69001 l_acc_rev_flag VARCHAR2(1);
69002 l_accrual_line_num NUMBER;
69003 l_tmp_amt NUMBER;
69004 l_acc_rev_natural_side_code VARCHAR2(1);
69005
69006 l_num_entries NUMBER;
69007 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
69008 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
69009 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
69010 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
69011 l_recog_line_1 NUMBER;
69012 l_recog_line_2 NUMBER;
69013
69014 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
69015 l_bflow_applied_to_amt NUMBER; -- 5132302
69016 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
69017
69018 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69019
69020 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
69021 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
69022
69023 ---------------------------------------------------------------------------------------------------------------
69024
69025
69026 --
69027 -- bulk performance
69028 --
69029 l_balance_type_code VARCHAR2(1);
69030 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
69031 l_log_module VARCHAR2(240);
69032
69033 --
69034 -- Upgrade strategy
69035 --
69036 l_actual_upg_option VARCHAR2(1);
69037 l_enc_upg_option VARCHAR2(1);
69038
69039 --
69040 BEGIN
69041 --
69042 IF g_log_enabled THEN
69043 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_127';
69044 END IF;
69045 --
69046 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69047
69048 trace
69049 (p_msg => 'BEGIN of AcctLineType_127'
69050 ,p_level => C_LEVEL_PROCEDURE
69051 ,p_module => l_log_module);
69052
69053 END IF;
69054 --
69055 l_component_type := 'AMB_JLT';
69056 l_component_code := 'INTRANSIT_VALUATION';
69057 l_component_type_code := 'S';
69058 l_component_appl_id := 707;
69059 l_amb_context_code := 'DEFAULT';
69060 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
69061 l_event_class_code := 'USER_DEFINE';
69062 l_event_type_code := 'UIPV_TXFR';
69063 l_line_definition_owner_code := 'S';
69064 l_line_definition_code := 'USER_IPV_TXFR';
69065 --
69066 l_balance_type_code := 'A';
69067 l_segment := NULL;
69068 l_ccid := NULL;
69069 l_adr_transaction_coa_id := NULL;
69070 l_adr_accounting_coa_id := NULL;
69071 l_adr_flexfield_segment_code := NULL;
69072 l_adr_flex_value_set_id := NULL;
69073 l_adr_value_type_code := NULL;
69074 l_adr_value_combination_id := NULL;
69075 l_adr_value_segment_code := NULL;
69076
69077 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
69078 l_bflow_class_code := ''; -- 4219869 Business Flow
69079 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
69080 l_budgetary_control_flag := 'N';
69081
69082 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69083 l_bflow_applied_to_amt := NULL; -- 5132302
69084 l_entered_amt_idx := NULL; -- 4262811
69085 l_accted_amt_idx := NULL; -- 4262811
69086 l_acc_rev_flag := NULL; -- 4262811
69087 l_accrual_line_num := NULL; -- 4262811
69088 l_tmp_amt := NULL; -- 4262811
69089 --
69090
69091 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69092 l_balance_type_code <> 'B' THEN
69093 IF NVL(p_source_24,9E125) = 14
69094 THEN
69095
69096 --
69097 XLA_AE_LINES_PKG.SetNewLine;
69098
69099 p_balance_type_code := l_balance_type_code;
69100 -- set the flag so later we will know whether the gain loss line needs to be created
69101
69102 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69103 p_actual_flag :='A';
69104 END IF;
69105
69106 --
69107 -- bulk performance
69108 --
69109 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69110 p_header_num => 0); -- 4262811
69111 --
69112 -- set accounting line options
69113 --
69114 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69115 p_natural_side_code => 'D'
69116 , p_gain_or_loss_flag => 'N'
69117 , p_gl_transfer_mode_code => 'S'
69118 , p_acct_entry_type_code => 'A'
69119 , p_switch_side_flag => 'Y'
69120 , p_merge_duplicate_code => 'N'
69121 );
69122 --
69123 l_acc_rev_natural_side_code := 'C'; -- 4262811
69124 --
69125 --
69126 -- set accounting line type info
69127 --
69128 xla_ae_lines_pkg.SetAcctLineType
69129 (p_component_type => l_component_type
69130 ,p_event_type_code => l_event_type_code
69131 ,p_line_definition_owner_code => l_line_definition_owner_code
69132 ,p_line_definition_code => l_line_definition_code
69133 ,p_accounting_line_code => l_component_code
69134 ,p_accounting_line_type_code => l_component_type_code
69135 ,p_accounting_line_appl_id => l_component_appl_id
69136 ,p_amb_context_code => l_amb_context_code
69137 ,p_entity_code => l_entity_code
69138 ,p_event_class_code => l_event_class_code);
69139 --
69140 -- set accounting class
69141 --
69142 xla_ae_lines_pkg.SetAcctClass(
69143 p_accounting_class_code => 'INTRANSIT_VALUATION'
69144 , p_ae_header_id => l_ae_header_id
69145 );
69146
69147 --
69148 -- set rounding class
69149 --
69150 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69151 'INTRANSIT_VALUATION';
69152
69153 --
69154 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69155 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69156 --
69157 -- bulk performance
69158 --
69159 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69160
69161 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69162 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69163
69164 -- 4955764
69165 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69166 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69167
69168 -- 4458381 Public Sector Enh
69169
69170 --
69171 -- set accounting attributes for the line type
69172 --
69173 l_entered_amt_idx := 3;
69174 l_accted_amt_idx := 8;
69175 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69176 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69177 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
69178 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69179 l_rec_acct_attrs.array_char_value(2) := p_source_12;
69180 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69181 l_rec_acct_attrs.array_num_value(3) := p_source_18;
69182 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69183 l_rec_acct_attrs.array_char_value(4) := p_source_15;
69184 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69185 l_rec_acct_attrs.array_date_value(5) := p_source_19;
69186 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69187 l_rec_acct_attrs.array_num_value(6) := p_source_20;
69188 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69189 l_rec_acct_attrs.array_char_value(7) := p_source_21;
69190 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69191 l_rec_acct_attrs.array_num_value(8) := p_source_22;
69192
69193 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69194 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69195
69196 ---------------------------------------------------------------------------------------------------------------
69197 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69198 ---------------------------------------------------------------------------------------------------------------
69199 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69200
69201 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69202 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69203
69204 IF xla_accounting_cache_pkg.GetValueChar
69205 (p_source_code => 'LEDGER_CATEGORY_CODE'
69206 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69207 AND l_bflow_method_code = 'PRIOR_ENTRY'
69208 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69209 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69210 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69211 )
69212 THEN
69213 xla_ae_lines_pkg.BflowUpgEntry
69214 (p_business_method_code => l_bflow_method_code
69215 ,p_business_class_code => l_bflow_class_code
69216 ,p_balance_type => l_balance_type_code);
69217 ELSE
69218 NULL;
69219 -- No business flow processing for business flow method of NONE.
69220 END IF;
69221
69222 --
69223 -- call analytical criteria
69224 --
69225
69226 --
69227 -- call description
69228 --
69229 -- No description or it is inherited.
69230 --
69231 -- call ADRs
69232 -- Bug 4922099
69233 --
69234 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69235 (NVL(l_actual_upg_option, 'N') = 'O') OR
69236 (NVL(l_enc_upg_option, 'N') = 'O')
69237 )
69238 THEN
69239 NULL;
69240 --
69241 --
69242
69243 l_ccid := AcctDerRule_4(
69244 p_application_id => p_application_id
69245 , p_ae_header_id => l_ae_header_id
69246 , p_source_4 => p_source_4
69247 , x_transaction_coa_id => l_adr_transaction_coa_id
69248 , x_accounting_coa_id => l_adr_accounting_coa_id
69249 , x_value_type_code => l_adr_value_type_code
69250 , p_side => 'NA'
69251 );
69252
69253 xla_ae_lines_pkg.set_ccid(
69254 p_code_combination_id => l_ccid
69255 , p_value_type_code => l_adr_value_type_code
69256 , p_transaction_coa_id => l_adr_transaction_coa_id
69257 , p_accounting_coa_id => l_adr_accounting_coa_id
69258 , p_adr_code => 'CST_DEFAULT'
69259 , p_adr_type_code => 'S'
69260 , p_component_type => l_component_type
69261 , p_component_code => l_component_code
69262 , p_component_type_code => l_component_type_code
69263 , p_component_appl_id => l_component_appl_id
69264 , p_amb_context_code => l_amb_context_code
69265 , p_side => 'NA'
69266 );
69267
69268
69269 --
69270 --
69271 END IF;
69272 --
69273 -- Bug 4922099
69274 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69275 (NVL(l_enc_upg_option, 'N') = 'O')
69276 ) AND
69277 (l_bflow_method_code = 'PRIOR_ENTRY')
69278 )
69279 THEN
69280 IF
69281 --
69282 1 = 2
69283 --
69284 THEN
69285 xla_accounting_err_pkg.build_message
69286 (p_appli_s_name => 'XLA'
69287 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69288 ,p_token_1 => 'LINE_NUMBER'
69289 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
69290 ,p_token_2 => 'LINE_TYPE_NAME'
69291 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
69292 l_component_type
69293 ,l_component_code
69294 ,l_component_type_code
69295 ,l_component_appl_id
69296 ,l_amb_context_code
69297 ,l_entity_code
69298 ,l_event_class_code
69299 )
69300 ,p_token_3 => 'OWNER'
69301 ,p_value_3 => xla_lookups_pkg.get_meaning(
69302 p_lookup_type => 'XLA_OWNER_TYPE'
69303 ,p_lookup_code => l_component_type_code
69304 )
69305 ,p_token_4 => 'PRODUCT_NAME'
69306 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69307 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69308 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69309 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69310 ,p_ae_header_id => NULL
69311 );
69312
69313 IF (C_LEVEL_ERROR>= g_log_level) THEN
69314 trace
69315 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69316 ,p_level => C_LEVEL_ERROR
69317 ,p_module => l_log_module);
69318 END IF;
69319 END IF;
69320 END IF;
69321 --
69322 --
69323 ------------------------------------------------------------------------------------------------
69324 -- 4219869 Business Flow
69325 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69326 -- Prior Entry. Currently, the following code is always generated.
69327 ------------------------------------------------------------------------------------------------
69328 XLA_AE_LINES_PKG.ValidateCurrentLine;
69329
69330 ------------------------------------------------------------------------------------
69331 -- 4219869 Business Flow
69332 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69333 ------------------------------------------------------------------------------------
69334 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69335
69336 ----------------------------------------------------------------------------------
69337 -- 4219869 Business Flow
69338 -- Update journal entry status -- Need to generate this within IF <condition>
69339 ----------------------------------------------------------------------------------
69340 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69341 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69342 ,p_balance_type_code => l_balance_type_code
69343 );
69344
69345 -------------------------------------------------------------------------------------------
69346 -- 4262811 - Generate the Accrual Reversal lines
69347 -------------------------------------------------------------------------------------------
69348 BEGIN
69349 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69350 (g_array_event(p_event_id).array_value_num('header_index'));
69351 IF l_acc_rev_flag IS NULL THEN
69352 l_acc_rev_flag := 'N';
69353 END IF;
69354 EXCEPTION
69355 WHEN OTHERS THEN
69356 l_acc_rev_flag := 'N';
69357 END;
69358 --
69359 IF (l_acc_rev_flag = 'Y') THEN
69360
69361 -- 4645092 ------------------------------------------------------------------------------
69362 -- To allow MPA report to determine if it should generate report process
69363 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69364 ------------------------------------------------------------------------------------------
69365
69366 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69367 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69368 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
69369 -- call ADRs
69370 -- Bug 4922099
69371 --
69372 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69373 (NVL(l_actual_upg_option, 'N') = 'O') OR
69374 (NVL(l_enc_upg_option, 'N') = 'O')
69375 )
69376 THEN
69377 NULL;
69378 --
69379 --
69380
69381 l_ccid := AcctDerRule_4(
69382 p_application_id => p_application_id
69383 , p_ae_header_id => l_ae_header_id
69384 , p_source_4 => p_source_4
69385 , x_transaction_coa_id => l_adr_transaction_coa_id
69386 , x_accounting_coa_id => l_adr_accounting_coa_id
69387 , x_value_type_code => l_adr_value_type_code
69388 , p_side => 'NA'
69389 );
69390
69391 xla_ae_lines_pkg.set_ccid(
69392 p_code_combination_id => l_ccid
69393 , p_value_type_code => l_adr_value_type_code
69394 , p_transaction_coa_id => l_adr_transaction_coa_id
69395 , p_accounting_coa_id => l_adr_accounting_coa_id
69396 , p_adr_code => 'CST_DEFAULT'
69397 , p_adr_type_code => 'S'
69398 , p_component_type => l_component_type
69399 , p_component_code => l_component_code
69400 , p_component_type_code => l_component_type_code
69401 , p_component_appl_id => l_component_appl_id
69402 , p_amb_context_code => l_amb_context_code
69403 , p_side => 'NA'
69404 );
69405
69406
69407 --
69408 --
69409 END IF;
69410
69411 --
69412 -- Update the line information that should be overwritten
69413 --
69414 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69415 p_header_num => 1);
69416 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
69417
69418 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69419
69420 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
69421 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69422 END IF;
69423
69424 --
69425 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69426 --
69427 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69428 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
69429 ELSE
69430 ---------------------------------------------------------------------------------------------------
69431 -- 4262811a Switch Sign
69432 ---------------------------------------------------------------------------------------------------
69433 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
69434 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69435 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69436 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69437 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69438 -- 5132302
69439 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69440 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69441
69442 END IF;
69443
69444 -- 4955764
69445 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69446 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69447
69448
69449 XLA_AE_LINES_PKG.ValidateCurrentLine;
69450 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69451
69452 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69453 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
69454 ,p_balance_type_code => l_balance_type_code);
69455
69456 END IF;
69457
69458 -----------------------------------------------------------------------------------------
69459 -- 4262811 Multiperiod Accounting
69460 -----------------------------------------------------------------------------------------
69461 -- No MPA option is assigned.
69462
69463
69464 END IF;
69465 END IF;
69466 --
69467
69468 --
69469 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69470 trace
69471 (p_msg => 'END of AcctLineType_127'
69472 ,p_level => C_LEVEL_PROCEDURE
69473 ,p_module => l_log_module);
69474 END IF;
69475 --
69476 EXCEPTION
69477 WHEN xla_exceptions_pkg.application_exception THEN
69478 RAISE;
69479 WHEN OTHERS THEN
69480 xla_exceptions_pkg.raise_message
69481 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_127');
69482 END AcctLineType_127;
69483 --
69484
69485 ---------------------------------------
69486 --
69487 -- PRIVATE FUNCTION
69488 -- AcctLineType_128
69489 --
69490 ---------------------------------------
69491 PROCEDURE AcctLineType_128 (
69492 p_application_id IN NUMBER
69493 ,p_event_id IN NUMBER
69494 ,p_calculate_acctd_flag IN VARCHAR2
69495 ,p_calculate_g_l_flag IN VARCHAR2
69496 ,p_actual_flag IN OUT VARCHAR2
69497 ,p_balance_type_code OUT VARCHAR2
69498 ,p_gain_or_loss_ref OUT VARCHAR2
69499
69500 --Cost Management Default Account
69501 , p_source_4 IN NUMBER
69502 --DISTRIBUTION_IDENTIFIER
69503 , p_source_11 IN NUMBER
69504 --Distribution Type
69505 , p_source_12 IN VARCHAR2
69506 , p_source_12_meaning IN VARCHAR2
69507 --Entered Currency Code
69508 , p_source_15 IN VARCHAR2
69509 --Entered Amount
69510 , p_source_18 IN NUMBER
69511 --Currency Conversion Date
69512 , p_source_19 IN DATE
69513 --Currency Conversion Rate
69514 , p_source_20 IN NUMBER
69515 --Currency Conversion Type
69516 , p_source_21 IN VARCHAR2
69517 --Accounted Amount
69518 , p_source_22 IN NUMBER
69519 --Accounting Line Type
69520 , p_source_24 IN NUMBER
69521 )
69522 IS
69523
69524 l_component_type VARCHAR2(80);
69525 l_component_code VARCHAR2(30);
69526 l_component_type_code VARCHAR2(1);
69527 l_component_appl_id INTEGER;
69528 l_amb_context_code VARCHAR2(30);
69529 l_entity_code VARCHAR2(30);
69530 l_event_class_code VARCHAR2(30);
69531 l_ae_header_id NUMBER;
69532 l_event_type_code VARCHAR2(30);
69533 l_line_definition_code VARCHAR2(30);
69534 l_line_definition_owner_code VARCHAR2(1);
69535 --
69536 -- adr variables
69537 l_segment VARCHAR2(30);
69538 l_ccid NUMBER;
69539 l_adr_transaction_coa_id NUMBER;
69540 l_adr_accounting_coa_id NUMBER;
69541 l_adr_flexfield_segment_code VARCHAR2(30);
69542 l_adr_flex_value_set_id NUMBER;
69543 l_adr_value_type_code VARCHAR2(30);
69544 l_adr_value_combination_id NUMBER;
69545 l_adr_value_segment_code VARCHAR2(30);
69546
69547 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
69548 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
69549 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
69550 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
69551
69552 -- 4262811 Variables ------------------------------------------------------------------------------------------
69553 l_entered_amt_idx NUMBER;
69554 l_accted_amt_idx NUMBER;
69555 l_acc_rev_flag VARCHAR2(1);
69556 l_accrual_line_num NUMBER;
69557 l_tmp_amt NUMBER;
69558 l_acc_rev_natural_side_code VARCHAR2(1);
69559
69560 l_num_entries NUMBER;
69561 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
69562 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
69563 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
69564 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
69565 l_recog_line_1 NUMBER;
69566 l_recog_line_2 NUMBER;
69567
69568 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
69569 l_bflow_applied_to_amt NUMBER; -- 5132302
69570 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
69571
69572 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69573
69574 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
69575 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
69576
69577 ---------------------------------------------------------------------------------------------------------------
69578
69579
69580 --
69581 -- bulk performance
69582 --
69583 l_balance_type_code VARCHAR2(1);
69584 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
69585 l_log_module VARCHAR2(240);
69586
69587 --
69588 -- Upgrade strategy
69589 --
69590 l_actual_upg_option VARCHAR2(1);
69591 l_enc_upg_option VARCHAR2(1);
69592
69593 --
69594 BEGIN
69595 --
69596 IF g_log_enabled THEN
69597 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_128';
69598 END IF;
69599 --
69600 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69601
69602 trace
69603 (p_msg => 'BEGIN of AcctLineType_128'
69604 ,p_level => C_LEVEL_PROCEDURE
69605 ,p_module => l_log_module);
69606
69607 END IF;
69608 --
69609 l_component_type := 'AMB_JLT';
69610 l_component_code := 'INTRANSIT_VALUATION';
69611 l_component_type_code := 'S';
69612 l_component_appl_id := 707;
69613 l_amb_context_code := 'DEFAULT';
69614 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
69615 l_event_class_code := 'FOB_RCPT_SENDER_SHIP';
69616 l_event_type_code := 'FOB_RCPT_SENDER_SHIP_ALL';
69617 l_line_definition_owner_code := 'S';
69618 l_line_definition_code := 'FOB_RCPT_SEND_SHIP';
69619 --
69620 l_balance_type_code := 'A';
69621 l_segment := NULL;
69622 l_ccid := NULL;
69623 l_adr_transaction_coa_id := NULL;
69624 l_adr_accounting_coa_id := NULL;
69625 l_adr_flexfield_segment_code := NULL;
69626 l_adr_flex_value_set_id := NULL;
69627 l_adr_value_type_code := NULL;
69628 l_adr_value_combination_id := NULL;
69629 l_adr_value_segment_code := NULL;
69630
69631 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
69632 l_bflow_class_code := ''; -- 4219869 Business Flow
69633 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
69634 l_budgetary_control_flag := 'N';
69635
69636 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69637 l_bflow_applied_to_amt := NULL; -- 5132302
69638 l_entered_amt_idx := NULL; -- 4262811
69639 l_accted_amt_idx := NULL; -- 4262811
69640 l_acc_rev_flag := NULL; -- 4262811
69641 l_accrual_line_num := NULL; -- 4262811
69642 l_tmp_amt := NULL; -- 4262811
69643 --
69644
69645 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69646 l_balance_type_code <> 'B' THEN
69647 IF NVL(p_source_24,9E125) = 14
69648 THEN
69649
69650 --
69651 XLA_AE_LINES_PKG.SetNewLine;
69652
69653 p_balance_type_code := l_balance_type_code;
69654 -- set the flag so later we will know whether the gain loss line needs to be created
69655
69656 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69657 p_actual_flag :='A';
69658 END IF;
69659
69660 --
69661 -- bulk performance
69662 --
69663 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69664 p_header_num => 0); -- 4262811
69665 --
69666 -- set accounting line options
69667 --
69668 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69669 p_natural_side_code => 'D'
69670 , p_gain_or_loss_flag => 'N'
69671 , p_gl_transfer_mode_code => 'S'
69672 , p_acct_entry_type_code => 'A'
69673 , p_switch_side_flag => 'Y'
69674 , p_merge_duplicate_code => 'N'
69675 );
69676 --
69677 l_acc_rev_natural_side_code := 'C'; -- 4262811
69678 --
69679 --
69680 -- set accounting line type info
69681 --
69682 xla_ae_lines_pkg.SetAcctLineType
69683 (p_component_type => l_component_type
69684 ,p_event_type_code => l_event_type_code
69685 ,p_line_definition_owner_code => l_line_definition_owner_code
69686 ,p_line_definition_code => l_line_definition_code
69687 ,p_accounting_line_code => l_component_code
69688 ,p_accounting_line_type_code => l_component_type_code
69689 ,p_accounting_line_appl_id => l_component_appl_id
69690 ,p_amb_context_code => l_amb_context_code
69691 ,p_entity_code => l_entity_code
69692 ,p_event_class_code => l_event_class_code);
69693 --
69694 -- set accounting class
69695 --
69696 xla_ae_lines_pkg.SetAcctClass(
69697 p_accounting_class_code => 'INTRANSIT_VALUATION'
69698 , p_ae_header_id => l_ae_header_id
69699 );
69700
69701 --
69702 -- set rounding class
69703 --
69704 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69705 'INTRANSIT_VALUATION';
69706
69707 --
69708 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69709 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69710 --
69711 -- bulk performance
69712 --
69713 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69714
69715 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69716 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69717
69718 -- 4955764
69719 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69720 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69721
69722 -- 4458381 Public Sector Enh
69723
69724 --
69725 -- set accounting attributes for the line type
69726 --
69727 l_entered_amt_idx := 3;
69728 l_accted_amt_idx := 8;
69729 l_bflow_applied_to_amt_idx := NULL; -- 5132302
69730 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69731 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
69732 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
69733 l_rec_acct_attrs.array_char_value(2) := p_source_12;
69734 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
69735 l_rec_acct_attrs.array_num_value(3) := p_source_18;
69736 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
69737 l_rec_acct_attrs.array_char_value(4) := p_source_15;
69738 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
69739 l_rec_acct_attrs.array_date_value(5) := p_source_19;
69740 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
69741 l_rec_acct_attrs.array_num_value(6) := p_source_20;
69742 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
69743 l_rec_acct_attrs.array_char_value(7) := p_source_21;
69744 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
69745 l_rec_acct_attrs.array_num_value(8) := p_source_22;
69746
69747 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69748 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69749
69750 ---------------------------------------------------------------------------------------------------------------
69751 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69752 ---------------------------------------------------------------------------------------------------------------
69753 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69754
69755 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69756 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69757
69758 IF xla_accounting_cache_pkg.GetValueChar
69759 (p_source_code => 'LEDGER_CATEGORY_CODE'
69760 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69761 AND l_bflow_method_code = 'PRIOR_ENTRY'
69762 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69763 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69764 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69765 )
69766 THEN
69767 xla_ae_lines_pkg.BflowUpgEntry
69768 (p_business_method_code => l_bflow_method_code
69769 ,p_business_class_code => l_bflow_class_code
69770 ,p_balance_type => l_balance_type_code);
69771 ELSE
69772 NULL;
69773 -- No business flow processing for business flow method of NONE.
69774 END IF;
69775
69776 --
69777 -- call analytical criteria
69778 --
69779
69780 --
69781 -- call description
69782 --
69783 -- No description or it is inherited.
69784 --
69785 -- call ADRs
69786 -- Bug 4922099
69787 --
69788 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69789 (NVL(l_actual_upg_option, 'N') = 'O') OR
69790 (NVL(l_enc_upg_option, 'N') = 'O')
69791 )
69792 THEN
69793 NULL;
69794 --
69795 --
69796
69797 l_ccid := AcctDerRule_4(
69798 p_application_id => p_application_id
69799 , p_ae_header_id => l_ae_header_id
69800 , p_source_4 => p_source_4
69801 , x_transaction_coa_id => l_adr_transaction_coa_id
69802 , x_accounting_coa_id => l_adr_accounting_coa_id
69803 , x_value_type_code => l_adr_value_type_code
69804 , p_side => 'NA'
69805 );
69806
69807 xla_ae_lines_pkg.set_ccid(
69808 p_code_combination_id => l_ccid
69809 , p_value_type_code => l_adr_value_type_code
69810 , p_transaction_coa_id => l_adr_transaction_coa_id
69811 , p_accounting_coa_id => l_adr_accounting_coa_id
69812 , p_adr_code => 'CST_DEFAULT'
69813 , p_adr_type_code => 'S'
69814 , p_component_type => l_component_type
69815 , p_component_code => l_component_code
69816 , p_component_type_code => l_component_type_code
69817 , p_component_appl_id => l_component_appl_id
69818 , p_amb_context_code => l_amb_context_code
69819 , p_side => 'NA'
69820 );
69821
69822
69823 --
69824 --
69825 END IF;
69826 --
69827 -- Bug 4922099
69828 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69829 (NVL(l_enc_upg_option, 'N') = 'O')
69830 ) AND
69831 (l_bflow_method_code = 'PRIOR_ENTRY')
69832 )
69833 THEN
69834 IF
69835 --
69836 1 = 2
69837 --
69838 THEN
69839 xla_accounting_err_pkg.build_message
69840 (p_appli_s_name => 'XLA'
69841 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69842 ,p_token_1 => 'LINE_NUMBER'
69843 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
69844 ,p_token_2 => 'LINE_TYPE_NAME'
69845 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
69846 l_component_type
69847 ,l_component_code
69848 ,l_component_type_code
69849 ,l_component_appl_id
69850 ,l_amb_context_code
69851 ,l_entity_code
69852 ,l_event_class_code
69853 )
69854 ,p_token_3 => 'OWNER'
69855 ,p_value_3 => xla_lookups_pkg.get_meaning(
69856 p_lookup_type => 'XLA_OWNER_TYPE'
69857 ,p_lookup_code => l_component_type_code
69858 )
69859 ,p_token_4 => 'PRODUCT_NAME'
69860 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69861 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69862 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69863 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69864 ,p_ae_header_id => NULL
69865 );
69866
69867 IF (C_LEVEL_ERROR>= g_log_level) THEN
69868 trace
69869 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69870 ,p_level => C_LEVEL_ERROR
69871 ,p_module => l_log_module);
69872 END IF;
69873 END IF;
69874 END IF;
69875 --
69876 --
69877 ------------------------------------------------------------------------------------------------
69878 -- 4219869 Business Flow
69879 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69880 -- Prior Entry. Currently, the following code is always generated.
69881 ------------------------------------------------------------------------------------------------
69882 XLA_AE_LINES_PKG.ValidateCurrentLine;
69883
69884 ------------------------------------------------------------------------------------
69885 -- 4219869 Business Flow
69886 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69887 ------------------------------------------------------------------------------------
69888 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69889
69890 ----------------------------------------------------------------------------------
69891 -- 4219869 Business Flow
69892 -- Update journal entry status -- Need to generate this within IF <condition>
69893 ----------------------------------------------------------------------------------
69894 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69895 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69896 ,p_balance_type_code => l_balance_type_code
69897 );
69898
69899 -------------------------------------------------------------------------------------------
69900 -- 4262811 - Generate the Accrual Reversal lines
69901 -------------------------------------------------------------------------------------------
69902 BEGIN
69903 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69904 (g_array_event(p_event_id).array_value_num('header_index'));
69905 IF l_acc_rev_flag IS NULL THEN
69906 l_acc_rev_flag := 'N';
69907 END IF;
69908 EXCEPTION
69909 WHEN OTHERS THEN
69910 l_acc_rev_flag := 'N';
69911 END;
69912 --
69913 IF (l_acc_rev_flag = 'Y') THEN
69914
69915 -- 4645092 ------------------------------------------------------------------------------
69916 -- To allow MPA report to determine if it should generate report process
69917 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69918 ------------------------------------------------------------------------------------------
69919
69920 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69921 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69922 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
69923 -- call ADRs
69924 -- Bug 4922099
69925 --
69926 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69927 (NVL(l_actual_upg_option, 'N') = 'O') OR
69928 (NVL(l_enc_upg_option, 'N') = 'O')
69929 )
69930 THEN
69931 NULL;
69932 --
69933 --
69934
69935 l_ccid := AcctDerRule_4(
69936 p_application_id => p_application_id
69937 , p_ae_header_id => l_ae_header_id
69938 , p_source_4 => p_source_4
69939 , x_transaction_coa_id => l_adr_transaction_coa_id
69940 , x_accounting_coa_id => l_adr_accounting_coa_id
69941 , x_value_type_code => l_adr_value_type_code
69942 , p_side => 'NA'
69943 );
69944
69945 xla_ae_lines_pkg.set_ccid(
69946 p_code_combination_id => l_ccid
69947 , p_value_type_code => l_adr_value_type_code
69948 , p_transaction_coa_id => l_adr_transaction_coa_id
69949 , p_accounting_coa_id => l_adr_accounting_coa_id
69950 , p_adr_code => 'CST_DEFAULT'
69951 , p_adr_type_code => 'S'
69952 , p_component_type => l_component_type
69953 , p_component_code => l_component_code
69954 , p_component_type_code => l_component_type_code
69955 , p_component_appl_id => l_component_appl_id
69956 , p_amb_context_code => l_amb_context_code
69957 , p_side => 'NA'
69958 );
69959
69960
69961 --
69962 --
69963 END IF;
69964
69965 --
69966 -- Update the line information that should be overwritten
69967 --
69968 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69969 p_header_num => 1);
69970 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
69971
69972 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69973
69974 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
69975 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69976 END IF;
69977
69978 --
69979 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69980 --
69981 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69982 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
69983 ELSE
69984 ---------------------------------------------------------------------------------------------------
69985 -- 4262811a Switch Sign
69986 ---------------------------------------------------------------------------------------------------
69987 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
69988 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69989 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69990 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69991 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69992 -- 5132302
69993 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69994 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69995
69996 END IF;
69997
69998 -- 4955764
69999 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70000 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70001
70002
70003 XLA_AE_LINES_PKG.ValidateCurrentLine;
70004 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70005
70006 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70007 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70008 ,p_balance_type_code => l_balance_type_code);
70009
70010 END IF;
70011
70012 -----------------------------------------------------------------------------------------
70013 -- 4262811 Multiperiod Accounting
70014 -----------------------------------------------------------------------------------------
70015 -- No MPA option is assigned.
70016
70017
70018 END IF;
70019 END IF;
70020 --
70021
70022 --
70023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70024 trace
70025 (p_msg => 'END of AcctLineType_128'
70026 ,p_level => C_LEVEL_PROCEDURE
70027 ,p_module => l_log_module);
70028 END IF;
70029 --
70030 EXCEPTION
70031 WHEN xla_exceptions_pkg.application_exception THEN
70032 RAISE;
70033 WHEN OTHERS THEN
70034 xla_exceptions_pkg.raise_message
70035 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_128');
70036 END AcctLineType_128;
70037 --
70038
70039 ---------------------------------------
70040 --
70041 -- PRIVATE FUNCTION
70042 -- AcctLineType_129
70043 --
70044 ---------------------------------------
70045 PROCEDURE AcctLineType_129 (
70046 p_application_id IN NUMBER
70047 ,p_event_id IN NUMBER
70048 ,p_calculate_acctd_flag IN VARCHAR2
70049 ,p_calculate_g_l_flag IN VARCHAR2
70050 ,p_actual_flag IN OUT VARCHAR2
70051 ,p_balance_type_code OUT VARCHAR2
70052 ,p_gain_or_loss_ref OUT VARCHAR2
70053
70054 --Cost Management Default Account
70055 , p_source_4 IN NUMBER
70056 --Applied to Application ID
70057 , p_source_6 IN NUMBER
70058 --Applied to Distribution Link Type
70059 , p_source_7 IN VARCHAR2
70060 --Applied to Entity Code
70061 , p_source_8 IN VARCHAR2
70062 --DISTRIBUTION_IDENTIFIER
70063 , p_source_11 IN NUMBER
70064 --Distribution Type
70065 , p_source_12 IN VARCHAR2
70066 , p_source_12_meaning IN VARCHAR2
70067 --Encumbrance Reversal Amount Entered
70068 , p_source_14 IN NUMBER
70069 --Entered Currency Code
70070 , p_source_15 IN VARCHAR2
70071 --Transaction Encumbrance Reversal Amount
70072 , p_source_16 IN NUMBER
70073 --Entered Amount
70074 , p_source_18 IN NUMBER
70075 --Currency Conversion Date
70076 , p_source_19 IN DATE
70077 --Currency Conversion Rate
70078 , p_source_20 IN NUMBER
70079 --Currency Conversion Type
70080 , p_source_21 IN VARCHAR2
70081 --Accounted Amount
70082 , p_source_22 IN NUMBER
70083 --Accounting Line Type
70084 , p_source_24 IN NUMBER
70085 --Costing Encumbrance Upgrade Option
70086 , p_source_27 IN VARCHAR2
70087 --TXN_PO_DISTRIBUTION_ID
70088 , p_source_28 IN NUMBER
70089 --TXN_PO_HEADER_ID
70090 , p_source_29 IN NUMBER
70091 --Requisition Budget Account
70092 , p_source_30 IN NUMBER
70093 --Requisition Encumbrance Type Identifier
70094 , p_source_31 IN NUMBER
70095 )
70096 IS
70097
70098 l_component_type VARCHAR2(80);
70099 l_component_code VARCHAR2(30);
70100 l_component_type_code VARCHAR2(1);
70101 l_component_appl_id INTEGER;
70102 l_amb_context_code VARCHAR2(30);
70103 l_entity_code VARCHAR2(30);
70104 l_event_class_code VARCHAR2(30);
70105 l_ae_header_id NUMBER;
70106 l_event_type_code VARCHAR2(30);
70107 l_line_definition_code VARCHAR2(30);
70108 l_line_definition_owner_code VARCHAR2(1);
70109 --
70110 -- adr variables
70111 l_segment VARCHAR2(30);
70112 l_ccid NUMBER;
70113 l_adr_transaction_coa_id NUMBER;
70114 l_adr_accounting_coa_id NUMBER;
70115 l_adr_flexfield_segment_code VARCHAR2(30);
70116 l_adr_flex_value_set_id NUMBER;
70117 l_adr_value_type_code VARCHAR2(30);
70118 l_adr_value_combination_id NUMBER;
70119 l_adr_value_segment_code VARCHAR2(30);
70120
70121 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
70122 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
70123 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
70124 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
70125
70126 -- 4262811 Variables ------------------------------------------------------------------------------------------
70127 l_entered_amt_idx NUMBER;
70128 l_accted_amt_idx NUMBER;
70129 l_acc_rev_flag VARCHAR2(1);
70130 l_accrual_line_num NUMBER;
70131 l_tmp_amt NUMBER;
70132 l_acc_rev_natural_side_code VARCHAR2(1);
70133
70134 l_num_entries NUMBER;
70135 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
70136 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
70137 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
70138 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
70139 l_recog_line_1 NUMBER;
70140 l_recog_line_2 NUMBER;
70141
70142 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
70143 l_bflow_applied_to_amt NUMBER; -- 5132302
70144 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
70145
70146 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70147
70148 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
70149 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
70150
70151 ---------------------------------------------------------------------------------------------------------------
70152
70153
70154 --
70155 -- bulk performance
70156 --
70157 l_balance_type_code VARCHAR2(1);
70158 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
70159 l_log_module VARCHAR2(240);
70160
70161 --
70162 -- Upgrade strategy
70163 --
70164 l_actual_upg_option VARCHAR2(1);
70165 l_enc_upg_option VARCHAR2(1);
70166
70167 --
70168 BEGIN
70169 --
70170 IF g_log_enabled THEN
70171 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_129';
70172 END IF;
70173 --
70174 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70175
70176 trace
70177 (p_msg => 'BEGIN of AcctLineType_129'
70178 ,p_level => C_LEVEL_PROCEDURE
70179 ,p_module => l_log_module);
70180
70181 END IF;
70182 --
70183 l_component_type := 'AMB_JLT';
70184 l_component_code := 'INTRANSIT_VALUATION';
70185 l_component_type_code := 'S';
70186 l_component_appl_id := 707;
70187 l_amb_context_code := 'DEFAULT';
70188 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
70189 l_event_class_code := 'FOB_SHIP_RECIPIENT_RCPT';
70190 l_event_type_code := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
70191 l_line_definition_owner_code := 'S';
70192 l_line_definition_code := 'FOB_SHIP_RECIPIENT_RCPT';
70193 --
70194 l_balance_type_code := 'A';
70195 l_segment := NULL;
70196 l_ccid := NULL;
70197 l_adr_transaction_coa_id := NULL;
70198 l_adr_accounting_coa_id := NULL;
70199 l_adr_flexfield_segment_code := NULL;
70200 l_adr_flex_value_set_id := NULL;
70201 l_adr_value_type_code := NULL;
70202 l_adr_value_combination_id := NULL;
70203 l_adr_value_segment_code := NULL;
70204
70205 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
70206 l_bflow_class_code := ''; -- 4219869 Business Flow
70207 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
70208 l_budgetary_control_flag := 'N';
70209
70210 l_bflow_applied_to_amt_idx := NULL; -- 5132302
70211 l_bflow_applied_to_amt := NULL; -- 5132302
70212 l_entered_amt_idx := NULL; -- 4262811
70213 l_accted_amt_idx := NULL; -- 4262811
70214 l_acc_rev_flag := NULL; -- 4262811
70215 l_accrual_line_num := NULL; -- 4262811
70216 l_tmp_amt := NULL; -- 4262811
70217 --
70218
70219 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70220 l_balance_type_code <> 'B' THEN
70221 IF NVL(p_source_24,9E125) = 14
70222 THEN
70223
70224 --
70225 XLA_AE_LINES_PKG.SetNewLine;
70226
70227 p_balance_type_code := l_balance_type_code;
70228 -- set the flag so later we will know whether the gain loss line needs to be created
70229
70230 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70231 p_actual_flag :='A';
70232 END IF;
70233
70234 --
70235 -- bulk performance
70236 --
70237 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70238 p_header_num => 0); -- 4262811
70239 --
70240 -- set accounting line options
70241 --
70242 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70243 p_natural_side_code => 'D'
70244 , p_gain_or_loss_flag => 'N'
70245 , p_gl_transfer_mode_code => 'S'
70246 , p_acct_entry_type_code => 'A'
70247 , p_switch_side_flag => 'Y'
70248 , p_merge_duplicate_code => 'N'
70249 );
70250 --
70251 l_acc_rev_natural_side_code := 'C'; -- 4262811
70252 --
70253 --
70254 -- set accounting line type info
70255 --
70256 xla_ae_lines_pkg.SetAcctLineType
70257 (p_component_type => l_component_type
70258 ,p_event_type_code => l_event_type_code
70259 ,p_line_definition_owner_code => l_line_definition_owner_code
70260 ,p_line_definition_code => l_line_definition_code
70261 ,p_accounting_line_code => l_component_code
70262 ,p_accounting_line_type_code => l_component_type_code
70263 ,p_accounting_line_appl_id => l_component_appl_id
70264 ,p_amb_context_code => l_amb_context_code
70265 ,p_entity_code => l_entity_code
70266 ,p_event_class_code => l_event_class_code);
70267 --
70268 -- set accounting class
70269 --
70270 xla_ae_lines_pkg.SetAcctClass(
70271 p_accounting_class_code => 'INTRANSIT_VALUATION'
70272 , p_ae_header_id => l_ae_header_id
70273 );
70274
70275 --
70276 -- set rounding class
70277 --
70278 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70279 'INTRANSIT_VALUATION';
70280
70281 --
70282 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70283 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70284 --
70285 -- bulk performance
70286 --
70287 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70288
70289 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70290 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70291
70292 -- 4955764
70293 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70294 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70295
70296 -- 4458381 Public Sector Enh
70297
70298 --
70299 -- set accounting attributes for the line type
70300 --
70301 l_entered_amt_idx := 17;
70302 l_accted_amt_idx := 22;
70303 l_bflow_applied_to_amt_idx := NULL; -- 5132302
70304 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
70305 l_rec_acct_attrs.array_num_value(1) := p_source_6;
70306 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
70307 l_rec_acct_attrs.array_char_value(2) := p_source_7;
70308 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
70309 l_rec_acct_attrs.array_char_value(3) := p_source_8;
70310 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
70311 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
70312 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
70313 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
70314 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
70315 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
70316 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
70317 l_rec_acct_attrs.array_char_value(7) := p_source_12;
70318 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
70319 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
70320 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
70321 l_rec_acct_attrs.array_num_value(9) := p_source_14;
70322 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
70323 l_rec_acct_attrs.array_char_value(10) := p_source_15;
70324 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
70325 l_rec_acct_attrs.array_num_value(11) := p_source_16;
70326 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
70327 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
70328 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
70329 l_rec_acct_attrs.array_num_value(13) := p_source_14;
70330 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
70331 l_rec_acct_attrs.array_char_value(14) := p_source_15;
70332 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
70333 l_rec_acct_attrs.array_num_value(15) := p_source_16;
70334 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
70335 l_rec_acct_attrs.array_char_value(16) := p_source_27;
70336 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
70337 l_rec_acct_attrs.array_num_value(17) := p_source_18;
70338 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
70339 l_rec_acct_attrs.array_char_value(18) := p_source_15;
70340 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
70341 l_rec_acct_attrs.array_date_value(19) := p_source_19;
70342 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
70343 l_rec_acct_attrs.array_num_value(20) := p_source_20;
70344 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
70345 l_rec_acct_attrs.array_char_value(21) := p_source_21;
70346 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
70347 l_rec_acct_attrs.array_num_value(22) := p_source_22;
70348 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
70349 l_rec_acct_attrs.array_num_value(23) := p_source_31;
70350 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
70351 l_rec_acct_attrs.array_num_value(24) := p_source_31;
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_000005_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 := 'INTRANSIT_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 := 'USER_DEFINE';
70776 l_event_type_code := 'UAVG_COST_UPD';
70777 l_line_definition_owner_code := 'S';
70778 l_line_definition_code := 'USER_COST_UPD';
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) = 14
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 => 'INTRANSIT_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 'INTRANSIT_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_000005_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 := 'UAVG_COST_UPD';
71331 l_line_definition_owner_code := 'S';
71332 l_line_definition_code := 'USER_COST_UPD';
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_000005_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 := 'UMISC_RCPT';
71885 l_line_definition_owner_code := 'S';
71886 l_line_definition_code := 'USER_RCPT';
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_000005_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 := 'UDIR_INTERORG_RCPT_NO_TP';
72439 l_line_definition_owner_code := 'S';
72440 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_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_000005_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 := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
72993 l_line_definition_owner_code := 'S';
72994 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
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_000005_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 := 'WIP_MTL';
73546 l_event_type_code := 'WIP_MTL_ALL';
73547 l_line_definition_owner_code := 'S';
73548 l_line_definition_code := 'WIP_MTL';
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_000005_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 --Applied to Application ID
73987 , p_source_6 IN NUMBER
73988 --Applied to Distribution Link Type
73989 , p_source_7 IN VARCHAR2
73990 --Applied to Entity Code
73991 , p_source_8 IN VARCHAR2
73992 --Applied To Purchase Document Identifier
73993 , p_source_10 IN NUMBER
73994 --DISTRIBUTION_IDENTIFIER
73995 , p_source_11 IN NUMBER
73996 --Distribution Type
73997 , p_source_12 IN VARCHAR2
73998 , p_source_12_meaning IN VARCHAR2
73999 --PO Budget Account
74000 , p_source_13 IN NUMBER
74001 --Encumbrance Reversal Amount Entered
74002 , p_source_14 IN NUMBER
74003 --Entered Currency Code
74004 , p_source_15 IN VARCHAR2
74005 --Transaction Encumbrance Reversal Amount
74006 , p_source_16 IN NUMBER
74007 --Entered Amount
74008 , p_source_18 IN NUMBER
74009 --Currency Conversion Date
74010 , p_source_19 IN DATE
74011 --Currency Conversion Rate
74012 , p_source_20 IN NUMBER
74013 --Currency Conversion Type
74014 , p_source_21 IN VARCHAR2
74015 --Accounted Amount
74016 , p_source_22 IN NUMBER
74017 --Purchasing Encumbrance Type Identifier
74018 , p_source_23 IN NUMBER
74019 --Accounting Line Type
74020 , p_source_24 IN NUMBER
74021 --Costing Encumbrance Upgrade Option
74022 , p_source_27 IN VARCHAR2
74023 --TXN_PO_DISTRIBUTION_ID
74024 , p_source_28 IN NUMBER
74025 )
74026 IS
74027
74028 l_component_type VARCHAR2(80);
74029 l_component_code VARCHAR2(30);
74030 l_component_type_code VARCHAR2(1);
74031 l_component_appl_id INTEGER;
74032 l_amb_context_code VARCHAR2(30);
74033 l_entity_code VARCHAR2(30);
74034 l_event_class_code VARCHAR2(30);
74035 l_ae_header_id NUMBER;
74036 l_event_type_code VARCHAR2(30);
74037 l_line_definition_code VARCHAR2(30);
74038 l_line_definition_owner_code VARCHAR2(1);
74039 --
74040 -- adr variables
74041 l_segment VARCHAR2(30);
74042 l_ccid NUMBER;
74043 l_adr_transaction_coa_id NUMBER;
74044 l_adr_accounting_coa_id NUMBER;
74045 l_adr_flexfield_segment_code VARCHAR2(30);
74046 l_adr_flex_value_set_id NUMBER;
74047 l_adr_value_type_code VARCHAR2(30);
74048 l_adr_value_combination_id NUMBER;
74049 l_adr_value_segment_code VARCHAR2(30);
74050
74051 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
74052 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
74053 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
74054 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
74055
74056 -- 4262811 Variables ------------------------------------------------------------------------------------------
74057 l_entered_amt_idx NUMBER;
74058 l_accted_amt_idx NUMBER;
74059 l_acc_rev_flag VARCHAR2(1);
74060 l_accrual_line_num NUMBER;
74061 l_tmp_amt NUMBER;
74062 l_acc_rev_natural_side_code VARCHAR2(1);
74063
74064 l_num_entries NUMBER;
74065 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
74066 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
74067 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
74068 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
74069 l_recog_line_1 NUMBER;
74070 l_recog_line_2 NUMBER;
74071
74072 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
74073 l_bflow_applied_to_amt NUMBER; -- 5132302
74074 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
74075
74076 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74077
74078 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
74079 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
74080
74081 ---------------------------------------------------------------------------------------------------------------
74082
74083
74084 --
74085 -- bulk performance
74086 --
74087 l_balance_type_code VARCHAR2(1);
74088 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
74089 l_log_module VARCHAR2(240);
74090
74091 --
74092 -- Upgrade strategy
74093 --
74094 l_actual_upg_option VARCHAR2(1);
74095 l_enc_upg_option VARCHAR2(1);
74096
74097 --
74098 BEGIN
74099 --
74100 IF g_log_enabled THEN
74101 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_136';
74102 END IF;
74103 --
74104 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74105
74106 trace
74107 (p_msg => 'BEGIN of AcctLineType_136'
74108 ,p_level => C_LEVEL_PROCEDURE
74109 ,p_module => l_log_module);
74110
74111 END IF;
74112 --
74113 l_component_type := 'AMB_JLT';
74114 l_component_code := 'INVENTORY_VALUATION';
74115 l_component_type_code := 'S';
74116 l_component_appl_id := 707;
74117 l_amb_context_code := 'DEFAULT';
74118 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
74119 l_event_class_code := 'PURCHASE_ORDER';
74120 l_event_type_code := 'PURCHASE_ORDER_ALL';
74121 l_line_definition_owner_code := 'S';
74122 l_line_definition_code := 'PURCHASE_ORDER';
74123 --
74124 l_balance_type_code := 'A';
74125 l_segment := NULL;
74126 l_ccid := NULL;
74127 l_adr_transaction_coa_id := NULL;
74128 l_adr_accounting_coa_id := NULL;
74129 l_adr_flexfield_segment_code := NULL;
74130 l_adr_flex_value_set_id := NULL;
74131 l_adr_value_type_code := NULL;
74132 l_adr_value_combination_id := NULL;
74133 l_adr_value_segment_code := NULL;
74134
74135 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
74136 l_bflow_class_code := ''; -- 4219869 Business Flow
74137 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
74138 l_budgetary_control_flag := 'N';
74139
74140 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74141 l_bflow_applied_to_amt := NULL; -- 5132302
74142 l_entered_amt_idx := NULL; -- 4262811
74143 l_accted_amt_idx := NULL; -- 4262811
74144 l_acc_rev_flag := NULL; -- 4262811
74145 l_accrual_line_num := NULL; -- 4262811
74146 l_tmp_amt := NULL; -- 4262811
74147 --
74148
74149 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74150 l_balance_type_code <> 'B' THEN
74151 IF NVL(p_source_24,9E125) = 1
74152 THEN
74153
74154 --
74155 XLA_AE_LINES_PKG.SetNewLine;
74156
74157 p_balance_type_code := l_balance_type_code;
74158 -- set the flag so later we will know whether the gain loss line needs to be created
74159
74160 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74161 p_actual_flag :='A';
74162 END IF;
74163
74164 --
74165 -- bulk performance
74166 --
74167 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74168 p_header_num => 0); -- 4262811
74169 --
74170 -- set accounting line options
74171 --
74172 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74173 p_natural_side_code => 'D'
74174 , p_gain_or_loss_flag => 'N'
74175 , p_gl_transfer_mode_code => 'S'
74176 , p_acct_entry_type_code => 'A'
74177 , p_switch_side_flag => 'Y'
74178 , p_merge_duplicate_code => 'N'
74179 );
74180 --
74181 l_acc_rev_natural_side_code := 'C'; -- 4262811
74182 --
74183 --
74184 -- set accounting line type info
74185 --
74186 xla_ae_lines_pkg.SetAcctLineType
74187 (p_component_type => l_component_type
74188 ,p_event_type_code => l_event_type_code
74189 ,p_line_definition_owner_code => l_line_definition_owner_code
74190 ,p_line_definition_code => l_line_definition_code
74191 ,p_accounting_line_code => l_component_code
74192 ,p_accounting_line_type_code => l_component_type_code
74193 ,p_accounting_line_appl_id => l_component_appl_id
74194 ,p_amb_context_code => l_amb_context_code
74195 ,p_entity_code => l_entity_code
74196 ,p_event_class_code => l_event_class_code);
74197 --
74198 -- set accounting class
74199 --
74200 xla_ae_lines_pkg.SetAcctClass(
74201 p_accounting_class_code => 'INVENTORY_VALUATION'
74202 , p_ae_header_id => l_ae_header_id
74203 );
74204
74205 --
74206 -- set rounding class
74207 --
74208 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74209 'INVENTORY_VALUATION';
74210
74211 --
74212 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74213 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74214 --
74215 -- bulk performance
74216 --
74217 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74218
74219 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74220 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74221
74222 -- 4955764
74223 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74224 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74225
74226 -- 4458381 Public Sector Enh
74227
74228 --
74229 -- set accounting attributes for the line type
74230 --
74231 l_entered_amt_idx := 17;
74232 l_accted_amt_idx := 22;
74233 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74234 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
74235 l_rec_acct_attrs.array_num_value(1) := p_source_6;
74236 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
74237 l_rec_acct_attrs.array_char_value(2) := p_source_7;
74238 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
74239 l_rec_acct_attrs.array_char_value(3) := p_source_8;
74240 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
74241 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
74242 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
74243 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
74244 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
74245 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
74246 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
74247 l_rec_acct_attrs.array_char_value(7) := p_source_12;
74248 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
74249 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
74250 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
74251 l_rec_acct_attrs.array_num_value(9) := p_source_14;
74252 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
74253 l_rec_acct_attrs.array_char_value(10) := p_source_15;
74254 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
74255 l_rec_acct_attrs.array_num_value(11) := p_source_16;
74256 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
74257 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
74258 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
74259 l_rec_acct_attrs.array_num_value(13) := p_source_14;
74260 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
74261 l_rec_acct_attrs.array_char_value(14) := p_source_15;
74262 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
74263 l_rec_acct_attrs.array_num_value(15) := p_source_16;
74264 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
74265 l_rec_acct_attrs.array_char_value(16) := p_source_27;
74266 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
74267 l_rec_acct_attrs.array_num_value(17) := p_source_18;
74268 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
74269 l_rec_acct_attrs.array_char_value(18) := p_source_15;
74270 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
74271 l_rec_acct_attrs.array_date_value(19) := p_source_19;
74272 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
74273 l_rec_acct_attrs.array_num_value(20) := p_source_20;
74274 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
74275 l_rec_acct_attrs.array_char_value(21) := p_source_21;
74276 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
74277 l_rec_acct_attrs.array_num_value(22) := p_source_22;
74278 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
74279 l_rec_acct_attrs.array_num_value(23) := p_source_23;
74280 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
74281 l_rec_acct_attrs.array_num_value(24) := p_source_23;
74282
74283 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74284 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74285
74286 ---------------------------------------------------------------------------------------------------------------
74287 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74288 ---------------------------------------------------------------------------------------------------------------
74289 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74290
74291 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74292 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74293
74294 IF xla_accounting_cache_pkg.GetValueChar
74295 (p_source_code => 'LEDGER_CATEGORY_CODE'
74296 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74297 AND l_bflow_method_code = 'PRIOR_ENTRY'
74298 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74299 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74300 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74301 )
74302 THEN
74303 xla_ae_lines_pkg.BflowUpgEntry
74304 (p_business_method_code => l_bflow_method_code
74305 ,p_business_class_code => l_bflow_class_code
74306 ,p_balance_type => l_balance_type_code);
74307 ELSE
74308 NULL;
74309 -- No business flow processing for business flow method of NONE.
74310 END IF;
74311
74312 --
74313 -- call analytical criteria
74314 --
74315
74316 --
74317 -- call description
74318 --
74319 -- No description or it is inherited.
74320 --
74321 -- call ADRs
74322 -- Bug 4922099
74323 --
74324 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74325 (NVL(l_actual_upg_option, 'N') = 'O') OR
74326 (NVL(l_enc_upg_option, 'N') = 'O')
74327 )
74328 THEN
74329 NULL;
74330 --
74331 --
74332
74333 l_ccid := AcctDerRule_4(
74334 p_application_id => p_application_id
74335 , p_ae_header_id => l_ae_header_id
74336 , p_source_4 => p_source_4
74337 , x_transaction_coa_id => l_adr_transaction_coa_id
74338 , x_accounting_coa_id => l_adr_accounting_coa_id
74339 , x_value_type_code => l_adr_value_type_code
74340 , p_side => 'NA'
74341 );
74342
74343 xla_ae_lines_pkg.set_ccid(
74344 p_code_combination_id => l_ccid
74345 , p_value_type_code => l_adr_value_type_code
74346 , p_transaction_coa_id => l_adr_transaction_coa_id
74347 , p_accounting_coa_id => l_adr_accounting_coa_id
74348 , p_adr_code => 'CST_DEFAULT'
74349 , p_adr_type_code => 'S'
74350 , p_component_type => l_component_type
74351 , p_component_code => l_component_code
74352 , p_component_type_code => l_component_type_code
74353 , p_component_appl_id => l_component_appl_id
74354 , p_amb_context_code => l_amb_context_code
74355 , p_side => 'NA'
74356 );
74357
74358
74359 --
74360 --
74361 END IF;
74362 --
74363 -- Bug 4922099
74364 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74365 (NVL(l_enc_upg_option, 'N') = 'O')
74366 ) AND
74367 (l_bflow_method_code = 'PRIOR_ENTRY')
74368 )
74369 THEN
74370 IF
74371 --
74372 1 = 2
74373 --
74374 THEN
74375 xla_accounting_err_pkg.build_message
74376 (p_appli_s_name => 'XLA'
74377 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74378 ,p_token_1 => 'LINE_NUMBER'
74379 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
74380 ,p_token_2 => 'LINE_TYPE_NAME'
74381 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
74382 l_component_type
74383 ,l_component_code
74384 ,l_component_type_code
74385 ,l_component_appl_id
74386 ,l_amb_context_code
74387 ,l_entity_code
74388 ,l_event_class_code
74389 )
74390 ,p_token_3 => 'OWNER'
74391 ,p_value_3 => xla_lookups_pkg.get_meaning(
74392 p_lookup_type => 'XLA_OWNER_TYPE'
74393 ,p_lookup_code => l_component_type_code
74394 )
74395 ,p_token_4 => 'PRODUCT_NAME'
74396 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74397 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74398 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74399 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74400 ,p_ae_header_id => NULL
74401 );
74402
74403 IF (C_LEVEL_ERROR>= g_log_level) THEN
74404 trace
74405 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74406 ,p_level => C_LEVEL_ERROR
74407 ,p_module => l_log_module);
74408 END IF;
74409 END IF;
74410 END IF;
74411 --
74412 --
74413 ------------------------------------------------------------------------------------------------
74414 -- 4219869 Business Flow
74415 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74416 -- Prior Entry. Currently, the following code is always generated.
74417 ------------------------------------------------------------------------------------------------
74418 XLA_AE_LINES_PKG.ValidateCurrentLine;
74419
74420 ------------------------------------------------------------------------------------
74421 -- 4219869 Business Flow
74422 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74423 ------------------------------------------------------------------------------------
74424 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74425
74426 ----------------------------------------------------------------------------------
74427 -- 4219869 Business Flow
74428 -- Update journal entry status -- Need to generate this within IF <condition>
74429 ----------------------------------------------------------------------------------
74430 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74431 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74432 ,p_balance_type_code => l_balance_type_code
74433 );
74434
74435 -------------------------------------------------------------------------------------------
74436 -- 4262811 - Generate the Accrual Reversal lines
74437 -------------------------------------------------------------------------------------------
74438 BEGIN
74439 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74440 (g_array_event(p_event_id).array_value_num('header_index'));
74441 IF l_acc_rev_flag IS NULL THEN
74442 l_acc_rev_flag := 'N';
74443 END IF;
74444 EXCEPTION
74445 WHEN OTHERS THEN
74446 l_acc_rev_flag := 'N';
74447 END;
74448 --
74449 IF (l_acc_rev_flag = 'Y') THEN
74450
74451 -- 4645092 ------------------------------------------------------------------------------
74452 -- To allow MPA report to determine if it should generate report process
74453 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
74454 ------------------------------------------------------------------------------------------
74455
74456 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
74457 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
74458 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
74459 -- call ADRs
74460 -- Bug 4922099
74461 --
74462 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74463 (NVL(l_actual_upg_option, 'N') = 'O') OR
74464 (NVL(l_enc_upg_option, 'N') = 'O')
74465 )
74466 THEN
74467 NULL;
74468 --
74469 --
74470
74471 l_ccid := AcctDerRule_4(
74472 p_application_id => p_application_id
74473 , p_ae_header_id => l_ae_header_id
74474 , p_source_4 => p_source_4
74475 , x_transaction_coa_id => l_adr_transaction_coa_id
74476 , x_accounting_coa_id => l_adr_accounting_coa_id
74477 , x_value_type_code => l_adr_value_type_code
74478 , p_side => 'NA'
74479 );
74480
74481 xla_ae_lines_pkg.set_ccid(
74482 p_code_combination_id => l_ccid
74483 , p_value_type_code => l_adr_value_type_code
74484 , p_transaction_coa_id => l_adr_transaction_coa_id
74485 , p_accounting_coa_id => l_adr_accounting_coa_id
74486 , p_adr_code => 'CST_DEFAULT'
74487 , p_adr_type_code => 'S'
74488 , p_component_type => l_component_type
74489 , p_component_code => l_component_code
74490 , p_component_type_code => l_component_type_code
74491 , p_component_appl_id => l_component_appl_id
74492 , p_amb_context_code => l_amb_context_code
74493 , p_side => 'NA'
74494 );
74495
74496
74497 --
74498 --
74499 END IF;
74500
74501 --
74502 -- Update the line information that should be overwritten
74503 --
74504 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
74505 p_header_num => 1);
74506 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
74507
74508 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
74509
74510 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
74511 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
74512 END IF;
74513
74514 --
74515 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
74516 --
74517 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
74518 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
74519 ELSE
74520 ---------------------------------------------------------------------------------------------------
74521 -- 4262811a Switch Sign
74522 ---------------------------------------------------------------------------------------------------
74523 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
74524 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74525 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74526 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
74527 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74528 -- 5132302
74529 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
74530 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
74531
74532 END IF;
74533
74534 -- 4955764
74535 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74536 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
74537
74538
74539 XLA_AE_LINES_PKG.ValidateCurrentLine;
74540 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74541
74542 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74543 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
74544 ,p_balance_type_code => l_balance_type_code);
74545
74546 END IF;
74547
74548 -----------------------------------------------------------------------------------------
74549 -- 4262811 Multiperiod Accounting
74550 -----------------------------------------------------------------------------------------
74551 -- No MPA option is assigned.
74552
74553
74554 END IF;
74555 END IF;
74556 --
74557
74558 --
74559 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74560 trace
74561 (p_msg => 'END of AcctLineType_136'
74562 ,p_level => C_LEVEL_PROCEDURE
74563 ,p_module => l_log_module);
74564 END IF;
74565 --
74566 EXCEPTION
74567 WHEN xla_exceptions_pkg.application_exception THEN
74568 RAISE;
74569 WHEN OTHERS THEN
74570 xla_exceptions_pkg.raise_message
74571 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_136');
74572 END AcctLineType_136;
74573 --
74574
74575 ---------------------------------------
74576 --
74577 -- PRIVATE FUNCTION
74578 -- AcctLineType_137
74579 --
74580 ---------------------------------------
74581 PROCEDURE AcctLineType_137 (
74582 p_application_id IN NUMBER
74583 ,p_event_id IN NUMBER
74584 ,p_calculate_acctd_flag IN VARCHAR2
74585 ,p_calculate_g_l_flag IN VARCHAR2
74586 ,p_actual_flag IN OUT VARCHAR2
74587 ,p_balance_type_code OUT VARCHAR2
74588 ,p_gain_or_loss_ref OUT VARCHAR2
74589
74590 --Cost Management Default Account
74591 , p_source_4 IN NUMBER
74592 --DISTRIBUTION_IDENTIFIER
74593 , p_source_11 IN NUMBER
74594 --Distribution Type
74595 , p_source_12 IN VARCHAR2
74596 , p_source_12_meaning IN VARCHAR2
74597 --Entered Currency Code
74598 , p_source_15 IN VARCHAR2
74599 --Entered Amount
74600 , p_source_18 IN NUMBER
74601 --Currency Conversion Date
74602 , p_source_19 IN DATE
74603 --Currency Conversion Rate
74604 , p_source_20 IN NUMBER
74605 --Currency Conversion Type
74606 , p_source_21 IN VARCHAR2
74607 --Accounted Amount
74608 , p_source_22 IN NUMBER
74609 --Accounting Line Type
74610 , p_source_24 IN NUMBER
74611 )
74612 IS
74613
74614 l_component_type VARCHAR2(80);
74615 l_component_code VARCHAR2(30);
74616 l_component_type_code VARCHAR2(1);
74617 l_component_appl_id INTEGER;
74618 l_amb_context_code VARCHAR2(30);
74619 l_entity_code VARCHAR2(30);
74620 l_event_class_code VARCHAR2(30);
74621 l_ae_header_id NUMBER;
74622 l_event_type_code VARCHAR2(30);
74623 l_line_definition_code VARCHAR2(30);
74624 l_line_definition_owner_code VARCHAR2(1);
74625 --
74626 -- adr variables
74627 l_segment VARCHAR2(30);
74628 l_ccid NUMBER;
74629 l_adr_transaction_coa_id NUMBER;
74630 l_adr_accounting_coa_id NUMBER;
74631 l_adr_flexfield_segment_code VARCHAR2(30);
74632 l_adr_flex_value_set_id NUMBER;
74633 l_adr_value_type_code VARCHAR2(30);
74634 l_adr_value_combination_id NUMBER;
74635 l_adr_value_segment_code VARCHAR2(30);
74636
74637 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
74638 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
74639 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
74640 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
74641
74642 -- 4262811 Variables ------------------------------------------------------------------------------------------
74643 l_entered_amt_idx NUMBER;
74644 l_accted_amt_idx NUMBER;
74645 l_acc_rev_flag VARCHAR2(1);
74646 l_accrual_line_num NUMBER;
74647 l_tmp_amt NUMBER;
74648 l_acc_rev_natural_side_code VARCHAR2(1);
74649
74650 l_num_entries NUMBER;
74651 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
74652 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
74653 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
74654 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
74655 l_recog_line_1 NUMBER;
74656 l_recog_line_2 NUMBER;
74657
74658 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
74659 l_bflow_applied_to_amt NUMBER; -- 5132302
74660 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
74661
74662 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
74663
74664 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
74665 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
74666
74667 ---------------------------------------------------------------------------------------------------------------
74668
74669
74670 --
74671 -- bulk performance
74672 --
74673 l_balance_type_code VARCHAR2(1);
74674 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
74675 l_log_module VARCHAR2(240);
74676
74677 --
74678 -- Upgrade strategy
74679 --
74680 l_actual_upg_option VARCHAR2(1);
74681 l_enc_upg_option VARCHAR2(1);
74682
74683 --
74684 BEGIN
74685 --
74686 IF g_log_enabled THEN
74687 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_137';
74688 END IF;
74689 --
74690 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74691
74692 trace
74693 (p_msg => 'BEGIN of AcctLineType_137'
74694 ,p_level => C_LEVEL_PROCEDURE
74695 ,p_module => l_log_module);
74696
74697 END IF;
74698 --
74699 l_component_type := 'AMB_JLT';
74700 l_component_code := 'INVENTORY_VALUATION';
74701 l_component_type_code := 'S';
74702 l_component_appl_id := 707;
74703 l_amb_context_code := 'DEFAULT';
74704 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
74705 l_event_class_code := 'INT_ORDER_TO_EXP';
74706 l_event_type_code := 'INT_ORDER_TO_EXP_ALL';
74707 l_line_definition_owner_code := 'S';
74708 l_line_definition_code := 'INT_ORDER_TO_EXP';
74709 --
74710 l_balance_type_code := 'A';
74711 l_segment := NULL;
74712 l_ccid := NULL;
74713 l_adr_transaction_coa_id := NULL;
74714 l_adr_accounting_coa_id := NULL;
74715 l_adr_flexfield_segment_code := NULL;
74716 l_adr_flex_value_set_id := NULL;
74717 l_adr_value_type_code := NULL;
74718 l_adr_value_combination_id := NULL;
74719 l_adr_value_segment_code := NULL;
74720
74721 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
74722 l_bflow_class_code := ''; -- 4219869 Business Flow
74723 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
74724 l_budgetary_control_flag := 'N';
74725
74726 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74727 l_bflow_applied_to_amt := NULL; -- 5132302
74728 l_entered_amt_idx := NULL; -- 4262811
74729 l_accted_amt_idx := NULL; -- 4262811
74730 l_acc_rev_flag := NULL; -- 4262811
74731 l_accrual_line_num := NULL; -- 4262811
74732 l_tmp_amt := NULL; -- 4262811
74733 --
74734
74735 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
74736 l_balance_type_code <> 'B' THEN
74737 IF NVL(p_source_24,9E125) = 1
74738 THEN
74739
74740 --
74741 XLA_AE_LINES_PKG.SetNewLine;
74742
74743 p_balance_type_code := l_balance_type_code;
74744 -- set the flag so later we will know whether the gain loss line needs to be created
74745
74746 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
74747 p_actual_flag :='A';
74748 END IF;
74749
74750 --
74751 -- bulk performance
74752 --
74753 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
74754 p_header_num => 0); -- 4262811
74755 --
74756 -- set accounting line options
74757 --
74758 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
74759 p_natural_side_code => 'D'
74760 , p_gain_or_loss_flag => 'N'
74761 , p_gl_transfer_mode_code => 'S'
74762 , p_acct_entry_type_code => 'A'
74763 , p_switch_side_flag => 'Y'
74764 , p_merge_duplicate_code => 'N'
74765 );
74766 --
74767 l_acc_rev_natural_side_code := 'C'; -- 4262811
74768 --
74769 --
74770 -- set accounting line type info
74771 --
74772 xla_ae_lines_pkg.SetAcctLineType
74773 (p_component_type => l_component_type
74774 ,p_event_type_code => l_event_type_code
74775 ,p_line_definition_owner_code => l_line_definition_owner_code
74776 ,p_line_definition_code => l_line_definition_code
74777 ,p_accounting_line_code => l_component_code
74778 ,p_accounting_line_type_code => l_component_type_code
74779 ,p_accounting_line_appl_id => l_component_appl_id
74780 ,p_amb_context_code => l_amb_context_code
74781 ,p_entity_code => l_entity_code
74782 ,p_event_class_code => l_event_class_code);
74783 --
74784 -- set accounting class
74785 --
74786 xla_ae_lines_pkg.SetAcctClass(
74787 p_accounting_class_code => 'INVENTORY_VALUATION'
74788 , p_ae_header_id => l_ae_header_id
74789 );
74790
74791 --
74792 -- set rounding class
74793 --
74794 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
74795 'INVENTORY_VALUATION';
74796
74797 --
74798 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
74799 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
74800 --
74801 -- bulk performance
74802 --
74803 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
74804
74805 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
74806 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
74807
74808 -- 4955764
74809 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
74810 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
74811
74812 -- 4458381 Public Sector Enh
74813
74814 --
74815 -- set accounting attributes for the line type
74816 --
74817 l_entered_amt_idx := 3;
74818 l_accted_amt_idx := 8;
74819 l_bflow_applied_to_amt_idx := NULL; -- 5132302
74820 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
74821 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
74822 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
74823 l_rec_acct_attrs.array_char_value(2) := p_source_12;
74824 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
74825 l_rec_acct_attrs.array_num_value(3) := p_source_18;
74826 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
74827 l_rec_acct_attrs.array_char_value(4) := p_source_15;
74828 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
74829 l_rec_acct_attrs.array_date_value(5) := p_source_19;
74830 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
74831 l_rec_acct_attrs.array_num_value(6) := p_source_20;
74832 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
74833 l_rec_acct_attrs.array_char_value(7) := p_source_21;
74834 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
74835 l_rec_acct_attrs.array_num_value(8) := p_source_22;
74836
74837 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
74838 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
74839
74840 ---------------------------------------------------------------------------------------------------------------
74841 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
74842 ---------------------------------------------------------------------------------------------------------------
74843 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
74844
74845 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74846 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
74847
74848 IF xla_accounting_cache_pkg.GetValueChar
74849 (p_source_code => 'LEDGER_CATEGORY_CODE'
74850 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
74851 AND l_bflow_method_code = 'PRIOR_ENTRY'
74852 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
74853 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
74854 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
74855 )
74856 THEN
74857 xla_ae_lines_pkg.BflowUpgEntry
74858 (p_business_method_code => l_bflow_method_code
74859 ,p_business_class_code => l_bflow_class_code
74860 ,p_balance_type => l_balance_type_code);
74861 ELSE
74862 NULL;
74863 -- No business flow processing for business flow method of NONE.
74864 END IF;
74865
74866 --
74867 -- call analytical criteria
74868 --
74869
74870 --
74871 -- call description
74872 --
74873 -- No description or it is inherited.
74874 --
74875 -- call ADRs
74876 -- Bug 4922099
74877 --
74878 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
74879 (NVL(l_actual_upg_option, 'N') = 'O') OR
74880 (NVL(l_enc_upg_option, 'N') = 'O')
74881 )
74882 THEN
74883 NULL;
74884 --
74885 --
74886
74887 l_ccid := AcctDerRule_4(
74888 p_application_id => p_application_id
74889 , p_ae_header_id => l_ae_header_id
74890 , p_source_4 => p_source_4
74891 , x_transaction_coa_id => l_adr_transaction_coa_id
74892 , x_accounting_coa_id => l_adr_accounting_coa_id
74893 , x_value_type_code => l_adr_value_type_code
74894 , p_side => 'NA'
74895 );
74896
74897 xla_ae_lines_pkg.set_ccid(
74898 p_code_combination_id => l_ccid
74899 , p_value_type_code => l_adr_value_type_code
74900 , p_transaction_coa_id => l_adr_transaction_coa_id
74901 , p_accounting_coa_id => l_adr_accounting_coa_id
74902 , p_adr_code => 'CST_DEFAULT'
74903 , p_adr_type_code => 'S'
74904 , p_component_type => l_component_type
74905 , p_component_code => l_component_code
74906 , p_component_type_code => l_component_type_code
74907 , p_component_appl_id => l_component_appl_id
74908 , p_amb_context_code => l_amb_context_code
74909 , p_side => 'NA'
74910 );
74911
74912
74913 --
74914 --
74915 END IF;
74916 --
74917 -- Bug 4922099
74918 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
74919 (NVL(l_enc_upg_option, 'N') = 'O')
74920 ) AND
74921 (l_bflow_method_code = 'PRIOR_ENTRY')
74922 )
74923 THEN
74924 IF
74925 --
74926 1 = 2
74927 --
74928 THEN
74929 xla_accounting_err_pkg.build_message
74930 (p_appli_s_name => 'XLA'
74931 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74932 ,p_token_1 => 'LINE_NUMBER'
74933 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
74934 ,p_token_2 => 'LINE_TYPE_NAME'
74935 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
74936 l_component_type
74937 ,l_component_code
74938 ,l_component_type_code
74939 ,l_component_appl_id
74940 ,l_amb_context_code
74941 ,l_entity_code
74942 ,l_event_class_code
74943 )
74944 ,p_token_3 => 'OWNER'
74945 ,p_value_3 => xla_lookups_pkg.get_meaning(
74946 p_lookup_type => 'XLA_OWNER_TYPE'
74947 ,p_lookup_code => l_component_type_code
74948 )
74949 ,p_token_4 => 'PRODUCT_NAME'
74950 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
74951 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
74952 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
74953 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
74954 ,p_ae_header_id => NULL
74955 );
74956
74957 IF (C_LEVEL_ERROR>= g_log_level) THEN
74958 trace
74959 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
74960 ,p_level => C_LEVEL_ERROR
74961 ,p_module => l_log_module);
74962 END IF;
74963 END IF;
74964 END IF;
74965 --
74966 --
74967 ------------------------------------------------------------------------------------------------
74968 -- 4219869 Business Flow
74969 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
74970 -- Prior Entry. Currently, the following code is always generated.
74971 ------------------------------------------------------------------------------------------------
74972 XLA_AE_LINES_PKG.ValidateCurrentLine;
74973
74974 ------------------------------------------------------------------------------------
74975 -- 4219869 Business Flow
74976 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
74977 ------------------------------------------------------------------------------------
74978 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
74979
74980 ----------------------------------------------------------------------------------
74981 -- 4219869 Business Flow
74982 -- Update journal entry status -- Need to generate this within IF <condition>
74983 ----------------------------------------------------------------------------------
74984 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
74985 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
74986 ,p_balance_type_code => l_balance_type_code
74987 );
74988
74989 -------------------------------------------------------------------------------------------
74990 -- 4262811 - Generate the Accrual Reversal lines
74991 -------------------------------------------------------------------------------------------
74992 BEGIN
74993 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
74994 (g_array_event(p_event_id).array_value_num('header_index'));
74995 IF l_acc_rev_flag IS NULL THEN
74996 l_acc_rev_flag := 'N';
74997 END IF;
74998 EXCEPTION
74999 WHEN OTHERS THEN
75000 l_acc_rev_flag := 'N';
75001 END;
75002 --
75003 IF (l_acc_rev_flag = 'Y') THEN
75004
75005 -- 4645092 ------------------------------------------------------------------------------
75006 -- To allow MPA report to determine if it should generate report process
75007 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75008 ------------------------------------------------------------------------------------------
75009
75010 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75011 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75012 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
75013 -- call ADRs
75014 -- Bug 4922099
75015 --
75016 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75017 (NVL(l_actual_upg_option, 'N') = 'O') OR
75018 (NVL(l_enc_upg_option, 'N') = 'O')
75019 )
75020 THEN
75021 NULL;
75022 --
75023 --
75024
75025 l_ccid := AcctDerRule_4(
75026 p_application_id => p_application_id
75027 , p_ae_header_id => l_ae_header_id
75028 , p_source_4 => p_source_4
75029 , x_transaction_coa_id => l_adr_transaction_coa_id
75030 , x_accounting_coa_id => l_adr_accounting_coa_id
75031 , x_value_type_code => l_adr_value_type_code
75032 , p_side => 'NA'
75033 );
75034
75035 xla_ae_lines_pkg.set_ccid(
75036 p_code_combination_id => l_ccid
75037 , p_value_type_code => l_adr_value_type_code
75038 , p_transaction_coa_id => l_adr_transaction_coa_id
75039 , p_accounting_coa_id => l_adr_accounting_coa_id
75040 , p_adr_code => 'CST_DEFAULT'
75041 , p_adr_type_code => 'S'
75042 , p_component_type => l_component_type
75043 , p_component_code => l_component_code
75044 , p_component_type_code => l_component_type_code
75045 , p_component_appl_id => l_component_appl_id
75046 , p_amb_context_code => l_amb_context_code
75047 , p_side => 'NA'
75048 );
75049
75050
75051 --
75052 --
75053 END IF;
75054
75055 --
75056 -- Update the line information that should be overwritten
75057 --
75058 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75059 p_header_num => 1);
75060 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
75061
75062 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75063
75064 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
75065 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75066 END IF;
75067
75068 --
75069 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75070 --
75071 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75072 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
75073 ELSE
75074 ---------------------------------------------------------------------------------------------------
75075 -- 4262811a Switch Sign
75076 ---------------------------------------------------------------------------------------------------
75077 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
75078 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75079 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75080 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75081 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75082 -- 5132302
75083 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75084 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75085
75086 END IF;
75087
75088 -- 4955764
75089 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75090 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75091
75092
75093 XLA_AE_LINES_PKG.ValidateCurrentLine;
75094 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75095
75096 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75097 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75098 ,p_balance_type_code => l_balance_type_code);
75099
75100 END IF;
75101
75102 -----------------------------------------------------------------------------------------
75103 -- 4262811 Multiperiod Accounting
75104 -----------------------------------------------------------------------------------------
75105 -- No MPA option is assigned.
75106
75107
75108 END IF;
75109 END IF;
75110 --
75111
75112 --
75113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75114 trace
75115 (p_msg => 'END of AcctLineType_137'
75116 ,p_level => C_LEVEL_PROCEDURE
75117 ,p_module => l_log_module);
75118 END IF;
75119 --
75120 EXCEPTION
75121 WHEN xla_exceptions_pkg.application_exception THEN
75122 RAISE;
75123 WHEN OTHERS THEN
75124 xla_exceptions_pkg.raise_message
75125 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_137');
75126 END AcctLineType_137;
75127 --
75128
75129 ---------------------------------------
75130 --
75131 -- PRIVATE FUNCTION
75132 -- AcctLineType_138
75133 --
75134 ---------------------------------------
75135 PROCEDURE AcctLineType_138 (
75136 p_application_id IN NUMBER
75137 ,p_event_id IN NUMBER
75138 ,p_calculate_acctd_flag IN VARCHAR2
75139 ,p_calculate_g_l_flag IN VARCHAR2
75140 ,p_actual_flag IN OUT VARCHAR2
75141 ,p_balance_type_code OUT VARCHAR2
75142 ,p_gain_or_loss_ref OUT VARCHAR2
75143
75144 --Cost Management Default Account
75145 , p_source_4 IN NUMBER
75146 --DISTRIBUTION_IDENTIFIER
75147 , p_source_11 IN NUMBER
75148 --Distribution Type
75149 , p_source_12 IN VARCHAR2
75150 , p_source_12_meaning IN VARCHAR2
75151 --Entered Currency Code
75152 , p_source_15 IN VARCHAR2
75153 --Entered Amount
75154 , p_source_18 IN NUMBER
75155 --Currency Conversion Date
75156 , p_source_19 IN DATE
75157 --Currency Conversion Rate
75158 , p_source_20 IN NUMBER
75159 --Currency Conversion Type
75160 , p_source_21 IN VARCHAR2
75161 --Accounted Amount
75162 , p_source_22 IN NUMBER
75163 --Accounting Line Type
75164 , p_source_24 IN NUMBER
75165 )
75166 IS
75167
75168 l_component_type VARCHAR2(80);
75169 l_component_code VARCHAR2(30);
75170 l_component_type_code VARCHAR2(1);
75171 l_component_appl_id INTEGER;
75172 l_amb_context_code VARCHAR2(30);
75173 l_entity_code VARCHAR2(30);
75174 l_event_class_code VARCHAR2(30);
75175 l_ae_header_id NUMBER;
75176 l_event_type_code VARCHAR2(30);
75177 l_line_definition_code VARCHAR2(30);
75178 l_line_definition_owner_code VARCHAR2(1);
75179 --
75180 -- adr variables
75181 l_segment VARCHAR2(30);
75182 l_ccid NUMBER;
75183 l_adr_transaction_coa_id NUMBER;
75184 l_adr_accounting_coa_id NUMBER;
75185 l_adr_flexfield_segment_code VARCHAR2(30);
75186 l_adr_flex_value_set_id NUMBER;
75187 l_adr_value_type_code VARCHAR2(30);
75188 l_adr_value_combination_id NUMBER;
75189 l_adr_value_segment_code VARCHAR2(30);
75190
75191 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
75192 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
75193 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
75194 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
75195
75196 -- 4262811 Variables ------------------------------------------------------------------------------------------
75197 l_entered_amt_idx NUMBER;
75198 l_accted_amt_idx NUMBER;
75199 l_acc_rev_flag VARCHAR2(1);
75200 l_accrual_line_num NUMBER;
75201 l_tmp_amt NUMBER;
75202 l_acc_rev_natural_side_code VARCHAR2(1);
75203
75204 l_num_entries NUMBER;
75205 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
75206 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
75207 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
75208 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
75209 l_recog_line_1 NUMBER;
75210 l_recog_line_2 NUMBER;
75211
75212 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
75213 l_bflow_applied_to_amt NUMBER; -- 5132302
75214 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
75215
75216 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75217
75218 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
75219 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
75220
75221 ---------------------------------------------------------------------------------------------------------------
75222
75223
75224 --
75225 -- bulk performance
75226 --
75227 l_balance_type_code VARCHAR2(1);
75228 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
75229 l_log_module VARCHAR2(240);
75230
75231 --
75232 -- Upgrade strategy
75233 --
75234 l_actual_upg_option VARCHAR2(1);
75235 l_enc_upg_option VARCHAR2(1);
75236
75237 --
75238 BEGIN
75239 --
75240 IF g_log_enabled THEN
75241 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_138';
75242 END IF;
75243 --
75244 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75245
75246 trace
75247 (p_msg => 'BEGIN of AcctLineType_138'
75248 ,p_level => C_LEVEL_PROCEDURE
75249 ,p_module => l_log_module);
75250
75251 END IF;
75252 --
75253 l_component_type := 'AMB_JLT';
75254 l_component_code := 'INVENTORY_VALUATION';
75255 l_component_type_code := 'S';
75256 l_component_appl_id := 707;
75257 l_amb_context_code := 'DEFAULT';
75258 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
75259 l_event_class_code := 'USER_DEFINE';
75260 l_event_type_code := 'UFOB_RCPT_SENDER_SHIP';
75261 l_line_definition_owner_code := 'S';
75262 l_line_definition_code := 'USER_FOB_RCPT_SENDER_SHIP';
75263 --
75264 l_balance_type_code := 'A';
75265 l_segment := NULL;
75266 l_ccid := NULL;
75267 l_adr_transaction_coa_id := NULL;
75268 l_adr_accounting_coa_id := NULL;
75269 l_adr_flexfield_segment_code := NULL;
75270 l_adr_flex_value_set_id := NULL;
75271 l_adr_value_type_code := NULL;
75272 l_adr_value_combination_id := NULL;
75273 l_adr_value_segment_code := NULL;
75274
75275 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
75276 l_bflow_class_code := ''; -- 4219869 Business Flow
75277 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
75278 l_budgetary_control_flag := 'N';
75279
75280 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75281 l_bflow_applied_to_amt := NULL; -- 5132302
75282 l_entered_amt_idx := NULL; -- 4262811
75283 l_accted_amt_idx := NULL; -- 4262811
75284 l_acc_rev_flag := NULL; -- 4262811
75285 l_accrual_line_num := NULL; -- 4262811
75286 l_tmp_amt := NULL; -- 4262811
75287 --
75288
75289 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75290 l_balance_type_code <> 'B' THEN
75291 IF NVL(p_source_24,9E125) = 1
75292 THEN
75293
75294 --
75295 XLA_AE_LINES_PKG.SetNewLine;
75296
75297 p_balance_type_code := l_balance_type_code;
75298 -- set the flag so later we will know whether the gain loss line needs to be created
75299
75300 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75301 p_actual_flag :='A';
75302 END IF;
75303
75304 --
75305 -- bulk performance
75306 --
75307 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75308 p_header_num => 0); -- 4262811
75309 --
75310 -- set accounting line options
75311 --
75312 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75313 p_natural_side_code => 'D'
75314 , p_gain_or_loss_flag => 'N'
75315 , p_gl_transfer_mode_code => 'S'
75316 , p_acct_entry_type_code => 'A'
75317 , p_switch_side_flag => 'Y'
75318 , p_merge_duplicate_code => 'N'
75319 );
75320 --
75321 l_acc_rev_natural_side_code := 'C'; -- 4262811
75322 --
75323 --
75324 -- set accounting line type info
75325 --
75326 xla_ae_lines_pkg.SetAcctLineType
75327 (p_component_type => l_component_type
75328 ,p_event_type_code => l_event_type_code
75329 ,p_line_definition_owner_code => l_line_definition_owner_code
75330 ,p_line_definition_code => l_line_definition_code
75331 ,p_accounting_line_code => l_component_code
75332 ,p_accounting_line_type_code => l_component_type_code
75333 ,p_accounting_line_appl_id => l_component_appl_id
75334 ,p_amb_context_code => l_amb_context_code
75335 ,p_entity_code => l_entity_code
75336 ,p_event_class_code => l_event_class_code);
75337 --
75338 -- set accounting class
75339 --
75340 xla_ae_lines_pkg.SetAcctClass(
75341 p_accounting_class_code => 'INVENTORY_VALUATION'
75342 , p_ae_header_id => l_ae_header_id
75343 );
75344
75345 --
75346 -- set rounding class
75347 --
75348 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75349 'INVENTORY_VALUATION';
75350
75351 --
75352 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75353 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75354 --
75355 -- bulk performance
75356 --
75357 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75358
75359 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75360 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75361
75362 -- 4955764
75363 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75364 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75365
75366 -- 4458381 Public Sector Enh
75367
75368 --
75369 -- set accounting attributes for the line type
75370 --
75371 l_entered_amt_idx := 3;
75372 l_accted_amt_idx := 8;
75373 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75374 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75375 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
75376 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75377 l_rec_acct_attrs.array_char_value(2) := p_source_12;
75378 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75379 l_rec_acct_attrs.array_num_value(3) := p_source_18;
75380 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75381 l_rec_acct_attrs.array_char_value(4) := p_source_15;
75382 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75383 l_rec_acct_attrs.array_date_value(5) := p_source_19;
75384 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75385 l_rec_acct_attrs.array_num_value(6) := p_source_20;
75386 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75387 l_rec_acct_attrs.array_char_value(7) := p_source_21;
75388 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75389 l_rec_acct_attrs.array_num_value(8) := p_source_22;
75390
75391 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75392 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75393
75394 ---------------------------------------------------------------------------------------------------------------
75395 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75396 ---------------------------------------------------------------------------------------------------------------
75397 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75398
75399 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75400 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75401
75402 IF xla_accounting_cache_pkg.GetValueChar
75403 (p_source_code => 'LEDGER_CATEGORY_CODE'
75404 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75405 AND l_bflow_method_code = 'PRIOR_ENTRY'
75406 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75407 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75408 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75409 )
75410 THEN
75411 xla_ae_lines_pkg.BflowUpgEntry
75412 (p_business_method_code => l_bflow_method_code
75413 ,p_business_class_code => l_bflow_class_code
75414 ,p_balance_type => l_balance_type_code);
75415 ELSE
75416 NULL;
75417 -- No business flow processing for business flow method of NONE.
75418 END IF;
75419
75420 --
75421 -- call analytical criteria
75422 --
75423
75424 --
75425 -- call description
75426 --
75427 -- No description or it is inherited.
75428 --
75429 -- call ADRs
75430 -- Bug 4922099
75431 --
75432 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75433 (NVL(l_actual_upg_option, 'N') = 'O') OR
75434 (NVL(l_enc_upg_option, 'N') = 'O')
75435 )
75436 THEN
75437 NULL;
75438 --
75439 --
75440
75441 l_ccid := AcctDerRule_4(
75442 p_application_id => p_application_id
75443 , p_ae_header_id => l_ae_header_id
75444 , p_source_4 => p_source_4
75445 , x_transaction_coa_id => l_adr_transaction_coa_id
75446 , x_accounting_coa_id => l_adr_accounting_coa_id
75447 , x_value_type_code => l_adr_value_type_code
75448 , p_side => 'NA'
75449 );
75450
75451 xla_ae_lines_pkg.set_ccid(
75452 p_code_combination_id => l_ccid
75453 , p_value_type_code => l_adr_value_type_code
75454 , p_transaction_coa_id => l_adr_transaction_coa_id
75455 , p_accounting_coa_id => l_adr_accounting_coa_id
75456 , p_adr_code => 'CST_DEFAULT'
75457 , p_adr_type_code => 'S'
75458 , p_component_type => l_component_type
75459 , p_component_code => l_component_code
75460 , p_component_type_code => l_component_type_code
75461 , p_component_appl_id => l_component_appl_id
75462 , p_amb_context_code => l_amb_context_code
75463 , p_side => 'NA'
75464 );
75465
75466
75467 --
75468 --
75469 END IF;
75470 --
75471 -- Bug 4922099
75472 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
75473 (NVL(l_enc_upg_option, 'N') = 'O')
75474 ) AND
75475 (l_bflow_method_code = 'PRIOR_ENTRY')
75476 )
75477 THEN
75478 IF
75479 --
75480 1 = 2
75481 --
75482 THEN
75483 xla_accounting_err_pkg.build_message
75484 (p_appli_s_name => 'XLA'
75485 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75486 ,p_token_1 => 'LINE_NUMBER'
75487 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
75488 ,p_token_2 => 'LINE_TYPE_NAME'
75489 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
75490 l_component_type
75491 ,l_component_code
75492 ,l_component_type_code
75493 ,l_component_appl_id
75494 ,l_amb_context_code
75495 ,l_entity_code
75496 ,l_event_class_code
75497 )
75498 ,p_token_3 => 'OWNER'
75499 ,p_value_3 => xla_lookups_pkg.get_meaning(
75500 p_lookup_type => 'XLA_OWNER_TYPE'
75501 ,p_lookup_code => l_component_type_code
75502 )
75503 ,p_token_4 => 'PRODUCT_NAME'
75504 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
75505 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
75506 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
75507 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
75508 ,p_ae_header_id => NULL
75509 );
75510
75511 IF (C_LEVEL_ERROR>= g_log_level) THEN
75512 trace
75513 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
75514 ,p_level => C_LEVEL_ERROR
75515 ,p_module => l_log_module);
75516 END IF;
75517 END IF;
75518 END IF;
75519 --
75520 --
75521 ------------------------------------------------------------------------------------------------
75522 -- 4219869 Business Flow
75523 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
75524 -- Prior Entry. Currently, the following code is always generated.
75525 ------------------------------------------------------------------------------------------------
75526 XLA_AE_LINES_PKG.ValidateCurrentLine;
75527
75528 ------------------------------------------------------------------------------------
75529 -- 4219869 Business Flow
75530 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
75531 ------------------------------------------------------------------------------------
75532 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75533
75534 ----------------------------------------------------------------------------------
75535 -- 4219869 Business Flow
75536 -- Update journal entry status -- Need to generate this within IF <condition>
75537 ----------------------------------------------------------------------------------
75538 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75539 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
75540 ,p_balance_type_code => l_balance_type_code
75541 );
75542
75543 -------------------------------------------------------------------------------------------
75544 -- 4262811 - Generate the Accrual Reversal lines
75545 -------------------------------------------------------------------------------------------
75546 BEGIN
75547 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
75548 (g_array_event(p_event_id).array_value_num('header_index'));
75549 IF l_acc_rev_flag IS NULL THEN
75550 l_acc_rev_flag := 'N';
75551 END IF;
75552 EXCEPTION
75553 WHEN OTHERS THEN
75554 l_acc_rev_flag := 'N';
75555 END;
75556 --
75557 IF (l_acc_rev_flag = 'Y') THEN
75558
75559 -- 4645092 ------------------------------------------------------------------------------
75560 -- To allow MPA report to determine if it should generate report process
75561 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
75562 ------------------------------------------------------------------------------------------
75563
75564 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
75565 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
75566 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
75567 -- call ADRs
75568 -- Bug 4922099
75569 --
75570 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75571 (NVL(l_actual_upg_option, 'N') = 'O') OR
75572 (NVL(l_enc_upg_option, 'N') = 'O')
75573 )
75574 THEN
75575 NULL;
75576 --
75577 --
75578
75579 l_ccid := AcctDerRule_4(
75580 p_application_id => p_application_id
75581 , p_ae_header_id => l_ae_header_id
75582 , p_source_4 => p_source_4
75583 , x_transaction_coa_id => l_adr_transaction_coa_id
75584 , x_accounting_coa_id => l_adr_accounting_coa_id
75585 , x_value_type_code => l_adr_value_type_code
75586 , p_side => 'NA'
75587 );
75588
75589 xla_ae_lines_pkg.set_ccid(
75590 p_code_combination_id => l_ccid
75591 , p_value_type_code => l_adr_value_type_code
75592 , p_transaction_coa_id => l_adr_transaction_coa_id
75593 , p_accounting_coa_id => l_adr_accounting_coa_id
75594 , p_adr_code => 'CST_DEFAULT'
75595 , p_adr_type_code => 'S'
75596 , p_component_type => l_component_type
75597 , p_component_code => l_component_code
75598 , p_component_type_code => l_component_type_code
75599 , p_component_appl_id => l_component_appl_id
75600 , p_amb_context_code => l_amb_context_code
75601 , p_side => 'NA'
75602 );
75603
75604
75605 --
75606 --
75607 END IF;
75608
75609 --
75610 -- Update the line information that should be overwritten
75611 --
75612 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
75613 p_header_num => 1);
75614 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
75615
75616 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
75617
75618 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
75619 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
75620 END IF;
75621
75622 --
75623 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
75624 --
75625 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
75626 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
75627 ELSE
75628 ---------------------------------------------------------------------------------------------------
75629 -- 4262811a Switch Sign
75630 ---------------------------------------------------------------------------------------------------
75631 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
75632 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75633 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75634 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
75635 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75636 -- 5132302
75637 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
75638 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
75639
75640 END IF;
75641
75642 -- 4955764
75643 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75644 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
75645
75646
75647 XLA_AE_LINES_PKG.ValidateCurrentLine;
75648 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
75649
75650 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
75651 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
75652 ,p_balance_type_code => l_balance_type_code);
75653
75654 END IF;
75655
75656 -----------------------------------------------------------------------------------------
75657 -- 4262811 Multiperiod Accounting
75658 -----------------------------------------------------------------------------------------
75659 -- No MPA option is assigned.
75660
75661
75662 END IF;
75663 END IF;
75664 --
75665
75666 --
75667 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75668 trace
75669 (p_msg => 'END of AcctLineType_138'
75670 ,p_level => C_LEVEL_PROCEDURE
75671 ,p_module => l_log_module);
75672 END IF;
75673 --
75674 EXCEPTION
75675 WHEN xla_exceptions_pkg.application_exception THEN
75676 RAISE;
75677 WHEN OTHERS THEN
75678 xla_exceptions_pkg.raise_message
75679 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_138');
75680 END AcctLineType_138;
75681 --
75682
75683 ---------------------------------------
75684 --
75685 -- PRIVATE FUNCTION
75686 -- AcctLineType_139
75687 --
75688 ---------------------------------------
75689 PROCEDURE AcctLineType_139 (
75690 p_application_id IN NUMBER
75691 ,p_event_id IN NUMBER
75692 ,p_calculate_acctd_flag IN VARCHAR2
75693 ,p_calculate_g_l_flag IN VARCHAR2
75694 ,p_actual_flag IN OUT VARCHAR2
75695 ,p_balance_type_code OUT VARCHAR2
75696 ,p_gain_or_loss_ref OUT VARCHAR2
75697
75698 --Cost Management Default Account
75699 , p_source_4 IN NUMBER
75700 --DISTRIBUTION_IDENTIFIER
75701 , p_source_11 IN NUMBER
75702 --Distribution Type
75703 , p_source_12 IN VARCHAR2
75704 , p_source_12_meaning IN VARCHAR2
75705 --Entered Currency Code
75706 , p_source_15 IN VARCHAR2
75707 --Entered Amount
75708 , p_source_18 IN NUMBER
75709 --Currency Conversion Date
75710 , p_source_19 IN DATE
75711 --Currency Conversion Rate
75712 , p_source_20 IN NUMBER
75713 --Currency Conversion Type
75714 , p_source_21 IN VARCHAR2
75715 --Accounted Amount
75716 , p_source_22 IN NUMBER
75717 --Accounting Line Type
75718 , p_source_24 IN NUMBER
75719 )
75720 IS
75721
75722 l_component_type VARCHAR2(80);
75723 l_component_code VARCHAR2(30);
75724 l_component_type_code VARCHAR2(1);
75725 l_component_appl_id INTEGER;
75726 l_amb_context_code VARCHAR2(30);
75727 l_entity_code VARCHAR2(30);
75728 l_event_class_code VARCHAR2(30);
75729 l_ae_header_id NUMBER;
75730 l_event_type_code VARCHAR2(30);
75731 l_line_definition_code VARCHAR2(30);
75732 l_line_definition_owner_code VARCHAR2(1);
75733 --
75734 -- adr variables
75735 l_segment VARCHAR2(30);
75736 l_ccid NUMBER;
75737 l_adr_transaction_coa_id NUMBER;
75738 l_adr_accounting_coa_id NUMBER;
75739 l_adr_flexfield_segment_code VARCHAR2(30);
75740 l_adr_flex_value_set_id NUMBER;
75741 l_adr_value_type_code VARCHAR2(30);
75742 l_adr_value_combination_id NUMBER;
75743 l_adr_value_segment_code VARCHAR2(30);
75744
75745 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
75746 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
75747 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
75748 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
75749
75750 -- 4262811 Variables ------------------------------------------------------------------------------------------
75751 l_entered_amt_idx NUMBER;
75752 l_accted_amt_idx NUMBER;
75753 l_acc_rev_flag VARCHAR2(1);
75754 l_accrual_line_num NUMBER;
75755 l_tmp_amt NUMBER;
75756 l_acc_rev_natural_side_code VARCHAR2(1);
75757
75758 l_num_entries NUMBER;
75759 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
75760 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
75761 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
75762 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
75763 l_recog_line_1 NUMBER;
75764 l_recog_line_2 NUMBER;
75765
75766 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
75767 l_bflow_applied_to_amt NUMBER; -- 5132302
75768 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
75769
75770 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
75771
75772 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
75773 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
75774
75775 ---------------------------------------------------------------------------------------------------------------
75776
75777
75778 --
75779 -- bulk performance
75780 --
75781 l_balance_type_code VARCHAR2(1);
75782 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
75783 l_log_module VARCHAR2(240);
75784
75785 --
75786 -- Upgrade strategy
75787 --
75788 l_actual_upg_option VARCHAR2(1);
75789 l_enc_upg_option VARCHAR2(1);
75790
75791 --
75792 BEGIN
75793 --
75794 IF g_log_enabled THEN
75795 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_139';
75796 END IF;
75797 --
75798 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75799
75800 trace
75801 (p_msg => 'BEGIN of AcctLineType_139'
75802 ,p_level => C_LEVEL_PROCEDURE
75803 ,p_module => l_log_module);
75804
75805 END IF;
75806 --
75807 l_component_type := 'AMB_JLT';
75808 l_component_code := 'INVENTORY_VALUATION';
75809 l_component_type_code := 'S';
75810 l_component_appl_id := 707;
75811 l_amb_context_code := 'DEFAULT';
75812 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
75813 l_event_class_code := 'USER_DEFINE';
75814 l_event_type_code := 'UIPV_TXFR';
75815 l_line_definition_owner_code := 'S';
75816 l_line_definition_code := 'USER_IPV_TXFR';
75817 --
75818 l_balance_type_code := 'A';
75819 l_segment := NULL;
75820 l_ccid := NULL;
75821 l_adr_transaction_coa_id := NULL;
75822 l_adr_accounting_coa_id := NULL;
75823 l_adr_flexfield_segment_code := NULL;
75824 l_adr_flex_value_set_id := NULL;
75825 l_adr_value_type_code := NULL;
75826 l_adr_value_combination_id := NULL;
75827 l_adr_value_segment_code := NULL;
75828
75829 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
75830 l_bflow_class_code := ''; -- 4219869 Business Flow
75831 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
75832 l_budgetary_control_flag := 'N';
75833
75834 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75835 l_bflow_applied_to_amt := NULL; -- 5132302
75836 l_entered_amt_idx := NULL; -- 4262811
75837 l_accted_amt_idx := NULL; -- 4262811
75838 l_acc_rev_flag := NULL; -- 4262811
75839 l_accrual_line_num := NULL; -- 4262811
75840 l_tmp_amt := NULL; -- 4262811
75841 --
75842
75843 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
75844 l_balance_type_code <> 'B' THEN
75845 IF NVL(p_source_24,9E125) = 1
75846 THEN
75847
75848 --
75849 XLA_AE_LINES_PKG.SetNewLine;
75850
75851 p_balance_type_code := l_balance_type_code;
75852 -- set the flag so later we will know whether the gain loss line needs to be created
75853
75854 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
75855 p_actual_flag :='A';
75856 END IF;
75857
75858 --
75859 -- bulk performance
75860 --
75861 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
75862 p_header_num => 0); -- 4262811
75863 --
75864 -- set accounting line options
75865 --
75866 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
75867 p_natural_side_code => 'D'
75868 , p_gain_or_loss_flag => 'N'
75869 , p_gl_transfer_mode_code => 'S'
75870 , p_acct_entry_type_code => 'A'
75871 , p_switch_side_flag => 'Y'
75872 , p_merge_duplicate_code => 'N'
75873 );
75874 --
75875 l_acc_rev_natural_side_code := 'C'; -- 4262811
75876 --
75877 --
75878 -- set accounting line type info
75879 --
75880 xla_ae_lines_pkg.SetAcctLineType
75881 (p_component_type => l_component_type
75882 ,p_event_type_code => l_event_type_code
75883 ,p_line_definition_owner_code => l_line_definition_owner_code
75884 ,p_line_definition_code => l_line_definition_code
75885 ,p_accounting_line_code => l_component_code
75886 ,p_accounting_line_type_code => l_component_type_code
75887 ,p_accounting_line_appl_id => l_component_appl_id
75888 ,p_amb_context_code => l_amb_context_code
75889 ,p_entity_code => l_entity_code
75890 ,p_event_class_code => l_event_class_code);
75891 --
75892 -- set accounting class
75893 --
75894 xla_ae_lines_pkg.SetAcctClass(
75895 p_accounting_class_code => 'INVENTORY_VALUATION'
75896 , p_ae_header_id => l_ae_header_id
75897 );
75898
75899 --
75900 -- set rounding class
75901 --
75902 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
75903 'INVENTORY_VALUATION';
75904
75905 --
75906 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
75907 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
75908 --
75909 -- bulk performance
75910 --
75911 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
75912
75913 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
75914 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
75915
75916 -- 4955764
75917 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
75918 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
75919
75920 -- 4458381 Public Sector Enh
75921
75922 --
75923 -- set accounting attributes for the line type
75924 --
75925 l_entered_amt_idx := 3;
75926 l_accted_amt_idx := 8;
75927 l_bflow_applied_to_amt_idx := NULL; -- 5132302
75928 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
75929 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
75930 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
75931 l_rec_acct_attrs.array_char_value(2) := p_source_12;
75932 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
75933 l_rec_acct_attrs.array_num_value(3) := p_source_18;
75934 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
75935 l_rec_acct_attrs.array_char_value(4) := p_source_15;
75936 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
75937 l_rec_acct_attrs.array_date_value(5) := p_source_19;
75938 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
75939 l_rec_acct_attrs.array_num_value(6) := p_source_20;
75940 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
75941 l_rec_acct_attrs.array_char_value(7) := p_source_21;
75942 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
75943 l_rec_acct_attrs.array_num_value(8) := p_source_22;
75944
75945 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
75946 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
75947
75948 ---------------------------------------------------------------------------------------------------------------
75949 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
75950 ---------------------------------------------------------------------------------------------------------------
75951 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
75952
75953 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75954 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
75955
75956 IF xla_accounting_cache_pkg.GetValueChar
75957 (p_source_code => 'LEDGER_CATEGORY_CODE'
75958 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
75959 AND l_bflow_method_code = 'PRIOR_ENTRY'
75960 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
75961 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
75962 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
75963 )
75964 THEN
75965 xla_ae_lines_pkg.BflowUpgEntry
75966 (p_business_method_code => l_bflow_method_code
75967 ,p_business_class_code => l_bflow_class_code
75968 ,p_balance_type => l_balance_type_code);
75969 ELSE
75970 NULL;
75971 -- No business flow processing for business flow method of NONE.
75972 END IF;
75973
75974 --
75975 -- call analytical criteria
75976 --
75977
75978 --
75979 -- call description
75980 --
75981 -- No description or it is inherited.
75982 --
75983 -- call ADRs
75984 -- Bug 4922099
75985 --
75986 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
75987 (NVL(l_actual_upg_option, 'N') = 'O') OR
75988 (NVL(l_enc_upg_option, 'N') = 'O')
75989 )
75990 THEN
75991 NULL;
75992 --
75993 --
75994
75995 l_ccid := AcctDerRule_4(
75996 p_application_id => p_application_id
75997 , p_ae_header_id => l_ae_header_id
75998 , p_source_4 => p_source_4
75999 , x_transaction_coa_id => l_adr_transaction_coa_id
76000 , x_accounting_coa_id => l_adr_accounting_coa_id
76001 , x_value_type_code => l_adr_value_type_code
76002 , p_side => 'NA'
76003 );
76004
76005 xla_ae_lines_pkg.set_ccid(
76006 p_code_combination_id => l_ccid
76007 , p_value_type_code => l_adr_value_type_code
76008 , p_transaction_coa_id => l_adr_transaction_coa_id
76009 , p_accounting_coa_id => l_adr_accounting_coa_id
76010 , p_adr_code => 'CST_DEFAULT'
76011 , p_adr_type_code => 'S'
76012 , p_component_type => l_component_type
76013 , p_component_code => l_component_code
76014 , p_component_type_code => l_component_type_code
76015 , p_component_appl_id => l_component_appl_id
76016 , p_amb_context_code => l_amb_context_code
76017 , p_side => 'NA'
76018 );
76019
76020
76021 --
76022 --
76023 END IF;
76024 --
76025 -- Bug 4922099
76026 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
76027 (NVL(l_enc_upg_option, 'N') = 'O')
76028 ) AND
76029 (l_bflow_method_code = 'PRIOR_ENTRY')
76030 )
76031 THEN
76032 IF
76033 --
76034 1 = 2
76035 --
76036 THEN
76037 xla_accounting_err_pkg.build_message
76038 (p_appli_s_name => 'XLA'
76039 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76040 ,p_token_1 => 'LINE_NUMBER'
76041 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
76042 ,p_token_2 => 'LINE_TYPE_NAME'
76043 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
76044 l_component_type
76045 ,l_component_code
76046 ,l_component_type_code
76047 ,l_component_appl_id
76048 ,l_amb_context_code
76049 ,l_entity_code
76050 ,l_event_class_code
76051 )
76052 ,p_token_3 => 'OWNER'
76053 ,p_value_3 => xla_lookups_pkg.get_meaning(
76054 p_lookup_type => 'XLA_OWNER_TYPE'
76055 ,p_lookup_code => l_component_type_code
76056 )
76057 ,p_token_4 => 'PRODUCT_NAME'
76058 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
76059 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
76060 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
76061 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
76062 ,p_ae_header_id => NULL
76063 );
76064
76065 IF (C_LEVEL_ERROR>= g_log_level) THEN
76066 trace
76067 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
76068 ,p_level => C_LEVEL_ERROR
76069 ,p_module => l_log_module);
76070 END IF;
76071 END IF;
76072 END IF;
76073 --
76074 --
76075 ------------------------------------------------------------------------------------------------
76076 -- 4219869 Business Flow
76077 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
76078 -- Prior Entry. Currently, the following code is always generated.
76079 ------------------------------------------------------------------------------------------------
76080 XLA_AE_LINES_PKG.ValidateCurrentLine;
76081
76082 ------------------------------------------------------------------------------------
76083 -- 4219869 Business Flow
76084 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
76085 ------------------------------------------------------------------------------------
76086 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76087
76088 ----------------------------------------------------------------------------------
76089 -- 4219869 Business Flow
76090 -- Update journal entry status -- Need to generate this within IF <condition>
76091 ----------------------------------------------------------------------------------
76092 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76093 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
76094 ,p_balance_type_code => l_balance_type_code
76095 );
76096
76097 -------------------------------------------------------------------------------------------
76098 -- 4262811 - Generate the Accrual Reversal lines
76099 -------------------------------------------------------------------------------------------
76100 BEGIN
76101 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
76102 (g_array_event(p_event_id).array_value_num('header_index'));
76103 IF l_acc_rev_flag IS NULL THEN
76104 l_acc_rev_flag := 'N';
76105 END IF;
76106 EXCEPTION
76107 WHEN OTHERS THEN
76108 l_acc_rev_flag := 'N';
76109 END;
76110 --
76111 IF (l_acc_rev_flag = 'Y') THEN
76112
76113 -- 4645092 ------------------------------------------------------------------------------
76114 -- To allow MPA report to determine if it should generate report process
76115 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
76116 ------------------------------------------------------------------------------------------
76117
76118 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
76119 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
76120 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
76121 -- call ADRs
76122 -- Bug 4922099
76123 --
76124 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
76125 (NVL(l_actual_upg_option, 'N') = 'O') OR
76126 (NVL(l_enc_upg_option, 'N') = 'O')
76127 )
76128 THEN
76129 NULL;
76130 --
76131 --
76132
76133 l_ccid := AcctDerRule_4(
76134 p_application_id => p_application_id
76135 , p_ae_header_id => l_ae_header_id
76136 , p_source_4 => p_source_4
76137 , x_transaction_coa_id => l_adr_transaction_coa_id
76138 , x_accounting_coa_id => l_adr_accounting_coa_id
76139 , x_value_type_code => l_adr_value_type_code
76140 , p_side => 'NA'
76141 );
76142
76143 xla_ae_lines_pkg.set_ccid(
76144 p_code_combination_id => l_ccid
76145 , p_value_type_code => l_adr_value_type_code
76146 , p_transaction_coa_id => l_adr_transaction_coa_id
76147 , p_accounting_coa_id => l_adr_accounting_coa_id
76148 , p_adr_code => 'CST_DEFAULT'
76149 , p_adr_type_code => 'S'
76150 , p_component_type => l_component_type
76151 , p_component_code => l_component_code
76152 , p_component_type_code => l_component_type_code
76153 , p_component_appl_id => l_component_appl_id
76154 , p_amb_context_code => l_amb_context_code
76155 , p_side => 'NA'
76156 );
76157
76158
76159 --
76160 --
76161 END IF;
76162
76163 --
76164 -- Update the line information that should be overwritten
76165 --
76166 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
76167 p_header_num => 1);
76168 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
76169
76170 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
76171
76172 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
76173 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
76174 END IF;
76175
76176 --
76177 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
76178 --
76179 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
76180 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
76181 ELSE
76182 ---------------------------------------------------------------------------------------------------
76183 -- 4262811a Switch Sign
76184 ---------------------------------------------------------------------------------------------------
76185 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
76186 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76187 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76188 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
76189 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76190 -- 5132302
76191 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
76192 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
76193
76194 END IF;
76195
76196 -- 4955764
76197 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76198 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
76199
76200
76201 XLA_AE_LINES_PKG.ValidateCurrentLine;
76202 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
76203
76204 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
76205 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
76206 ,p_balance_type_code => l_balance_type_code);
76207
76208 END IF;
76209
76210 -----------------------------------------------------------------------------------------
76211 -- 4262811 Multiperiod Accounting
76212 -----------------------------------------------------------------------------------------
76213 -- No MPA option is assigned.
76214
76215
76216 END IF;
76217 END IF;
76218 --
76219
76220 --
76221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76222 trace
76223 (p_msg => 'END of AcctLineType_139'
76224 ,p_level => C_LEVEL_PROCEDURE
76225 ,p_module => l_log_module);
76226 END IF;
76227 --
76228 EXCEPTION
76229 WHEN xla_exceptions_pkg.application_exception THEN
76230 RAISE;
76231 WHEN OTHERS THEN
76232 xla_exceptions_pkg.raise_message
76233 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_139');
76234 END AcctLineType_139;
76235 --
76236
76237 ---------------------------------------
76238 --
76239 -- PRIVATE FUNCTION
76240 -- AcctLineType_140
76241 --
76242 ---------------------------------------
76243 PROCEDURE AcctLineType_140 (
76244 p_application_id IN NUMBER
76245 ,p_event_id IN NUMBER
76246 ,p_calculate_acctd_flag IN VARCHAR2
76247 ,p_calculate_g_l_flag IN VARCHAR2
76248 ,p_actual_flag IN OUT VARCHAR2
76249 ,p_balance_type_code OUT VARCHAR2
76250 ,p_gain_or_loss_ref OUT VARCHAR2
76251
76252 --Cost Management Default Account
76253 , p_source_4 IN NUMBER
76254 --DISTRIBUTION_IDENTIFIER
76255 , p_source_11 IN NUMBER
76256 --Distribution Type
76257 , p_source_12 IN VARCHAR2
76258 , p_source_12_meaning IN VARCHAR2
76259 --Entered Currency Code
76260 , p_source_15 IN VARCHAR2
76261 --Entered Amount
76262 , p_source_18 IN NUMBER
76263 --Currency Conversion Date
76264 , p_source_19 IN DATE
76265 --Currency Conversion Rate
76266 , p_source_20 IN NUMBER
76267 --Currency Conversion Type
76268 , p_source_21 IN VARCHAR2
76269 --Accounted Amount
76270 , p_source_22 IN NUMBER
76271 --Accounting Line Type
76272 , p_source_24 IN NUMBER
76273 )
76274 IS
76275
76276 l_component_type VARCHAR2(80);
76277 l_component_code VARCHAR2(30);
76278 l_component_type_code VARCHAR2(1);
76279 l_component_appl_id INTEGER;
76280 l_amb_context_code VARCHAR2(30);
76281 l_entity_code VARCHAR2(30);
76282 l_event_class_code VARCHAR2(30);
76283 l_ae_header_id NUMBER;
76284 l_event_type_code VARCHAR2(30);
76285 l_line_definition_code VARCHAR2(30);
76286 l_line_definition_owner_code VARCHAR2(1);
76287 --
76288 -- adr variables
76289 l_segment VARCHAR2(30);
76290 l_ccid NUMBER;
76291 l_adr_transaction_coa_id NUMBER;
76292 l_adr_accounting_coa_id NUMBER;
76293 l_adr_flexfield_segment_code VARCHAR2(30);
76294 l_adr_flex_value_set_id NUMBER;
76295 l_adr_value_type_code VARCHAR2(30);
76296 l_adr_value_combination_id NUMBER;
76297 l_adr_value_segment_code VARCHAR2(30);
76298
76299 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
76300 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
76301 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
76302 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
76303
76304 -- 4262811 Variables ------------------------------------------------------------------------------------------
76305 l_entered_amt_idx NUMBER;
76306 l_accted_amt_idx NUMBER;
76307 l_acc_rev_flag VARCHAR2(1);
76308 l_accrual_line_num NUMBER;
76309 l_tmp_amt NUMBER;
76310 l_acc_rev_natural_side_code VARCHAR2(1);
76311
76312 l_num_entries NUMBER;
76313 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
76314 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
76315 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
76316 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
76317 l_recog_line_1 NUMBER;
76318 l_recog_line_2 NUMBER;
76319
76320 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
76321 l_bflow_applied_to_amt NUMBER; -- 5132302
76322 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
76323
76324 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76325
76326 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
76327 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
76328
76329 ---------------------------------------------------------------------------------------------------------------
76330
76331
76332 --
76333 -- bulk performance
76334 --
76335 l_balance_type_code VARCHAR2(1);
76336 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
76337 l_log_module VARCHAR2(240);
76338
76339 --
76340 -- Upgrade strategy
76341 --
76342 l_actual_upg_option VARCHAR2(1);
76343 l_enc_upg_option VARCHAR2(1);
76344
76345 --
76346 BEGIN
76347 --
76348 IF g_log_enabled THEN
76349 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_140';
76350 END IF;
76351 --
76352 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76353
76354 trace
76355 (p_msg => 'BEGIN of AcctLineType_140'
76356 ,p_level => C_LEVEL_PROCEDURE
76357 ,p_module => l_log_module);
76358
76359 END IF;
76360 --
76361 l_component_type := 'AMB_JLT';
76362 l_component_code := 'INVENTORY_VALUATION';
76363 l_component_type_code := 'S';
76364 l_component_appl_id := 707;
76365 l_amb_context_code := 'DEFAULT';
76366 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
76367 l_event_class_code := 'USER_DEFINE';
76368 l_event_type_code := 'USUB_TXFR';
76369 l_line_definition_owner_code := 'S';
76370 l_line_definition_code := 'USER_SUB_TXFR';
76371 --
76372 l_balance_type_code := 'A';
76373 l_segment := NULL;
76374 l_ccid := NULL;
76375 l_adr_transaction_coa_id := NULL;
76376 l_adr_accounting_coa_id := NULL;
76377 l_adr_flexfield_segment_code := NULL;
76378 l_adr_flex_value_set_id := NULL;
76379 l_adr_value_type_code := NULL;
76380 l_adr_value_combination_id := NULL;
76381 l_adr_value_segment_code := NULL;
76382
76383 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
76384 l_bflow_class_code := ''; -- 4219869 Business Flow
76385 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
76386 l_budgetary_control_flag := 'N';
76387
76388 l_bflow_applied_to_amt_idx := NULL; -- 5132302
76389 l_bflow_applied_to_amt := NULL; -- 5132302
76390 l_entered_amt_idx := NULL; -- 4262811
76391 l_accted_amt_idx := NULL; -- 4262811
76392 l_acc_rev_flag := NULL; -- 4262811
76393 l_accrual_line_num := NULL; -- 4262811
76394 l_tmp_amt := NULL; -- 4262811
76395 --
76396
76397 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76398 l_balance_type_code <> 'B' THEN
76399 IF NVL(p_source_24,9E125) = 1
76400 THEN
76401
76402 --
76403 XLA_AE_LINES_PKG.SetNewLine;
76404
76405 p_balance_type_code := l_balance_type_code;
76406 -- set the flag so later we will know whether the gain loss line needs to be created
76407
76408 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76409 p_actual_flag :='A';
76410 END IF;
76411
76412 --
76413 -- bulk performance
76414 --
76415 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76416 p_header_num => 0); -- 4262811
76417 --
76418 -- set accounting line options
76419 --
76420 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76421 p_natural_side_code => 'D'
76422 , p_gain_or_loss_flag => 'N'
76423 , p_gl_transfer_mode_code => 'S'
76424 , p_acct_entry_type_code => 'A'
76425 , p_switch_side_flag => 'Y'
76426 , p_merge_duplicate_code => 'N'
76427 );
76428 --
76429 l_acc_rev_natural_side_code := 'C'; -- 4262811
76430 --
76431 --
76432 -- set accounting line type info
76433 --
76434 xla_ae_lines_pkg.SetAcctLineType
76435 (p_component_type => l_component_type
76436 ,p_event_type_code => l_event_type_code
76437 ,p_line_definition_owner_code => l_line_definition_owner_code
76438 ,p_line_definition_code => l_line_definition_code
76439 ,p_accounting_line_code => l_component_code
76440 ,p_accounting_line_type_code => l_component_type_code
76441 ,p_accounting_line_appl_id => l_component_appl_id
76442 ,p_amb_context_code => l_amb_context_code
76443 ,p_entity_code => l_entity_code
76444 ,p_event_class_code => l_event_class_code);
76445 --
76446 -- set accounting class
76447 --
76448 xla_ae_lines_pkg.SetAcctClass(
76449 p_accounting_class_code => 'INVENTORY_VALUATION'
76450 , p_ae_header_id => l_ae_header_id
76451 );
76452
76453 --
76454 -- set rounding class
76455 --
76456 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
76457 'INVENTORY_VALUATION';
76458
76459 --
76460 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
76461 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
76462 --
76463 -- bulk performance
76464 --
76465 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
76466
76467 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
76468 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
76469
76470 -- 4955764
76471 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
76472 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
76473
76474 -- 4458381 Public Sector Enh
76475
76476 --
76477 -- set accounting attributes for the line type
76478 --
76479 l_entered_amt_idx := 3;
76480 l_accted_amt_idx := 8;
76481 l_bflow_applied_to_amt_idx := NULL; -- 5132302
76482 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
76483 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
76484 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
76485 l_rec_acct_attrs.array_char_value(2) := p_source_12;
76486 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
76487 l_rec_acct_attrs.array_num_value(3) := p_source_18;
76488 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
76489 l_rec_acct_attrs.array_char_value(4) := p_source_15;
76490 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
76491 l_rec_acct_attrs.array_date_value(5) := p_source_19;
76492 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
76493 l_rec_acct_attrs.array_num_value(6) := p_source_20;
76494 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
76495 l_rec_acct_attrs.array_char_value(7) := p_source_21;
76496 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
76497 l_rec_acct_attrs.array_num_value(8) := p_source_22;
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_000005_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 --Applied to Application ID
76809 , p_source_6 IN NUMBER
76810 --Applied to Distribution Link Type
76811 , p_source_7 IN VARCHAR2
76812 --Applied to Entity Code
76813 , p_source_8 IN VARCHAR2
76814 --DISTRIBUTION_IDENTIFIER
76815 , p_source_11 IN NUMBER
76816 --Distribution Type
76817 , p_source_12 IN VARCHAR2
76818 , p_source_12_meaning IN VARCHAR2
76819 --Encumbrance Reversal Amount Entered
76820 , p_source_14 IN NUMBER
76821 --Entered Currency Code
76822 , p_source_15 IN VARCHAR2
76823 --Transaction Encumbrance Reversal Amount
76824 , p_source_16 IN NUMBER
76825 --Entered Amount
76826 , p_source_18 IN NUMBER
76827 --Currency Conversion Date
76828 , p_source_19 IN DATE
76829 --Currency Conversion Rate
76830 , p_source_20 IN NUMBER
76831 --Currency Conversion Type
76832 , p_source_21 IN VARCHAR2
76833 --Accounted Amount
76834 , p_source_22 IN NUMBER
76835 --Accounting Line Type
76836 , p_source_24 IN NUMBER
76837 --Costing Encumbrance Upgrade Option
76838 , p_source_27 IN VARCHAR2
76839 --TXN_PO_DISTRIBUTION_ID
76840 , p_source_28 IN NUMBER
76841 --TXN_PO_HEADER_ID
76842 , p_source_29 IN NUMBER
76843 --Requisition Budget Account
76844 , p_source_30 IN NUMBER
76845 --Requisition Encumbrance Type Identifier
76846 , p_source_31 IN NUMBER
76847 )
76848 IS
76849
76850 l_component_type VARCHAR2(80);
76851 l_component_code VARCHAR2(30);
76852 l_component_type_code VARCHAR2(1);
76853 l_component_appl_id INTEGER;
76854 l_amb_context_code VARCHAR2(30);
76855 l_entity_code VARCHAR2(30);
76856 l_event_class_code VARCHAR2(30);
76857 l_ae_header_id NUMBER;
76858 l_event_type_code VARCHAR2(30);
76859 l_line_definition_code VARCHAR2(30);
76860 l_line_definition_owner_code VARCHAR2(1);
76861 --
76862 -- adr variables
76863 l_segment VARCHAR2(30);
76864 l_ccid NUMBER;
76865 l_adr_transaction_coa_id NUMBER;
76866 l_adr_accounting_coa_id NUMBER;
76867 l_adr_flexfield_segment_code VARCHAR2(30);
76868 l_adr_flex_value_set_id NUMBER;
76869 l_adr_value_type_code VARCHAR2(30);
76870 l_adr_value_combination_id NUMBER;
76871 l_adr_value_segment_code VARCHAR2(30);
76872
76873 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
76874 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
76875 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
76876 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
76877
76878 -- 4262811 Variables ------------------------------------------------------------------------------------------
76879 l_entered_amt_idx NUMBER;
76880 l_accted_amt_idx NUMBER;
76881 l_acc_rev_flag VARCHAR2(1);
76882 l_accrual_line_num NUMBER;
76883 l_tmp_amt NUMBER;
76884 l_acc_rev_natural_side_code VARCHAR2(1);
76885
76886 l_num_entries NUMBER;
76887 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
76888 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
76889 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
76890 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
76891 l_recog_line_1 NUMBER;
76892 l_recog_line_2 NUMBER;
76893
76894 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
76895 l_bflow_applied_to_amt NUMBER; -- 5132302
76896 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
76897
76898 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
76899
76900 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
76901 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
76902
76903 ---------------------------------------------------------------------------------------------------------------
76904
76905
76906 --
76907 -- bulk performance
76908 --
76909 l_balance_type_code VARCHAR2(1);
76910 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
76911 l_log_module VARCHAR2(240);
76912
76913 --
76914 -- Upgrade strategy
76915 --
76916 l_actual_upg_option VARCHAR2(1);
76917 l_enc_upg_option VARCHAR2(1);
76918
76919 --
76920 BEGIN
76921 --
76922 IF g_log_enabled THEN
76923 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_141';
76924 END IF;
76925 --
76926 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76927
76928 trace
76929 (p_msg => 'BEGIN of AcctLineType_141'
76930 ,p_level => C_LEVEL_PROCEDURE
76931 ,p_module => l_log_module);
76932
76933 END IF;
76934 --
76935 l_component_type := 'AMB_JLT';
76936 l_component_code := 'INVENTORY_VALUATION';
76937 l_component_type_code := 'S';
76938 l_component_appl_id := 707;
76939 l_amb_context_code := 'DEFAULT';
76940 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
76941 l_event_class_code := 'FOB_SHIP_RECIPIENT_RCPT';
76942 l_event_type_code := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
76943 l_line_definition_owner_code := 'S';
76944 l_line_definition_code := 'FOB_SHIP_RECIPIENT_RCPT';
76945 --
76946 l_balance_type_code := 'A';
76947 l_segment := NULL;
76948 l_ccid := NULL;
76949 l_adr_transaction_coa_id := NULL;
76950 l_adr_accounting_coa_id := NULL;
76951 l_adr_flexfield_segment_code := NULL;
76952 l_adr_flex_value_set_id := NULL;
76953 l_adr_value_type_code := NULL;
76954 l_adr_value_combination_id := NULL;
76955 l_adr_value_segment_code := NULL;
76956
76957 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
76958 l_bflow_class_code := ''; -- 4219869 Business Flow
76959 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
76960 l_budgetary_control_flag := 'N';
76961
76962 l_bflow_applied_to_amt_idx := NULL; -- 5132302
76963 l_bflow_applied_to_amt := NULL; -- 5132302
76964 l_entered_amt_idx := NULL; -- 4262811
76965 l_accted_amt_idx := NULL; -- 4262811
76966 l_acc_rev_flag := NULL; -- 4262811
76967 l_accrual_line_num := NULL; -- 4262811
76968 l_tmp_amt := NULL; -- 4262811
76969 --
76970
76971 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
76972 l_balance_type_code <> 'B' THEN
76973 IF NVL(p_source_24,9E125) = 1
76974 THEN
76975
76976 --
76977 XLA_AE_LINES_PKG.SetNewLine;
76978
76979 p_balance_type_code := l_balance_type_code;
76980 -- set the flag so later we will know whether the gain loss line needs to be created
76981
76982 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
76983 p_actual_flag :='A';
76984 END IF;
76985
76986 --
76987 -- bulk performance
76988 --
76989 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
76990 p_header_num => 0); -- 4262811
76991 --
76992 -- set accounting line options
76993 --
76994 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
76995 p_natural_side_code => 'D'
76996 , p_gain_or_loss_flag => 'N'
76997 , p_gl_transfer_mode_code => 'S'
76998 , p_acct_entry_type_code => 'A'
76999 , p_switch_side_flag => 'Y'
77000 , p_merge_duplicate_code => 'N'
77001 );
77002 --
77003 l_acc_rev_natural_side_code := 'C'; -- 4262811
77004 --
77005 --
77006 -- set accounting line type info
77007 --
77008 xla_ae_lines_pkg.SetAcctLineType
77009 (p_component_type => l_component_type
77010 ,p_event_type_code => l_event_type_code
77011 ,p_line_definition_owner_code => l_line_definition_owner_code
77012 ,p_line_definition_code => l_line_definition_code
77013 ,p_accounting_line_code => l_component_code
77014 ,p_accounting_line_type_code => l_component_type_code
77015 ,p_accounting_line_appl_id => l_component_appl_id
77016 ,p_amb_context_code => l_amb_context_code
77017 ,p_entity_code => l_entity_code
77018 ,p_event_class_code => l_event_class_code);
77019 --
77020 -- set accounting class
77021 --
77022 xla_ae_lines_pkg.SetAcctClass(
77023 p_accounting_class_code => 'INVENTORY_VALUATION'
77024 , p_ae_header_id => l_ae_header_id
77025 );
77026
77027 --
77028 -- set rounding class
77029 --
77030 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77031 'INVENTORY_VALUATION';
77032
77033 --
77034 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77035 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77036 --
77037 -- bulk performance
77038 --
77039 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77040
77041 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77042 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77043
77044 -- 4955764
77045 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77046 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77047
77048 -- 4458381 Public Sector Enh
77049
77050 --
77051 -- set accounting attributes for the line type
77052 --
77053 l_entered_amt_idx := 17;
77054 l_accted_amt_idx := 22;
77055 l_bflow_applied_to_amt_idx := NULL; -- 5132302
77056 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
77057 l_rec_acct_attrs.array_num_value(1) := p_source_6;
77058 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
77059 l_rec_acct_attrs.array_char_value(2) := p_source_7;
77060 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
77061 l_rec_acct_attrs.array_char_value(3) := p_source_8;
77062 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
77063 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
77064 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
77065 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
77066 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
77067 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
77068 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
77069 l_rec_acct_attrs.array_char_value(7) := p_source_12;
77070 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
77071 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
77072 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
77073 l_rec_acct_attrs.array_num_value(9) := p_source_14;
77074 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
77075 l_rec_acct_attrs.array_char_value(10) := p_source_15;
77076 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
77077 l_rec_acct_attrs.array_num_value(11) := p_source_16;
77078 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
77079 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
77080 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
77081 l_rec_acct_attrs.array_num_value(13) := p_source_14;
77082 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
77083 l_rec_acct_attrs.array_char_value(14) := p_source_15;
77084 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
77085 l_rec_acct_attrs.array_num_value(15) := p_source_16;
77086 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
77087 l_rec_acct_attrs.array_char_value(16) := p_source_27;
77088 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
77089 l_rec_acct_attrs.array_num_value(17) := p_source_18;
77090 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
77091 l_rec_acct_attrs.array_char_value(18) := p_source_15;
77092 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
77093 l_rec_acct_attrs.array_date_value(19) := p_source_19;
77094 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
77095 l_rec_acct_attrs.array_num_value(20) := p_source_20;
77096 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
77097 l_rec_acct_attrs.array_char_value(21) := p_source_21;
77098 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
77099 l_rec_acct_attrs.array_num_value(22) := p_source_22;
77100 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
77101 l_rec_acct_attrs.array_num_value(23) := p_source_31;
77102 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
77103 l_rec_acct_attrs.array_num_value(24) := p_source_31;
77104
77105 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77106 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77107
77108 ---------------------------------------------------------------------------------------------------------------
77109 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77110 ---------------------------------------------------------------------------------------------------------------
77111 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77112
77113 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77114 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77115
77116 IF xla_accounting_cache_pkg.GetValueChar
77117 (p_source_code => 'LEDGER_CATEGORY_CODE'
77118 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77119 AND l_bflow_method_code = 'PRIOR_ENTRY'
77120 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77121 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77122 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77123 )
77124 THEN
77125 xla_ae_lines_pkg.BflowUpgEntry
77126 (p_business_method_code => l_bflow_method_code
77127 ,p_business_class_code => l_bflow_class_code
77128 ,p_balance_type => l_balance_type_code);
77129 ELSE
77130 NULL;
77131 -- No business flow processing for business flow method of NONE.
77132 END IF;
77133
77134 --
77135 -- call analytical criteria
77136 --
77137
77138 --
77139 -- call description
77140 --
77141 -- No description or it is inherited.
77142 --
77143 -- call ADRs
77144 -- Bug 4922099
77145 --
77146 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77147 (NVL(l_actual_upg_option, 'N') = 'O') OR
77148 (NVL(l_enc_upg_option, 'N') = 'O')
77149 )
77150 THEN
77151 NULL;
77152 --
77153 --
77154
77155 l_ccid := AcctDerRule_4(
77156 p_application_id => p_application_id
77157 , p_ae_header_id => l_ae_header_id
77158 , p_source_4 => p_source_4
77159 , x_transaction_coa_id => l_adr_transaction_coa_id
77160 , x_accounting_coa_id => l_adr_accounting_coa_id
77161 , x_value_type_code => l_adr_value_type_code
77162 , p_side => 'NA'
77163 );
77164
77165 xla_ae_lines_pkg.set_ccid(
77166 p_code_combination_id => l_ccid
77167 , p_value_type_code => l_adr_value_type_code
77168 , p_transaction_coa_id => l_adr_transaction_coa_id
77169 , p_accounting_coa_id => l_adr_accounting_coa_id
77170 , p_adr_code => 'CST_DEFAULT'
77171 , p_adr_type_code => 'S'
77172 , p_component_type => l_component_type
77173 , p_component_code => l_component_code
77174 , p_component_type_code => l_component_type_code
77175 , p_component_appl_id => l_component_appl_id
77176 , p_amb_context_code => l_amb_context_code
77177 , p_side => 'NA'
77178 );
77179
77180
77181 --
77182 --
77183 END IF;
77184 --
77185 -- Bug 4922099
77186 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77187 (NVL(l_enc_upg_option, 'N') = 'O')
77188 ) AND
77189 (l_bflow_method_code = 'PRIOR_ENTRY')
77190 )
77191 THEN
77192 IF
77193 --
77194 1 = 2
77195 --
77196 THEN
77197 xla_accounting_err_pkg.build_message
77198 (p_appli_s_name => 'XLA'
77199 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77200 ,p_token_1 => 'LINE_NUMBER'
77201 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
77202 ,p_token_2 => 'LINE_TYPE_NAME'
77203 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
77204 l_component_type
77205 ,l_component_code
77206 ,l_component_type_code
77207 ,l_component_appl_id
77208 ,l_amb_context_code
77209 ,l_entity_code
77210 ,l_event_class_code
77211 )
77212 ,p_token_3 => 'OWNER'
77213 ,p_value_3 => xla_lookups_pkg.get_meaning(
77214 p_lookup_type => 'XLA_OWNER_TYPE'
77215 ,p_lookup_code => l_component_type_code
77216 )
77217 ,p_token_4 => 'PRODUCT_NAME'
77218 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77219 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77220 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77221 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77222 ,p_ae_header_id => NULL
77223 );
77224
77225 IF (C_LEVEL_ERROR>= g_log_level) THEN
77226 trace
77227 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77228 ,p_level => C_LEVEL_ERROR
77229 ,p_module => l_log_module);
77230 END IF;
77231 END IF;
77232 END IF;
77233 --
77234 --
77235 ------------------------------------------------------------------------------------------------
77236 -- 4219869 Business Flow
77237 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77238 -- Prior Entry. Currently, the following code is always generated.
77239 ------------------------------------------------------------------------------------------------
77240 XLA_AE_LINES_PKG.ValidateCurrentLine;
77241
77242 ------------------------------------------------------------------------------------
77243 -- 4219869 Business Flow
77244 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77245 ------------------------------------------------------------------------------------
77246 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77247
77248 ----------------------------------------------------------------------------------
77249 -- 4219869 Business Flow
77250 -- Update journal entry status -- Need to generate this within IF <condition>
77251 ----------------------------------------------------------------------------------
77252 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77253 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77254 ,p_balance_type_code => l_balance_type_code
77255 );
77256
77257 -------------------------------------------------------------------------------------------
77258 -- 4262811 - Generate the Accrual Reversal lines
77259 -------------------------------------------------------------------------------------------
77260 BEGIN
77261 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77262 (g_array_event(p_event_id).array_value_num('header_index'));
77263 IF l_acc_rev_flag IS NULL THEN
77264 l_acc_rev_flag := 'N';
77265 END IF;
77266 EXCEPTION
77267 WHEN OTHERS THEN
77268 l_acc_rev_flag := 'N';
77269 END;
77270 --
77271 IF (l_acc_rev_flag = 'Y') THEN
77272
77273 -- 4645092 ------------------------------------------------------------------------------
77274 -- To allow MPA report to determine if it should generate report process
77275 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77276 ------------------------------------------------------------------------------------------
77277
77278 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77279 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77280 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
77281 -- call ADRs
77282 -- Bug 4922099
77283 --
77284 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77285 (NVL(l_actual_upg_option, 'N') = 'O') OR
77286 (NVL(l_enc_upg_option, 'N') = 'O')
77287 )
77288 THEN
77289 NULL;
77290 --
77291 --
77292
77293 l_ccid := AcctDerRule_4(
77294 p_application_id => p_application_id
77295 , p_ae_header_id => l_ae_header_id
77296 , p_source_4 => p_source_4
77297 , x_transaction_coa_id => l_adr_transaction_coa_id
77298 , x_accounting_coa_id => l_adr_accounting_coa_id
77299 , x_value_type_code => l_adr_value_type_code
77300 , p_side => 'NA'
77301 );
77302
77303 xla_ae_lines_pkg.set_ccid(
77304 p_code_combination_id => l_ccid
77305 , p_value_type_code => l_adr_value_type_code
77306 , p_transaction_coa_id => l_adr_transaction_coa_id
77307 , p_accounting_coa_id => l_adr_accounting_coa_id
77308 , p_adr_code => 'CST_DEFAULT'
77309 , p_adr_type_code => 'S'
77310 , p_component_type => l_component_type
77311 , p_component_code => l_component_code
77312 , p_component_type_code => l_component_type_code
77313 , p_component_appl_id => l_component_appl_id
77314 , p_amb_context_code => l_amb_context_code
77315 , p_side => 'NA'
77316 );
77317
77318
77319 --
77320 --
77321 END IF;
77322
77323 --
77324 -- Update the line information that should be overwritten
77325 --
77326 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77327 p_header_num => 1);
77328 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
77329
77330 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77331
77332 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
77333 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77334 END IF;
77335
77336 --
77337 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77338 --
77339 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77340 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
77341 ELSE
77342 ---------------------------------------------------------------------------------------------------
77343 -- 4262811a Switch Sign
77344 ---------------------------------------------------------------------------------------------------
77345 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
77346 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77347 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77348 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77349 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77350 -- 5132302
77351 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77352 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77353
77354 END IF;
77355
77356 -- 4955764
77357 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77358 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77359
77360
77361 XLA_AE_LINES_PKG.ValidateCurrentLine;
77362 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77363
77364 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77365 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77366 ,p_balance_type_code => l_balance_type_code);
77367
77368 END IF;
77369
77370 -----------------------------------------------------------------------------------------
77371 -- 4262811 Multiperiod Accounting
77372 -----------------------------------------------------------------------------------------
77373 -- No MPA option is assigned.
77374
77375
77376 END IF;
77377 END IF;
77378 --
77379
77380 --
77381 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77382 trace
77383 (p_msg => 'END of AcctLineType_141'
77384 ,p_level => C_LEVEL_PROCEDURE
77385 ,p_module => l_log_module);
77386 END IF;
77387 --
77388 EXCEPTION
77389 WHEN xla_exceptions_pkg.application_exception THEN
77390 RAISE;
77391 WHEN OTHERS THEN
77392 xla_exceptions_pkg.raise_message
77393 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_141');
77394 END AcctLineType_141;
77395 --
77396
77397 ---------------------------------------
77398 --
77399 -- PRIVATE FUNCTION
77400 -- AcctLineType_142
77401 --
77402 ---------------------------------------
77403 PROCEDURE AcctLineType_142 (
77404 p_application_id IN NUMBER
77405 ,p_event_id IN NUMBER
77406 ,p_calculate_acctd_flag IN VARCHAR2
77407 ,p_calculate_g_l_flag IN VARCHAR2
77408 ,p_actual_flag IN OUT VARCHAR2
77409 ,p_balance_type_code OUT VARCHAR2
77410 ,p_gain_or_loss_ref OUT VARCHAR2
77411
77412 --Cost Management Default Account
77413 , p_source_4 IN NUMBER
77414 --DISTRIBUTION_IDENTIFIER
77415 , p_source_11 IN NUMBER
77416 --Distribution Type
77417 , p_source_12 IN VARCHAR2
77418 , p_source_12_meaning IN VARCHAR2
77419 --Entered Currency Code
77420 , p_source_15 IN VARCHAR2
77421 --Entered Amount
77422 , p_source_18 IN NUMBER
77423 --Currency Conversion Date
77424 , p_source_19 IN DATE
77425 --Currency Conversion Rate
77426 , p_source_20 IN NUMBER
77427 --Currency Conversion Type
77428 , p_source_21 IN VARCHAR2
77429 --Accounted Amount
77430 , p_source_22 IN NUMBER
77431 --Accounting Line Type
77432 , p_source_24 IN NUMBER
77433 )
77434 IS
77435
77436 l_component_type VARCHAR2(80);
77437 l_component_code VARCHAR2(30);
77438 l_component_type_code VARCHAR2(1);
77439 l_component_appl_id INTEGER;
77440 l_amb_context_code VARCHAR2(30);
77441 l_entity_code VARCHAR2(30);
77442 l_event_class_code VARCHAR2(30);
77443 l_ae_header_id NUMBER;
77444 l_event_type_code VARCHAR2(30);
77445 l_line_definition_code VARCHAR2(30);
77446 l_line_definition_owner_code VARCHAR2(1);
77447 --
77448 -- adr variables
77449 l_segment VARCHAR2(30);
77450 l_ccid NUMBER;
77451 l_adr_transaction_coa_id NUMBER;
77452 l_adr_accounting_coa_id NUMBER;
77453 l_adr_flexfield_segment_code VARCHAR2(30);
77454 l_adr_flex_value_set_id NUMBER;
77455 l_adr_value_type_code VARCHAR2(30);
77456 l_adr_value_combination_id NUMBER;
77457 l_adr_value_segment_code VARCHAR2(30);
77458
77459 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
77460 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
77461 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
77462 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
77463
77464 -- 4262811 Variables ------------------------------------------------------------------------------------------
77465 l_entered_amt_idx NUMBER;
77466 l_accted_amt_idx NUMBER;
77467 l_acc_rev_flag VARCHAR2(1);
77468 l_accrual_line_num NUMBER;
77469 l_tmp_amt NUMBER;
77470 l_acc_rev_natural_side_code VARCHAR2(1);
77471
77472 l_num_entries NUMBER;
77473 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
77474 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
77475 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
77476 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
77477 l_recog_line_1 NUMBER;
77478 l_recog_line_2 NUMBER;
77479
77480 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
77481 l_bflow_applied_to_amt NUMBER; -- 5132302
77482 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
77483
77484 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
77485
77486 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
77487 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
77488
77489 ---------------------------------------------------------------------------------------------------------------
77490
77491
77492 --
77493 -- bulk performance
77494 --
77495 l_balance_type_code VARCHAR2(1);
77496 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
77497 l_log_module VARCHAR2(240);
77498
77499 --
77500 -- Upgrade strategy
77501 --
77502 l_actual_upg_option VARCHAR2(1);
77503 l_enc_upg_option VARCHAR2(1);
77504
77505 --
77506 BEGIN
77507 --
77508 IF g_log_enabled THEN
77509 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_142';
77510 END IF;
77511 --
77512 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77513
77514 trace
77515 (p_msg => 'BEGIN of AcctLineType_142'
77516 ,p_level => C_LEVEL_PROCEDURE
77517 ,p_module => l_log_module);
77518
77519 END IF;
77520 --
77521 l_component_type := 'AMB_JLT';
77522 l_component_code := 'INVENTORY_VALUATION';
77523 l_component_type_code := 'S';
77524 l_component_appl_id := 707;
77525 l_amb_context_code := 'DEFAULT';
77526 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
77527 l_event_class_code := 'INTRAORG_TXFR';
77528 l_event_type_code := 'INTRAORG_TXFR_ALL';
77529 l_line_definition_owner_code := 'S';
77530 l_line_definition_code := 'INTRAORG_TXFR';
77531 --
77532 l_balance_type_code := 'A';
77533 l_segment := NULL;
77534 l_ccid := NULL;
77535 l_adr_transaction_coa_id := NULL;
77536 l_adr_accounting_coa_id := NULL;
77537 l_adr_flexfield_segment_code := NULL;
77538 l_adr_flex_value_set_id := NULL;
77539 l_adr_value_type_code := NULL;
77540 l_adr_value_combination_id := NULL;
77541 l_adr_value_segment_code := NULL;
77542
77543 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
77544 l_bflow_class_code := ''; -- 4219869 Business Flow
77545 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
77546 l_budgetary_control_flag := 'N';
77547
77548 l_bflow_applied_to_amt_idx := NULL; -- 5132302
77549 l_bflow_applied_to_amt := NULL; -- 5132302
77550 l_entered_amt_idx := NULL; -- 4262811
77551 l_accted_amt_idx := NULL; -- 4262811
77552 l_acc_rev_flag := NULL; -- 4262811
77553 l_accrual_line_num := NULL; -- 4262811
77554 l_tmp_amt := NULL; -- 4262811
77555 --
77556
77557 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
77558 l_balance_type_code <> 'B' THEN
77559 IF NVL(p_source_24,9E125) = 1
77560 THEN
77561
77562 --
77563 XLA_AE_LINES_PKG.SetNewLine;
77564
77565 p_balance_type_code := l_balance_type_code;
77566 -- set the flag so later we will know whether the gain loss line needs to be created
77567
77568 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
77569 p_actual_flag :='A';
77570 END IF;
77571
77572 --
77573 -- bulk performance
77574 --
77575 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
77576 p_header_num => 0); -- 4262811
77577 --
77578 -- set accounting line options
77579 --
77580 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
77581 p_natural_side_code => 'D'
77582 , p_gain_or_loss_flag => 'N'
77583 , p_gl_transfer_mode_code => 'S'
77584 , p_acct_entry_type_code => 'A'
77585 , p_switch_side_flag => 'Y'
77586 , p_merge_duplicate_code => 'N'
77587 );
77588 --
77589 l_acc_rev_natural_side_code := 'C'; -- 4262811
77590 --
77591 --
77592 -- set accounting line type info
77593 --
77594 xla_ae_lines_pkg.SetAcctLineType
77595 (p_component_type => l_component_type
77596 ,p_event_type_code => l_event_type_code
77597 ,p_line_definition_owner_code => l_line_definition_owner_code
77598 ,p_line_definition_code => l_line_definition_code
77599 ,p_accounting_line_code => l_component_code
77600 ,p_accounting_line_type_code => l_component_type_code
77601 ,p_accounting_line_appl_id => l_component_appl_id
77602 ,p_amb_context_code => l_amb_context_code
77603 ,p_entity_code => l_entity_code
77604 ,p_event_class_code => l_event_class_code);
77605 --
77606 -- set accounting class
77607 --
77608 xla_ae_lines_pkg.SetAcctClass(
77609 p_accounting_class_code => 'INVENTORY_VALUATION'
77610 , p_ae_header_id => l_ae_header_id
77611 );
77612
77613 --
77614 -- set rounding class
77615 --
77616 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
77617 'INVENTORY_VALUATION';
77618
77619 --
77620 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
77621 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
77622 --
77623 -- bulk performance
77624 --
77625 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
77626
77627 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
77628 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
77629
77630 -- 4955764
77631 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77632 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
77633
77634 -- 4458381 Public Sector Enh
77635
77636 --
77637 -- set accounting attributes for the line type
77638 --
77639 l_entered_amt_idx := 3;
77640 l_accted_amt_idx := 8;
77641 l_bflow_applied_to_amt_idx := NULL; -- 5132302
77642 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
77643 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
77644 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
77645 l_rec_acct_attrs.array_char_value(2) := p_source_12;
77646 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
77647 l_rec_acct_attrs.array_num_value(3) := p_source_18;
77648 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
77649 l_rec_acct_attrs.array_char_value(4) := p_source_15;
77650 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
77651 l_rec_acct_attrs.array_date_value(5) := p_source_19;
77652 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
77653 l_rec_acct_attrs.array_num_value(6) := p_source_20;
77654 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
77655 l_rec_acct_attrs.array_char_value(7) := p_source_21;
77656 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
77657 l_rec_acct_attrs.array_num_value(8) := p_source_22;
77658
77659 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
77660 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
77661
77662 ---------------------------------------------------------------------------------------------------------------
77663 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
77664 ---------------------------------------------------------------------------------------------------------------
77665 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
77666
77667 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77668 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
77669
77670 IF xla_accounting_cache_pkg.GetValueChar
77671 (p_source_code => 'LEDGER_CATEGORY_CODE'
77672 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
77673 AND l_bflow_method_code = 'PRIOR_ENTRY'
77674 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
77675 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
77676 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
77677 )
77678 THEN
77679 xla_ae_lines_pkg.BflowUpgEntry
77680 (p_business_method_code => l_bflow_method_code
77681 ,p_business_class_code => l_bflow_class_code
77682 ,p_balance_type => l_balance_type_code);
77683 ELSE
77684 NULL;
77685 -- No business flow processing for business flow method of NONE.
77686 END IF;
77687
77688 --
77689 -- call analytical criteria
77690 --
77691
77692 --
77693 -- call description
77694 --
77695 -- No description or it is inherited.
77696 --
77697 -- call ADRs
77698 -- Bug 4922099
77699 --
77700 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77701 (NVL(l_actual_upg_option, 'N') = 'O') OR
77702 (NVL(l_enc_upg_option, 'N') = 'O')
77703 )
77704 THEN
77705 NULL;
77706 --
77707 --
77708
77709 l_ccid := AcctDerRule_4(
77710 p_application_id => p_application_id
77711 , p_ae_header_id => l_ae_header_id
77712 , p_source_4 => p_source_4
77713 , x_transaction_coa_id => l_adr_transaction_coa_id
77714 , x_accounting_coa_id => l_adr_accounting_coa_id
77715 , x_value_type_code => l_adr_value_type_code
77716 , p_side => 'NA'
77717 );
77718
77719 xla_ae_lines_pkg.set_ccid(
77720 p_code_combination_id => l_ccid
77721 , p_value_type_code => l_adr_value_type_code
77722 , p_transaction_coa_id => l_adr_transaction_coa_id
77723 , p_accounting_coa_id => l_adr_accounting_coa_id
77724 , p_adr_code => 'CST_DEFAULT'
77725 , p_adr_type_code => 'S'
77726 , p_component_type => l_component_type
77727 , p_component_code => l_component_code
77728 , p_component_type_code => l_component_type_code
77729 , p_component_appl_id => l_component_appl_id
77730 , p_amb_context_code => l_amb_context_code
77731 , p_side => 'NA'
77732 );
77733
77734
77735 --
77736 --
77737 END IF;
77738 --
77739 -- Bug 4922099
77740 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
77741 (NVL(l_enc_upg_option, 'N') = 'O')
77742 ) AND
77743 (l_bflow_method_code = 'PRIOR_ENTRY')
77744 )
77745 THEN
77746 IF
77747 --
77748 1 = 2
77749 --
77750 THEN
77751 xla_accounting_err_pkg.build_message
77752 (p_appli_s_name => 'XLA'
77753 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77754 ,p_token_1 => 'LINE_NUMBER'
77755 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
77756 ,p_token_2 => 'LINE_TYPE_NAME'
77757 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
77758 l_component_type
77759 ,l_component_code
77760 ,l_component_type_code
77761 ,l_component_appl_id
77762 ,l_amb_context_code
77763 ,l_entity_code
77764 ,l_event_class_code
77765 )
77766 ,p_token_3 => 'OWNER'
77767 ,p_value_3 => xla_lookups_pkg.get_meaning(
77768 p_lookup_type => 'XLA_OWNER_TYPE'
77769 ,p_lookup_code => l_component_type_code
77770 )
77771 ,p_token_4 => 'PRODUCT_NAME'
77772 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
77773 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
77774 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
77775 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
77776 ,p_ae_header_id => NULL
77777 );
77778
77779 IF (C_LEVEL_ERROR>= g_log_level) THEN
77780 trace
77781 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
77782 ,p_level => C_LEVEL_ERROR
77783 ,p_module => l_log_module);
77784 END IF;
77785 END IF;
77786 END IF;
77787 --
77788 --
77789 ------------------------------------------------------------------------------------------------
77790 -- 4219869 Business Flow
77791 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
77792 -- Prior Entry. Currently, the following code is always generated.
77793 ------------------------------------------------------------------------------------------------
77794 XLA_AE_LINES_PKG.ValidateCurrentLine;
77795
77796 ------------------------------------------------------------------------------------
77797 -- 4219869 Business Flow
77798 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
77799 ------------------------------------------------------------------------------------
77800 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77801
77802 ----------------------------------------------------------------------------------
77803 -- 4219869 Business Flow
77804 -- Update journal entry status -- Need to generate this within IF <condition>
77805 ----------------------------------------------------------------------------------
77806 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77807 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
77808 ,p_balance_type_code => l_balance_type_code
77809 );
77810
77811 -------------------------------------------------------------------------------------------
77812 -- 4262811 - Generate the Accrual Reversal lines
77813 -------------------------------------------------------------------------------------------
77814 BEGIN
77815 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
77816 (g_array_event(p_event_id).array_value_num('header_index'));
77817 IF l_acc_rev_flag IS NULL THEN
77818 l_acc_rev_flag := 'N';
77819 END IF;
77820 EXCEPTION
77821 WHEN OTHERS THEN
77822 l_acc_rev_flag := 'N';
77823 END;
77824 --
77825 IF (l_acc_rev_flag = 'Y') THEN
77826
77827 -- 4645092 ------------------------------------------------------------------------------
77828 -- To allow MPA report to determine if it should generate report process
77829 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
77830 ------------------------------------------------------------------------------------------
77831
77832 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
77833 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
77834 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
77835 -- call ADRs
77836 -- Bug 4922099
77837 --
77838 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
77839 (NVL(l_actual_upg_option, 'N') = 'O') OR
77840 (NVL(l_enc_upg_option, 'N') = 'O')
77841 )
77842 THEN
77843 NULL;
77844 --
77845 --
77846
77847 l_ccid := AcctDerRule_4(
77848 p_application_id => p_application_id
77849 , p_ae_header_id => l_ae_header_id
77850 , p_source_4 => p_source_4
77851 , x_transaction_coa_id => l_adr_transaction_coa_id
77852 , x_accounting_coa_id => l_adr_accounting_coa_id
77853 , x_value_type_code => l_adr_value_type_code
77854 , p_side => 'NA'
77855 );
77856
77857 xla_ae_lines_pkg.set_ccid(
77858 p_code_combination_id => l_ccid
77859 , p_value_type_code => l_adr_value_type_code
77860 , p_transaction_coa_id => l_adr_transaction_coa_id
77861 , p_accounting_coa_id => l_adr_accounting_coa_id
77862 , p_adr_code => 'CST_DEFAULT'
77863 , p_adr_type_code => 'S'
77864 , p_component_type => l_component_type
77865 , p_component_code => l_component_code
77866 , p_component_type_code => l_component_type_code
77867 , p_component_appl_id => l_component_appl_id
77868 , p_amb_context_code => l_amb_context_code
77869 , p_side => 'NA'
77870 );
77871
77872
77873 --
77874 --
77875 END IF;
77876
77877 --
77878 -- Update the line information that should be overwritten
77879 --
77880 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
77881 p_header_num => 1);
77882 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
77883
77884 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
77885
77886 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
77887 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
77888 END IF;
77889
77890 --
77891 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
77892 --
77893 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
77894 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
77895 ELSE
77896 ---------------------------------------------------------------------------------------------------
77897 -- 4262811a Switch Sign
77898 ---------------------------------------------------------------------------------------------------
77899 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
77900 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77901 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77902 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
77903 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77904 -- 5132302
77905 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
77906 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
77907
77908 END IF;
77909
77910 -- 4955764
77911 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
77912 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
77913
77914
77915 XLA_AE_LINES_PKG.ValidateCurrentLine;
77916 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
77917
77918 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
77919 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
77920 ,p_balance_type_code => l_balance_type_code);
77921
77922 END IF;
77923
77924 -----------------------------------------------------------------------------------------
77925 -- 4262811 Multiperiod Accounting
77926 -----------------------------------------------------------------------------------------
77927 -- No MPA option is assigned.
77928
77929
77930 END IF;
77931 END IF;
77932 --
77933
77934 --
77935 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77936 trace
77937 (p_msg => 'END of AcctLineType_142'
77938 ,p_level => C_LEVEL_PROCEDURE
77939 ,p_module => l_log_module);
77940 END IF;
77941 --
77942 EXCEPTION
77943 WHEN xla_exceptions_pkg.application_exception THEN
77944 RAISE;
77945 WHEN OTHERS THEN
77946 xla_exceptions_pkg.raise_message
77947 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_142');
77948 END AcctLineType_142;
77949 --
77950
77951 ---------------------------------------
77952 --
77953 -- PRIVATE FUNCTION
77954 -- AcctLineType_143
77955 --
77956 ---------------------------------------
77957 PROCEDURE AcctLineType_143 (
77958 p_application_id IN NUMBER
77959 ,p_event_id IN NUMBER
77960 ,p_calculate_acctd_flag IN VARCHAR2
77961 ,p_calculate_g_l_flag IN VARCHAR2
77962 ,p_actual_flag IN OUT VARCHAR2
77963 ,p_balance_type_code OUT VARCHAR2
77964 ,p_gain_or_loss_ref OUT VARCHAR2
77965
77966 --Cost Management Default Account
77967 , p_source_4 IN NUMBER
77968 --DISTRIBUTION_IDENTIFIER
77969 , p_source_11 IN NUMBER
77970 --Distribution Type
77971 , p_source_12 IN VARCHAR2
77972 , p_source_12_meaning IN VARCHAR2
77973 --Entered Currency Code
77974 , p_source_15 IN VARCHAR2
77975 --Entered Amount
77976 , p_source_18 IN NUMBER
77977 --Currency Conversion Date
77978 , p_source_19 IN DATE
77979 --Currency Conversion Rate
77980 , p_source_20 IN NUMBER
77981 --Currency Conversion Type
77982 , p_source_21 IN VARCHAR2
77983 --Accounted Amount
77984 , p_source_22 IN NUMBER
77985 --Accounting Line Type
77986 , p_source_24 IN NUMBER
77987 )
77988 IS
77989
77990 l_component_type VARCHAR2(80);
77991 l_component_code VARCHAR2(30);
77992 l_component_type_code VARCHAR2(1);
77993 l_component_appl_id INTEGER;
77994 l_amb_context_code VARCHAR2(30);
77995 l_entity_code VARCHAR2(30);
77996 l_event_class_code VARCHAR2(30);
77997 l_ae_header_id NUMBER;
77998 l_event_type_code VARCHAR2(30);
77999 l_line_definition_code VARCHAR2(30);
78000 l_line_definition_owner_code VARCHAR2(1);
78001 --
78002 -- adr variables
78003 l_segment VARCHAR2(30);
78004 l_ccid NUMBER;
78005 l_adr_transaction_coa_id NUMBER;
78006 l_adr_accounting_coa_id NUMBER;
78007 l_adr_flexfield_segment_code VARCHAR2(30);
78008 l_adr_flex_value_set_id NUMBER;
78009 l_adr_value_type_code VARCHAR2(30);
78010 l_adr_value_combination_id NUMBER;
78011 l_adr_value_segment_code VARCHAR2(30);
78012
78013 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
78014 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
78015 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
78016 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
78017
78018 -- 4262811 Variables ------------------------------------------------------------------------------------------
78019 l_entered_amt_idx NUMBER;
78020 l_accted_amt_idx NUMBER;
78021 l_acc_rev_flag VARCHAR2(1);
78022 l_accrual_line_num NUMBER;
78023 l_tmp_amt NUMBER;
78024 l_acc_rev_natural_side_code VARCHAR2(1);
78025
78026 l_num_entries NUMBER;
78027 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
78028 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
78029 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
78030 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
78031 l_recog_line_1 NUMBER;
78032 l_recog_line_2 NUMBER;
78033
78034 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
78035 l_bflow_applied_to_amt NUMBER; -- 5132302
78036 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
78037
78038 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78039
78040 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
78041 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
78042
78043 ---------------------------------------------------------------------------------------------------------------
78044
78045
78046 --
78047 -- bulk performance
78048 --
78049 l_balance_type_code VARCHAR2(1);
78050 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
78051 l_log_module VARCHAR2(240);
78052
78053 --
78054 -- Upgrade strategy
78055 --
78056 l_actual_upg_option VARCHAR2(1);
78057 l_enc_upg_option VARCHAR2(1);
78058
78059 --
78060 BEGIN
78061 --
78062 IF g_log_enabled THEN
78063 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_143';
78064 END IF;
78065 --
78066 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78067
78068 trace
78069 (p_msg => 'BEGIN of AcctLineType_143'
78070 ,p_level => C_LEVEL_PROCEDURE
78071 ,p_module => l_log_module);
78072
78073 END IF;
78074 --
78075 l_component_type := 'AMB_JLT';
78076 l_component_code := 'INVENTORY_VALUATION';
78077 l_component_type_code := 'S';
78078 l_component_appl_id := 707;
78079 l_amb_context_code := 'DEFAULT';
78080 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
78081 l_event_class_code := 'MISC_ISSUE_RCPT';
78082 l_event_type_code := 'MISC_ISSUE_RCPT_ALL';
78083 l_line_definition_owner_code := 'S';
78084 l_line_definition_code := 'MISC_ISSUE_RCPT';
78085 --
78086 l_balance_type_code := 'A';
78087 l_segment := NULL;
78088 l_ccid := NULL;
78089 l_adr_transaction_coa_id := NULL;
78090 l_adr_accounting_coa_id := NULL;
78091 l_adr_flexfield_segment_code := NULL;
78092 l_adr_flex_value_set_id := NULL;
78093 l_adr_value_type_code := NULL;
78094 l_adr_value_combination_id := NULL;
78095 l_adr_value_segment_code := NULL;
78096
78097 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
78098 l_bflow_class_code := ''; -- 4219869 Business Flow
78099 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
78100 l_budgetary_control_flag := 'N';
78101
78102 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78103 l_bflow_applied_to_amt := NULL; -- 5132302
78104 l_entered_amt_idx := NULL; -- 4262811
78105 l_accted_amt_idx := NULL; -- 4262811
78106 l_acc_rev_flag := NULL; -- 4262811
78107 l_accrual_line_num := NULL; -- 4262811
78108 l_tmp_amt := NULL; -- 4262811
78109 --
78110
78111 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78112 l_balance_type_code <> 'B' THEN
78113 IF NVL(p_source_24,9E125) = 1
78114 THEN
78115
78116 --
78117 XLA_AE_LINES_PKG.SetNewLine;
78118
78119 p_balance_type_code := l_balance_type_code;
78120 -- set the flag so later we will know whether the gain loss line needs to be created
78121
78122 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78123 p_actual_flag :='A';
78124 END IF;
78125
78126 --
78127 -- bulk performance
78128 --
78129 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78130 p_header_num => 0); -- 4262811
78131 --
78132 -- set accounting line options
78133 --
78134 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78135 p_natural_side_code => 'D'
78136 , p_gain_or_loss_flag => 'N'
78137 , p_gl_transfer_mode_code => 'S'
78138 , p_acct_entry_type_code => 'A'
78139 , p_switch_side_flag => 'Y'
78140 , p_merge_duplicate_code => 'N'
78141 );
78142 --
78143 l_acc_rev_natural_side_code := 'C'; -- 4262811
78144 --
78145 --
78146 -- set accounting line type info
78147 --
78148 xla_ae_lines_pkg.SetAcctLineType
78149 (p_component_type => l_component_type
78150 ,p_event_type_code => l_event_type_code
78151 ,p_line_definition_owner_code => l_line_definition_owner_code
78152 ,p_line_definition_code => l_line_definition_code
78153 ,p_accounting_line_code => l_component_code
78154 ,p_accounting_line_type_code => l_component_type_code
78155 ,p_accounting_line_appl_id => l_component_appl_id
78156 ,p_amb_context_code => l_amb_context_code
78157 ,p_entity_code => l_entity_code
78158 ,p_event_class_code => l_event_class_code);
78159 --
78160 -- set accounting class
78161 --
78162 xla_ae_lines_pkg.SetAcctClass(
78163 p_accounting_class_code => 'INVENTORY_VALUATION'
78164 , p_ae_header_id => l_ae_header_id
78165 );
78166
78167 --
78168 -- set rounding class
78169 --
78170 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78171 'INVENTORY_VALUATION';
78172
78173 --
78174 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78175 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78176 --
78177 -- bulk performance
78178 --
78179 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78180
78181 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78182 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78183
78184 -- 4955764
78185 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78186 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78187
78188 -- 4458381 Public Sector Enh
78189
78190 --
78191 -- set accounting attributes for the line type
78192 --
78193 l_entered_amt_idx := 3;
78194 l_accted_amt_idx := 8;
78195 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78196 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78197 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
78198 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78199 l_rec_acct_attrs.array_char_value(2) := p_source_12;
78200 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78201 l_rec_acct_attrs.array_num_value(3) := p_source_18;
78202 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78203 l_rec_acct_attrs.array_char_value(4) := p_source_15;
78204 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78205 l_rec_acct_attrs.array_date_value(5) := p_source_19;
78206 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78207 l_rec_acct_attrs.array_num_value(6) := p_source_20;
78208 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78209 l_rec_acct_attrs.array_char_value(7) := p_source_21;
78210 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78211 l_rec_acct_attrs.array_num_value(8) := p_source_22;
78212
78213 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78214 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78215
78216 ---------------------------------------------------------------------------------------------------------------
78217 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78218 ---------------------------------------------------------------------------------------------------------------
78219 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78220
78221 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78222 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78223
78224 IF xla_accounting_cache_pkg.GetValueChar
78225 (p_source_code => 'LEDGER_CATEGORY_CODE'
78226 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78227 AND l_bflow_method_code = 'PRIOR_ENTRY'
78228 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78229 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78230 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78231 )
78232 THEN
78233 xla_ae_lines_pkg.BflowUpgEntry
78234 (p_business_method_code => l_bflow_method_code
78235 ,p_business_class_code => l_bflow_class_code
78236 ,p_balance_type => l_balance_type_code);
78237 ELSE
78238 NULL;
78239 -- No business flow processing for business flow method of NONE.
78240 END IF;
78241
78242 --
78243 -- call analytical criteria
78244 --
78245
78246 --
78247 -- call description
78248 --
78249 -- No description or it is inherited.
78250 --
78251 -- call ADRs
78252 -- Bug 4922099
78253 --
78254 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78255 (NVL(l_actual_upg_option, 'N') = 'O') OR
78256 (NVL(l_enc_upg_option, 'N') = 'O')
78257 )
78258 THEN
78259 NULL;
78260 --
78261 --
78262
78263 l_ccid := AcctDerRule_4(
78264 p_application_id => p_application_id
78265 , p_ae_header_id => l_ae_header_id
78266 , p_source_4 => p_source_4
78267 , x_transaction_coa_id => l_adr_transaction_coa_id
78268 , x_accounting_coa_id => l_adr_accounting_coa_id
78269 , x_value_type_code => l_adr_value_type_code
78270 , p_side => 'NA'
78271 );
78272
78273 xla_ae_lines_pkg.set_ccid(
78274 p_code_combination_id => l_ccid
78275 , p_value_type_code => l_adr_value_type_code
78276 , p_transaction_coa_id => l_adr_transaction_coa_id
78277 , p_accounting_coa_id => l_adr_accounting_coa_id
78278 , p_adr_code => 'CST_DEFAULT'
78279 , p_adr_type_code => 'S'
78280 , p_component_type => l_component_type
78281 , p_component_code => l_component_code
78282 , p_component_type_code => l_component_type_code
78283 , p_component_appl_id => l_component_appl_id
78284 , p_amb_context_code => l_amb_context_code
78285 , p_side => 'NA'
78286 );
78287
78288
78289 --
78290 --
78291 END IF;
78292 --
78293 -- Bug 4922099
78294 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78295 (NVL(l_enc_upg_option, 'N') = 'O')
78296 ) AND
78297 (l_bflow_method_code = 'PRIOR_ENTRY')
78298 )
78299 THEN
78300 IF
78301 --
78302 1 = 2
78303 --
78304 THEN
78305 xla_accounting_err_pkg.build_message
78306 (p_appli_s_name => 'XLA'
78307 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78308 ,p_token_1 => 'LINE_NUMBER'
78309 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
78310 ,p_token_2 => 'LINE_TYPE_NAME'
78311 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
78312 l_component_type
78313 ,l_component_code
78314 ,l_component_type_code
78315 ,l_component_appl_id
78316 ,l_amb_context_code
78317 ,l_entity_code
78318 ,l_event_class_code
78319 )
78320 ,p_token_3 => 'OWNER'
78321 ,p_value_3 => xla_lookups_pkg.get_meaning(
78322 p_lookup_type => 'XLA_OWNER_TYPE'
78323 ,p_lookup_code => l_component_type_code
78324 )
78325 ,p_token_4 => 'PRODUCT_NAME'
78326 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78327 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78328 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78329 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78330 ,p_ae_header_id => NULL
78331 );
78332
78333 IF (C_LEVEL_ERROR>= g_log_level) THEN
78334 trace
78335 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78336 ,p_level => C_LEVEL_ERROR
78337 ,p_module => l_log_module);
78338 END IF;
78339 END IF;
78340 END IF;
78341 --
78342 --
78343 ------------------------------------------------------------------------------------------------
78344 -- 4219869 Business Flow
78345 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78346 -- Prior Entry. Currently, the following code is always generated.
78347 ------------------------------------------------------------------------------------------------
78348 XLA_AE_LINES_PKG.ValidateCurrentLine;
78349
78350 ------------------------------------------------------------------------------------
78351 -- 4219869 Business Flow
78352 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78353 ------------------------------------------------------------------------------------
78354 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78355
78356 ----------------------------------------------------------------------------------
78357 -- 4219869 Business Flow
78358 -- Update journal entry status -- Need to generate this within IF <condition>
78359 ----------------------------------------------------------------------------------
78360 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78361 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78362 ,p_balance_type_code => l_balance_type_code
78363 );
78364
78365 -------------------------------------------------------------------------------------------
78366 -- 4262811 - Generate the Accrual Reversal lines
78367 -------------------------------------------------------------------------------------------
78368 BEGIN
78369 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78370 (g_array_event(p_event_id).array_value_num('header_index'));
78371 IF l_acc_rev_flag IS NULL THEN
78372 l_acc_rev_flag := 'N';
78373 END IF;
78374 EXCEPTION
78375 WHEN OTHERS THEN
78376 l_acc_rev_flag := 'N';
78377 END;
78378 --
78379 IF (l_acc_rev_flag = 'Y') THEN
78380
78381 -- 4645092 ------------------------------------------------------------------------------
78382 -- To allow MPA report to determine if it should generate report process
78383 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78384 ------------------------------------------------------------------------------------------
78385
78386 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78387 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78388 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
78389 -- call ADRs
78390 -- Bug 4922099
78391 --
78392 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78393 (NVL(l_actual_upg_option, 'N') = 'O') OR
78394 (NVL(l_enc_upg_option, 'N') = 'O')
78395 )
78396 THEN
78397 NULL;
78398 --
78399 --
78400
78401 l_ccid := AcctDerRule_4(
78402 p_application_id => p_application_id
78403 , p_ae_header_id => l_ae_header_id
78404 , p_source_4 => p_source_4
78405 , x_transaction_coa_id => l_adr_transaction_coa_id
78406 , x_accounting_coa_id => l_adr_accounting_coa_id
78407 , x_value_type_code => l_adr_value_type_code
78408 , p_side => 'NA'
78409 );
78410
78411 xla_ae_lines_pkg.set_ccid(
78412 p_code_combination_id => l_ccid
78413 , p_value_type_code => l_adr_value_type_code
78414 , p_transaction_coa_id => l_adr_transaction_coa_id
78415 , p_accounting_coa_id => l_adr_accounting_coa_id
78416 , p_adr_code => 'CST_DEFAULT'
78417 , p_adr_type_code => 'S'
78418 , p_component_type => l_component_type
78419 , p_component_code => l_component_code
78420 , p_component_type_code => l_component_type_code
78421 , p_component_appl_id => l_component_appl_id
78422 , p_amb_context_code => l_amb_context_code
78423 , p_side => 'NA'
78424 );
78425
78426
78427 --
78428 --
78429 END IF;
78430
78431 --
78432 -- Update the line information that should be overwritten
78433 --
78434 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78435 p_header_num => 1);
78436 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
78437
78438 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78439
78440 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
78441 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78442 END IF;
78443
78444 --
78445 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
78446 --
78447 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
78448 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
78449 ELSE
78450 ---------------------------------------------------------------------------------------------------
78451 -- 4262811a Switch Sign
78452 ---------------------------------------------------------------------------------------------------
78453 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
78454 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78455 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78456 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
78457 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78458 -- 5132302
78459 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
78460 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
78461
78462 END IF;
78463
78464 -- 4955764
78465 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78466 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
78467
78468
78469 XLA_AE_LINES_PKG.ValidateCurrentLine;
78470 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78471
78472 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78473 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
78474 ,p_balance_type_code => l_balance_type_code);
78475
78476 END IF;
78477
78478 -----------------------------------------------------------------------------------------
78479 -- 4262811 Multiperiod Accounting
78480 -----------------------------------------------------------------------------------------
78481 -- No MPA option is assigned.
78482
78483
78484 END IF;
78485 END IF;
78486 --
78487
78488 --
78489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78490 trace
78491 (p_msg => 'END of AcctLineType_143'
78492 ,p_level => C_LEVEL_PROCEDURE
78493 ,p_module => l_log_module);
78494 END IF;
78495 --
78496 EXCEPTION
78497 WHEN xla_exceptions_pkg.application_exception THEN
78498 RAISE;
78499 WHEN OTHERS THEN
78500 xla_exceptions_pkg.raise_message
78501 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_143');
78502 END AcctLineType_143;
78503 --
78504
78505 ---------------------------------------
78506 --
78507 -- PRIVATE FUNCTION
78508 -- AcctLineType_144
78509 --
78510 ---------------------------------------
78511 PROCEDURE AcctLineType_144 (
78512 p_application_id IN NUMBER
78513 ,p_event_id IN NUMBER
78514 ,p_calculate_acctd_flag IN VARCHAR2
78515 ,p_calculate_g_l_flag IN VARCHAR2
78516 ,p_actual_flag IN OUT VARCHAR2
78517 ,p_balance_type_code OUT VARCHAR2
78518 ,p_gain_or_loss_ref OUT VARCHAR2
78519
78520 --Cost Management Default Account
78521 , p_source_4 IN NUMBER
78522 --DISTRIBUTION_IDENTIFIER
78523 , p_source_11 IN NUMBER
78524 --Distribution Type
78525 , p_source_12 IN VARCHAR2
78526 , p_source_12_meaning IN VARCHAR2
78527 --Entered Currency Code
78528 , p_source_15 IN VARCHAR2
78529 --Entered Amount
78530 , p_source_18 IN NUMBER
78531 --Currency Conversion Date
78532 , p_source_19 IN DATE
78533 --Currency Conversion Rate
78534 , p_source_20 IN NUMBER
78535 --Currency Conversion Type
78536 , p_source_21 IN VARCHAR2
78537 --Accounted Amount
78538 , p_source_22 IN NUMBER
78539 --Accounting Line Type
78540 , p_source_24 IN NUMBER
78541 )
78542 IS
78543
78544 l_component_type VARCHAR2(80);
78545 l_component_code VARCHAR2(30);
78546 l_component_type_code VARCHAR2(1);
78547 l_component_appl_id INTEGER;
78548 l_amb_context_code VARCHAR2(30);
78549 l_entity_code VARCHAR2(30);
78550 l_event_class_code VARCHAR2(30);
78551 l_ae_header_id NUMBER;
78552 l_event_type_code VARCHAR2(30);
78553 l_line_definition_code VARCHAR2(30);
78554 l_line_definition_owner_code VARCHAR2(1);
78555 --
78556 -- adr variables
78557 l_segment VARCHAR2(30);
78558 l_ccid NUMBER;
78559 l_adr_transaction_coa_id NUMBER;
78560 l_adr_accounting_coa_id NUMBER;
78561 l_adr_flexfield_segment_code VARCHAR2(30);
78562 l_adr_flex_value_set_id NUMBER;
78563 l_adr_value_type_code VARCHAR2(30);
78564 l_adr_value_combination_id NUMBER;
78565 l_adr_value_segment_code VARCHAR2(30);
78566
78567 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
78568 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
78569 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
78570 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
78571
78572 -- 4262811 Variables ------------------------------------------------------------------------------------------
78573 l_entered_amt_idx NUMBER;
78574 l_accted_amt_idx NUMBER;
78575 l_acc_rev_flag VARCHAR2(1);
78576 l_accrual_line_num NUMBER;
78577 l_tmp_amt NUMBER;
78578 l_acc_rev_natural_side_code VARCHAR2(1);
78579
78580 l_num_entries NUMBER;
78581 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
78582 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
78583 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
78584 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
78585 l_recog_line_1 NUMBER;
78586 l_recog_line_2 NUMBER;
78587
78588 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
78589 l_bflow_applied_to_amt NUMBER; -- 5132302
78590 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
78591
78592 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
78593
78594 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
78595 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
78596
78597 ---------------------------------------------------------------------------------------------------------------
78598
78599
78600 --
78601 -- bulk performance
78602 --
78603 l_balance_type_code VARCHAR2(1);
78604 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
78605 l_log_module VARCHAR2(240);
78606
78607 --
78608 -- Upgrade strategy
78609 --
78610 l_actual_upg_option VARCHAR2(1);
78611 l_enc_upg_option VARCHAR2(1);
78612
78613 --
78614 BEGIN
78615 --
78616 IF g_log_enabled THEN
78617 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_144';
78618 END IF;
78619 --
78620 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78621
78622 trace
78623 (p_msg => 'BEGIN of AcctLineType_144'
78624 ,p_level => C_LEVEL_PROCEDURE
78625 ,p_module => l_log_module);
78626
78627 END IF;
78628 --
78629 l_component_type := 'AMB_JLT';
78630 l_component_code := 'INVENTORY_VALUATION';
78631 l_component_type_code := 'S';
78632 l_component_appl_id := 707;
78633 l_amb_context_code := 'DEFAULT';
78634 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
78635 l_event_class_code := 'USER_DEFINE';
78636 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
78637 l_line_definition_owner_code := 'S';
78638 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
78639 --
78640 l_balance_type_code := 'A';
78641 l_segment := NULL;
78642 l_ccid := NULL;
78643 l_adr_transaction_coa_id := NULL;
78644 l_adr_accounting_coa_id := NULL;
78645 l_adr_flexfield_segment_code := NULL;
78646 l_adr_flex_value_set_id := NULL;
78647 l_adr_value_type_code := NULL;
78648 l_adr_value_combination_id := NULL;
78649 l_adr_value_segment_code := NULL;
78650
78651 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
78652 l_bflow_class_code := ''; -- 4219869 Business Flow
78653 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
78654 l_budgetary_control_flag := 'N';
78655
78656 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78657 l_bflow_applied_to_amt := NULL; -- 5132302
78658 l_entered_amt_idx := NULL; -- 4262811
78659 l_accted_amt_idx := NULL; -- 4262811
78660 l_acc_rev_flag := NULL; -- 4262811
78661 l_accrual_line_num := NULL; -- 4262811
78662 l_tmp_amt := NULL; -- 4262811
78663 --
78664
78665 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
78666 l_balance_type_code <> 'B' THEN
78667 IF NVL(p_source_24,9E125) = 1
78668 THEN
78669
78670 --
78671 XLA_AE_LINES_PKG.SetNewLine;
78672
78673 p_balance_type_code := l_balance_type_code;
78674 -- set the flag so later we will know whether the gain loss line needs to be created
78675
78676 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
78677 p_actual_flag :='A';
78678 END IF;
78679
78680 --
78681 -- bulk performance
78682 --
78683 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
78684 p_header_num => 0); -- 4262811
78685 --
78686 -- set accounting line options
78687 --
78688 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
78689 p_natural_side_code => 'D'
78690 , p_gain_or_loss_flag => 'N'
78691 , p_gl_transfer_mode_code => 'S'
78692 , p_acct_entry_type_code => 'A'
78693 , p_switch_side_flag => 'Y'
78694 , p_merge_duplicate_code => 'N'
78695 );
78696 --
78697 l_acc_rev_natural_side_code := 'C'; -- 4262811
78698 --
78699 --
78700 -- set accounting line type info
78701 --
78702 xla_ae_lines_pkg.SetAcctLineType
78703 (p_component_type => l_component_type
78704 ,p_event_type_code => l_event_type_code
78705 ,p_line_definition_owner_code => l_line_definition_owner_code
78706 ,p_line_definition_code => l_line_definition_code
78707 ,p_accounting_line_code => l_component_code
78708 ,p_accounting_line_type_code => l_component_type_code
78709 ,p_accounting_line_appl_id => l_component_appl_id
78710 ,p_amb_context_code => l_amb_context_code
78711 ,p_entity_code => l_entity_code
78712 ,p_event_class_code => l_event_class_code);
78713 --
78714 -- set accounting class
78715 --
78716 xla_ae_lines_pkg.SetAcctClass(
78717 p_accounting_class_code => 'INVENTORY_VALUATION'
78718 , p_ae_header_id => l_ae_header_id
78719 );
78720
78721 --
78722 -- set rounding class
78723 --
78724 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
78725 'INVENTORY_VALUATION';
78726
78727 --
78728 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
78729 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
78730 --
78731 -- bulk performance
78732 --
78733 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
78734
78735 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
78736 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
78737
78738 -- 4955764
78739 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
78740 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
78741
78742 -- 4458381 Public Sector Enh
78743
78744 --
78745 -- set accounting attributes for the line type
78746 --
78747 l_entered_amt_idx := 3;
78748 l_accted_amt_idx := 8;
78749 l_bflow_applied_to_amt_idx := NULL; -- 5132302
78750 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
78751 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
78752 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
78753 l_rec_acct_attrs.array_char_value(2) := p_source_12;
78754 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
78755 l_rec_acct_attrs.array_num_value(3) := p_source_18;
78756 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
78757 l_rec_acct_attrs.array_char_value(4) := p_source_15;
78758 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
78759 l_rec_acct_attrs.array_date_value(5) := p_source_19;
78760 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
78761 l_rec_acct_attrs.array_num_value(6) := p_source_20;
78762 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
78763 l_rec_acct_attrs.array_char_value(7) := p_source_21;
78764 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
78765 l_rec_acct_attrs.array_num_value(8) := p_source_22;
78766
78767 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
78768 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
78769
78770 ---------------------------------------------------------------------------------------------------------------
78771 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
78772 ---------------------------------------------------------------------------------------------------------------
78773 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
78774
78775 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78776 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
78777
78778 IF xla_accounting_cache_pkg.GetValueChar
78779 (p_source_code => 'LEDGER_CATEGORY_CODE'
78780 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
78781 AND l_bflow_method_code = 'PRIOR_ENTRY'
78782 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
78783 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
78784 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
78785 )
78786 THEN
78787 xla_ae_lines_pkg.BflowUpgEntry
78788 (p_business_method_code => l_bflow_method_code
78789 ,p_business_class_code => l_bflow_class_code
78790 ,p_balance_type => l_balance_type_code);
78791 ELSE
78792 NULL;
78793 -- No business flow processing for business flow method of NONE.
78794 END IF;
78795
78796 --
78797 -- call analytical criteria
78798 --
78799
78800 --
78801 -- call description
78802 --
78803 -- No description or it is inherited.
78804 --
78805 -- call ADRs
78806 -- Bug 4922099
78807 --
78808 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78809 (NVL(l_actual_upg_option, 'N') = 'O') OR
78810 (NVL(l_enc_upg_option, 'N') = 'O')
78811 )
78812 THEN
78813 NULL;
78814 --
78815 --
78816
78817 l_ccid := AcctDerRule_4(
78818 p_application_id => p_application_id
78819 , p_ae_header_id => l_ae_header_id
78820 , p_source_4 => p_source_4
78821 , x_transaction_coa_id => l_adr_transaction_coa_id
78822 , x_accounting_coa_id => l_adr_accounting_coa_id
78823 , x_value_type_code => l_adr_value_type_code
78824 , p_side => 'NA'
78825 );
78826
78827 xla_ae_lines_pkg.set_ccid(
78828 p_code_combination_id => l_ccid
78829 , p_value_type_code => l_adr_value_type_code
78830 , p_transaction_coa_id => l_adr_transaction_coa_id
78831 , p_accounting_coa_id => l_adr_accounting_coa_id
78832 , p_adr_code => 'CST_DEFAULT'
78833 , p_adr_type_code => 'S'
78834 , p_component_type => l_component_type
78835 , p_component_code => l_component_code
78836 , p_component_type_code => l_component_type_code
78837 , p_component_appl_id => l_component_appl_id
78838 , p_amb_context_code => l_amb_context_code
78839 , p_side => 'NA'
78840 );
78841
78842
78843 --
78844 --
78845 END IF;
78846 --
78847 -- Bug 4922099
78848 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
78849 (NVL(l_enc_upg_option, 'N') = 'O')
78850 ) AND
78851 (l_bflow_method_code = 'PRIOR_ENTRY')
78852 )
78853 THEN
78854 IF
78855 --
78856 1 = 2
78857 --
78858 THEN
78859 xla_accounting_err_pkg.build_message
78860 (p_appli_s_name => 'XLA'
78861 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78862 ,p_token_1 => 'LINE_NUMBER'
78863 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
78864 ,p_token_2 => 'LINE_TYPE_NAME'
78865 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
78866 l_component_type
78867 ,l_component_code
78868 ,l_component_type_code
78869 ,l_component_appl_id
78870 ,l_amb_context_code
78871 ,l_entity_code
78872 ,l_event_class_code
78873 )
78874 ,p_token_3 => 'OWNER'
78875 ,p_value_3 => xla_lookups_pkg.get_meaning(
78876 p_lookup_type => 'XLA_OWNER_TYPE'
78877 ,p_lookup_code => l_component_type_code
78878 )
78879 ,p_token_4 => 'PRODUCT_NAME'
78880 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
78881 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
78882 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
78883 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
78884 ,p_ae_header_id => NULL
78885 );
78886
78887 IF (C_LEVEL_ERROR>= g_log_level) THEN
78888 trace
78889 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
78890 ,p_level => C_LEVEL_ERROR
78891 ,p_module => l_log_module);
78892 END IF;
78893 END IF;
78894 END IF;
78895 --
78896 --
78897 ------------------------------------------------------------------------------------------------
78898 -- 4219869 Business Flow
78899 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
78900 -- Prior Entry. Currently, the following code is always generated.
78901 ------------------------------------------------------------------------------------------------
78902 XLA_AE_LINES_PKG.ValidateCurrentLine;
78903
78904 ------------------------------------------------------------------------------------
78905 -- 4219869 Business Flow
78906 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
78907 ------------------------------------------------------------------------------------
78908 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
78909
78910 ----------------------------------------------------------------------------------
78911 -- 4219869 Business Flow
78912 -- Update journal entry status -- Need to generate this within IF <condition>
78913 ----------------------------------------------------------------------------------
78914 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
78915 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
78916 ,p_balance_type_code => l_balance_type_code
78917 );
78918
78919 -------------------------------------------------------------------------------------------
78920 -- 4262811 - Generate the Accrual Reversal lines
78921 -------------------------------------------------------------------------------------------
78922 BEGIN
78923 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
78924 (g_array_event(p_event_id).array_value_num('header_index'));
78925 IF l_acc_rev_flag IS NULL THEN
78926 l_acc_rev_flag := 'N';
78927 END IF;
78928 EXCEPTION
78929 WHEN OTHERS THEN
78930 l_acc_rev_flag := 'N';
78931 END;
78932 --
78933 IF (l_acc_rev_flag = 'Y') THEN
78934
78935 -- 4645092 ------------------------------------------------------------------------------
78936 -- To allow MPA report to determine if it should generate report process
78937 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
78938 ------------------------------------------------------------------------------------------
78939
78940 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
78941 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
78942 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
78943 -- call ADRs
78944 -- Bug 4922099
78945 --
78946 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
78947 (NVL(l_actual_upg_option, 'N') = 'O') OR
78948 (NVL(l_enc_upg_option, 'N') = 'O')
78949 )
78950 THEN
78951 NULL;
78952 --
78953 --
78954
78955 l_ccid := AcctDerRule_4(
78956 p_application_id => p_application_id
78957 , p_ae_header_id => l_ae_header_id
78958 , p_source_4 => p_source_4
78959 , x_transaction_coa_id => l_adr_transaction_coa_id
78960 , x_accounting_coa_id => l_adr_accounting_coa_id
78961 , x_value_type_code => l_adr_value_type_code
78962 , p_side => 'NA'
78963 );
78964
78965 xla_ae_lines_pkg.set_ccid(
78966 p_code_combination_id => l_ccid
78967 , p_value_type_code => l_adr_value_type_code
78968 , p_transaction_coa_id => l_adr_transaction_coa_id
78969 , p_accounting_coa_id => l_adr_accounting_coa_id
78970 , p_adr_code => 'CST_DEFAULT'
78971 , p_adr_type_code => 'S'
78972 , p_component_type => l_component_type
78973 , p_component_code => l_component_code
78974 , p_component_type_code => l_component_type_code
78975 , p_component_appl_id => l_component_appl_id
78976 , p_amb_context_code => l_amb_context_code
78977 , p_side => 'NA'
78978 );
78979
78980
78981 --
78982 --
78983 END IF;
78984
78985 --
78986 -- Update the line information that should be overwritten
78987 --
78988 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
78989 p_header_num => 1);
78990 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
78991
78992 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
78993
78994 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
78995 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
78996 END IF;
78997
78998 --
78999 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
79000 --
79001 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
79002 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
79003 ELSE
79004 ---------------------------------------------------------------------------------------------------
79005 -- 4262811a Switch Sign
79006 ---------------------------------------------------------------------------------------------------
79007 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
79008 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79009 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79010 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
79011 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79012 -- 5132302
79013 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
79014 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
79015
79016 END IF;
79017
79018 -- 4955764
79019 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79020 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
79021
79022
79023 XLA_AE_LINES_PKG.ValidateCurrentLine;
79024 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
79025
79026 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
79027 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
79028 ,p_balance_type_code => l_balance_type_code);
79029
79030 END IF;
79031
79032 -----------------------------------------------------------------------------------------
79033 -- 4262811 Multiperiod Accounting
79034 -----------------------------------------------------------------------------------------
79035 -- No MPA option is assigned.
79036
79037
79038 END IF;
79039 END IF;
79040 --
79041
79042 --
79043 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79044 trace
79045 (p_msg => 'END of AcctLineType_144'
79046 ,p_level => C_LEVEL_PROCEDURE
79047 ,p_module => l_log_module);
79048 END IF;
79049 --
79050 EXCEPTION
79051 WHEN xla_exceptions_pkg.application_exception THEN
79052 RAISE;
79053 WHEN OTHERS THEN
79054 xla_exceptions_pkg.raise_message
79055 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_144');
79056 END AcctLineType_144;
79057 --
79058
79059 ---------------------------------------
79060 --
79061 -- PRIVATE FUNCTION
79062 -- AcctLineType_145
79063 --
79064 ---------------------------------------
79065 PROCEDURE AcctLineType_145 (
79066 p_application_id IN NUMBER
79067 ,p_event_id IN NUMBER
79068 ,p_calculate_acctd_flag IN VARCHAR2
79069 ,p_calculate_g_l_flag IN VARCHAR2
79070 ,p_actual_flag IN OUT VARCHAR2
79071 ,p_balance_type_code OUT VARCHAR2
79072 ,p_gain_or_loss_ref OUT VARCHAR2
79073
79074 --Cost Management Default Account
79075 , p_source_4 IN NUMBER
79076 --DISTRIBUTION_IDENTIFIER
79077 , p_source_11 IN NUMBER
79078 --Distribution Type
79079 , p_source_12 IN VARCHAR2
79080 , p_source_12_meaning IN VARCHAR2
79081 --Entered Currency Code
79082 , p_source_15 IN VARCHAR2
79083 --Entered Amount
79084 , p_source_18 IN NUMBER
79085 --Currency Conversion Date
79086 , p_source_19 IN DATE
79087 --Currency Conversion Rate
79088 , p_source_20 IN NUMBER
79089 --Currency Conversion Type
79090 , p_source_21 IN VARCHAR2
79091 --Accounted Amount
79092 , p_source_22 IN NUMBER
79093 --Accounting Line Type
79094 , p_source_24 IN NUMBER
79095 )
79096 IS
79097
79098 l_component_type VARCHAR2(80);
79099 l_component_code VARCHAR2(30);
79100 l_component_type_code VARCHAR2(1);
79101 l_component_appl_id INTEGER;
79102 l_amb_context_code VARCHAR2(30);
79103 l_entity_code VARCHAR2(30);
79104 l_event_class_code VARCHAR2(30);
79105 l_ae_header_id NUMBER;
79106 l_event_type_code VARCHAR2(30);
79107 l_line_definition_code VARCHAR2(30);
79108 l_line_definition_owner_code VARCHAR2(1);
79109 --
79110 -- adr variables
79111 l_segment VARCHAR2(30);
79112 l_ccid NUMBER;
79113 l_adr_transaction_coa_id NUMBER;
79114 l_adr_accounting_coa_id NUMBER;
79115 l_adr_flexfield_segment_code VARCHAR2(30);
79116 l_adr_flex_value_set_id NUMBER;
79117 l_adr_value_type_code VARCHAR2(30);
79118 l_adr_value_combination_id NUMBER;
79119 l_adr_value_segment_code VARCHAR2(30);
79120
79121 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
79122 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
79123 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
79124 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
79125
79126 -- 4262811 Variables ------------------------------------------------------------------------------------------
79127 l_entered_amt_idx NUMBER;
79128 l_accted_amt_idx NUMBER;
79129 l_acc_rev_flag VARCHAR2(1);
79130 l_accrual_line_num NUMBER;
79131 l_tmp_amt NUMBER;
79132 l_acc_rev_natural_side_code VARCHAR2(1);
79133
79134 l_num_entries NUMBER;
79135 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
79136 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
79137 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
79138 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
79139 l_recog_line_1 NUMBER;
79140 l_recog_line_2 NUMBER;
79141
79142 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
79143 l_bflow_applied_to_amt NUMBER; -- 5132302
79144 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
79145
79146 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
79147
79148 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
79149 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
79150
79151 ---------------------------------------------------------------------------------------------------------------
79152
79153
79154 --
79155 -- bulk performance
79156 --
79157 l_balance_type_code VARCHAR2(1);
79158 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
79159 l_log_module VARCHAR2(240);
79160
79161 --
79162 -- Upgrade strategy
79163 --
79164 l_actual_upg_option VARCHAR2(1);
79165 l_enc_upg_option VARCHAR2(1);
79166
79167 --
79168 BEGIN
79169 --
79170 IF g_log_enabled THEN
79171 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_145';
79172 END IF;
79173 --
79174 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79175
79176 trace
79177 (p_msg => 'BEGIN of AcctLineType_145'
79178 ,p_level => C_LEVEL_PROCEDURE
79179 ,p_module => l_log_module);
79180
79181 END IF;
79182 --
79183 l_component_type := 'AMB_JLT';
79184 l_component_code := 'INVENTORY_VALUATION';
79185 l_component_type_code := 'S';
79186 l_component_appl_id := 707;
79187 l_amb_context_code := 'DEFAULT';
79188 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
79189 l_event_class_code := 'USER_DEFINE';
79190 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
79191 l_line_definition_owner_code := 'S';
79192 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
79193 --
79194 l_balance_type_code := 'A';
79195 l_segment := NULL;
79196 l_ccid := NULL;
79197 l_adr_transaction_coa_id := NULL;
79198 l_adr_accounting_coa_id := NULL;
79199 l_adr_flexfield_segment_code := NULL;
79200 l_adr_flex_value_set_id := NULL;
79201 l_adr_value_type_code := NULL;
79202 l_adr_value_combination_id := NULL;
79203 l_adr_value_segment_code := NULL;
79204
79205 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
79206 l_bflow_class_code := ''; -- 4219869 Business Flow
79207 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
79208 l_budgetary_control_flag := 'N';
79209
79210 l_bflow_applied_to_amt_idx := NULL; -- 5132302
79211 l_bflow_applied_to_amt := NULL; -- 5132302
79212 l_entered_amt_idx := NULL; -- 4262811
79213 l_accted_amt_idx := NULL; -- 4262811
79214 l_acc_rev_flag := NULL; -- 4262811
79215 l_accrual_line_num := NULL; -- 4262811
79216 l_tmp_amt := NULL; -- 4262811
79217 --
79218
79219 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
79220 l_balance_type_code <> 'B' THEN
79221 IF NVL(p_source_24,9E125) = 1
79222 THEN
79223
79224 --
79225 XLA_AE_LINES_PKG.SetNewLine;
79226
79227 p_balance_type_code := l_balance_type_code;
79228 -- set the flag so later we will know whether the gain loss line needs to be created
79229
79230 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
79231 p_actual_flag :='A';
79232 END IF;
79233
79234 --
79235 -- bulk performance
79236 --
79237 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
79238 p_header_num => 0); -- 4262811
79239 --
79240 -- set accounting line options
79241 --
79242 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
79243 p_natural_side_code => 'D'
79244 , p_gain_or_loss_flag => 'N'
79245 , p_gl_transfer_mode_code => 'S'
79246 , p_acct_entry_type_code => 'A'
79247 , p_switch_side_flag => 'Y'
79248 , p_merge_duplicate_code => 'N'
79249 );
79250 --
79251 l_acc_rev_natural_side_code := 'C'; -- 4262811
79252 --
79253 --
79254 -- set accounting line type info
79255 --
79256 xla_ae_lines_pkg.SetAcctLineType
79257 (p_component_type => l_component_type
79258 ,p_event_type_code => l_event_type_code
79259 ,p_line_definition_owner_code => l_line_definition_owner_code
79260 ,p_line_definition_code => l_line_definition_code
79261 ,p_accounting_line_code => l_component_code
79262 ,p_accounting_line_type_code => l_component_type_code
79263 ,p_accounting_line_appl_id => l_component_appl_id
79264 ,p_amb_context_code => l_amb_context_code
79265 ,p_entity_code => l_entity_code
79266 ,p_event_class_code => l_event_class_code);
79267 --
79268 -- set accounting class
79269 --
79270 xla_ae_lines_pkg.SetAcctClass(
79271 p_accounting_class_code => 'INVENTORY_VALUATION'
79272 , p_ae_header_id => l_ae_header_id
79273 );
79274
79275 --
79276 -- set rounding class
79277 --
79278 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
79279 'INVENTORY_VALUATION';
79280
79281 --
79282 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
79283 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
79284 --
79285 -- bulk performance
79286 --
79287 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
79288
79289 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
79290 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
79291
79292 -- 4955764
79293 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
79294 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
79295
79296 -- 4458381 Public Sector Enh
79297
79298 --
79299 -- set accounting attributes for the line type
79300 --
79301 l_entered_amt_idx := 3;
79302 l_accted_amt_idx := 8;
79303 l_bflow_applied_to_amt_idx := NULL; -- 5132302
79304 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
79305 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
79306 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
79307 l_rec_acct_attrs.array_char_value(2) := p_source_12;
79308 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
79309 l_rec_acct_attrs.array_num_value(3) := p_source_18;
79310 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
79311 l_rec_acct_attrs.array_char_value(4) := p_source_15;
79312 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
79313 l_rec_acct_attrs.array_date_value(5) := p_source_19;
79314 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
79315 l_rec_acct_attrs.array_num_value(6) := p_source_20;
79316 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
79317 l_rec_acct_attrs.array_char_value(7) := p_source_21;
79318 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
79319 l_rec_acct_attrs.array_num_value(8) := p_source_22;
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_000005_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 := 'USER_DEFINE';
79744 l_event_type_code := 'UMISC_ISSUE';
79745 l_line_definition_owner_code := 'S';
79746 l_line_definition_code := 'USER_ISSUE';
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_000005_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 --Applied to Application ID
80185 , p_source_6 IN NUMBER
80186 --Applied to Distribution Link Type
80187 , p_source_7 IN VARCHAR2
80188 --Applied to Entity Code
80189 , p_source_8 IN VARCHAR2
80190 --DISTRIBUTION_IDENTIFIER
80191 , p_source_11 IN NUMBER
80192 --Distribution Type
80193 , p_source_12 IN VARCHAR2
80194 , p_source_12_meaning IN VARCHAR2
80195 --Encumbrance Reversal Amount Entered
80196 , p_source_14 IN NUMBER
80197 --Entered Currency Code
80198 , p_source_15 IN VARCHAR2
80199 --Transaction Encumbrance Reversal Amount
80200 , p_source_16 IN NUMBER
80201 --Entered Amount
80202 , p_source_18 IN NUMBER
80203 --Currency Conversion Date
80204 , p_source_19 IN DATE
80205 --Currency Conversion Rate
80206 , p_source_20 IN NUMBER
80207 --Currency Conversion Type
80208 , p_source_21 IN VARCHAR2
80209 --Accounted Amount
80210 , p_source_22 IN NUMBER
80211 --Accounting Line Type
80212 , p_source_24 IN NUMBER
80213 --Costing Encumbrance Upgrade Option
80214 , p_source_27 IN VARCHAR2
80215 --TXN_PO_DISTRIBUTION_ID
80216 , p_source_28 IN NUMBER
80217 --TXN_PO_HEADER_ID
80218 , p_source_29 IN NUMBER
80219 --Requisition Budget Account
80220 , p_source_30 IN NUMBER
80221 --Requisition Encumbrance Type Identifier
80222 , p_source_31 IN NUMBER
80223 )
80224 IS
80225
80226 l_component_type VARCHAR2(80);
80227 l_component_code VARCHAR2(30);
80228 l_component_type_code VARCHAR2(1);
80229 l_component_appl_id INTEGER;
80230 l_amb_context_code VARCHAR2(30);
80231 l_entity_code VARCHAR2(30);
80232 l_event_class_code VARCHAR2(30);
80233 l_ae_header_id NUMBER;
80234 l_event_type_code VARCHAR2(30);
80235 l_line_definition_code VARCHAR2(30);
80236 l_line_definition_owner_code VARCHAR2(1);
80237 --
80238 -- adr variables
80239 l_segment VARCHAR2(30);
80240 l_ccid NUMBER;
80241 l_adr_transaction_coa_id NUMBER;
80242 l_adr_accounting_coa_id NUMBER;
80243 l_adr_flexfield_segment_code VARCHAR2(30);
80244 l_adr_flex_value_set_id NUMBER;
80245 l_adr_value_type_code VARCHAR2(30);
80246 l_adr_value_combination_id NUMBER;
80247 l_adr_value_segment_code VARCHAR2(30);
80248
80249 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
80250 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
80251 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
80252 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
80253
80254 -- 4262811 Variables ------------------------------------------------------------------------------------------
80255 l_entered_amt_idx NUMBER;
80256 l_accted_amt_idx NUMBER;
80257 l_acc_rev_flag VARCHAR2(1);
80258 l_accrual_line_num NUMBER;
80259 l_tmp_amt NUMBER;
80260 l_acc_rev_natural_side_code VARCHAR2(1);
80261
80262 l_num_entries NUMBER;
80263 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
80264 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
80265 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
80266 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
80267 l_recog_line_1 NUMBER;
80268 l_recog_line_2 NUMBER;
80269
80270 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
80271 l_bflow_applied_to_amt NUMBER; -- 5132302
80272 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
80273
80274 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80275
80276 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
80277 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
80278
80279 ---------------------------------------------------------------------------------------------------------------
80280
80281
80282 --
80283 -- bulk performance
80284 --
80285 l_balance_type_code VARCHAR2(1);
80286 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
80287 l_log_module VARCHAR2(240);
80288
80289 --
80290 -- Upgrade strategy
80291 --
80292 l_actual_upg_option VARCHAR2(1);
80293 l_enc_upg_option VARCHAR2(1);
80294
80295 --
80296 BEGIN
80297 --
80298 IF g_log_enabled THEN
80299 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_147';
80300 END IF;
80301 --
80302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80303
80304 trace
80305 (p_msg => 'BEGIN of AcctLineType_147'
80306 ,p_level => C_LEVEL_PROCEDURE
80307 ,p_module => l_log_module);
80308
80309 END IF;
80310 --
80311 l_component_type := 'AMB_JLT';
80312 l_component_code := 'INVENTORY_VALUATION';
80313 l_component_type_code := 'S';
80314 l_component_appl_id := 707;
80315 l_amb_context_code := 'DEFAULT';
80316 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
80317 l_event_class_code := 'DIR_INTERORG_RCPT';
80318 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
80319 l_line_definition_owner_code := 'S';
80320 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
80321 --
80322 l_balance_type_code := 'A';
80323 l_segment := NULL;
80324 l_ccid := NULL;
80325 l_adr_transaction_coa_id := NULL;
80326 l_adr_accounting_coa_id := NULL;
80327 l_adr_flexfield_segment_code := NULL;
80328 l_adr_flex_value_set_id := NULL;
80329 l_adr_value_type_code := NULL;
80330 l_adr_value_combination_id := NULL;
80331 l_adr_value_segment_code := NULL;
80332
80333 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
80334 l_bflow_class_code := ''; -- 4219869 Business Flow
80335 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
80336 l_budgetary_control_flag := 'N';
80337
80338 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80339 l_bflow_applied_to_amt := NULL; -- 5132302
80340 l_entered_amt_idx := NULL; -- 4262811
80341 l_accted_amt_idx := NULL; -- 4262811
80342 l_acc_rev_flag := NULL; -- 4262811
80343 l_accrual_line_num := NULL; -- 4262811
80344 l_tmp_amt := NULL; -- 4262811
80345 --
80346
80347 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80348 l_balance_type_code <> 'B' THEN
80349 IF NVL(p_source_24,9E125) = 1
80350 THEN
80351
80352 --
80353 XLA_AE_LINES_PKG.SetNewLine;
80354
80355 p_balance_type_code := l_balance_type_code;
80356 -- set the flag so later we will know whether the gain loss line needs to be created
80357
80358 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80359 p_actual_flag :='A';
80360 END IF;
80361
80362 --
80363 -- bulk performance
80364 --
80365 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80366 p_header_num => 0); -- 4262811
80367 --
80368 -- set accounting line options
80369 --
80370 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80371 p_natural_side_code => 'D'
80372 , p_gain_or_loss_flag => 'N'
80373 , p_gl_transfer_mode_code => 'S'
80374 , p_acct_entry_type_code => 'A'
80375 , p_switch_side_flag => 'Y'
80376 , p_merge_duplicate_code => 'N'
80377 );
80378 --
80379 l_acc_rev_natural_side_code := 'C'; -- 4262811
80380 --
80381 --
80382 -- set accounting line type info
80383 --
80384 xla_ae_lines_pkg.SetAcctLineType
80385 (p_component_type => l_component_type
80386 ,p_event_type_code => l_event_type_code
80387 ,p_line_definition_owner_code => l_line_definition_owner_code
80388 ,p_line_definition_code => l_line_definition_code
80389 ,p_accounting_line_code => l_component_code
80390 ,p_accounting_line_type_code => l_component_type_code
80391 ,p_accounting_line_appl_id => l_component_appl_id
80392 ,p_amb_context_code => l_amb_context_code
80393 ,p_entity_code => l_entity_code
80394 ,p_event_class_code => l_event_class_code);
80395 --
80396 -- set accounting class
80397 --
80398 xla_ae_lines_pkg.SetAcctClass(
80399 p_accounting_class_code => 'INVENTORY_VALUATION'
80400 , p_ae_header_id => l_ae_header_id
80401 );
80402
80403 --
80404 -- set rounding class
80405 --
80406 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
80407 'INVENTORY_VALUATION';
80408
80409 --
80410 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
80411 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
80412 --
80413 -- bulk performance
80414 --
80415 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
80416
80417 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
80418 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
80419
80420 -- 4955764
80421 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80422 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
80423
80424 -- 4458381 Public Sector Enh
80425
80426 --
80427 -- set accounting attributes for the line type
80428 --
80429 l_entered_amt_idx := 17;
80430 l_accted_amt_idx := 22;
80431 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80432 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
80433 l_rec_acct_attrs.array_num_value(1) := p_source_6;
80434 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
80435 l_rec_acct_attrs.array_char_value(2) := p_source_7;
80436 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
80437 l_rec_acct_attrs.array_char_value(3) := p_source_8;
80438 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
80439 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
80440 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
80441 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
80442 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
80443 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
80444 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
80445 l_rec_acct_attrs.array_char_value(7) := p_source_12;
80446 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
80447 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
80448 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
80449 l_rec_acct_attrs.array_num_value(9) := p_source_14;
80450 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
80451 l_rec_acct_attrs.array_char_value(10) := p_source_15;
80452 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
80453 l_rec_acct_attrs.array_num_value(11) := p_source_16;
80454 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
80455 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
80456 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
80457 l_rec_acct_attrs.array_num_value(13) := p_source_14;
80458 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
80459 l_rec_acct_attrs.array_char_value(14) := p_source_15;
80460 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
80461 l_rec_acct_attrs.array_num_value(15) := p_source_16;
80462 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
80463 l_rec_acct_attrs.array_char_value(16) := p_source_27;
80464 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
80465 l_rec_acct_attrs.array_num_value(17) := p_source_18;
80466 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
80467 l_rec_acct_attrs.array_char_value(18) := p_source_15;
80468 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
80469 l_rec_acct_attrs.array_date_value(19) := p_source_19;
80470 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
80471 l_rec_acct_attrs.array_num_value(20) := p_source_20;
80472 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
80473 l_rec_acct_attrs.array_char_value(21) := p_source_21;
80474 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
80475 l_rec_acct_attrs.array_num_value(22) := p_source_22;
80476 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
80477 l_rec_acct_attrs.array_num_value(23) := p_source_31;
80478 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
80479 l_rec_acct_attrs.array_num_value(24) := p_source_31;
80480
80481 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
80482 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
80483
80484 ---------------------------------------------------------------------------------------------------------------
80485 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
80486 ---------------------------------------------------------------------------------------------------------------
80487 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
80488
80489 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80490 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
80491
80492 IF xla_accounting_cache_pkg.GetValueChar
80493 (p_source_code => 'LEDGER_CATEGORY_CODE'
80494 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
80495 AND l_bflow_method_code = 'PRIOR_ENTRY'
80496 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
80497 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
80498 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
80499 )
80500 THEN
80501 xla_ae_lines_pkg.BflowUpgEntry
80502 (p_business_method_code => l_bflow_method_code
80503 ,p_business_class_code => l_bflow_class_code
80504 ,p_balance_type => l_balance_type_code);
80505 ELSE
80506 NULL;
80507 -- No business flow processing for business flow method of NONE.
80508 END IF;
80509
80510 --
80511 -- call analytical criteria
80512 --
80513
80514 --
80515 -- call description
80516 --
80517 -- No description or it is inherited.
80518 --
80519 -- call ADRs
80520 -- Bug 4922099
80521 --
80522 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80523 (NVL(l_actual_upg_option, 'N') = 'O') OR
80524 (NVL(l_enc_upg_option, 'N') = 'O')
80525 )
80526 THEN
80527 NULL;
80528 --
80529 --
80530
80531 l_ccid := AcctDerRule_4(
80532 p_application_id => p_application_id
80533 , p_ae_header_id => l_ae_header_id
80534 , p_source_4 => p_source_4
80535 , x_transaction_coa_id => l_adr_transaction_coa_id
80536 , x_accounting_coa_id => l_adr_accounting_coa_id
80537 , x_value_type_code => l_adr_value_type_code
80538 , p_side => 'NA'
80539 );
80540
80541 xla_ae_lines_pkg.set_ccid(
80542 p_code_combination_id => l_ccid
80543 , p_value_type_code => l_adr_value_type_code
80544 , p_transaction_coa_id => l_adr_transaction_coa_id
80545 , p_accounting_coa_id => l_adr_accounting_coa_id
80546 , p_adr_code => 'CST_DEFAULT'
80547 , p_adr_type_code => 'S'
80548 , p_component_type => l_component_type
80549 , p_component_code => l_component_code
80550 , p_component_type_code => l_component_type_code
80551 , p_component_appl_id => l_component_appl_id
80552 , p_amb_context_code => l_amb_context_code
80553 , p_side => 'NA'
80554 );
80555
80556
80557 --
80558 --
80559 END IF;
80560 --
80561 -- Bug 4922099
80562 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
80563 (NVL(l_enc_upg_option, 'N') = 'O')
80564 ) AND
80565 (l_bflow_method_code = 'PRIOR_ENTRY')
80566 )
80567 THEN
80568 IF
80569 --
80570 1 = 2
80571 --
80572 THEN
80573 xla_accounting_err_pkg.build_message
80574 (p_appli_s_name => 'XLA'
80575 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80576 ,p_token_1 => 'LINE_NUMBER'
80577 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
80578 ,p_token_2 => 'LINE_TYPE_NAME'
80579 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
80580 l_component_type
80581 ,l_component_code
80582 ,l_component_type_code
80583 ,l_component_appl_id
80584 ,l_amb_context_code
80585 ,l_entity_code
80586 ,l_event_class_code
80587 )
80588 ,p_token_3 => 'OWNER'
80589 ,p_value_3 => xla_lookups_pkg.get_meaning(
80590 p_lookup_type => 'XLA_OWNER_TYPE'
80591 ,p_lookup_code => l_component_type_code
80592 )
80593 ,p_token_4 => 'PRODUCT_NAME'
80594 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
80595 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
80596 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
80597 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
80598 ,p_ae_header_id => NULL
80599 );
80600
80601 IF (C_LEVEL_ERROR>= g_log_level) THEN
80602 trace
80603 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
80604 ,p_level => C_LEVEL_ERROR
80605 ,p_module => l_log_module);
80606 END IF;
80607 END IF;
80608 END IF;
80609 --
80610 --
80611 ------------------------------------------------------------------------------------------------
80612 -- 4219869 Business Flow
80613 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
80614 -- Prior Entry. Currently, the following code is always generated.
80615 ------------------------------------------------------------------------------------------------
80616 XLA_AE_LINES_PKG.ValidateCurrentLine;
80617
80618 ------------------------------------------------------------------------------------
80619 -- 4219869 Business Flow
80620 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
80621 ------------------------------------------------------------------------------------
80622 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80623
80624 ----------------------------------------------------------------------------------
80625 -- 4219869 Business Flow
80626 -- Update journal entry status -- Need to generate this within IF <condition>
80627 ----------------------------------------------------------------------------------
80628 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80629 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
80630 ,p_balance_type_code => l_balance_type_code
80631 );
80632
80633 -------------------------------------------------------------------------------------------
80634 -- 4262811 - Generate the Accrual Reversal lines
80635 -------------------------------------------------------------------------------------------
80636 BEGIN
80637 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
80638 (g_array_event(p_event_id).array_value_num('header_index'));
80639 IF l_acc_rev_flag IS NULL THEN
80640 l_acc_rev_flag := 'N';
80641 END IF;
80642 EXCEPTION
80643 WHEN OTHERS THEN
80644 l_acc_rev_flag := 'N';
80645 END;
80646 --
80647 IF (l_acc_rev_flag = 'Y') THEN
80648
80649 -- 4645092 ------------------------------------------------------------------------------
80650 -- To allow MPA report to determine if it should generate report process
80651 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
80652 ------------------------------------------------------------------------------------------
80653
80654 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
80655 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
80656 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
80657 -- call ADRs
80658 -- Bug 4922099
80659 --
80660 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
80661 (NVL(l_actual_upg_option, 'N') = 'O') OR
80662 (NVL(l_enc_upg_option, 'N') = 'O')
80663 )
80664 THEN
80665 NULL;
80666 --
80667 --
80668
80669 l_ccid := AcctDerRule_4(
80670 p_application_id => p_application_id
80671 , p_ae_header_id => l_ae_header_id
80672 , p_source_4 => p_source_4
80673 , x_transaction_coa_id => l_adr_transaction_coa_id
80674 , x_accounting_coa_id => l_adr_accounting_coa_id
80675 , x_value_type_code => l_adr_value_type_code
80676 , p_side => 'NA'
80677 );
80678
80679 xla_ae_lines_pkg.set_ccid(
80680 p_code_combination_id => l_ccid
80681 , p_value_type_code => l_adr_value_type_code
80682 , p_transaction_coa_id => l_adr_transaction_coa_id
80683 , p_accounting_coa_id => l_adr_accounting_coa_id
80684 , p_adr_code => 'CST_DEFAULT'
80685 , p_adr_type_code => 'S'
80686 , p_component_type => l_component_type
80687 , p_component_code => l_component_code
80688 , p_component_type_code => l_component_type_code
80689 , p_component_appl_id => l_component_appl_id
80690 , p_amb_context_code => l_amb_context_code
80691 , p_side => 'NA'
80692 );
80693
80694
80695 --
80696 --
80697 END IF;
80698
80699 --
80700 -- Update the line information that should be overwritten
80701 --
80702 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
80703 p_header_num => 1);
80704 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
80705
80706 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
80707
80708 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
80709 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
80710 END IF;
80711
80712 --
80713 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
80714 --
80715 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
80716 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
80717 ELSE
80718 ---------------------------------------------------------------------------------------------------
80719 -- 4262811a Switch Sign
80720 ---------------------------------------------------------------------------------------------------
80721 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
80722 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80723 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80724 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
80725 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80726 -- 5132302
80727 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
80728 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
80729
80730 END IF;
80731
80732 -- 4955764
80733 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
80734 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
80735
80736
80737 XLA_AE_LINES_PKG.ValidateCurrentLine;
80738 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
80739
80740 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
80741 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
80742 ,p_balance_type_code => l_balance_type_code);
80743
80744 END IF;
80745
80746 -----------------------------------------------------------------------------------------
80747 -- 4262811 Multiperiod Accounting
80748 -----------------------------------------------------------------------------------------
80749 -- No MPA option is assigned.
80750
80751
80752 END IF;
80753 END IF;
80754 --
80755
80756 --
80757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80758 trace
80759 (p_msg => 'END of AcctLineType_147'
80760 ,p_level => C_LEVEL_PROCEDURE
80761 ,p_module => l_log_module);
80762 END IF;
80763 --
80764 EXCEPTION
80765 WHEN xla_exceptions_pkg.application_exception THEN
80766 RAISE;
80767 WHEN OTHERS THEN
80768 xla_exceptions_pkg.raise_message
80769 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_147');
80770 END AcctLineType_147;
80771 --
80772
80773 ---------------------------------------
80774 --
80775 -- PRIVATE FUNCTION
80776 -- AcctLineType_148
80777 --
80778 ---------------------------------------
80779 PROCEDURE AcctLineType_148 (
80780 p_application_id IN NUMBER
80781 ,p_event_id IN NUMBER
80782 ,p_calculate_acctd_flag IN VARCHAR2
80783 ,p_calculate_g_l_flag IN VARCHAR2
80784 ,p_actual_flag IN OUT VARCHAR2
80785 ,p_balance_type_code OUT VARCHAR2
80786 ,p_gain_or_loss_ref OUT VARCHAR2
80787
80788 --Cost Management Default Account
80789 , p_source_4 IN NUMBER
80790 --Applied to Application ID
80791 , p_source_6 IN NUMBER
80792 --Applied to Distribution Link Type
80793 , p_source_7 IN VARCHAR2
80794 --Applied to Entity Code
80795 , p_source_8 IN VARCHAR2
80796 --DISTRIBUTION_IDENTIFIER
80797 , p_source_11 IN NUMBER
80798 --Distribution Type
80799 , p_source_12 IN VARCHAR2
80800 , p_source_12_meaning IN VARCHAR2
80801 --Encumbrance Reversal Amount Entered
80802 , p_source_14 IN NUMBER
80803 --Entered Currency Code
80804 , p_source_15 IN VARCHAR2
80805 --Transaction Encumbrance Reversal Amount
80806 , p_source_16 IN NUMBER
80807 --Entered Amount
80808 , p_source_18 IN NUMBER
80809 --Currency Conversion Date
80810 , p_source_19 IN DATE
80811 --Currency Conversion Rate
80812 , p_source_20 IN NUMBER
80813 --Currency Conversion Type
80814 , p_source_21 IN VARCHAR2
80815 --Accounted Amount
80816 , p_source_22 IN NUMBER
80817 --Accounting Line Type
80818 , p_source_24 IN NUMBER
80819 --Costing Encumbrance Upgrade Option
80820 , p_source_27 IN VARCHAR2
80821 --TXN_PO_DISTRIBUTION_ID
80822 , p_source_28 IN NUMBER
80823 --TXN_PO_HEADER_ID
80824 , p_source_29 IN NUMBER
80825 --Requisition Budget Account
80826 , p_source_30 IN NUMBER
80827 --Requisition Encumbrance Type Identifier
80828 , p_source_31 IN NUMBER
80829 )
80830 IS
80831
80832 l_component_type VARCHAR2(80);
80833 l_component_code VARCHAR2(30);
80834 l_component_type_code VARCHAR2(1);
80835 l_component_appl_id INTEGER;
80836 l_amb_context_code VARCHAR2(30);
80837 l_entity_code VARCHAR2(30);
80838 l_event_class_code VARCHAR2(30);
80839 l_ae_header_id NUMBER;
80840 l_event_type_code VARCHAR2(30);
80841 l_line_definition_code VARCHAR2(30);
80842 l_line_definition_owner_code VARCHAR2(1);
80843 --
80844 -- adr variables
80845 l_segment VARCHAR2(30);
80846 l_ccid NUMBER;
80847 l_adr_transaction_coa_id NUMBER;
80848 l_adr_accounting_coa_id NUMBER;
80849 l_adr_flexfield_segment_code VARCHAR2(30);
80850 l_adr_flex_value_set_id NUMBER;
80851 l_adr_value_type_code VARCHAR2(30);
80852 l_adr_value_combination_id NUMBER;
80853 l_adr_value_segment_code VARCHAR2(30);
80854
80855 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
80856 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
80857 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
80858 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
80859
80860 -- 4262811 Variables ------------------------------------------------------------------------------------------
80861 l_entered_amt_idx NUMBER;
80862 l_accted_amt_idx NUMBER;
80863 l_acc_rev_flag VARCHAR2(1);
80864 l_accrual_line_num NUMBER;
80865 l_tmp_amt NUMBER;
80866 l_acc_rev_natural_side_code VARCHAR2(1);
80867
80868 l_num_entries NUMBER;
80869 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
80870 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
80871 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
80872 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
80873 l_recog_line_1 NUMBER;
80874 l_recog_line_2 NUMBER;
80875
80876 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
80877 l_bflow_applied_to_amt NUMBER; -- 5132302
80878 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
80879
80880 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
80881
80882 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
80883 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
80884
80885 ---------------------------------------------------------------------------------------------------------------
80886
80887
80888 --
80889 -- bulk performance
80890 --
80891 l_balance_type_code VARCHAR2(1);
80892 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
80893 l_log_module VARCHAR2(240);
80894
80895 --
80896 -- Upgrade strategy
80897 --
80898 l_actual_upg_option VARCHAR2(1);
80899 l_enc_upg_option VARCHAR2(1);
80900
80901 --
80902 BEGIN
80903 --
80904 IF g_log_enabled THEN
80905 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_148';
80906 END IF;
80907 --
80908 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80909
80910 trace
80911 (p_msg => 'BEGIN of AcctLineType_148'
80912 ,p_level => C_LEVEL_PROCEDURE
80913 ,p_module => l_log_module);
80914
80915 END IF;
80916 --
80917 l_component_type := 'AMB_JLT';
80918 l_component_code := 'INVENTORY_VALUATION';
80919 l_component_type_code := 'S';
80920 l_component_appl_id := 707;
80921 l_amb_context_code := 'DEFAULT';
80922 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
80923 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
80924 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
80925 l_line_definition_owner_code := 'S';
80926 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
80927 --
80928 l_balance_type_code := 'A';
80929 l_segment := NULL;
80930 l_ccid := NULL;
80931 l_adr_transaction_coa_id := NULL;
80932 l_adr_accounting_coa_id := NULL;
80933 l_adr_flexfield_segment_code := NULL;
80934 l_adr_flex_value_set_id := NULL;
80935 l_adr_value_type_code := NULL;
80936 l_adr_value_combination_id := NULL;
80937 l_adr_value_segment_code := NULL;
80938
80939 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
80940 l_bflow_class_code := ''; -- 4219869 Business Flow
80941 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
80942 l_budgetary_control_flag := 'N';
80943
80944 l_bflow_applied_to_amt_idx := NULL; -- 5132302
80945 l_bflow_applied_to_amt := NULL; -- 5132302
80946 l_entered_amt_idx := NULL; -- 4262811
80947 l_accted_amt_idx := NULL; -- 4262811
80948 l_acc_rev_flag := NULL; -- 4262811
80949 l_accrual_line_num := NULL; -- 4262811
80950 l_tmp_amt := NULL; -- 4262811
80951 --
80952
80953 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
80954 l_balance_type_code <> 'B' THEN
80955 IF NVL(p_source_24,9E125) = 1
80956 THEN
80957
80958 --
80959 XLA_AE_LINES_PKG.SetNewLine;
80960
80961 p_balance_type_code := l_balance_type_code;
80962 -- set the flag so later we will know whether the gain loss line needs to be created
80963
80964 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
80965 p_actual_flag :='A';
80966 END IF;
80967
80968 --
80969 -- bulk performance
80970 --
80971 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
80972 p_header_num => 0); -- 4262811
80973 --
80974 -- set accounting line options
80975 --
80976 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
80977 p_natural_side_code => 'D'
80978 , p_gain_or_loss_flag => 'N'
80979 , p_gl_transfer_mode_code => 'S'
80980 , p_acct_entry_type_code => 'A'
80981 , p_switch_side_flag => 'Y'
80982 , p_merge_duplicate_code => 'N'
80983 );
80984 --
80985 l_acc_rev_natural_side_code := 'C'; -- 4262811
80986 --
80987 --
80988 -- set accounting line type info
80989 --
80990 xla_ae_lines_pkg.SetAcctLineType
80991 (p_component_type => l_component_type
80992 ,p_event_type_code => l_event_type_code
80993 ,p_line_definition_owner_code => l_line_definition_owner_code
80994 ,p_line_definition_code => l_line_definition_code
80995 ,p_accounting_line_code => l_component_code
80996 ,p_accounting_line_type_code => l_component_type_code
80997 ,p_accounting_line_appl_id => l_component_appl_id
80998 ,p_amb_context_code => l_amb_context_code
80999 ,p_entity_code => l_entity_code
81000 ,p_event_class_code => l_event_class_code);
81001 --
81002 -- set accounting class
81003 --
81004 xla_ae_lines_pkg.SetAcctClass(
81005 p_accounting_class_code => 'INVENTORY_VALUATION'
81006 , p_ae_header_id => l_ae_header_id
81007 );
81008
81009 --
81010 -- set rounding class
81011 --
81012 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81013 'INVENTORY_VALUATION';
81014
81015 --
81016 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81017 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81018 --
81019 -- bulk performance
81020 --
81021 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81022
81023 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81024 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81025
81026 -- 4955764
81027 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81028 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81029
81030 -- 4458381 Public Sector Enh
81031
81032 --
81033 -- set accounting attributes for the line type
81034 --
81035 l_entered_amt_idx := 17;
81036 l_accted_amt_idx := 22;
81037 l_bflow_applied_to_amt_idx := NULL; -- 5132302
81038 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
81039 l_rec_acct_attrs.array_num_value(1) := p_source_6;
81040 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
81041 l_rec_acct_attrs.array_char_value(2) := p_source_7;
81042 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
81043 l_rec_acct_attrs.array_char_value(3) := p_source_8;
81044 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
81045 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
81046 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
81047 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
81048 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
81049 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
81050 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
81051 l_rec_acct_attrs.array_char_value(7) := p_source_12;
81052 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
81053 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
81054 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
81055 l_rec_acct_attrs.array_num_value(9) := p_source_14;
81056 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
81057 l_rec_acct_attrs.array_char_value(10) := p_source_15;
81058 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
81059 l_rec_acct_attrs.array_num_value(11) := p_source_16;
81060 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
81061 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
81062 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
81063 l_rec_acct_attrs.array_num_value(13) := p_source_14;
81064 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
81065 l_rec_acct_attrs.array_char_value(14) := p_source_15;
81066 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
81067 l_rec_acct_attrs.array_num_value(15) := p_source_16;
81068 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
81069 l_rec_acct_attrs.array_char_value(16) := p_source_27;
81070 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
81071 l_rec_acct_attrs.array_num_value(17) := p_source_18;
81072 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
81073 l_rec_acct_attrs.array_char_value(18) := p_source_15;
81074 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
81075 l_rec_acct_attrs.array_date_value(19) := p_source_19;
81076 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
81077 l_rec_acct_attrs.array_num_value(20) := p_source_20;
81078 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
81079 l_rec_acct_attrs.array_char_value(21) := p_source_21;
81080 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
81081 l_rec_acct_attrs.array_num_value(22) := p_source_22;
81082 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
81083 l_rec_acct_attrs.array_num_value(23) := p_source_31;
81084 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
81085 l_rec_acct_attrs.array_num_value(24) := p_source_31;
81086
81087 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81088 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81089
81090 ---------------------------------------------------------------------------------------------------------------
81091 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81092 ---------------------------------------------------------------------------------------------------------------
81093 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81094
81095 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81096 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81097
81098 IF xla_accounting_cache_pkg.GetValueChar
81099 (p_source_code => 'LEDGER_CATEGORY_CODE'
81100 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81101 AND l_bflow_method_code = 'PRIOR_ENTRY'
81102 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81103 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81104 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81105 )
81106 THEN
81107 xla_ae_lines_pkg.BflowUpgEntry
81108 (p_business_method_code => l_bflow_method_code
81109 ,p_business_class_code => l_bflow_class_code
81110 ,p_balance_type => l_balance_type_code);
81111 ELSE
81112 NULL;
81113 -- No business flow processing for business flow method of NONE.
81114 END IF;
81115
81116 --
81117 -- call analytical criteria
81118 --
81119
81120 --
81121 -- call description
81122 --
81123 -- No description or it is inherited.
81124 --
81125 -- call ADRs
81126 -- Bug 4922099
81127 --
81128 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81129 (NVL(l_actual_upg_option, 'N') = 'O') OR
81130 (NVL(l_enc_upg_option, 'N') = 'O')
81131 )
81132 THEN
81133 NULL;
81134 --
81135 --
81136
81137 l_ccid := AcctDerRule_4(
81138 p_application_id => p_application_id
81139 , p_ae_header_id => l_ae_header_id
81140 , p_source_4 => p_source_4
81141 , x_transaction_coa_id => l_adr_transaction_coa_id
81142 , x_accounting_coa_id => l_adr_accounting_coa_id
81143 , x_value_type_code => l_adr_value_type_code
81144 , p_side => 'NA'
81145 );
81146
81147 xla_ae_lines_pkg.set_ccid(
81148 p_code_combination_id => l_ccid
81149 , p_value_type_code => l_adr_value_type_code
81150 , p_transaction_coa_id => l_adr_transaction_coa_id
81151 , p_accounting_coa_id => l_adr_accounting_coa_id
81152 , p_adr_code => 'CST_DEFAULT'
81153 , p_adr_type_code => 'S'
81154 , p_component_type => l_component_type
81155 , p_component_code => l_component_code
81156 , p_component_type_code => l_component_type_code
81157 , p_component_appl_id => l_component_appl_id
81158 , p_amb_context_code => l_amb_context_code
81159 , p_side => 'NA'
81160 );
81161
81162
81163 --
81164 --
81165 END IF;
81166 --
81167 -- Bug 4922099
81168 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81169 (NVL(l_enc_upg_option, 'N') = 'O')
81170 ) AND
81171 (l_bflow_method_code = 'PRIOR_ENTRY')
81172 )
81173 THEN
81174 IF
81175 --
81176 1 = 2
81177 --
81178 THEN
81179 xla_accounting_err_pkg.build_message
81180 (p_appli_s_name => 'XLA'
81181 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81182 ,p_token_1 => 'LINE_NUMBER'
81183 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
81184 ,p_token_2 => 'LINE_TYPE_NAME'
81185 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
81186 l_component_type
81187 ,l_component_code
81188 ,l_component_type_code
81189 ,l_component_appl_id
81190 ,l_amb_context_code
81191 ,l_entity_code
81192 ,l_event_class_code
81193 )
81194 ,p_token_3 => 'OWNER'
81195 ,p_value_3 => xla_lookups_pkg.get_meaning(
81196 p_lookup_type => 'XLA_OWNER_TYPE'
81197 ,p_lookup_code => l_component_type_code
81198 )
81199 ,p_token_4 => 'PRODUCT_NAME'
81200 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81201 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81202 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81203 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81204 ,p_ae_header_id => NULL
81205 );
81206
81207 IF (C_LEVEL_ERROR>= g_log_level) THEN
81208 trace
81209 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81210 ,p_level => C_LEVEL_ERROR
81211 ,p_module => l_log_module);
81212 END IF;
81213 END IF;
81214 END IF;
81215 --
81216 --
81217 ------------------------------------------------------------------------------------------------
81218 -- 4219869 Business Flow
81219 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81220 -- Prior Entry. Currently, the following code is always generated.
81221 ------------------------------------------------------------------------------------------------
81222 XLA_AE_LINES_PKG.ValidateCurrentLine;
81223
81224 ------------------------------------------------------------------------------------
81225 -- 4219869 Business Flow
81226 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81227 ------------------------------------------------------------------------------------
81228 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81229
81230 ----------------------------------------------------------------------------------
81231 -- 4219869 Business Flow
81232 -- Update journal entry status -- Need to generate this within IF <condition>
81233 ----------------------------------------------------------------------------------
81234 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81235 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81236 ,p_balance_type_code => l_balance_type_code
81237 );
81238
81239 -------------------------------------------------------------------------------------------
81240 -- 4262811 - Generate the Accrual Reversal lines
81241 -------------------------------------------------------------------------------------------
81242 BEGIN
81243 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81244 (g_array_event(p_event_id).array_value_num('header_index'));
81245 IF l_acc_rev_flag IS NULL THEN
81246 l_acc_rev_flag := 'N';
81247 END IF;
81248 EXCEPTION
81249 WHEN OTHERS THEN
81250 l_acc_rev_flag := 'N';
81251 END;
81252 --
81253 IF (l_acc_rev_flag = 'Y') THEN
81254
81255 -- 4645092 ------------------------------------------------------------------------------
81256 -- To allow MPA report to determine if it should generate report process
81257 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81258 ------------------------------------------------------------------------------------------
81259
81260 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81261 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81262 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
81263 -- call ADRs
81264 -- Bug 4922099
81265 --
81266 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81267 (NVL(l_actual_upg_option, 'N') = 'O') OR
81268 (NVL(l_enc_upg_option, 'N') = 'O')
81269 )
81270 THEN
81271 NULL;
81272 --
81273 --
81274
81275 l_ccid := AcctDerRule_4(
81276 p_application_id => p_application_id
81277 , p_ae_header_id => l_ae_header_id
81278 , p_source_4 => p_source_4
81279 , x_transaction_coa_id => l_adr_transaction_coa_id
81280 , x_accounting_coa_id => l_adr_accounting_coa_id
81281 , x_value_type_code => l_adr_value_type_code
81282 , p_side => 'NA'
81283 );
81284
81285 xla_ae_lines_pkg.set_ccid(
81286 p_code_combination_id => l_ccid
81287 , p_value_type_code => l_adr_value_type_code
81288 , p_transaction_coa_id => l_adr_transaction_coa_id
81289 , p_accounting_coa_id => l_adr_accounting_coa_id
81290 , p_adr_code => 'CST_DEFAULT'
81291 , p_adr_type_code => 'S'
81292 , p_component_type => l_component_type
81293 , p_component_code => l_component_code
81294 , p_component_type_code => l_component_type_code
81295 , p_component_appl_id => l_component_appl_id
81296 , p_amb_context_code => l_amb_context_code
81297 , p_side => 'NA'
81298 );
81299
81300
81301 --
81302 --
81303 END IF;
81304
81305 --
81306 -- Update the line information that should be overwritten
81307 --
81308 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81309 p_header_num => 1);
81310 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
81311
81312 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81313
81314 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
81315 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81316 END IF;
81317
81318 --
81319 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81320 --
81321 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81322 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
81323 ELSE
81324 ---------------------------------------------------------------------------------------------------
81325 -- 4262811a Switch Sign
81326 ---------------------------------------------------------------------------------------------------
81327 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
81328 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81329 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81330 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81331 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81332 -- 5132302
81333 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81334 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81335
81336 END IF;
81337
81338 -- 4955764
81339 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81340 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81341
81342
81343 XLA_AE_LINES_PKG.ValidateCurrentLine;
81344 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81345
81346 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81347 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81348 ,p_balance_type_code => l_balance_type_code);
81349
81350 END IF;
81351
81352 -----------------------------------------------------------------------------------------
81353 -- 4262811 Multiperiod Accounting
81354 -----------------------------------------------------------------------------------------
81355 -- No MPA option is assigned.
81356
81357
81358 END IF;
81359 END IF;
81360 --
81361
81362 --
81363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81364 trace
81365 (p_msg => 'END of AcctLineType_148'
81366 ,p_level => C_LEVEL_PROCEDURE
81367 ,p_module => l_log_module);
81368 END IF;
81369 --
81370 EXCEPTION
81371 WHEN xla_exceptions_pkg.application_exception THEN
81372 RAISE;
81373 WHEN OTHERS THEN
81374 xla_exceptions_pkg.raise_message
81375 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_148');
81376 END AcctLineType_148;
81377 --
81378
81379 ---------------------------------------
81380 --
81381 -- PRIVATE FUNCTION
81382 -- AcctLineType_149
81383 --
81384 ---------------------------------------
81385 PROCEDURE AcctLineType_149 (
81386 p_application_id IN NUMBER
81387 ,p_event_id IN NUMBER
81388 ,p_calculate_acctd_flag IN VARCHAR2
81389 ,p_calculate_g_l_flag IN VARCHAR2
81390 ,p_actual_flag IN OUT VARCHAR2
81391 ,p_balance_type_code OUT VARCHAR2
81392 ,p_gain_or_loss_ref OUT VARCHAR2
81393
81394 --Cost Management Default Account
81395 , p_source_4 IN NUMBER
81396 --DISTRIBUTION_IDENTIFIER
81397 , p_source_11 IN NUMBER
81398 --Distribution Type
81399 , p_source_12 IN VARCHAR2
81400 , p_source_12_meaning IN VARCHAR2
81401 --Entered Currency Code
81402 , p_source_15 IN VARCHAR2
81403 --Entered Amount
81404 , p_source_18 IN NUMBER
81405 --Currency Conversion Date
81406 , p_source_19 IN DATE
81407 --Currency Conversion Rate
81408 , p_source_20 IN NUMBER
81409 --Currency Conversion Type
81410 , p_source_21 IN VARCHAR2
81411 --Accounted Amount
81412 , p_source_22 IN NUMBER
81413 --Accounting Line Type
81414 , p_source_24 IN NUMBER
81415 )
81416 IS
81417
81418 l_component_type VARCHAR2(80);
81419 l_component_code VARCHAR2(30);
81420 l_component_type_code VARCHAR2(1);
81421 l_component_appl_id INTEGER;
81422 l_amb_context_code VARCHAR2(30);
81423 l_entity_code VARCHAR2(30);
81424 l_event_class_code VARCHAR2(30);
81425 l_ae_header_id NUMBER;
81426 l_event_type_code VARCHAR2(30);
81427 l_line_definition_code VARCHAR2(30);
81428 l_line_definition_owner_code VARCHAR2(1);
81429 --
81430 -- adr variables
81431 l_segment VARCHAR2(30);
81432 l_ccid NUMBER;
81433 l_adr_transaction_coa_id NUMBER;
81434 l_adr_accounting_coa_id NUMBER;
81435 l_adr_flexfield_segment_code VARCHAR2(30);
81436 l_adr_flex_value_set_id NUMBER;
81437 l_adr_value_type_code VARCHAR2(30);
81438 l_adr_value_combination_id NUMBER;
81439 l_adr_value_segment_code VARCHAR2(30);
81440
81441 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
81442 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
81443 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
81444 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
81445
81446 -- 4262811 Variables ------------------------------------------------------------------------------------------
81447 l_entered_amt_idx NUMBER;
81448 l_accted_amt_idx NUMBER;
81449 l_acc_rev_flag VARCHAR2(1);
81450 l_accrual_line_num NUMBER;
81451 l_tmp_amt NUMBER;
81452 l_acc_rev_natural_side_code VARCHAR2(1);
81453
81454 l_num_entries NUMBER;
81455 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
81456 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
81457 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
81458 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
81459 l_recog_line_1 NUMBER;
81460 l_recog_line_2 NUMBER;
81461
81462 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
81463 l_bflow_applied_to_amt NUMBER; -- 5132302
81464 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
81465
81466 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
81467
81468 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
81469 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
81470
81471 ---------------------------------------------------------------------------------------------------------------
81472
81473
81474 --
81475 -- bulk performance
81476 --
81477 l_balance_type_code VARCHAR2(1);
81478 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
81479 l_log_module VARCHAR2(240);
81480
81481 --
81482 -- Upgrade strategy
81483 --
81484 l_actual_upg_option VARCHAR2(1);
81485 l_enc_upg_option VARCHAR2(1);
81486
81487 --
81488 BEGIN
81489 --
81490 IF g_log_enabled THEN
81491 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_149';
81492 END IF;
81493 --
81494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81495
81496 trace
81497 (p_msg => 'BEGIN of AcctLineType_149'
81498 ,p_level => C_LEVEL_PROCEDURE
81499 ,p_module => l_log_module);
81500
81501 END IF;
81502 --
81503 l_component_type := 'AMB_JLT';
81504 l_component_code := 'INVENTORY_VALUATION';
81505 l_component_type_code := 'S';
81506 l_component_appl_id := 707;
81507 l_amb_context_code := 'DEFAULT';
81508 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
81509 l_event_class_code := 'FOB_RCPT_SENDER_SHIP';
81510 l_event_type_code := 'FOB_RCPT_SENDER_SHIP_ALL';
81511 l_line_definition_owner_code := 'S';
81512 l_line_definition_code := 'FOB_RCPT_SEND_SHIP';
81513 --
81514 l_balance_type_code := 'A';
81515 l_segment := NULL;
81516 l_ccid := NULL;
81517 l_adr_transaction_coa_id := NULL;
81518 l_adr_accounting_coa_id := NULL;
81519 l_adr_flexfield_segment_code := NULL;
81520 l_adr_flex_value_set_id := NULL;
81521 l_adr_value_type_code := NULL;
81522 l_adr_value_combination_id := NULL;
81523 l_adr_value_segment_code := NULL;
81524
81525 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
81526 l_bflow_class_code := ''; -- 4219869 Business Flow
81527 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
81528 l_budgetary_control_flag := 'N';
81529
81530 l_bflow_applied_to_amt_idx := NULL; -- 5132302
81531 l_bflow_applied_to_amt := NULL; -- 5132302
81532 l_entered_amt_idx := NULL; -- 4262811
81533 l_accted_amt_idx := NULL; -- 4262811
81534 l_acc_rev_flag := NULL; -- 4262811
81535 l_accrual_line_num := NULL; -- 4262811
81536 l_tmp_amt := NULL; -- 4262811
81537 --
81538
81539 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
81540 l_balance_type_code <> 'B' THEN
81541 IF NVL(p_source_24,9E125) = 1
81542 THEN
81543
81544 --
81545 XLA_AE_LINES_PKG.SetNewLine;
81546
81547 p_balance_type_code := l_balance_type_code;
81548 -- set the flag so later we will know whether the gain loss line needs to be created
81549
81550 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
81551 p_actual_flag :='A';
81552 END IF;
81553
81554 --
81555 -- bulk performance
81556 --
81557 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
81558 p_header_num => 0); -- 4262811
81559 --
81560 -- set accounting line options
81561 --
81562 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
81563 p_natural_side_code => 'D'
81564 , p_gain_or_loss_flag => 'N'
81565 , p_gl_transfer_mode_code => 'S'
81566 , p_acct_entry_type_code => 'A'
81567 , p_switch_side_flag => 'Y'
81568 , p_merge_duplicate_code => 'N'
81569 );
81570 --
81571 l_acc_rev_natural_side_code := 'C'; -- 4262811
81572 --
81573 --
81574 -- set accounting line type info
81575 --
81576 xla_ae_lines_pkg.SetAcctLineType
81577 (p_component_type => l_component_type
81578 ,p_event_type_code => l_event_type_code
81579 ,p_line_definition_owner_code => l_line_definition_owner_code
81580 ,p_line_definition_code => l_line_definition_code
81581 ,p_accounting_line_code => l_component_code
81582 ,p_accounting_line_type_code => l_component_type_code
81583 ,p_accounting_line_appl_id => l_component_appl_id
81584 ,p_amb_context_code => l_amb_context_code
81585 ,p_entity_code => l_entity_code
81586 ,p_event_class_code => l_event_class_code);
81587 --
81588 -- set accounting class
81589 --
81590 xla_ae_lines_pkg.SetAcctClass(
81591 p_accounting_class_code => 'INVENTORY_VALUATION'
81592 , p_ae_header_id => l_ae_header_id
81593 );
81594
81595 --
81596 -- set rounding class
81597 --
81598 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
81599 'INVENTORY_VALUATION';
81600
81601 --
81602 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
81603 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
81604 --
81605 -- bulk performance
81606 --
81607 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
81608
81609 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
81610 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
81611
81612 -- 4955764
81613 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81614 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
81615
81616 -- 4458381 Public Sector Enh
81617
81618 --
81619 -- set accounting attributes for the line type
81620 --
81621 l_entered_amt_idx := 3;
81622 l_accted_amt_idx := 8;
81623 l_bflow_applied_to_amt_idx := NULL; -- 5132302
81624 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
81625 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
81626 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
81627 l_rec_acct_attrs.array_char_value(2) := p_source_12;
81628 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
81629 l_rec_acct_attrs.array_num_value(3) := p_source_18;
81630 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
81631 l_rec_acct_attrs.array_char_value(4) := p_source_15;
81632 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
81633 l_rec_acct_attrs.array_date_value(5) := p_source_19;
81634 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
81635 l_rec_acct_attrs.array_num_value(6) := p_source_20;
81636 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
81637 l_rec_acct_attrs.array_char_value(7) := p_source_21;
81638 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
81639 l_rec_acct_attrs.array_num_value(8) := p_source_22;
81640
81641 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
81642 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
81643
81644 ---------------------------------------------------------------------------------------------------------------
81645 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
81646 ---------------------------------------------------------------------------------------------------------------
81647 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
81648
81649 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81650 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
81651
81652 IF xla_accounting_cache_pkg.GetValueChar
81653 (p_source_code => 'LEDGER_CATEGORY_CODE'
81654 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
81655 AND l_bflow_method_code = 'PRIOR_ENTRY'
81656 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
81657 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
81658 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
81659 )
81660 THEN
81661 xla_ae_lines_pkg.BflowUpgEntry
81662 (p_business_method_code => l_bflow_method_code
81663 ,p_business_class_code => l_bflow_class_code
81664 ,p_balance_type => l_balance_type_code);
81665 ELSE
81666 NULL;
81667 -- No business flow processing for business flow method of NONE.
81668 END IF;
81669
81670 --
81671 -- call analytical criteria
81672 --
81673
81674 --
81675 -- call description
81676 --
81677 -- No description or it is inherited.
81678 --
81679 -- call ADRs
81680 -- Bug 4922099
81681 --
81682 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81683 (NVL(l_actual_upg_option, 'N') = 'O') OR
81684 (NVL(l_enc_upg_option, 'N') = 'O')
81685 )
81686 THEN
81687 NULL;
81688 --
81689 --
81690
81691 l_ccid := AcctDerRule_4(
81692 p_application_id => p_application_id
81693 , p_ae_header_id => l_ae_header_id
81694 , p_source_4 => p_source_4
81695 , x_transaction_coa_id => l_adr_transaction_coa_id
81696 , x_accounting_coa_id => l_adr_accounting_coa_id
81697 , x_value_type_code => l_adr_value_type_code
81698 , p_side => 'NA'
81699 );
81700
81701 xla_ae_lines_pkg.set_ccid(
81702 p_code_combination_id => l_ccid
81703 , p_value_type_code => l_adr_value_type_code
81704 , p_transaction_coa_id => l_adr_transaction_coa_id
81705 , p_accounting_coa_id => l_adr_accounting_coa_id
81706 , p_adr_code => 'CST_DEFAULT'
81707 , p_adr_type_code => 'S'
81708 , p_component_type => l_component_type
81709 , p_component_code => l_component_code
81710 , p_component_type_code => l_component_type_code
81711 , p_component_appl_id => l_component_appl_id
81712 , p_amb_context_code => l_amb_context_code
81713 , p_side => 'NA'
81714 );
81715
81716
81717 --
81718 --
81719 END IF;
81720 --
81721 -- Bug 4922099
81722 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
81723 (NVL(l_enc_upg_option, 'N') = 'O')
81724 ) AND
81725 (l_bflow_method_code = 'PRIOR_ENTRY')
81726 )
81727 THEN
81728 IF
81729 --
81730 1 = 2
81731 --
81732 THEN
81733 xla_accounting_err_pkg.build_message
81734 (p_appli_s_name => 'XLA'
81735 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81736 ,p_token_1 => 'LINE_NUMBER'
81737 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
81738 ,p_token_2 => 'LINE_TYPE_NAME'
81739 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
81740 l_component_type
81741 ,l_component_code
81742 ,l_component_type_code
81743 ,l_component_appl_id
81744 ,l_amb_context_code
81745 ,l_entity_code
81746 ,l_event_class_code
81747 )
81748 ,p_token_3 => 'OWNER'
81749 ,p_value_3 => xla_lookups_pkg.get_meaning(
81750 p_lookup_type => 'XLA_OWNER_TYPE'
81751 ,p_lookup_code => l_component_type_code
81752 )
81753 ,p_token_4 => 'PRODUCT_NAME'
81754 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
81755 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
81756 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
81757 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
81758 ,p_ae_header_id => NULL
81759 );
81760
81761 IF (C_LEVEL_ERROR>= g_log_level) THEN
81762 trace
81763 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
81764 ,p_level => C_LEVEL_ERROR
81765 ,p_module => l_log_module);
81766 END IF;
81767 END IF;
81768 END IF;
81769 --
81770 --
81771 ------------------------------------------------------------------------------------------------
81772 -- 4219869 Business Flow
81773 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
81774 -- Prior Entry. Currently, the following code is always generated.
81775 ------------------------------------------------------------------------------------------------
81776 XLA_AE_LINES_PKG.ValidateCurrentLine;
81777
81778 ------------------------------------------------------------------------------------
81779 -- 4219869 Business Flow
81780 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
81781 ------------------------------------------------------------------------------------
81782 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81783
81784 ----------------------------------------------------------------------------------
81785 -- 4219869 Business Flow
81786 -- Update journal entry status -- Need to generate this within IF <condition>
81787 ----------------------------------------------------------------------------------
81788 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81789 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
81790 ,p_balance_type_code => l_balance_type_code
81791 );
81792
81793 -------------------------------------------------------------------------------------------
81794 -- 4262811 - Generate the Accrual Reversal lines
81795 -------------------------------------------------------------------------------------------
81796 BEGIN
81797 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
81798 (g_array_event(p_event_id).array_value_num('header_index'));
81799 IF l_acc_rev_flag IS NULL THEN
81800 l_acc_rev_flag := 'N';
81801 END IF;
81802 EXCEPTION
81803 WHEN OTHERS THEN
81804 l_acc_rev_flag := 'N';
81805 END;
81806 --
81807 IF (l_acc_rev_flag = 'Y') THEN
81808
81809 -- 4645092 ------------------------------------------------------------------------------
81810 -- To allow MPA report to determine if it should generate report process
81811 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
81812 ------------------------------------------------------------------------------------------
81813
81814 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
81815 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
81816 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
81817 -- call ADRs
81818 -- Bug 4922099
81819 --
81820 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
81821 (NVL(l_actual_upg_option, 'N') = 'O') OR
81822 (NVL(l_enc_upg_option, 'N') = 'O')
81823 )
81824 THEN
81825 NULL;
81826 --
81827 --
81828
81829 l_ccid := AcctDerRule_4(
81830 p_application_id => p_application_id
81831 , p_ae_header_id => l_ae_header_id
81832 , p_source_4 => p_source_4
81833 , x_transaction_coa_id => l_adr_transaction_coa_id
81834 , x_accounting_coa_id => l_adr_accounting_coa_id
81835 , x_value_type_code => l_adr_value_type_code
81836 , p_side => 'NA'
81837 );
81838
81839 xla_ae_lines_pkg.set_ccid(
81840 p_code_combination_id => l_ccid
81841 , p_value_type_code => l_adr_value_type_code
81842 , p_transaction_coa_id => l_adr_transaction_coa_id
81843 , p_accounting_coa_id => l_adr_accounting_coa_id
81844 , p_adr_code => 'CST_DEFAULT'
81845 , p_adr_type_code => 'S'
81846 , p_component_type => l_component_type
81847 , p_component_code => l_component_code
81848 , p_component_type_code => l_component_type_code
81849 , p_component_appl_id => l_component_appl_id
81850 , p_amb_context_code => l_amb_context_code
81851 , p_side => 'NA'
81852 );
81853
81854
81855 --
81856 --
81857 END IF;
81858
81859 --
81860 -- Update the line information that should be overwritten
81861 --
81862 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
81863 p_header_num => 1);
81864 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
81865
81866 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
81867
81868 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
81869 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
81870 END IF;
81871
81872 --
81873 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
81874 --
81875 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
81876 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
81877 ELSE
81878 ---------------------------------------------------------------------------------------------------
81879 -- 4262811a Switch Sign
81880 ---------------------------------------------------------------------------------------------------
81881 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
81882 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81883 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81884 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
81885 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81886 -- 5132302
81887 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
81888 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
81889
81890 END IF;
81891
81892 -- 4955764
81893 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
81894 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
81895
81896
81897 XLA_AE_LINES_PKG.ValidateCurrentLine;
81898 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
81899
81900 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
81901 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
81902 ,p_balance_type_code => l_balance_type_code);
81903
81904 END IF;
81905
81906 -----------------------------------------------------------------------------------------
81907 -- 4262811 Multiperiod Accounting
81908 -----------------------------------------------------------------------------------------
81909 -- No MPA option is assigned.
81910
81911
81912 END IF;
81913 END IF;
81914 --
81915
81916 --
81917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81918 trace
81919 (p_msg => 'END of AcctLineType_149'
81920 ,p_level => C_LEVEL_PROCEDURE
81921 ,p_module => l_log_module);
81922 END IF;
81923 --
81924 EXCEPTION
81925 WHEN xla_exceptions_pkg.application_exception THEN
81926 RAISE;
81927 WHEN OTHERS THEN
81928 xla_exceptions_pkg.raise_message
81929 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_149');
81930 END AcctLineType_149;
81931 --
81932
81933 ---------------------------------------
81934 --
81935 -- PRIVATE FUNCTION
81936 -- AcctLineType_150
81937 --
81938 ---------------------------------------
81939 PROCEDURE AcctLineType_150 (
81940 p_application_id IN NUMBER
81941 ,p_event_id IN NUMBER
81942 ,p_calculate_acctd_flag IN VARCHAR2
81943 ,p_calculate_g_l_flag IN VARCHAR2
81944 ,p_actual_flag IN OUT VARCHAR2
81945 ,p_balance_type_code OUT VARCHAR2
81946 ,p_gain_or_loss_ref OUT VARCHAR2
81947
81948 --Cost Management Default Account
81949 , p_source_4 IN NUMBER
81950 --DISTRIBUTION_IDENTIFIER
81951 , p_source_11 IN NUMBER
81952 --Distribution Type
81953 , p_source_12 IN VARCHAR2
81954 , p_source_12_meaning IN VARCHAR2
81955 --Entered Currency Code
81956 , p_source_15 IN VARCHAR2
81957 --Entered Amount
81958 , p_source_18 IN NUMBER
81959 --Currency Conversion Date
81960 , p_source_19 IN DATE
81961 --Currency Conversion Rate
81962 , p_source_20 IN NUMBER
81963 --Currency Conversion Type
81964 , p_source_21 IN VARCHAR2
81965 --Accounted Amount
81966 , p_source_22 IN NUMBER
81967 --Accounting Line Type
81968 , p_source_24 IN NUMBER
81969 )
81970 IS
81971
81972 l_component_type VARCHAR2(80);
81973 l_component_code VARCHAR2(30);
81974 l_component_type_code VARCHAR2(1);
81975 l_component_appl_id INTEGER;
81976 l_amb_context_code VARCHAR2(30);
81977 l_entity_code VARCHAR2(30);
81978 l_event_class_code VARCHAR2(30);
81979 l_ae_header_id NUMBER;
81980 l_event_type_code VARCHAR2(30);
81981 l_line_definition_code VARCHAR2(30);
81982 l_line_definition_owner_code VARCHAR2(1);
81983 --
81984 -- adr variables
81985 l_segment VARCHAR2(30);
81986 l_ccid NUMBER;
81987 l_adr_transaction_coa_id NUMBER;
81988 l_adr_accounting_coa_id NUMBER;
81989 l_adr_flexfield_segment_code VARCHAR2(30);
81990 l_adr_flex_value_set_id NUMBER;
81991 l_adr_value_type_code VARCHAR2(30);
81992 l_adr_value_combination_id NUMBER;
81993 l_adr_value_segment_code VARCHAR2(30);
81994
81995 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
81996 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
81997 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
81998 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
81999
82000 -- 4262811 Variables ------------------------------------------------------------------------------------------
82001 l_entered_amt_idx NUMBER;
82002 l_accted_amt_idx NUMBER;
82003 l_acc_rev_flag VARCHAR2(1);
82004 l_accrual_line_num NUMBER;
82005 l_tmp_amt NUMBER;
82006 l_acc_rev_natural_side_code VARCHAR2(1);
82007
82008 l_num_entries NUMBER;
82009 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
82010 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
82011 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
82012 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
82013 l_recog_line_1 NUMBER;
82014 l_recog_line_2 NUMBER;
82015
82016 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
82017 l_bflow_applied_to_amt NUMBER; -- 5132302
82018 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
82019
82020 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82021
82022 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
82023 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
82024
82025 ---------------------------------------------------------------------------------------------------------------
82026
82027
82028 --
82029 -- bulk performance
82030 --
82031 l_balance_type_code VARCHAR2(1);
82032 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
82033 l_log_module VARCHAR2(240);
82034
82035 --
82036 -- Upgrade strategy
82037 --
82038 l_actual_upg_option VARCHAR2(1);
82039 l_enc_upg_option VARCHAR2(1);
82040
82041 --
82042 BEGIN
82043 --
82044 IF g_log_enabled THEN
82045 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_150';
82046 END IF;
82047 --
82048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82049
82050 trace
82051 (p_msg => 'BEGIN of AcctLineType_150'
82052 ,p_level => C_LEVEL_PROCEDURE
82053 ,p_module => l_log_module);
82054
82055 END IF;
82056 --
82057 l_component_type := 'AMB_JLT';
82058 l_component_code := 'INVENTORY_VALUATION';
82059 l_component_type_code := 'S';
82060 l_component_appl_id := 707;
82061 l_amb_context_code := 'DEFAULT';
82062 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
82063 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
82064 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
82065 l_line_definition_owner_code := 'S';
82066 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
82067 --
82068 l_balance_type_code := 'A';
82069 l_segment := NULL;
82070 l_ccid := NULL;
82071 l_adr_transaction_coa_id := NULL;
82072 l_adr_accounting_coa_id := NULL;
82073 l_adr_flexfield_segment_code := NULL;
82074 l_adr_flex_value_set_id := NULL;
82075 l_adr_value_type_code := NULL;
82076 l_adr_value_combination_id := NULL;
82077 l_adr_value_segment_code := NULL;
82078
82079 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
82080 l_bflow_class_code := ''; -- 4219869 Business Flow
82081 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
82082 l_budgetary_control_flag := 'N';
82083
82084 l_bflow_applied_to_amt_idx := NULL; -- 5132302
82085 l_bflow_applied_to_amt := NULL; -- 5132302
82086 l_entered_amt_idx := NULL; -- 4262811
82087 l_accted_amt_idx := NULL; -- 4262811
82088 l_acc_rev_flag := NULL; -- 4262811
82089 l_accrual_line_num := NULL; -- 4262811
82090 l_tmp_amt := NULL; -- 4262811
82091 --
82092
82093 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82094 l_balance_type_code <> 'B' THEN
82095 IF NVL(p_source_24,9E125) = 1
82096 THEN
82097
82098 --
82099 XLA_AE_LINES_PKG.SetNewLine;
82100
82101 p_balance_type_code := l_balance_type_code;
82102 -- set the flag so later we will know whether the gain loss line needs to be created
82103
82104 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82105 p_actual_flag :='A';
82106 END IF;
82107
82108 --
82109 -- bulk performance
82110 --
82111 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82112 p_header_num => 0); -- 4262811
82113 --
82114 -- set accounting line options
82115 --
82116 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82117 p_natural_side_code => 'D'
82118 , p_gain_or_loss_flag => 'N'
82119 , p_gl_transfer_mode_code => 'S'
82120 , p_acct_entry_type_code => 'A'
82121 , p_switch_side_flag => 'Y'
82122 , p_merge_duplicate_code => 'N'
82123 );
82124 --
82125 l_acc_rev_natural_side_code := 'C'; -- 4262811
82126 --
82127 --
82128 -- set accounting line type info
82129 --
82130 xla_ae_lines_pkg.SetAcctLineType
82131 (p_component_type => l_component_type
82132 ,p_event_type_code => l_event_type_code
82133 ,p_line_definition_owner_code => l_line_definition_owner_code
82134 ,p_line_definition_code => l_line_definition_code
82135 ,p_accounting_line_code => l_component_code
82136 ,p_accounting_line_type_code => l_component_type_code
82137 ,p_accounting_line_appl_id => l_component_appl_id
82138 ,p_amb_context_code => l_amb_context_code
82139 ,p_entity_code => l_entity_code
82140 ,p_event_class_code => l_event_class_code);
82141 --
82142 -- set accounting class
82143 --
82144 xla_ae_lines_pkg.SetAcctClass(
82145 p_accounting_class_code => 'INVENTORY_VALUATION'
82146 , p_ae_header_id => l_ae_header_id
82147 );
82148
82149 --
82150 -- set rounding class
82151 --
82152 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82153 'INVENTORY_VALUATION';
82154
82155 --
82156 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82157 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82158 --
82159 -- bulk performance
82160 --
82161 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82162
82163 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82164 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82165
82166 -- 4955764
82167 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82168 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82169
82170 -- 4458381 Public Sector Enh
82171
82172 --
82173 -- set accounting attributes for the line type
82174 --
82175 l_entered_amt_idx := 3;
82176 l_accted_amt_idx := 8;
82177 l_bflow_applied_to_amt_idx := NULL; -- 5132302
82178 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
82179 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
82180 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
82181 l_rec_acct_attrs.array_char_value(2) := p_source_12;
82182 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
82183 l_rec_acct_attrs.array_num_value(3) := p_source_18;
82184 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
82185 l_rec_acct_attrs.array_char_value(4) := p_source_15;
82186 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
82187 l_rec_acct_attrs.array_date_value(5) := p_source_19;
82188 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
82189 l_rec_acct_attrs.array_num_value(6) := p_source_20;
82190 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
82191 l_rec_acct_attrs.array_char_value(7) := p_source_21;
82192 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
82193 l_rec_acct_attrs.array_num_value(8) := p_source_22;
82194
82195 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82196 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82197
82198 ---------------------------------------------------------------------------------------------------------------
82199 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82200 ---------------------------------------------------------------------------------------------------------------
82201 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82202
82203 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82204 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82205
82206 IF xla_accounting_cache_pkg.GetValueChar
82207 (p_source_code => 'LEDGER_CATEGORY_CODE'
82208 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82209 AND l_bflow_method_code = 'PRIOR_ENTRY'
82210 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82211 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82212 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82213 )
82214 THEN
82215 xla_ae_lines_pkg.BflowUpgEntry
82216 (p_business_method_code => l_bflow_method_code
82217 ,p_business_class_code => l_bflow_class_code
82218 ,p_balance_type => l_balance_type_code);
82219 ELSE
82220 NULL;
82221 -- No business flow processing for business flow method of NONE.
82222 END IF;
82223
82224 --
82225 -- call analytical criteria
82226 --
82227
82228 --
82229 -- call description
82230 --
82231 -- No description or it is inherited.
82232 --
82233 -- call ADRs
82234 -- Bug 4922099
82235 --
82236 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82237 (NVL(l_actual_upg_option, 'N') = 'O') OR
82238 (NVL(l_enc_upg_option, 'N') = 'O')
82239 )
82240 THEN
82241 NULL;
82242 --
82243 --
82244
82245 l_ccid := AcctDerRule_4(
82246 p_application_id => p_application_id
82247 , p_ae_header_id => l_ae_header_id
82248 , p_source_4 => p_source_4
82249 , x_transaction_coa_id => l_adr_transaction_coa_id
82250 , x_accounting_coa_id => l_adr_accounting_coa_id
82251 , x_value_type_code => l_adr_value_type_code
82252 , p_side => 'NA'
82253 );
82254
82255 xla_ae_lines_pkg.set_ccid(
82256 p_code_combination_id => l_ccid
82257 , p_value_type_code => l_adr_value_type_code
82258 , p_transaction_coa_id => l_adr_transaction_coa_id
82259 , p_accounting_coa_id => l_adr_accounting_coa_id
82260 , p_adr_code => 'CST_DEFAULT'
82261 , p_adr_type_code => 'S'
82262 , p_component_type => l_component_type
82263 , p_component_code => l_component_code
82264 , p_component_type_code => l_component_type_code
82265 , p_component_appl_id => l_component_appl_id
82266 , p_amb_context_code => l_amb_context_code
82267 , p_side => 'NA'
82268 );
82269
82270
82271 --
82272 --
82273 END IF;
82274 --
82275 -- Bug 4922099
82276 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82277 (NVL(l_enc_upg_option, 'N') = 'O')
82278 ) AND
82279 (l_bflow_method_code = 'PRIOR_ENTRY')
82280 )
82281 THEN
82282 IF
82283 --
82284 1 = 2
82285 --
82286 THEN
82287 xla_accounting_err_pkg.build_message
82288 (p_appli_s_name => 'XLA'
82289 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82290 ,p_token_1 => 'LINE_NUMBER'
82291 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
82292 ,p_token_2 => 'LINE_TYPE_NAME'
82293 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
82294 l_component_type
82295 ,l_component_code
82296 ,l_component_type_code
82297 ,l_component_appl_id
82298 ,l_amb_context_code
82299 ,l_entity_code
82300 ,l_event_class_code
82301 )
82302 ,p_token_3 => 'OWNER'
82303 ,p_value_3 => xla_lookups_pkg.get_meaning(
82304 p_lookup_type => 'XLA_OWNER_TYPE'
82305 ,p_lookup_code => l_component_type_code
82306 )
82307 ,p_token_4 => 'PRODUCT_NAME'
82308 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82309 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82310 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82311 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82312 ,p_ae_header_id => NULL
82313 );
82314
82315 IF (C_LEVEL_ERROR>= g_log_level) THEN
82316 trace
82317 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82318 ,p_level => C_LEVEL_ERROR
82319 ,p_module => l_log_module);
82320 END IF;
82321 END IF;
82322 END IF;
82323 --
82324 --
82325 ------------------------------------------------------------------------------------------------
82326 -- 4219869 Business Flow
82327 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82328 -- Prior Entry. Currently, the following code is always generated.
82329 ------------------------------------------------------------------------------------------------
82330 XLA_AE_LINES_PKG.ValidateCurrentLine;
82331
82332 ------------------------------------------------------------------------------------
82333 -- 4219869 Business Flow
82334 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82335 ------------------------------------------------------------------------------------
82336 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82337
82338 ----------------------------------------------------------------------------------
82339 -- 4219869 Business Flow
82340 -- Update journal entry status -- Need to generate this within IF <condition>
82341 ----------------------------------------------------------------------------------
82342 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82343 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82344 ,p_balance_type_code => l_balance_type_code
82345 );
82346
82347 -------------------------------------------------------------------------------------------
82348 -- 4262811 - Generate the Accrual Reversal lines
82349 -------------------------------------------------------------------------------------------
82350 BEGIN
82351 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82352 (g_array_event(p_event_id).array_value_num('header_index'));
82353 IF l_acc_rev_flag IS NULL THEN
82354 l_acc_rev_flag := 'N';
82355 END IF;
82356 EXCEPTION
82357 WHEN OTHERS THEN
82358 l_acc_rev_flag := 'N';
82359 END;
82360 --
82361 IF (l_acc_rev_flag = 'Y') THEN
82362
82363 -- 4645092 ------------------------------------------------------------------------------
82364 -- To allow MPA report to determine if it should generate report process
82365 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82366 ------------------------------------------------------------------------------------------
82367
82368 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82369 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82370 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
82371 -- call ADRs
82372 -- Bug 4922099
82373 --
82374 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82375 (NVL(l_actual_upg_option, 'N') = 'O') OR
82376 (NVL(l_enc_upg_option, 'N') = 'O')
82377 )
82378 THEN
82379 NULL;
82380 --
82381 --
82382
82383 l_ccid := AcctDerRule_4(
82384 p_application_id => p_application_id
82385 , p_ae_header_id => l_ae_header_id
82386 , p_source_4 => p_source_4
82387 , x_transaction_coa_id => l_adr_transaction_coa_id
82388 , x_accounting_coa_id => l_adr_accounting_coa_id
82389 , x_value_type_code => l_adr_value_type_code
82390 , p_side => 'NA'
82391 );
82392
82393 xla_ae_lines_pkg.set_ccid(
82394 p_code_combination_id => l_ccid
82395 , p_value_type_code => l_adr_value_type_code
82396 , p_transaction_coa_id => l_adr_transaction_coa_id
82397 , p_accounting_coa_id => l_adr_accounting_coa_id
82398 , p_adr_code => 'CST_DEFAULT'
82399 , p_adr_type_code => 'S'
82400 , p_component_type => l_component_type
82401 , p_component_code => l_component_code
82402 , p_component_type_code => l_component_type_code
82403 , p_component_appl_id => l_component_appl_id
82404 , p_amb_context_code => l_amb_context_code
82405 , p_side => 'NA'
82406 );
82407
82408
82409 --
82410 --
82411 END IF;
82412
82413 --
82414 -- Update the line information that should be overwritten
82415 --
82416 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82417 p_header_num => 1);
82418 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
82419
82420 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82421
82422 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
82423 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82424 END IF;
82425
82426 --
82427 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82428 --
82429 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82430 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
82431 ELSE
82432 ---------------------------------------------------------------------------------------------------
82433 -- 4262811a Switch Sign
82434 ---------------------------------------------------------------------------------------------------
82435 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
82436 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82437 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82438 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82439 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82440 -- 5132302
82441 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82442 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82443
82444 END IF;
82445
82446 -- 4955764
82447 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82448 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
82449
82450
82451 XLA_AE_LINES_PKG.ValidateCurrentLine;
82452 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82453
82454 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82455 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
82456 ,p_balance_type_code => l_balance_type_code);
82457
82458 END IF;
82459
82460 -----------------------------------------------------------------------------------------
82461 -- 4262811 Multiperiod Accounting
82462 -----------------------------------------------------------------------------------------
82463 -- No MPA option is assigned.
82464
82465
82466 END IF;
82467 END IF;
82468 --
82469
82470 --
82471 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82472 trace
82473 (p_msg => 'END of AcctLineType_150'
82474 ,p_level => C_LEVEL_PROCEDURE
82475 ,p_module => l_log_module);
82476 END IF;
82477 --
82478 EXCEPTION
82479 WHEN xla_exceptions_pkg.application_exception THEN
82480 RAISE;
82481 WHEN OTHERS THEN
82482 xla_exceptions_pkg.raise_message
82483 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_150');
82484 END AcctLineType_150;
82485 --
82486
82487 ---------------------------------------
82488 --
82489 -- PRIVATE FUNCTION
82490 -- AcctLineType_151
82491 --
82492 ---------------------------------------
82493 PROCEDURE AcctLineType_151 (
82494 p_application_id IN NUMBER
82495 ,p_event_id IN NUMBER
82496 ,p_calculate_acctd_flag IN VARCHAR2
82497 ,p_calculate_g_l_flag IN VARCHAR2
82498 ,p_actual_flag IN OUT VARCHAR2
82499 ,p_balance_type_code OUT VARCHAR2
82500 ,p_gain_or_loss_ref OUT VARCHAR2
82501
82502 --Cost Management Default Account
82503 , p_source_4 IN NUMBER
82504 --DISTRIBUTION_IDENTIFIER
82505 , p_source_11 IN NUMBER
82506 --Distribution Type
82507 , p_source_12 IN VARCHAR2
82508 , p_source_12_meaning IN VARCHAR2
82509 --Entered Currency Code
82510 , p_source_15 IN VARCHAR2
82511 --Entered Amount
82512 , p_source_18 IN NUMBER
82513 --Currency Conversion Date
82514 , p_source_19 IN DATE
82515 --Currency Conversion Rate
82516 , p_source_20 IN NUMBER
82517 --Currency Conversion Type
82518 , p_source_21 IN VARCHAR2
82519 --Accounted Amount
82520 , p_source_22 IN NUMBER
82521 --Accounting Line Type
82522 , p_source_24 IN NUMBER
82523 )
82524 IS
82525
82526 l_component_type VARCHAR2(80);
82527 l_component_code VARCHAR2(30);
82528 l_component_type_code VARCHAR2(1);
82529 l_component_appl_id INTEGER;
82530 l_amb_context_code VARCHAR2(30);
82531 l_entity_code VARCHAR2(30);
82532 l_event_class_code VARCHAR2(30);
82533 l_ae_header_id NUMBER;
82534 l_event_type_code VARCHAR2(30);
82535 l_line_definition_code VARCHAR2(30);
82536 l_line_definition_owner_code VARCHAR2(1);
82537 --
82538 -- adr variables
82539 l_segment VARCHAR2(30);
82540 l_ccid NUMBER;
82541 l_adr_transaction_coa_id NUMBER;
82542 l_adr_accounting_coa_id NUMBER;
82543 l_adr_flexfield_segment_code VARCHAR2(30);
82544 l_adr_flex_value_set_id NUMBER;
82545 l_adr_value_type_code VARCHAR2(30);
82546 l_adr_value_combination_id NUMBER;
82547 l_adr_value_segment_code VARCHAR2(30);
82548
82549 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
82550 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
82551 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
82552 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
82553
82554 -- 4262811 Variables ------------------------------------------------------------------------------------------
82555 l_entered_amt_idx NUMBER;
82556 l_accted_amt_idx NUMBER;
82557 l_acc_rev_flag VARCHAR2(1);
82558 l_accrual_line_num NUMBER;
82559 l_tmp_amt NUMBER;
82560 l_acc_rev_natural_side_code VARCHAR2(1);
82561
82562 l_num_entries NUMBER;
82563 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
82564 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
82565 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
82566 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
82567 l_recog_line_1 NUMBER;
82568 l_recog_line_2 NUMBER;
82569
82570 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
82571 l_bflow_applied_to_amt NUMBER; -- 5132302
82572 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
82573
82574 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
82575
82576 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
82577 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
82578
82579 ---------------------------------------------------------------------------------------------------------------
82580
82581
82582 --
82583 -- bulk performance
82584 --
82585 l_balance_type_code VARCHAR2(1);
82586 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
82587 l_log_module VARCHAR2(240);
82588
82589 --
82590 -- Upgrade strategy
82591 --
82592 l_actual_upg_option VARCHAR2(1);
82593 l_enc_upg_option VARCHAR2(1);
82594
82595 --
82596 BEGIN
82597 --
82598 IF g_log_enabled THEN
82599 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_151';
82600 END IF;
82601 --
82602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82603
82604 trace
82605 (p_msg => 'BEGIN of AcctLineType_151'
82606 ,p_level => C_LEVEL_PROCEDURE
82607 ,p_module => l_log_module);
82608
82609 END IF;
82610 --
82611 l_component_type := 'AMB_JLT';
82612 l_component_code := 'INVENTORY_VALUATION';
82613 l_component_type_code := 'S';
82614 l_component_appl_id := 707;
82615 l_amb_context_code := 'DEFAULT';
82616 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
82617 l_event_class_code := 'LOG_INTERCOMPANY';
82618 l_event_type_code := 'LOG_INTERCOMPANY_ALL';
82619 l_line_definition_owner_code := 'S';
82620 l_line_definition_code := 'LOG_INTERCOMPANY';
82621 --
82622 l_balance_type_code := 'A';
82623 l_segment := NULL;
82624 l_ccid := NULL;
82625 l_adr_transaction_coa_id := NULL;
82626 l_adr_accounting_coa_id := NULL;
82627 l_adr_flexfield_segment_code := NULL;
82628 l_adr_flex_value_set_id := NULL;
82629 l_adr_value_type_code := NULL;
82630 l_adr_value_combination_id := NULL;
82631 l_adr_value_segment_code := NULL;
82632
82633 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
82634 l_bflow_class_code := ''; -- 4219869 Business Flow
82635 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
82636 l_budgetary_control_flag := 'N';
82637
82638 l_bflow_applied_to_amt_idx := NULL; -- 5132302
82639 l_bflow_applied_to_amt := NULL; -- 5132302
82640 l_entered_amt_idx := NULL; -- 4262811
82641 l_accted_amt_idx := NULL; -- 4262811
82642 l_acc_rev_flag := NULL; -- 4262811
82643 l_accrual_line_num := NULL; -- 4262811
82644 l_tmp_amt := NULL; -- 4262811
82645 --
82646
82647 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
82648 l_balance_type_code <> 'B' THEN
82649 IF NVL(p_source_24,9E125) = 1
82650 THEN
82651
82652 --
82653 XLA_AE_LINES_PKG.SetNewLine;
82654
82655 p_balance_type_code := l_balance_type_code;
82656 -- set the flag so later we will know whether the gain loss line needs to be created
82657
82658 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
82659 p_actual_flag :='A';
82660 END IF;
82661
82662 --
82663 -- bulk performance
82664 --
82665 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
82666 p_header_num => 0); -- 4262811
82667 --
82668 -- set accounting line options
82669 --
82670 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
82671 p_natural_side_code => 'D'
82672 , p_gain_or_loss_flag => 'N'
82673 , p_gl_transfer_mode_code => 'S'
82674 , p_acct_entry_type_code => 'A'
82675 , p_switch_side_flag => 'Y'
82676 , p_merge_duplicate_code => 'N'
82677 );
82678 --
82679 l_acc_rev_natural_side_code := 'C'; -- 4262811
82680 --
82681 --
82682 -- set accounting line type info
82683 --
82684 xla_ae_lines_pkg.SetAcctLineType
82685 (p_component_type => l_component_type
82686 ,p_event_type_code => l_event_type_code
82687 ,p_line_definition_owner_code => l_line_definition_owner_code
82688 ,p_line_definition_code => l_line_definition_code
82689 ,p_accounting_line_code => l_component_code
82690 ,p_accounting_line_type_code => l_component_type_code
82691 ,p_accounting_line_appl_id => l_component_appl_id
82692 ,p_amb_context_code => l_amb_context_code
82693 ,p_entity_code => l_entity_code
82694 ,p_event_class_code => l_event_class_code);
82695 --
82696 -- set accounting class
82697 --
82698 xla_ae_lines_pkg.SetAcctClass(
82699 p_accounting_class_code => 'INVENTORY_VALUATION'
82700 , p_ae_header_id => l_ae_header_id
82701 );
82702
82703 --
82704 -- set rounding class
82705 --
82706 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
82707 'INVENTORY_VALUATION';
82708
82709 --
82710 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
82711 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
82712 --
82713 -- bulk performance
82714 --
82715 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
82716
82717 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
82718 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
82719
82720 -- 4955764
82721 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
82722 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
82723
82724 -- 4458381 Public Sector Enh
82725
82726 --
82727 -- set accounting attributes for the line type
82728 --
82729 l_entered_amt_idx := 3;
82730 l_accted_amt_idx := 8;
82731 l_bflow_applied_to_amt_idx := NULL; -- 5132302
82732 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
82733 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
82734 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
82735 l_rec_acct_attrs.array_char_value(2) := p_source_12;
82736 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
82737 l_rec_acct_attrs.array_num_value(3) := p_source_18;
82738 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
82739 l_rec_acct_attrs.array_char_value(4) := p_source_15;
82740 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
82741 l_rec_acct_attrs.array_date_value(5) := p_source_19;
82742 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
82743 l_rec_acct_attrs.array_num_value(6) := p_source_20;
82744 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
82745 l_rec_acct_attrs.array_char_value(7) := p_source_21;
82746 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
82747 l_rec_acct_attrs.array_num_value(8) := p_source_22;
82748
82749 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
82750 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
82751
82752 ---------------------------------------------------------------------------------------------------------------
82753 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
82754 ---------------------------------------------------------------------------------------------------------------
82755 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
82756
82757 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82758 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
82759
82760 IF xla_accounting_cache_pkg.GetValueChar
82761 (p_source_code => 'LEDGER_CATEGORY_CODE'
82762 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
82763 AND l_bflow_method_code = 'PRIOR_ENTRY'
82764 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
82765 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
82766 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
82767 )
82768 THEN
82769 xla_ae_lines_pkg.BflowUpgEntry
82770 (p_business_method_code => l_bflow_method_code
82771 ,p_business_class_code => l_bflow_class_code
82772 ,p_balance_type => l_balance_type_code);
82773 ELSE
82774 NULL;
82775 -- No business flow processing for business flow method of NONE.
82776 END IF;
82777
82778 --
82779 -- call analytical criteria
82780 --
82781
82782 --
82783 -- call description
82784 --
82785 -- No description or it is inherited.
82786 --
82787 -- call ADRs
82788 -- Bug 4922099
82789 --
82790 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82791 (NVL(l_actual_upg_option, 'N') = 'O') OR
82792 (NVL(l_enc_upg_option, 'N') = 'O')
82793 )
82794 THEN
82795 NULL;
82796 --
82797 --
82798
82799 l_ccid := AcctDerRule_4(
82800 p_application_id => p_application_id
82801 , p_ae_header_id => l_ae_header_id
82802 , p_source_4 => p_source_4
82803 , x_transaction_coa_id => l_adr_transaction_coa_id
82804 , x_accounting_coa_id => l_adr_accounting_coa_id
82805 , x_value_type_code => l_adr_value_type_code
82806 , p_side => 'NA'
82807 );
82808
82809 xla_ae_lines_pkg.set_ccid(
82810 p_code_combination_id => l_ccid
82811 , p_value_type_code => l_adr_value_type_code
82812 , p_transaction_coa_id => l_adr_transaction_coa_id
82813 , p_accounting_coa_id => l_adr_accounting_coa_id
82814 , p_adr_code => 'CST_DEFAULT'
82815 , p_adr_type_code => 'S'
82816 , p_component_type => l_component_type
82817 , p_component_code => l_component_code
82818 , p_component_type_code => l_component_type_code
82819 , p_component_appl_id => l_component_appl_id
82820 , p_amb_context_code => l_amb_context_code
82821 , p_side => 'NA'
82822 );
82823
82824
82825 --
82826 --
82827 END IF;
82828 --
82829 -- Bug 4922099
82830 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
82831 (NVL(l_enc_upg_option, 'N') = 'O')
82832 ) AND
82833 (l_bflow_method_code = 'PRIOR_ENTRY')
82834 )
82835 THEN
82836 IF
82837 --
82838 1 = 2
82839 --
82840 THEN
82841 xla_accounting_err_pkg.build_message
82842 (p_appli_s_name => 'XLA'
82843 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82844 ,p_token_1 => 'LINE_NUMBER'
82845 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
82846 ,p_token_2 => 'LINE_TYPE_NAME'
82847 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
82848 l_component_type
82849 ,l_component_code
82850 ,l_component_type_code
82851 ,l_component_appl_id
82852 ,l_amb_context_code
82853 ,l_entity_code
82854 ,l_event_class_code
82855 )
82856 ,p_token_3 => 'OWNER'
82857 ,p_value_3 => xla_lookups_pkg.get_meaning(
82858 p_lookup_type => 'XLA_OWNER_TYPE'
82859 ,p_lookup_code => l_component_type_code
82860 )
82861 ,p_token_4 => 'PRODUCT_NAME'
82862 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
82863 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
82864 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
82865 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
82866 ,p_ae_header_id => NULL
82867 );
82868
82869 IF (C_LEVEL_ERROR>= g_log_level) THEN
82870 trace
82871 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
82872 ,p_level => C_LEVEL_ERROR
82873 ,p_module => l_log_module);
82874 END IF;
82875 END IF;
82876 END IF;
82877 --
82878 --
82879 ------------------------------------------------------------------------------------------------
82880 -- 4219869 Business Flow
82881 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
82882 -- Prior Entry. Currently, the following code is always generated.
82883 ------------------------------------------------------------------------------------------------
82884 XLA_AE_LINES_PKG.ValidateCurrentLine;
82885
82886 ------------------------------------------------------------------------------------
82887 -- 4219869 Business Flow
82888 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
82889 ------------------------------------------------------------------------------------
82890 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
82891
82892 ----------------------------------------------------------------------------------
82893 -- 4219869 Business Flow
82894 -- Update journal entry status -- Need to generate this within IF <condition>
82895 ----------------------------------------------------------------------------------
82896 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
82897 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
82898 ,p_balance_type_code => l_balance_type_code
82899 );
82900
82901 -------------------------------------------------------------------------------------------
82902 -- 4262811 - Generate the Accrual Reversal lines
82903 -------------------------------------------------------------------------------------------
82904 BEGIN
82905 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
82906 (g_array_event(p_event_id).array_value_num('header_index'));
82907 IF l_acc_rev_flag IS NULL THEN
82908 l_acc_rev_flag := 'N';
82909 END IF;
82910 EXCEPTION
82911 WHEN OTHERS THEN
82912 l_acc_rev_flag := 'N';
82913 END;
82914 --
82915 IF (l_acc_rev_flag = 'Y') THEN
82916
82917 -- 4645092 ------------------------------------------------------------------------------
82918 -- To allow MPA report to determine if it should generate report process
82919 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
82920 ------------------------------------------------------------------------------------------
82921
82922 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
82923 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
82924 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
82925 -- call ADRs
82926 -- Bug 4922099
82927 --
82928 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
82929 (NVL(l_actual_upg_option, 'N') = 'O') OR
82930 (NVL(l_enc_upg_option, 'N') = 'O')
82931 )
82932 THEN
82933 NULL;
82934 --
82935 --
82936
82937 l_ccid := AcctDerRule_4(
82938 p_application_id => p_application_id
82939 , p_ae_header_id => l_ae_header_id
82940 , p_source_4 => p_source_4
82941 , x_transaction_coa_id => l_adr_transaction_coa_id
82942 , x_accounting_coa_id => l_adr_accounting_coa_id
82943 , x_value_type_code => l_adr_value_type_code
82944 , p_side => 'NA'
82945 );
82946
82947 xla_ae_lines_pkg.set_ccid(
82948 p_code_combination_id => l_ccid
82949 , p_value_type_code => l_adr_value_type_code
82950 , p_transaction_coa_id => l_adr_transaction_coa_id
82951 , p_accounting_coa_id => l_adr_accounting_coa_id
82952 , p_adr_code => 'CST_DEFAULT'
82953 , p_adr_type_code => 'S'
82954 , p_component_type => l_component_type
82955 , p_component_code => l_component_code
82956 , p_component_type_code => l_component_type_code
82957 , p_component_appl_id => l_component_appl_id
82958 , p_amb_context_code => l_amb_context_code
82959 , p_side => 'NA'
82960 );
82961
82962
82963 --
82964 --
82965 END IF;
82966
82967 --
82968 -- Update the line information that should be overwritten
82969 --
82970 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
82971 p_header_num => 1);
82972 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
82973
82974 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
82975
82976 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
82977 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
82978 END IF;
82979
82980 --
82981 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
82982 --
82983 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
82984 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
82985 ELSE
82986 ---------------------------------------------------------------------------------------------------
82987 -- 4262811a Switch Sign
82988 ---------------------------------------------------------------------------------------------------
82989 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
82990 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82991 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82992 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
82993 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82994 -- 5132302
82995 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
82996 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
82997
82998 END IF;
82999
83000 -- 4955764
83001 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83002 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
83003
83004
83005 XLA_AE_LINES_PKG.ValidateCurrentLine;
83006 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
83007
83008 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
83009 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
83010 ,p_balance_type_code => l_balance_type_code);
83011
83012 END IF;
83013
83014 -----------------------------------------------------------------------------------------
83015 -- 4262811 Multiperiod Accounting
83016 -----------------------------------------------------------------------------------------
83017 -- No MPA option is assigned.
83018
83019
83020 END IF;
83021 END IF;
83022 --
83023
83024 --
83025 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83026 trace
83027 (p_msg => 'END of AcctLineType_151'
83028 ,p_level => C_LEVEL_PROCEDURE
83029 ,p_module => l_log_module);
83030 END IF;
83031 --
83032 EXCEPTION
83033 WHEN xla_exceptions_pkg.application_exception THEN
83034 RAISE;
83035 WHEN OTHERS THEN
83036 xla_exceptions_pkg.raise_message
83037 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_151');
83038 END AcctLineType_151;
83039 --
83040
83041 ---------------------------------------
83042 --
83043 -- PRIVATE FUNCTION
83044 -- AcctLineType_152
83045 --
83046 ---------------------------------------
83047 PROCEDURE AcctLineType_152 (
83048 p_application_id IN NUMBER
83049 ,p_event_id IN NUMBER
83050 ,p_calculate_acctd_flag IN VARCHAR2
83051 ,p_calculate_g_l_flag IN VARCHAR2
83052 ,p_actual_flag IN OUT VARCHAR2
83053 ,p_balance_type_code OUT VARCHAR2
83054 ,p_gain_or_loss_ref OUT VARCHAR2
83055
83056 --Cost Management Default Account
83057 , p_source_4 IN NUMBER
83058 --DISTRIBUTION_IDENTIFIER
83059 , p_source_11 IN NUMBER
83060 --Distribution Type
83061 , p_source_12 IN VARCHAR2
83062 , p_source_12_meaning IN VARCHAR2
83063 --Entered Currency Code
83064 , p_source_15 IN VARCHAR2
83065 --Entered Amount
83066 , p_source_18 IN NUMBER
83067 --Currency Conversion Date
83068 , p_source_19 IN DATE
83069 --Currency Conversion Rate
83070 , p_source_20 IN NUMBER
83071 --Currency Conversion Type
83072 , p_source_21 IN VARCHAR2
83073 --Accounted Amount
83074 , p_source_22 IN NUMBER
83075 --Accounting Line Type
83076 , p_source_24 IN NUMBER
83077 )
83078 IS
83079
83080 l_component_type VARCHAR2(80);
83081 l_component_code VARCHAR2(30);
83082 l_component_type_code VARCHAR2(1);
83083 l_component_appl_id INTEGER;
83084 l_amb_context_code VARCHAR2(30);
83085 l_entity_code VARCHAR2(30);
83086 l_event_class_code VARCHAR2(30);
83087 l_ae_header_id NUMBER;
83088 l_event_type_code VARCHAR2(30);
83089 l_line_definition_code VARCHAR2(30);
83090 l_line_definition_owner_code VARCHAR2(1);
83091 --
83092 -- adr variables
83093 l_segment VARCHAR2(30);
83094 l_ccid NUMBER;
83095 l_adr_transaction_coa_id NUMBER;
83096 l_adr_accounting_coa_id NUMBER;
83097 l_adr_flexfield_segment_code VARCHAR2(30);
83098 l_adr_flex_value_set_id NUMBER;
83099 l_adr_value_type_code VARCHAR2(30);
83100 l_adr_value_combination_id NUMBER;
83101 l_adr_value_segment_code VARCHAR2(30);
83102
83103 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
83104 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
83105 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
83106 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
83107
83108 -- 4262811 Variables ------------------------------------------------------------------------------------------
83109 l_entered_amt_idx NUMBER;
83110 l_accted_amt_idx NUMBER;
83111 l_acc_rev_flag VARCHAR2(1);
83112 l_accrual_line_num NUMBER;
83113 l_tmp_amt NUMBER;
83114 l_acc_rev_natural_side_code VARCHAR2(1);
83115
83116 l_num_entries NUMBER;
83117 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
83118 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
83119 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
83120 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
83121 l_recog_line_1 NUMBER;
83122 l_recog_line_2 NUMBER;
83123
83124 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
83125 l_bflow_applied_to_amt NUMBER; -- 5132302
83126 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
83127
83128 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
83129
83130 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
83131 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
83132
83133 ---------------------------------------------------------------------------------------------------------------
83134
83135
83136 --
83137 -- bulk performance
83138 --
83139 l_balance_type_code VARCHAR2(1);
83140 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
83141 l_log_module VARCHAR2(240);
83142
83143 --
83144 -- Upgrade strategy
83145 --
83146 l_actual_upg_option VARCHAR2(1);
83147 l_enc_upg_option VARCHAR2(1);
83148
83149 --
83150 BEGIN
83151 --
83152 IF g_log_enabled THEN
83153 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_152';
83154 END IF;
83155 --
83156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83157
83158 trace
83159 (p_msg => 'BEGIN of AcctLineType_152'
83160 ,p_level => C_LEVEL_PROCEDURE
83161 ,p_module => l_log_module);
83162
83163 END IF;
83164 --
83165 l_component_type := 'AMB_JLT';
83166 l_component_code := 'INVENTORY_VALUATION';
83167 l_component_type_code := 'S';
83168 l_component_appl_id := 707;
83169 l_amb_context_code := 'DEFAULT';
83170 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
83171 l_event_class_code := 'MTL_COST_UPD';
83172 l_event_type_code := 'MTL_COST_UPD_ALL';
83173 l_line_definition_owner_code := 'S';
83174 l_line_definition_code := 'MTL_COST_UPD';
83175 --
83176 l_balance_type_code := 'A';
83177 l_segment := NULL;
83178 l_ccid := NULL;
83179 l_adr_transaction_coa_id := NULL;
83180 l_adr_accounting_coa_id := NULL;
83181 l_adr_flexfield_segment_code := NULL;
83182 l_adr_flex_value_set_id := NULL;
83183 l_adr_value_type_code := NULL;
83184 l_adr_value_combination_id := NULL;
83185 l_adr_value_segment_code := NULL;
83186
83187 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
83188 l_bflow_class_code := ''; -- 4219869 Business Flow
83189 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
83190 l_budgetary_control_flag := 'N';
83191
83192 l_bflow_applied_to_amt_idx := NULL; -- 5132302
83193 l_bflow_applied_to_amt := NULL; -- 5132302
83194 l_entered_amt_idx := NULL; -- 4262811
83195 l_accted_amt_idx := NULL; -- 4262811
83196 l_acc_rev_flag := NULL; -- 4262811
83197 l_accrual_line_num := NULL; -- 4262811
83198 l_tmp_amt := NULL; -- 4262811
83199 --
83200
83201 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
83202 l_balance_type_code <> 'B' THEN
83203 IF NVL(p_source_24,9E125) = 1
83204 THEN
83205
83206 --
83207 XLA_AE_LINES_PKG.SetNewLine;
83208
83209 p_balance_type_code := l_balance_type_code;
83210 -- set the flag so later we will know whether the gain loss line needs to be created
83211
83212 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
83213 p_actual_flag :='A';
83214 END IF;
83215
83216 --
83217 -- bulk performance
83218 --
83219 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
83220 p_header_num => 0); -- 4262811
83221 --
83222 -- set accounting line options
83223 --
83224 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
83225 p_natural_side_code => 'D'
83226 , p_gain_or_loss_flag => 'N'
83227 , p_gl_transfer_mode_code => 'S'
83228 , p_acct_entry_type_code => 'A'
83229 , p_switch_side_flag => 'Y'
83230 , p_merge_duplicate_code => 'N'
83231 );
83232 --
83233 l_acc_rev_natural_side_code := 'C'; -- 4262811
83234 --
83235 --
83236 -- set accounting line type info
83237 --
83238 xla_ae_lines_pkg.SetAcctLineType
83239 (p_component_type => l_component_type
83240 ,p_event_type_code => l_event_type_code
83241 ,p_line_definition_owner_code => l_line_definition_owner_code
83242 ,p_line_definition_code => l_line_definition_code
83243 ,p_accounting_line_code => l_component_code
83244 ,p_accounting_line_type_code => l_component_type_code
83245 ,p_accounting_line_appl_id => l_component_appl_id
83246 ,p_amb_context_code => l_amb_context_code
83247 ,p_entity_code => l_entity_code
83248 ,p_event_class_code => l_event_class_code);
83249 --
83250 -- set accounting class
83251 --
83252 xla_ae_lines_pkg.SetAcctClass(
83253 p_accounting_class_code => 'INVENTORY_VALUATION'
83254 , p_ae_header_id => l_ae_header_id
83255 );
83256
83257 --
83258 -- set rounding class
83259 --
83260 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
83261 'INVENTORY_VALUATION';
83262
83263 --
83264 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
83265 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
83266 --
83267 -- bulk performance
83268 --
83269 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
83270
83271 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
83272 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
83273
83274 -- 4955764
83275 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
83276 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
83277
83278 -- 4458381 Public Sector Enh
83279
83280 --
83281 -- set accounting attributes for the line type
83282 --
83283 l_entered_amt_idx := 3;
83284 l_accted_amt_idx := 8;
83285 l_bflow_applied_to_amt_idx := NULL; -- 5132302
83286 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
83287 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
83288 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
83289 l_rec_acct_attrs.array_char_value(2) := p_source_12;
83290 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
83291 l_rec_acct_attrs.array_num_value(3) := p_source_18;
83292 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
83293 l_rec_acct_attrs.array_char_value(4) := p_source_15;
83294 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
83295 l_rec_acct_attrs.array_date_value(5) := p_source_19;
83296 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
83297 l_rec_acct_attrs.array_num_value(6) := p_source_20;
83298 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
83299 l_rec_acct_attrs.array_char_value(7) := p_source_21;
83300 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
83301 l_rec_acct_attrs.array_num_value(8) := p_source_22;
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_000005_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 := 'SALES_ORDER';
83726 l_event_type_code := 'SALES_ORDER_ALL';
83727 l_line_definition_owner_code := 'S';
83728 l_line_definition_code := 'SALES_ORDER';
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_000005_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 := 'USER_DEFINE';
84280 l_event_type_code := 'UDIR_INTERORG_SHIP';
84281 l_line_definition_owner_code := 'S';
84282 l_line_definition_code := 'USER_DIR_INTERORG_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_000005_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 --DISTRIBUTION_IDENTIFIER
84721 , p_source_11 IN NUMBER
84722 --Distribution Type
84723 , p_source_12 IN VARCHAR2
84724 , p_source_12_meaning IN VARCHAR2
84725 --Entered Currency Code
84726 , p_source_15 IN VARCHAR2
84727 --Entered Amount
84728 , p_source_18 IN NUMBER
84729 --Currency Conversion Date
84730 , p_source_19 IN DATE
84731 --Currency Conversion Rate
84732 , p_source_20 IN NUMBER
84733 --Currency Conversion Type
84734 , p_source_21 IN VARCHAR2
84735 --Accounted Amount
84736 , p_source_22 IN NUMBER
84737 --Accounting Line Type
84738 , p_source_24 IN NUMBER
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 := 'INVENTORY_VALUATION';
84829 l_component_type_code := 'S';
84830 l_component_appl_id := 707;
84831 l_amb_context_code := 'DEFAULT';
84832 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
84833 l_event_class_code := 'CON_INV_OWNR_TXFR';
84834 l_event_type_code := 'CON_INV_OWNR_TXFR_ALL';
84835 l_line_definition_owner_code := 'S';
84836 l_line_definition_code := 'CON_INV_OWNR_TXFR';
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_24,9E125) = 1
84866 THEN
84867
84868 --
84869 XLA_AE_LINES_PKG.SetNewLine;
84870
84871 p_balance_type_code := l_balance_type_code;
84872 -- set the flag so later we will know whether the gain loss line needs to be created
84873
84874 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
84875 p_actual_flag :='A';
84876 END IF;
84877
84878 --
84879 -- bulk performance
84880 --
84881 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
84882 p_header_num => 0); -- 4262811
84883 --
84884 -- set accounting line options
84885 --
84886 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
84887 p_natural_side_code => 'D'
84888 , p_gain_or_loss_flag => 'N'
84889 , p_gl_transfer_mode_code => 'S'
84890 , p_acct_entry_type_code => 'A'
84891 , p_switch_side_flag => 'Y'
84892 , p_merge_duplicate_code => 'N'
84893 );
84894 --
84895 l_acc_rev_natural_side_code := 'C'; -- 4262811
84896 --
84897 --
84898 -- set accounting line type info
84899 --
84900 xla_ae_lines_pkg.SetAcctLineType
84901 (p_component_type => l_component_type
84902 ,p_event_type_code => l_event_type_code
84903 ,p_line_definition_owner_code => l_line_definition_owner_code
84904 ,p_line_definition_code => l_line_definition_code
84905 ,p_accounting_line_code => l_component_code
84906 ,p_accounting_line_type_code => l_component_type_code
84907 ,p_accounting_line_appl_id => l_component_appl_id
84908 ,p_amb_context_code => l_amb_context_code
84909 ,p_entity_code => l_entity_code
84910 ,p_event_class_code => l_event_class_code);
84911 --
84912 -- set accounting class
84913 --
84914 xla_ae_lines_pkg.SetAcctClass(
84915 p_accounting_class_code => 'INVENTORY_VALUATION'
84916 , p_ae_header_id => l_ae_header_id
84917 );
84918
84919 --
84920 -- set rounding class
84921 --
84922 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
84923 'INVENTORY_VALUATION';
84924
84925 --
84926 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
84927 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
84928 --
84929 -- bulk performance
84930 --
84931 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
84932
84933 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
84934 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
84935
84936 -- 4955764
84937 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
84938 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
84939
84940 -- 4458381 Public Sector Enh
84941
84942 --
84943 -- set accounting attributes for the line type
84944 --
84945 l_entered_amt_idx := 3;
84946 l_accted_amt_idx := 8;
84947 l_bflow_applied_to_amt_idx := NULL; -- 5132302
84948 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
84949 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
84950 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
84951 l_rec_acct_attrs.array_char_value(2) := p_source_12;
84952 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
84953 l_rec_acct_attrs.array_num_value(3) := p_source_18;
84954 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
84955 l_rec_acct_attrs.array_char_value(4) := p_source_15;
84956 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
84957 l_rec_acct_attrs.array_date_value(5) := p_source_19;
84958 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
84959 l_rec_acct_attrs.array_num_value(6) := p_source_20;
84960 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
84961 l_rec_acct_attrs.array_char_value(7) := p_source_21;
84962 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
84963 l_rec_acct_attrs.array_num_value(8) := p_source_22;
84964
84965 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
84966 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
84967
84968 ---------------------------------------------------------------------------------------------------------------
84969 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
84970 ---------------------------------------------------------------------------------------------------------------
84971 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
84972
84973 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84974 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
84975
84976 IF xla_accounting_cache_pkg.GetValueChar
84977 (p_source_code => 'LEDGER_CATEGORY_CODE'
84978 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
84979 AND l_bflow_method_code = 'PRIOR_ENTRY'
84980 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
84981 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
84982 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
84983 )
84984 THEN
84985 xla_ae_lines_pkg.BflowUpgEntry
84986 (p_business_method_code => l_bflow_method_code
84987 ,p_business_class_code => l_bflow_class_code
84988 ,p_balance_type => l_balance_type_code);
84989 ELSE
84990 NULL;
84991 -- No business flow processing for business flow method of NONE.
84992 END IF;
84993
84994 --
84995 -- call analytical criteria
84996 --
84997
84998 --
84999 -- call description
85000 --
85001 -- No description or it is inherited.
85002 --
85003 -- call ADRs
85004 -- Bug 4922099
85005 --
85006 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85007 (NVL(l_actual_upg_option, 'N') = 'O') OR
85008 (NVL(l_enc_upg_option, 'N') = 'O')
85009 )
85010 THEN
85011 NULL;
85012 --
85013 --
85014
85015 l_ccid := AcctDerRule_4(
85016 p_application_id => p_application_id
85017 , p_ae_header_id => l_ae_header_id
85018 , p_source_4 => p_source_4
85019 , x_transaction_coa_id => l_adr_transaction_coa_id
85020 , x_accounting_coa_id => l_adr_accounting_coa_id
85021 , x_value_type_code => l_adr_value_type_code
85022 , p_side => 'NA'
85023 );
85024
85025 xla_ae_lines_pkg.set_ccid(
85026 p_code_combination_id => l_ccid
85027 , p_value_type_code => l_adr_value_type_code
85028 , p_transaction_coa_id => l_adr_transaction_coa_id
85029 , p_accounting_coa_id => l_adr_accounting_coa_id
85030 , p_adr_code => 'CST_DEFAULT'
85031 , p_adr_type_code => 'S'
85032 , p_component_type => l_component_type
85033 , p_component_code => l_component_code
85034 , p_component_type_code => l_component_type_code
85035 , p_component_appl_id => l_component_appl_id
85036 , p_amb_context_code => l_amb_context_code
85037 , p_side => 'NA'
85038 );
85039
85040
85041 --
85042 --
85043 END IF;
85044 --
85045 -- Bug 4922099
85046 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85047 (NVL(l_enc_upg_option, 'N') = 'O')
85048 ) AND
85049 (l_bflow_method_code = 'PRIOR_ENTRY')
85050 )
85051 THEN
85052 IF
85053 --
85054 1 = 2
85055 --
85056 THEN
85057 xla_accounting_err_pkg.build_message
85058 (p_appli_s_name => 'XLA'
85059 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85060 ,p_token_1 => 'LINE_NUMBER'
85061 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
85062 ,p_token_2 => 'LINE_TYPE_NAME'
85063 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
85064 l_component_type
85065 ,l_component_code
85066 ,l_component_type_code
85067 ,l_component_appl_id
85068 ,l_amb_context_code
85069 ,l_entity_code
85070 ,l_event_class_code
85071 )
85072 ,p_token_3 => 'OWNER'
85073 ,p_value_3 => xla_lookups_pkg.get_meaning(
85074 p_lookup_type => 'XLA_OWNER_TYPE'
85075 ,p_lookup_code => l_component_type_code
85076 )
85077 ,p_token_4 => 'PRODUCT_NAME'
85078 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85079 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85080 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85081 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85082 ,p_ae_header_id => NULL
85083 );
85084
85085 IF (C_LEVEL_ERROR>= g_log_level) THEN
85086 trace
85087 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85088 ,p_level => C_LEVEL_ERROR
85089 ,p_module => l_log_module);
85090 END IF;
85091 END IF;
85092 END IF;
85093 --
85094 --
85095 ------------------------------------------------------------------------------------------------
85096 -- 4219869 Business Flow
85097 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85098 -- Prior Entry. Currently, the following code is always generated.
85099 ------------------------------------------------------------------------------------------------
85100 XLA_AE_LINES_PKG.ValidateCurrentLine;
85101
85102 ------------------------------------------------------------------------------------
85103 -- 4219869 Business Flow
85104 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85105 ------------------------------------------------------------------------------------
85106 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85107
85108 ----------------------------------------------------------------------------------
85109 -- 4219869 Business Flow
85110 -- Update journal entry status -- Need to generate this within IF <condition>
85111 ----------------------------------------------------------------------------------
85112 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85113 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85114 ,p_balance_type_code => l_balance_type_code
85115 );
85116
85117 -------------------------------------------------------------------------------------------
85118 -- 4262811 - Generate the Accrual Reversal lines
85119 -------------------------------------------------------------------------------------------
85120 BEGIN
85121 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85122 (g_array_event(p_event_id).array_value_num('header_index'));
85123 IF l_acc_rev_flag IS NULL THEN
85124 l_acc_rev_flag := 'N';
85125 END IF;
85126 EXCEPTION
85127 WHEN OTHERS THEN
85128 l_acc_rev_flag := 'N';
85129 END;
85130 --
85131 IF (l_acc_rev_flag = 'Y') THEN
85132
85133 -- 4645092 ------------------------------------------------------------------------------
85134 -- To allow MPA report to determine if it should generate report process
85135 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85136 ------------------------------------------------------------------------------------------
85137
85138 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85139 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85140 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
85141 -- call ADRs
85142 -- Bug 4922099
85143 --
85144 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85145 (NVL(l_actual_upg_option, 'N') = 'O') OR
85146 (NVL(l_enc_upg_option, 'N') = 'O')
85147 )
85148 THEN
85149 NULL;
85150 --
85151 --
85152
85153 l_ccid := AcctDerRule_4(
85154 p_application_id => p_application_id
85155 , p_ae_header_id => l_ae_header_id
85156 , p_source_4 => p_source_4
85157 , x_transaction_coa_id => l_adr_transaction_coa_id
85158 , x_accounting_coa_id => l_adr_accounting_coa_id
85159 , x_value_type_code => l_adr_value_type_code
85160 , p_side => 'NA'
85161 );
85162
85163 xla_ae_lines_pkg.set_ccid(
85164 p_code_combination_id => l_ccid
85165 , p_value_type_code => l_adr_value_type_code
85166 , p_transaction_coa_id => l_adr_transaction_coa_id
85167 , p_accounting_coa_id => l_adr_accounting_coa_id
85168 , p_adr_code => 'CST_DEFAULT'
85169 , p_adr_type_code => 'S'
85170 , p_component_type => l_component_type
85171 , p_component_code => l_component_code
85172 , p_component_type_code => l_component_type_code
85173 , p_component_appl_id => l_component_appl_id
85174 , p_amb_context_code => l_amb_context_code
85175 , p_side => 'NA'
85176 );
85177
85178
85179 --
85180 --
85181 END IF;
85182
85183 --
85184 -- Update the line information that should be overwritten
85185 --
85186 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85187 p_header_num => 1);
85188 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
85189
85190 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85191
85192 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
85193 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85194 END IF;
85195
85196 --
85197 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85198 --
85199 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85200 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
85201 ELSE
85202 ---------------------------------------------------------------------------------------------------
85203 -- 4262811a Switch Sign
85204 ---------------------------------------------------------------------------------------------------
85205 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
85206 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85207 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85208 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85209 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85210 -- 5132302
85211 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85212 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85213
85214 END IF;
85215
85216 -- 4955764
85217 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85218 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85219
85220
85221 XLA_AE_LINES_PKG.ValidateCurrentLine;
85222 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85223
85224 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85225 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85226 ,p_balance_type_code => l_balance_type_code);
85227
85228 END IF;
85229
85230 -----------------------------------------------------------------------------------------
85231 -- 4262811 Multiperiod Accounting
85232 -----------------------------------------------------------------------------------------
85233 -- No MPA option is assigned.
85234
85235
85236 END IF;
85237 END IF;
85238 --
85239
85240 --
85241 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85242 trace
85243 (p_msg => 'END of AcctLineType_155'
85244 ,p_level => C_LEVEL_PROCEDURE
85245 ,p_module => l_log_module);
85246 END IF;
85247 --
85248 EXCEPTION
85249 WHEN xla_exceptions_pkg.application_exception THEN
85250 RAISE;
85251 WHEN OTHERS THEN
85252 xla_exceptions_pkg.raise_message
85253 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_155');
85254 END AcctLineType_155;
85255 --
85256
85257 ---------------------------------------
85258 --
85259 -- PRIVATE FUNCTION
85260 -- AcctLineType_156
85261 --
85262 ---------------------------------------
85263 PROCEDURE AcctLineType_156 (
85264 p_application_id IN NUMBER
85265 ,p_event_id IN NUMBER
85266 ,p_calculate_acctd_flag IN VARCHAR2
85267 ,p_calculate_g_l_flag IN VARCHAR2
85268 ,p_actual_flag IN OUT VARCHAR2
85269 ,p_balance_type_code OUT VARCHAR2
85270 ,p_gain_or_loss_ref OUT VARCHAR2
85271
85272 --Cost Management Default Account
85273 , p_source_4 IN NUMBER
85274 --DISTRIBUTION_IDENTIFIER
85275 , p_source_11 IN NUMBER
85276 --Distribution Type
85277 , p_source_12 IN VARCHAR2
85278 , p_source_12_meaning IN VARCHAR2
85279 --Entered Currency Code
85280 , p_source_15 IN VARCHAR2
85281 --Entered Amount
85282 , p_source_18 IN NUMBER
85283 --Currency Conversion Date
85284 , p_source_19 IN DATE
85285 --Currency Conversion Rate
85286 , p_source_20 IN NUMBER
85287 --Currency Conversion Type
85288 , p_source_21 IN VARCHAR2
85289 --Accounted Amount
85290 , p_source_22 IN NUMBER
85291 --Accounting Line Type
85292 , p_source_24 IN NUMBER
85293 )
85294 IS
85295
85296 l_component_type VARCHAR2(80);
85297 l_component_code VARCHAR2(30);
85298 l_component_type_code VARCHAR2(1);
85299 l_component_appl_id INTEGER;
85300 l_amb_context_code VARCHAR2(30);
85301 l_entity_code VARCHAR2(30);
85302 l_event_class_code VARCHAR2(30);
85303 l_ae_header_id NUMBER;
85304 l_event_type_code VARCHAR2(30);
85305 l_line_definition_code VARCHAR2(30);
85306 l_line_definition_owner_code VARCHAR2(1);
85307 --
85308 -- adr variables
85309 l_segment VARCHAR2(30);
85310 l_ccid NUMBER;
85311 l_adr_transaction_coa_id NUMBER;
85312 l_adr_accounting_coa_id NUMBER;
85313 l_adr_flexfield_segment_code VARCHAR2(30);
85314 l_adr_flex_value_set_id NUMBER;
85315 l_adr_value_type_code VARCHAR2(30);
85316 l_adr_value_combination_id NUMBER;
85317 l_adr_value_segment_code VARCHAR2(30);
85318
85319 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
85320 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
85321 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
85322 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
85323
85324 -- 4262811 Variables ------------------------------------------------------------------------------------------
85325 l_entered_amt_idx NUMBER;
85326 l_accted_amt_idx NUMBER;
85327 l_acc_rev_flag VARCHAR2(1);
85328 l_accrual_line_num NUMBER;
85329 l_tmp_amt NUMBER;
85330 l_acc_rev_natural_side_code VARCHAR2(1);
85331
85332 l_num_entries NUMBER;
85333 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
85334 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
85335 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
85336 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
85337 l_recog_line_1 NUMBER;
85338 l_recog_line_2 NUMBER;
85339
85340 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
85341 l_bflow_applied_to_amt NUMBER; -- 5132302
85342 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
85343
85344 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
85345
85346 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
85347 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
85348
85349 ---------------------------------------------------------------------------------------------------------------
85350
85351
85352 --
85353 -- bulk performance
85354 --
85355 l_balance_type_code VARCHAR2(1);
85356 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
85357 l_log_module VARCHAR2(240);
85358
85359 --
85360 -- Upgrade strategy
85361 --
85362 l_actual_upg_option VARCHAR2(1);
85363 l_enc_upg_option VARCHAR2(1);
85364
85365 --
85366 BEGIN
85367 --
85368 IF g_log_enabled THEN
85369 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_156';
85370 END IF;
85371 --
85372 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85373
85374 trace
85375 (p_msg => 'BEGIN of AcctLineType_156'
85376 ,p_level => C_LEVEL_PROCEDURE
85377 ,p_module => l_log_module);
85378
85379 END IF;
85380 --
85381 l_component_type := 'AMB_JLT';
85382 l_component_code := 'INVENTORY_VALUATION';
85383 l_component_type_code := 'S';
85384 l_component_appl_id := 707;
85385 l_amb_context_code := 'DEFAULT';
85386 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
85387 l_event_class_code := 'DIR_INTERORG_SHIP';
85388 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
85389 l_line_definition_owner_code := 'S';
85390 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
85391 --
85392 l_balance_type_code := 'A';
85393 l_segment := NULL;
85394 l_ccid := NULL;
85395 l_adr_transaction_coa_id := NULL;
85396 l_adr_accounting_coa_id := NULL;
85397 l_adr_flexfield_segment_code := NULL;
85398 l_adr_flex_value_set_id := NULL;
85399 l_adr_value_type_code := NULL;
85400 l_adr_value_combination_id := NULL;
85401 l_adr_value_segment_code := NULL;
85402
85403 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
85404 l_bflow_class_code := ''; -- 4219869 Business Flow
85405 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
85406 l_budgetary_control_flag := 'N';
85407
85408 l_bflow_applied_to_amt_idx := NULL; -- 5132302
85409 l_bflow_applied_to_amt := NULL; -- 5132302
85410 l_entered_amt_idx := NULL; -- 4262811
85411 l_accted_amt_idx := NULL; -- 4262811
85412 l_acc_rev_flag := NULL; -- 4262811
85413 l_accrual_line_num := NULL; -- 4262811
85414 l_tmp_amt := NULL; -- 4262811
85415 --
85416
85417 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
85418 l_balance_type_code <> 'B' THEN
85419 IF NVL(p_source_24,9E125) = 1
85420 THEN
85421
85422 --
85423 XLA_AE_LINES_PKG.SetNewLine;
85424
85425 p_balance_type_code := l_balance_type_code;
85426 -- set the flag so later we will know whether the gain loss line needs to be created
85427
85428 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85429 p_actual_flag :='A';
85430 END IF;
85431
85432 --
85433 -- bulk performance
85434 --
85435 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85436 p_header_num => 0); -- 4262811
85437 --
85438 -- set accounting line options
85439 --
85440 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85441 p_natural_side_code => 'D'
85442 , p_gain_or_loss_flag => 'N'
85443 , p_gl_transfer_mode_code => 'S'
85444 , p_acct_entry_type_code => 'A'
85445 , p_switch_side_flag => 'Y'
85446 , p_merge_duplicate_code => 'N'
85447 );
85448 --
85449 l_acc_rev_natural_side_code := 'C'; -- 4262811
85450 --
85451 --
85452 -- set accounting line type info
85453 --
85454 xla_ae_lines_pkg.SetAcctLineType
85455 (p_component_type => l_component_type
85456 ,p_event_type_code => l_event_type_code
85457 ,p_line_definition_owner_code => l_line_definition_owner_code
85458 ,p_line_definition_code => l_line_definition_code
85459 ,p_accounting_line_code => l_component_code
85460 ,p_accounting_line_type_code => l_component_type_code
85461 ,p_accounting_line_appl_id => l_component_appl_id
85462 ,p_amb_context_code => l_amb_context_code
85463 ,p_entity_code => l_entity_code
85464 ,p_event_class_code => l_event_class_code);
85465 --
85466 -- set accounting class
85467 --
85468 xla_ae_lines_pkg.SetAcctClass(
85469 p_accounting_class_code => 'INVENTORY_VALUATION'
85470 , p_ae_header_id => l_ae_header_id
85471 );
85472
85473 --
85474 -- set rounding class
85475 --
85476 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
85477 'INVENTORY_VALUATION';
85478
85479 --
85480 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
85481 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
85482 --
85483 -- bulk performance
85484 --
85485 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
85486
85487 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
85488 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
85489
85490 -- 4955764
85491 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85492 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
85493
85494 -- 4458381 Public Sector Enh
85495
85496 --
85497 -- set accounting attributes for the line type
85498 --
85499 l_entered_amt_idx := 3;
85500 l_accted_amt_idx := 8;
85501 l_bflow_applied_to_amt_idx := NULL; -- 5132302
85502 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
85503 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
85504 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
85505 l_rec_acct_attrs.array_char_value(2) := p_source_12;
85506 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
85507 l_rec_acct_attrs.array_num_value(3) := p_source_18;
85508 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
85509 l_rec_acct_attrs.array_char_value(4) := p_source_15;
85510 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
85511 l_rec_acct_attrs.array_date_value(5) := p_source_19;
85512 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
85513 l_rec_acct_attrs.array_num_value(6) := p_source_20;
85514 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
85515 l_rec_acct_attrs.array_char_value(7) := p_source_21;
85516 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
85517 l_rec_acct_attrs.array_num_value(8) := p_source_22;
85518
85519 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
85520 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
85521
85522 ---------------------------------------------------------------------------------------------------------------
85523 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
85524 ---------------------------------------------------------------------------------------------------------------
85525 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
85526
85527 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85528 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
85529
85530 IF xla_accounting_cache_pkg.GetValueChar
85531 (p_source_code => 'LEDGER_CATEGORY_CODE'
85532 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
85533 AND l_bflow_method_code = 'PRIOR_ENTRY'
85534 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
85535 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
85536 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
85537 )
85538 THEN
85539 xla_ae_lines_pkg.BflowUpgEntry
85540 (p_business_method_code => l_bflow_method_code
85541 ,p_business_class_code => l_bflow_class_code
85542 ,p_balance_type => l_balance_type_code);
85543 ELSE
85544 NULL;
85545 -- No business flow processing for business flow method of NONE.
85546 END IF;
85547
85548 --
85549 -- call analytical criteria
85550 --
85551
85552 --
85553 -- call description
85554 --
85555 -- No description or it is inherited.
85556 --
85557 -- call ADRs
85558 -- Bug 4922099
85559 --
85560 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85561 (NVL(l_actual_upg_option, 'N') = 'O') OR
85562 (NVL(l_enc_upg_option, 'N') = 'O')
85563 )
85564 THEN
85565 NULL;
85566 --
85567 --
85568
85569 l_ccid := AcctDerRule_4(
85570 p_application_id => p_application_id
85571 , p_ae_header_id => l_ae_header_id
85572 , p_source_4 => p_source_4
85573 , x_transaction_coa_id => l_adr_transaction_coa_id
85574 , x_accounting_coa_id => l_adr_accounting_coa_id
85575 , x_value_type_code => l_adr_value_type_code
85576 , p_side => 'NA'
85577 );
85578
85579 xla_ae_lines_pkg.set_ccid(
85580 p_code_combination_id => l_ccid
85581 , p_value_type_code => l_adr_value_type_code
85582 , p_transaction_coa_id => l_adr_transaction_coa_id
85583 , p_accounting_coa_id => l_adr_accounting_coa_id
85584 , p_adr_code => 'CST_DEFAULT'
85585 , p_adr_type_code => 'S'
85586 , p_component_type => l_component_type
85587 , p_component_code => l_component_code
85588 , p_component_type_code => l_component_type_code
85589 , p_component_appl_id => l_component_appl_id
85590 , p_amb_context_code => l_amb_context_code
85591 , p_side => 'NA'
85592 );
85593
85594
85595 --
85596 --
85597 END IF;
85598 --
85599 -- Bug 4922099
85600 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
85601 (NVL(l_enc_upg_option, 'N') = 'O')
85602 ) AND
85603 (l_bflow_method_code = 'PRIOR_ENTRY')
85604 )
85605 THEN
85606 IF
85607 --
85608 1 = 2
85609 --
85610 THEN
85611 xla_accounting_err_pkg.build_message
85612 (p_appli_s_name => 'XLA'
85613 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85614 ,p_token_1 => 'LINE_NUMBER'
85615 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
85616 ,p_token_2 => 'LINE_TYPE_NAME'
85617 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
85618 l_component_type
85619 ,l_component_code
85620 ,l_component_type_code
85621 ,l_component_appl_id
85622 ,l_amb_context_code
85623 ,l_entity_code
85624 ,l_event_class_code
85625 )
85626 ,p_token_3 => 'OWNER'
85627 ,p_value_3 => xla_lookups_pkg.get_meaning(
85628 p_lookup_type => 'XLA_OWNER_TYPE'
85629 ,p_lookup_code => l_component_type_code
85630 )
85631 ,p_token_4 => 'PRODUCT_NAME'
85632 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
85633 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
85634 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
85635 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
85636 ,p_ae_header_id => NULL
85637 );
85638
85639 IF (C_LEVEL_ERROR>= g_log_level) THEN
85640 trace
85641 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
85642 ,p_level => C_LEVEL_ERROR
85643 ,p_module => l_log_module);
85644 END IF;
85645 END IF;
85646 END IF;
85647 --
85648 --
85649 ------------------------------------------------------------------------------------------------
85650 -- 4219869 Business Flow
85651 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
85652 -- Prior Entry. Currently, the following code is always generated.
85653 ------------------------------------------------------------------------------------------------
85654 XLA_AE_LINES_PKG.ValidateCurrentLine;
85655
85656 ------------------------------------------------------------------------------------
85657 -- 4219869 Business Flow
85658 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
85659 ------------------------------------------------------------------------------------
85660 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85661
85662 ----------------------------------------------------------------------------------
85663 -- 4219869 Business Flow
85664 -- Update journal entry status -- Need to generate this within IF <condition>
85665 ----------------------------------------------------------------------------------
85666 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85667 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
85668 ,p_balance_type_code => l_balance_type_code
85669 );
85670
85671 -------------------------------------------------------------------------------------------
85672 -- 4262811 - Generate the Accrual Reversal lines
85673 -------------------------------------------------------------------------------------------
85674 BEGIN
85675 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
85676 (g_array_event(p_event_id).array_value_num('header_index'));
85677 IF l_acc_rev_flag IS NULL THEN
85678 l_acc_rev_flag := 'N';
85679 END IF;
85680 EXCEPTION
85681 WHEN OTHERS THEN
85682 l_acc_rev_flag := 'N';
85683 END;
85684 --
85685 IF (l_acc_rev_flag = 'Y') THEN
85686
85687 -- 4645092 ------------------------------------------------------------------------------
85688 -- To allow MPA report to determine if it should generate report process
85689 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
85690 ------------------------------------------------------------------------------------------
85691
85692 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
85693 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
85694 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
85695 -- call ADRs
85696 -- Bug 4922099
85697 --
85698 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
85699 (NVL(l_actual_upg_option, 'N') = 'O') OR
85700 (NVL(l_enc_upg_option, 'N') = 'O')
85701 )
85702 THEN
85703 NULL;
85704 --
85705 --
85706
85707 l_ccid := AcctDerRule_4(
85708 p_application_id => p_application_id
85709 , p_ae_header_id => l_ae_header_id
85710 , p_source_4 => p_source_4
85711 , x_transaction_coa_id => l_adr_transaction_coa_id
85712 , x_accounting_coa_id => l_adr_accounting_coa_id
85713 , x_value_type_code => l_adr_value_type_code
85714 , p_side => 'NA'
85715 );
85716
85717 xla_ae_lines_pkg.set_ccid(
85718 p_code_combination_id => l_ccid
85719 , p_value_type_code => l_adr_value_type_code
85720 , p_transaction_coa_id => l_adr_transaction_coa_id
85721 , p_accounting_coa_id => l_adr_accounting_coa_id
85722 , p_adr_code => 'CST_DEFAULT'
85723 , p_adr_type_code => 'S'
85724 , p_component_type => l_component_type
85725 , p_component_code => l_component_code
85726 , p_component_type_code => l_component_type_code
85727 , p_component_appl_id => l_component_appl_id
85728 , p_amb_context_code => l_amb_context_code
85729 , p_side => 'NA'
85730 );
85731
85732
85733 --
85734 --
85735 END IF;
85736
85737 --
85738 -- Update the line information that should be overwritten
85739 --
85740 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
85741 p_header_num => 1);
85742 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
85743
85744 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
85745
85746 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
85747 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
85748 END IF;
85749
85750 --
85751 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
85752 --
85753 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
85754 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
85755 ELSE
85756 ---------------------------------------------------------------------------------------------------
85757 -- 4262811a Switch Sign
85758 ---------------------------------------------------------------------------------------------------
85759 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
85760 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85761 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85762 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
85763 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85764 -- 5132302
85765 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
85766 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
85767
85768 END IF;
85769
85770 -- 4955764
85771 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
85772 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
85773
85774
85775 XLA_AE_LINES_PKG.ValidateCurrentLine;
85776 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
85777
85778 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
85779 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
85780 ,p_balance_type_code => l_balance_type_code);
85781
85782 END IF;
85783
85784 -----------------------------------------------------------------------------------------
85785 -- 4262811 Multiperiod Accounting
85786 -----------------------------------------------------------------------------------------
85787 -- No MPA option is assigned.
85788
85789
85790 END IF;
85791 END IF;
85792 --
85793
85794 --
85795 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85796 trace
85797 (p_msg => 'END of AcctLineType_156'
85798 ,p_level => C_LEVEL_PROCEDURE
85799 ,p_module => l_log_module);
85800 END IF;
85801 --
85802 EXCEPTION
85803 WHEN xla_exceptions_pkg.application_exception THEN
85804 RAISE;
85805 WHEN OTHERS THEN
85806 xla_exceptions_pkg.raise_message
85807 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_156');
85808 END AcctLineType_156;
85809 --
85810
85811 ---------------------------------------
85812 --
85813 -- PRIVATE FUNCTION
85814 -- AcctLineType_157
85815 --
85816 ---------------------------------------
85817 PROCEDURE AcctLineType_157 (
85818 p_application_id IN NUMBER
85819 ,p_event_id IN NUMBER
85820 ,p_calculate_acctd_flag IN VARCHAR2
85821 ,p_calculate_g_l_flag IN VARCHAR2
85822 ,p_actual_flag IN OUT VARCHAR2
85823 ,p_balance_type_code OUT VARCHAR2
85824 ,p_gain_or_loss_ref OUT VARCHAR2
85825
85826 --Cost Management Default Account
85827 , p_source_4 IN NUMBER
85828 --DISTRIBUTION_IDENTIFIER
85829 , p_source_11 IN NUMBER
85830 --Distribution Type
85831 , p_source_12 IN VARCHAR2
85832 , p_source_12_meaning IN VARCHAR2
85833 --Entered Currency Code
85834 , p_source_15 IN VARCHAR2
85835 --Entered Amount
85836 , p_source_18 IN NUMBER
85837 --Currency Conversion Date
85838 , p_source_19 IN DATE
85839 --Currency Conversion Rate
85840 , p_source_20 IN NUMBER
85841 --Currency Conversion Type
85842 , p_source_21 IN VARCHAR2
85843 --Accounted Amount
85844 , p_source_22 IN NUMBER
85845 --Accounting Line Type
85846 , p_source_24 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 := 'INVENTORY_VALUATION';
85937 l_component_type_code := 'S';
85938 l_component_appl_id := 707;
85939 l_amb_context_code := 'DEFAULT';
85940 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
85941 l_event_class_code := 'USER_DEFINE';
85942 l_event_type_code := 'UCG_TXFR';
85943 l_line_definition_owner_code := 'S';
85944 l_line_definition_code := 'USER_CG_TXFR';
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_24,9E125) = 1
85974 THEN
85975
85976 --
85977 XLA_AE_LINES_PKG.SetNewLine;
85978
85979 p_balance_type_code := l_balance_type_code;
85980 -- set the flag so later we will know whether the gain loss line needs to be created
85981
85982 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
85983 p_actual_flag :='A';
85984 END IF;
85985
85986 --
85987 -- bulk performance
85988 --
85989 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
85990 p_header_num => 0); -- 4262811
85991 --
85992 -- set accounting line options
85993 --
85994 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
85995 p_natural_side_code => 'D'
85996 , p_gain_or_loss_flag => 'N'
85997 , p_gl_transfer_mode_code => 'S'
85998 , p_acct_entry_type_code => 'A'
85999 , p_switch_side_flag => 'Y'
86000 , p_merge_duplicate_code => 'N'
86001 );
86002 --
86003 l_acc_rev_natural_side_code := 'C'; -- 4262811
86004 --
86005 --
86006 -- set accounting line type info
86007 --
86008 xla_ae_lines_pkg.SetAcctLineType
86009 (p_component_type => l_component_type
86010 ,p_event_type_code => l_event_type_code
86011 ,p_line_definition_owner_code => l_line_definition_owner_code
86012 ,p_line_definition_code => l_line_definition_code
86013 ,p_accounting_line_code => l_component_code
86014 ,p_accounting_line_type_code => l_component_type_code
86015 ,p_accounting_line_appl_id => l_component_appl_id
86016 ,p_amb_context_code => l_amb_context_code
86017 ,p_entity_code => l_entity_code
86018 ,p_event_class_code => l_event_class_code);
86019 --
86020 -- set accounting class
86021 --
86022 xla_ae_lines_pkg.SetAcctClass(
86023 p_accounting_class_code => 'INVENTORY_VALUATION'
86024 , p_ae_header_id => l_ae_header_id
86025 );
86026
86027 --
86028 -- set rounding class
86029 --
86030 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86031 'INVENTORY_VALUATION';
86032
86033 --
86034 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86035 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86036 --
86037 -- bulk performance
86038 --
86039 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86040
86041 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86042 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86043
86044 -- 4955764
86045 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86046 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86047
86048 -- 4458381 Public Sector Enh
86049
86050 --
86051 -- set accounting attributes for the line type
86052 --
86053 l_entered_amt_idx := 3;
86054 l_accted_amt_idx := 8;
86055 l_bflow_applied_to_amt_idx := NULL; -- 5132302
86056 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86057 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
86058 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86059 l_rec_acct_attrs.array_char_value(2) := p_source_12;
86060 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86061 l_rec_acct_attrs.array_num_value(3) := p_source_18;
86062 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86063 l_rec_acct_attrs.array_char_value(4) := p_source_15;
86064 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86065 l_rec_acct_attrs.array_date_value(5) := p_source_19;
86066 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86067 l_rec_acct_attrs.array_num_value(6) := p_source_20;
86068 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86069 l_rec_acct_attrs.array_char_value(7) := p_source_21;
86070 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86071 l_rec_acct_attrs.array_num_value(8) := p_source_22;
86072
86073 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86074 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86075
86076 ---------------------------------------------------------------------------------------------------------------
86077 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86078 ---------------------------------------------------------------------------------------------------------------
86079 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86080
86081 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86082 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86083
86084 IF xla_accounting_cache_pkg.GetValueChar
86085 (p_source_code => 'LEDGER_CATEGORY_CODE'
86086 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86087 AND l_bflow_method_code = 'PRIOR_ENTRY'
86088 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86089 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86090 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86091 )
86092 THEN
86093 xla_ae_lines_pkg.BflowUpgEntry
86094 (p_business_method_code => l_bflow_method_code
86095 ,p_business_class_code => l_bflow_class_code
86096 ,p_balance_type => l_balance_type_code);
86097 ELSE
86098 NULL;
86099 -- No business flow processing for business flow method of NONE.
86100 END IF;
86101
86102 --
86103 -- call analytical criteria
86104 --
86105
86106 --
86107 -- call description
86108 --
86109 -- No description or it is inherited.
86110 --
86111 -- call ADRs
86112 -- Bug 4922099
86113 --
86114 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86115 (NVL(l_actual_upg_option, 'N') = 'O') OR
86116 (NVL(l_enc_upg_option, 'N') = 'O')
86117 )
86118 THEN
86119 NULL;
86120 --
86121 --
86122
86123 l_ccid := AcctDerRule_4(
86124 p_application_id => p_application_id
86125 , p_ae_header_id => l_ae_header_id
86126 , p_source_4 => p_source_4
86127 , x_transaction_coa_id => l_adr_transaction_coa_id
86128 , x_accounting_coa_id => l_adr_accounting_coa_id
86129 , x_value_type_code => l_adr_value_type_code
86130 , p_side => 'NA'
86131 );
86132
86133 xla_ae_lines_pkg.set_ccid(
86134 p_code_combination_id => l_ccid
86135 , p_value_type_code => l_adr_value_type_code
86136 , p_transaction_coa_id => l_adr_transaction_coa_id
86137 , p_accounting_coa_id => l_adr_accounting_coa_id
86138 , p_adr_code => 'CST_DEFAULT'
86139 , p_adr_type_code => 'S'
86140 , p_component_type => l_component_type
86141 , p_component_code => l_component_code
86142 , p_component_type_code => l_component_type_code
86143 , p_component_appl_id => l_component_appl_id
86144 , p_amb_context_code => l_amb_context_code
86145 , p_side => 'NA'
86146 );
86147
86148
86149 --
86150 --
86151 END IF;
86152 --
86153 -- Bug 4922099
86154 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86155 (NVL(l_enc_upg_option, 'N') = 'O')
86156 ) AND
86157 (l_bflow_method_code = 'PRIOR_ENTRY')
86158 )
86159 THEN
86160 IF
86161 --
86162 1 = 2
86163 --
86164 THEN
86165 xla_accounting_err_pkg.build_message
86166 (p_appli_s_name => 'XLA'
86167 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86168 ,p_token_1 => 'LINE_NUMBER'
86169 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
86170 ,p_token_2 => 'LINE_TYPE_NAME'
86171 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
86172 l_component_type
86173 ,l_component_code
86174 ,l_component_type_code
86175 ,l_component_appl_id
86176 ,l_amb_context_code
86177 ,l_entity_code
86178 ,l_event_class_code
86179 )
86180 ,p_token_3 => 'OWNER'
86181 ,p_value_3 => xla_lookups_pkg.get_meaning(
86182 p_lookup_type => 'XLA_OWNER_TYPE'
86183 ,p_lookup_code => l_component_type_code
86184 )
86185 ,p_token_4 => 'PRODUCT_NAME'
86186 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86187 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86188 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86189 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86190 ,p_ae_header_id => NULL
86191 );
86192
86193 IF (C_LEVEL_ERROR>= g_log_level) THEN
86194 trace
86195 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86196 ,p_level => C_LEVEL_ERROR
86197 ,p_module => l_log_module);
86198 END IF;
86199 END IF;
86200 END IF;
86201 --
86202 --
86203 ------------------------------------------------------------------------------------------------
86204 -- 4219869 Business Flow
86205 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86206 -- Prior Entry. Currently, the following code is always generated.
86207 ------------------------------------------------------------------------------------------------
86208 XLA_AE_LINES_PKG.ValidateCurrentLine;
86209
86210 ------------------------------------------------------------------------------------
86211 -- 4219869 Business Flow
86212 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86213 ------------------------------------------------------------------------------------
86214 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86215
86216 ----------------------------------------------------------------------------------
86217 -- 4219869 Business Flow
86218 -- Update journal entry status -- Need to generate this within IF <condition>
86219 ----------------------------------------------------------------------------------
86220 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86221 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86222 ,p_balance_type_code => l_balance_type_code
86223 );
86224
86225 -------------------------------------------------------------------------------------------
86226 -- 4262811 - Generate the Accrual Reversal lines
86227 -------------------------------------------------------------------------------------------
86228 BEGIN
86229 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86230 (g_array_event(p_event_id).array_value_num('header_index'));
86231 IF l_acc_rev_flag IS NULL THEN
86232 l_acc_rev_flag := 'N';
86233 END IF;
86234 EXCEPTION
86235 WHEN OTHERS THEN
86236 l_acc_rev_flag := 'N';
86237 END;
86238 --
86239 IF (l_acc_rev_flag = 'Y') THEN
86240
86241 -- 4645092 ------------------------------------------------------------------------------
86242 -- To allow MPA report to determine if it should generate report process
86243 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86244 ------------------------------------------------------------------------------------------
86245
86246 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86247 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86248 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
86249 -- call ADRs
86250 -- Bug 4922099
86251 --
86252 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86253 (NVL(l_actual_upg_option, 'N') = 'O') OR
86254 (NVL(l_enc_upg_option, 'N') = 'O')
86255 )
86256 THEN
86257 NULL;
86258 --
86259 --
86260
86261 l_ccid := AcctDerRule_4(
86262 p_application_id => p_application_id
86263 , p_ae_header_id => l_ae_header_id
86264 , p_source_4 => p_source_4
86265 , x_transaction_coa_id => l_adr_transaction_coa_id
86266 , x_accounting_coa_id => l_adr_accounting_coa_id
86267 , x_value_type_code => l_adr_value_type_code
86268 , p_side => 'NA'
86269 );
86270
86271 xla_ae_lines_pkg.set_ccid(
86272 p_code_combination_id => l_ccid
86273 , p_value_type_code => l_adr_value_type_code
86274 , p_transaction_coa_id => l_adr_transaction_coa_id
86275 , p_accounting_coa_id => l_adr_accounting_coa_id
86276 , p_adr_code => 'CST_DEFAULT'
86277 , p_adr_type_code => 'S'
86278 , p_component_type => l_component_type
86279 , p_component_code => l_component_code
86280 , p_component_type_code => l_component_type_code
86281 , p_component_appl_id => l_component_appl_id
86282 , p_amb_context_code => l_amb_context_code
86283 , p_side => 'NA'
86284 );
86285
86286
86287 --
86288 --
86289 END IF;
86290
86291 --
86292 -- Update the line information that should be overwritten
86293 --
86294 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86295 p_header_num => 1);
86296 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
86297
86298 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86299
86300 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
86301 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86302 END IF;
86303
86304 --
86305 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86306 --
86307 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86308 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
86309 ELSE
86310 ---------------------------------------------------------------------------------------------------
86311 -- 4262811a Switch Sign
86312 ---------------------------------------------------------------------------------------------------
86313 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
86314 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86315 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86316 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86317 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86318 -- 5132302
86319 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86320 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86321
86322 END IF;
86323
86324 -- 4955764
86325 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86326 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86327
86328
86329 XLA_AE_LINES_PKG.ValidateCurrentLine;
86330 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86331
86332 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86333 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86334 ,p_balance_type_code => l_balance_type_code);
86335
86336 END IF;
86337
86338 -----------------------------------------------------------------------------------------
86339 -- 4262811 Multiperiod Accounting
86340 -----------------------------------------------------------------------------------------
86341 -- No MPA option is assigned.
86342
86343
86344 END IF;
86345 END IF;
86346 --
86347
86348 --
86349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86350 trace
86351 (p_msg => 'END of AcctLineType_157'
86352 ,p_level => C_LEVEL_PROCEDURE
86353 ,p_module => l_log_module);
86354 END IF;
86355 --
86356 EXCEPTION
86357 WHEN xla_exceptions_pkg.application_exception THEN
86358 RAISE;
86359 WHEN OTHERS THEN
86360 xla_exceptions_pkg.raise_message
86361 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_157');
86362 END AcctLineType_157;
86363 --
86364
86365 ---------------------------------------
86366 --
86367 -- PRIVATE FUNCTION
86368 -- AcctLineType_158
86369 --
86370 ---------------------------------------
86371 PROCEDURE AcctLineType_158 (
86372 p_application_id IN NUMBER
86373 ,p_event_id IN NUMBER
86374 ,p_calculate_acctd_flag IN VARCHAR2
86375 ,p_calculate_g_l_flag IN VARCHAR2
86376 ,p_actual_flag IN OUT VARCHAR2
86377 ,p_balance_type_code OUT VARCHAR2
86378 ,p_gain_or_loss_ref OUT VARCHAR2
86379
86380 --Cost Management Default Account
86381 , p_source_4 IN NUMBER
86382 --DISTRIBUTION_IDENTIFIER
86383 , p_source_11 IN NUMBER
86384 --Distribution Type
86385 , p_source_12 IN VARCHAR2
86386 , p_source_12_meaning IN VARCHAR2
86387 --Entered Currency Code
86388 , p_source_15 IN VARCHAR2
86389 --Entered Amount
86390 , p_source_18 IN NUMBER
86391 --Currency Conversion Date
86392 , p_source_19 IN DATE
86393 --Currency Conversion Rate
86394 , p_source_20 IN NUMBER
86395 --Currency Conversion Type
86396 , p_source_21 IN VARCHAR2
86397 --Accounted Amount
86398 , p_source_22 IN NUMBER
86399 --Accounting Line Type
86400 , p_source_24 IN NUMBER
86401 )
86402 IS
86403
86404 l_component_type VARCHAR2(80);
86405 l_component_code VARCHAR2(30);
86406 l_component_type_code VARCHAR2(1);
86407 l_component_appl_id INTEGER;
86408 l_amb_context_code VARCHAR2(30);
86409 l_entity_code VARCHAR2(30);
86410 l_event_class_code VARCHAR2(30);
86411 l_ae_header_id NUMBER;
86412 l_event_type_code VARCHAR2(30);
86413 l_line_definition_code VARCHAR2(30);
86414 l_line_definition_owner_code VARCHAR2(1);
86415 --
86416 -- adr variables
86417 l_segment VARCHAR2(30);
86418 l_ccid NUMBER;
86419 l_adr_transaction_coa_id NUMBER;
86420 l_adr_accounting_coa_id NUMBER;
86421 l_adr_flexfield_segment_code VARCHAR2(30);
86422 l_adr_flex_value_set_id NUMBER;
86423 l_adr_value_type_code VARCHAR2(30);
86424 l_adr_value_combination_id NUMBER;
86425 l_adr_value_segment_code VARCHAR2(30);
86426
86427 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
86428 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
86429 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
86430 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
86431
86432 -- 4262811 Variables ------------------------------------------------------------------------------------------
86433 l_entered_amt_idx NUMBER;
86434 l_accted_amt_idx NUMBER;
86435 l_acc_rev_flag VARCHAR2(1);
86436 l_accrual_line_num NUMBER;
86437 l_tmp_amt NUMBER;
86438 l_acc_rev_natural_side_code VARCHAR2(1);
86439
86440 l_num_entries NUMBER;
86441 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
86442 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
86443 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
86444 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
86445 l_recog_line_1 NUMBER;
86446 l_recog_line_2 NUMBER;
86447
86448 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
86449 l_bflow_applied_to_amt NUMBER; -- 5132302
86450 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
86451
86452 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
86453
86454 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
86455 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
86456
86457 ---------------------------------------------------------------------------------------------------------------
86458
86459
86460 --
86461 -- bulk performance
86462 --
86463 l_balance_type_code VARCHAR2(1);
86464 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
86465 l_log_module VARCHAR2(240);
86466
86467 --
86468 -- Upgrade strategy
86469 --
86470 l_actual_upg_option VARCHAR2(1);
86471 l_enc_upg_option VARCHAR2(1);
86472
86473 --
86474 BEGIN
86475 --
86476 IF g_log_enabled THEN
86477 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_158';
86478 END IF;
86479 --
86480 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86481
86482 trace
86483 (p_msg => 'BEGIN of AcctLineType_158'
86484 ,p_level => C_LEVEL_PROCEDURE
86485 ,p_module => l_log_module);
86486
86487 END IF;
86488 --
86489 l_component_type := 'AMB_JLT';
86490 l_component_code := 'INVENTORY_VALUATION';
86491 l_component_type_code := 'S';
86492 l_component_appl_id := 707;
86493 l_amb_context_code := 'DEFAULT';
86494 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
86495 l_event_class_code := 'USER_DEFINE';
86496 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
86497 l_line_definition_owner_code := 'S';
86498 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
86499 --
86500 l_balance_type_code := 'A';
86501 l_segment := NULL;
86502 l_ccid := NULL;
86503 l_adr_transaction_coa_id := NULL;
86504 l_adr_accounting_coa_id := NULL;
86505 l_adr_flexfield_segment_code := NULL;
86506 l_adr_flex_value_set_id := NULL;
86507 l_adr_value_type_code := NULL;
86508 l_adr_value_combination_id := NULL;
86509 l_adr_value_segment_code := NULL;
86510
86511 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
86512 l_bflow_class_code := ''; -- 4219869 Business Flow
86513 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
86514 l_budgetary_control_flag := 'N';
86515
86516 l_bflow_applied_to_amt_idx := NULL; -- 5132302
86517 l_bflow_applied_to_amt := NULL; -- 5132302
86518 l_entered_amt_idx := NULL; -- 4262811
86519 l_accted_amt_idx := NULL; -- 4262811
86520 l_acc_rev_flag := NULL; -- 4262811
86521 l_accrual_line_num := NULL; -- 4262811
86522 l_tmp_amt := NULL; -- 4262811
86523 --
86524
86525 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
86526 l_balance_type_code <> 'B' THEN
86527 IF NVL(p_source_24,9E125) = 1
86528 THEN
86529
86530 --
86531 XLA_AE_LINES_PKG.SetNewLine;
86532
86533 p_balance_type_code := l_balance_type_code;
86534 -- set the flag so later we will know whether the gain loss line needs to be created
86535
86536 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
86537 p_actual_flag :='A';
86538 END IF;
86539
86540 --
86541 -- bulk performance
86542 --
86543 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
86544 p_header_num => 0); -- 4262811
86545 --
86546 -- set accounting line options
86547 --
86548 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
86549 p_natural_side_code => 'D'
86550 , p_gain_or_loss_flag => 'N'
86551 , p_gl_transfer_mode_code => 'S'
86552 , p_acct_entry_type_code => 'A'
86553 , p_switch_side_flag => 'Y'
86554 , p_merge_duplicate_code => 'N'
86555 );
86556 --
86557 l_acc_rev_natural_side_code := 'C'; -- 4262811
86558 --
86559 --
86560 -- set accounting line type info
86561 --
86562 xla_ae_lines_pkg.SetAcctLineType
86563 (p_component_type => l_component_type
86564 ,p_event_type_code => l_event_type_code
86565 ,p_line_definition_owner_code => l_line_definition_owner_code
86566 ,p_line_definition_code => l_line_definition_code
86567 ,p_accounting_line_code => l_component_code
86568 ,p_accounting_line_type_code => l_component_type_code
86569 ,p_accounting_line_appl_id => l_component_appl_id
86570 ,p_amb_context_code => l_amb_context_code
86571 ,p_entity_code => l_entity_code
86572 ,p_event_class_code => l_event_class_code);
86573 --
86574 -- set accounting class
86575 --
86576 xla_ae_lines_pkg.SetAcctClass(
86577 p_accounting_class_code => 'INVENTORY_VALUATION'
86578 , p_ae_header_id => l_ae_header_id
86579 );
86580
86581 --
86582 -- set rounding class
86583 --
86584 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
86585 'INVENTORY_VALUATION';
86586
86587 --
86588 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
86589 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
86590 --
86591 -- bulk performance
86592 --
86593 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
86594
86595 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
86596 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
86597
86598 -- 4955764
86599 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86600 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
86601
86602 -- 4458381 Public Sector Enh
86603
86604 --
86605 -- set accounting attributes for the line type
86606 --
86607 l_entered_amt_idx := 3;
86608 l_accted_amt_idx := 8;
86609 l_bflow_applied_to_amt_idx := NULL; -- 5132302
86610 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
86611 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
86612 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
86613 l_rec_acct_attrs.array_char_value(2) := p_source_12;
86614 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
86615 l_rec_acct_attrs.array_num_value(3) := p_source_18;
86616 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
86617 l_rec_acct_attrs.array_char_value(4) := p_source_15;
86618 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
86619 l_rec_acct_attrs.array_date_value(5) := p_source_19;
86620 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
86621 l_rec_acct_attrs.array_num_value(6) := p_source_20;
86622 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
86623 l_rec_acct_attrs.array_char_value(7) := p_source_21;
86624 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
86625 l_rec_acct_attrs.array_num_value(8) := p_source_22;
86626
86627 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
86628 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
86629
86630 ---------------------------------------------------------------------------------------------------------------
86631 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
86632 ---------------------------------------------------------------------------------------------------------------
86633 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
86634
86635 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86636 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
86637
86638 IF xla_accounting_cache_pkg.GetValueChar
86639 (p_source_code => 'LEDGER_CATEGORY_CODE'
86640 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
86641 AND l_bflow_method_code = 'PRIOR_ENTRY'
86642 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
86643 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
86644 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
86645 )
86646 THEN
86647 xla_ae_lines_pkg.BflowUpgEntry
86648 (p_business_method_code => l_bflow_method_code
86649 ,p_business_class_code => l_bflow_class_code
86650 ,p_balance_type => l_balance_type_code);
86651 ELSE
86652 NULL;
86653 -- No business flow processing for business flow method of NONE.
86654 END IF;
86655
86656 --
86657 -- call analytical criteria
86658 --
86659
86660 --
86661 -- call description
86662 --
86663 -- No description or it is inherited.
86664 --
86665 -- call ADRs
86666 -- Bug 4922099
86667 --
86668 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86669 (NVL(l_actual_upg_option, 'N') = 'O') OR
86670 (NVL(l_enc_upg_option, 'N') = 'O')
86671 )
86672 THEN
86673 NULL;
86674 --
86675 --
86676
86677 l_ccid := AcctDerRule_4(
86678 p_application_id => p_application_id
86679 , p_ae_header_id => l_ae_header_id
86680 , p_source_4 => p_source_4
86681 , x_transaction_coa_id => l_adr_transaction_coa_id
86682 , x_accounting_coa_id => l_adr_accounting_coa_id
86683 , x_value_type_code => l_adr_value_type_code
86684 , p_side => 'NA'
86685 );
86686
86687 xla_ae_lines_pkg.set_ccid(
86688 p_code_combination_id => l_ccid
86689 , p_value_type_code => l_adr_value_type_code
86690 , p_transaction_coa_id => l_adr_transaction_coa_id
86691 , p_accounting_coa_id => l_adr_accounting_coa_id
86692 , p_adr_code => 'CST_DEFAULT'
86693 , p_adr_type_code => 'S'
86694 , p_component_type => l_component_type
86695 , p_component_code => l_component_code
86696 , p_component_type_code => l_component_type_code
86697 , p_component_appl_id => l_component_appl_id
86698 , p_amb_context_code => l_amb_context_code
86699 , p_side => 'NA'
86700 );
86701
86702
86703 --
86704 --
86705 END IF;
86706 --
86707 -- Bug 4922099
86708 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
86709 (NVL(l_enc_upg_option, 'N') = 'O')
86710 ) AND
86711 (l_bflow_method_code = 'PRIOR_ENTRY')
86712 )
86713 THEN
86714 IF
86715 --
86716 1 = 2
86717 --
86718 THEN
86719 xla_accounting_err_pkg.build_message
86720 (p_appli_s_name => 'XLA'
86721 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86722 ,p_token_1 => 'LINE_NUMBER'
86723 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
86724 ,p_token_2 => 'LINE_TYPE_NAME'
86725 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
86726 l_component_type
86727 ,l_component_code
86728 ,l_component_type_code
86729 ,l_component_appl_id
86730 ,l_amb_context_code
86731 ,l_entity_code
86732 ,l_event_class_code
86733 )
86734 ,p_token_3 => 'OWNER'
86735 ,p_value_3 => xla_lookups_pkg.get_meaning(
86736 p_lookup_type => 'XLA_OWNER_TYPE'
86737 ,p_lookup_code => l_component_type_code
86738 )
86739 ,p_token_4 => 'PRODUCT_NAME'
86740 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
86741 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
86742 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
86743 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
86744 ,p_ae_header_id => NULL
86745 );
86746
86747 IF (C_LEVEL_ERROR>= g_log_level) THEN
86748 trace
86749 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
86750 ,p_level => C_LEVEL_ERROR
86751 ,p_module => l_log_module);
86752 END IF;
86753 END IF;
86754 END IF;
86755 --
86756 --
86757 ------------------------------------------------------------------------------------------------
86758 -- 4219869 Business Flow
86759 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
86760 -- Prior Entry. Currently, the following code is always generated.
86761 ------------------------------------------------------------------------------------------------
86762 XLA_AE_LINES_PKG.ValidateCurrentLine;
86763
86764 ------------------------------------------------------------------------------------
86765 -- 4219869 Business Flow
86766 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
86767 ------------------------------------------------------------------------------------
86768 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86769
86770 ----------------------------------------------------------------------------------
86771 -- 4219869 Business Flow
86772 -- Update journal entry status -- Need to generate this within IF <condition>
86773 ----------------------------------------------------------------------------------
86774 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86775 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
86776 ,p_balance_type_code => l_balance_type_code
86777 );
86778
86779 -------------------------------------------------------------------------------------------
86780 -- 4262811 - Generate the Accrual Reversal lines
86781 -------------------------------------------------------------------------------------------
86782 BEGIN
86783 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
86784 (g_array_event(p_event_id).array_value_num('header_index'));
86785 IF l_acc_rev_flag IS NULL THEN
86786 l_acc_rev_flag := 'N';
86787 END IF;
86788 EXCEPTION
86789 WHEN OTHERS THEN
86790 l_acc_rev_flag := 'N';
86791 END;
86792 --
86793 IF (l_acc_rev_flag = 'Y') THEN
86794
86795 -- 4645092 ------------------------------------------------------------------------------
86796 -- To allow MPA report to determine if it should generate report process
86797 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
86798 ------------------------------------------------------------------------------------------
86799
86800 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
86801 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
86802 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
86803 -- call ADRs
86804 -- Bug 4922099
86805 --
86806 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
86807 (NVL(l_actual_upg_option, 'N') = 'O') OR
86808 (NVL(l_enc_upg_option, 'N') = 'O')
86809 )
86810 THEN
86811 NULL;
86812 --
86813 --
86814
86815 l_ccid := AcctDerRule_4(
86816 p_application_id => p_application_id
86817 , p_ae_header_id => l_ae_header_id
86818 , p_source_4 => p_source_4
86819 , x_transaction_coa_id => l_adr_transaction_coa_id
86820 , x_accounting_coa_id => l_adr_accounting_coa_id
86821 , x_value_type_code => l_adr_value_type_code
86822 , p_side => 'NA'
86823 );
86824
86825 xla_ae_lines_pkg.set_ccid(
86826 p_code_combination_id => l_ccid
86827 , p_value_type_code => l_adr_value_type_code
86828 , p_transaction_coa_id => l_adr_transaction_coa_id
86829 , p_accounting_coa_id => l_adr_accounting_coa_id
86830 , p_adr_code => 'CST_DEFAULT'
86831 , p_adr_type_code => 'S'
86832 , p_component_type => l_component_type
86833 , p_component_code => l_component_code
86834 , p_component_type_code => l_component_type_code
86835 , p_component_appl_id => l_component_appl_id
86836 , p_amb_context_code => l_amb_context_code
86837 , p_side => 'NA'
86838 );
86839
86840
86841 --
86842 --
86843 END IF;
86844
86845 --
86846 -- Update the line information that should be overwritten
86847 --
86848 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
86849 p_header_num => 1);
86850 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
86851
86852 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
86853
86854 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
86855 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
86856 END IF;
86857
86858 --
86859 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
86860 --
86861 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
86862 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
86863 ELSE
86864 ---------------------------------------------------------------------------------------------------
86865 -- 4262811a Switch Sign
86866 ---------------------------------------------------------------------------------------------------
86867 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
86868 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86869 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86870 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
86871 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86872 -- 5132302
86873 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
86874 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
86875
86876 END IF;
86877
86878 -- 4955764
86879 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
86880 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
86881
86882
86883 XLA_AE_LINES_PKG.ValidateCurrentLine;
86884 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
86885
86886 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
86887 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
86888 ,p_balance_type_code => l_balance_type_code);
86889
86890 END IF;
86891
86892 -----------------------------------------------------------------------------------------
86893 -- 4262811 Multiperiod Accounting
86894 -----------------------------------------------------------------------------------------
86895 -- No MPA option is assigned.
86896
86897
86898 END IF;
86899 END IF;
86900 --
86901
86902 --
86903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86904 trace
86905 (p_msg => 'END of AcctLineType_158'
86906 ,p_level => C_LEVEL_PROCEDURE
86907 ,p_module => l_log_module);
86908 END IF;
86909 --
86910 EXCEPTION
86911 WHEN xla_exceptions_pkg.application_exception THEN
86912 RAISE;
86913 WHEN OTHERS THEN
86914 xla_exceptions_pkg.raise_message
86915 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_158');
86916 END AcctLineType_158;
86917 --
86918
86919 ---------------------------------------
86920 --
86921 -- PRIVATE FUNCTION
86922 -- AcctLineType_159
86923 --
86924 ---------------------------------------
86925 PROCEDURE AcctLineType_159 (
86926 p_application_id IN NUMBER
86927 ,p_event_id IN NUMBER
86928 ,p_calculate_acctd_flag IN VARCHAR2
86929 ,p_calculate_g_l_flag IN VARCHAR2
86930 ,p_actual_flag IN OUT VARCHAR2
86931 ,p_balance_type_code OUT VARCHAR2
86932 ,p_gain_or_loss_ref OUT VARCHAR2
86933
86934 --Cost Management Default Account
86935 , p_source_4 IN NUMBER
86936 --DISTRIBUTION_IDENTIFIER
86937 , p_source_11 IN NUMBER
86938 --Distribution Type
86939 , p_source_12 IN VARCHAR2
86940 , p_source_12_meaning IN VARCHAR2
86941 --Entered Currency Code
86942 , p_source_15 IN VARCHAR2
86943 --Entered Amount
86944 , p_source_18 IN NUMBER
86945 --Currency Conversion Date
86946 , p_source_19 IN DATE
86947 --Currency Conversion Rate
86948 , p_source_20 IN NUMBER
86949 --Currency Conversion Type
86950 , p_source_21 IN VARCHAR2
86951 --Accounted Amount
86952 , p_source_22 IN NUMBER
86953 --Accounting Line Type
86954 , p_source_24 IN NUMBER
86955 )
86956 IS
86957
86958 l_component_type VARCHAR2(80);
86959 l_component_code VARCHAR2(30);
86960 l_component_type_code VARCHAR2(1);
86961 l_component_appl_id INTEGER;
86962 l_amb_context_code VARCHAR2(30);
86963 l_entity_code VARCHAR2(30);
86964 l_event_class_code VARCHAR2(30);
86965 l_ae_header_id NUMBER;
86966 l_event_type_code VARCHAR2(30);
86967 l_line_definition_code VARCHAR2(30);
86968 l_line_definition_owner_code VARCHAR2(1);
86969 --
86970 -- adr variables
86971 l_segment VARCHAR2(30);
86972 l_ccid NUMBER;
86973 l_adr_transaction_coa_id NUMBER;
86974 l_adr_accounting_coa_id NUMBER;
86975 l_adr_flexfield_segment_code VARCHAR2(30);
86976 l_adr_flex_value_set_id NUMBER;
86977 l_adr_value_type_code VARCHAR2(30);
86978 l_adr_value_combination_id NUMBER;
86979 l_adr_value_segment_code VARCHAR2(30);
86980
86981 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
86982 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
86983 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
86984 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
86985
86986 -- 4262811 Variables ------------------------------------------------------------------------------------------
86987 l_entered_amt_idx NUMBER;
86988 l_accted_amt_idx NUMBER;
86989 l_acc_rev_flag VARCHAR2(1);
86990 l_accrual_line_num NUMBER;
86991 l_tmp_amt NUMBER;
86992 l_acc_rev_natural_side_code VARCHAR2(1);
86993
86994 l_num_entries NUMBER;
86995 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
86996 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
86997 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
86998 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
86999 l_recog_line_1 NUMBER;
87000 l_recog_line_2 NUMBER;
87001
87002 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
87003 l_bflow_applied_to_amt NUMBER; -- 5132302
87004 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
87005
87006 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87007
87008 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
87009 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
87010
87011 ---------------------------------------------------------------------------------------------------------------
87012
87013
87014 --
87015 -- bulk performance
87016 --
87017 l_balance_type_code VARCHAR2(1);
87018 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
87019 l_log_module VARCHAR2(240);
87020
87021 --
87022 -- Upgrade strategy
87023 --
87024 l_actual_upg_option VARCHAR2(1);
87025 l_enc_upg_option VARCHAR2(1);
87026
87027 --
87028 BEGIN
87029 --
87030 IF g_log_enabled THEN
87031 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_159';
87032 END IF;
87033 --
87034 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87035
87036 trace
87037 (p_msg => 'BEGIN of AcctLineType_159'
87038 ,p_level => C_LEVEL_PROCEDURE
87039 ,p_module => l_log_module);
87040
87041 END IF;
87042 --
87043 l_component_type := 'AMB_JLT';
87044 l_component_code := 'INVENTORY_VALUATION';
87045 l_component_type_code := 'S';
87046 l_component_appl_id := 707;
87047 l_amb_context_code := 'DEFAULT';
87048 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
87049 l_event_class_code := 'USER_DEFINE';
87050 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_TP';
87051 l_line_definition_owner_code := 'S';
87052 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
87053 --
87054 l_balance_type_code := 'A';
87055 l_segment := NULL;
87056 l_ccid := NULL;
87057 l_adr_transaction_coa_id := NULL;
87058 l_adr_accounting_coa_id := NULL;
87059 l_adr_flexfield_segment_code := NULL;
87060 l_adr_flex_value_set_id := NULL;
87061 l_adr_value_type_code := NULL;
87062 l_adr_value_combination_id := NULL;
87063 l_adr_value_segment_code := NULL;
87064
87065 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
87066 l_bflow_class_code := ''; -- 4219869 Business Flow
87067 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
87068 l_budgetary_control_flag := 'N';
87069
87070 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87071 l_bflow_applied_to_amt := NULL; -- 5132302
87072 l_entered_amt_idx := NULL; -- 4262811
87073 l_accted_amt_idx := NULL; -- 4262811
87074 l_acc_rev_flag := NULL; -- 4262811
87075 l_accrual_line_num := NULL; -- 4262811
87076 l_tmp_amt := NULL; -- 4262811
87077 --
87078
87079 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87080 l_balance_type_code <> 'B' THEN
87081 IF NVL(p_source_24,9E125) = 1
87082 THEN
87083
87084 --
87085 XLA_AE_LINES_PKG.SetNewLine;
87086
87087 p_balance_type_code := l_balance_type_code;
87088 -- set the flag so later we will know whether the gain loss line needs to be created
87089
87090 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87091 p_actual_flag :='A';
87092 END IF;
87093
87094 --
87095 -- bulk performance
87096 --
87097 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87098 p_header_num => 0); -- 4262811
87099 --
87100 -- set accounting line options
87101 --
87102 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87103 p_natural_side_code => 'D'
87104 , p_gain_or_loss_flag => 'N'
87105 , p_gl_transfer_mode_code => 'S'
87106 , p_acct_entry_type_code => 'A'
87107 , p_switch_side_flag => 'Y'
87108 , p_merge_duplicate_code => 'N'
87109 );
87110 --
87111 l_acc_rev_natural_side_code := 'C'; -- 4262811
87112 --
87113 --
87114 -- set accounting line type info
87115 --
87116 xla_ae_lines_pkg.SetAcctLineType
87117 (p_component_type => l_component_type
87118 ,p_event_type_code => l_event_type_code
87119 ,p_line_definition_owner_code => l_line_definition_owner_code
87120 ,p_line_definition_code => l_line_definition_code
87121 ,p_accounting_line_code => l_component_code
87122 ,p_accounting_line_type_code => l_component_type_code
87123 ,p_accounting_line_appl_id => l_component_appl_id
87124 ,p_amb_context_code => l_amb_context_code
87125 ,p_entity_code => l_entity_code
87126 ,p_event_class_code => l_event_class_code);
87127 --
87128 -- set accounting class
87129 --
87130 xla_ae_lines_pkg.SetAcctClass(
87131 p_accounting_class_code => 'INVENTORY_VALUATION'
87132 , p_ae_header_id => l_ae_header_id
87133 );
87134
87135 --
87136 -- set rounding class
87137 --
87138 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87139 'INVENTORY_VALUATION';
87140
87141 --
87142 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87143 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87144 --
87145 -- bulk performance
87146 --
87147 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87148
87149 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87150 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87151
87152 -- 4955764
87153 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87154 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87155
87156 -- 4458381 Public Sector Enh
87157
87158 --
87159 -- set accounting attributes for the line type
87160 --
87161 l_entered_amt_idx := 3;
87162 l_accted_amt_idx := 8;
87163 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87164 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
87165 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
87166 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
87167 l_rec_acct_attrs.array_char_value(2) := p_source_12;
87168 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
87169 l_rec_acct_attrs.array_num_value(3) := p_source_18;
87170 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
87171 l_rec_acct_attrs.array_char_value(4) := p_source_15;
87172 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
87173 l_rec_acct_attrs.array_date_value(5) := p_source_19;
87174 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
87175 l_rec_acct_attrs.array_num_value(6) := p_source_20;
87176 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
87177 l_rec_acct_attrs.array_char_value(7) := p_source_21;
87178 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
87179 l_rec_acct_attrs.array_num_value(8) := p_source_22;
87180
87181 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87182 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87183
87184 ---------------------------------------------------------------------------------------------------------------
87185 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87186 ---------------------------------------------------------------------------------------------------------------
87187 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87188
87189 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87190 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87191
87192 IF xla_accounting_cache_pkg.GetValueChar
87193 (p_source_code => 'LEDGER_CATEGORY_CODE'
87194 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87195 AND l_bflow_method_code = 'PRIOR_ENTRY'
87196 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87197 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87198 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87199 )
87200 THEN
87201 xla_ae_lines_pkg.BflowUpgEntry
87202 (p_business_method_code => l_bflow_method_code
87203 ,p_business_class_code => l_bflow_class_code
87204 ,p_balance_type => l_balance_type_code);
87205 ELSE
87206 NULL;
87207 -- No business flow processing for business flow method of NONE.
87208 END IF;
87209
87210 --
87211 -- call analytical criteria
87212 --
87213
87214 --
87215 -- call description
87216 --
87217 -- No description or it is inherited.
87218 --
87219 -- call ADRs
87220 -- Bug 4922099
87221 --
87222 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87223 (NVL(l_actual_upg_option, 'N') = 'O') OR
87224 (NVL(l_enc_upg_option, 'N') = 'O')
87225 )
87226 THEN
87227 NULL;
87228 --
87229 --
87230
87231 l_ccid := AcctDerRule_4(
87232 p_application_id => p_application_id
87233 , p_ae_header_id => l_ae_header_id
87234 , p_source_4 => p_source_4
87235 , x_transaction_coa_id => l_adr_transaction_coa_id
87236 , x_accounting_coa_id => l_adr_accounting_coa_id
87237 , x_value_type_code => l_adr_value_type_code
87238 , p_side => 'NA'
87239 );
87240
87241 xla_ae_lines_pkg.set_ccid(
87242 p_code_combination_id => l_ccid
87243 , p_value_type_code => l_adr_value_type_code
87244 , p_transaction_coa_id => l_adr_transaction_coa_id
87245 , p_accounting_coa_id => l_adr_accounting_coa_id
87246 , p_adr_code => 'CST_DEFAULT'
87247 , p_adr_type_code => 'S'
87248 , p_component_type => l_component_type
87249 , p_component_code => l_component_code
87250 , p_component_type_code => l_component_type_code
87251 , p_component_appl_id => l_component_appl_id
87252 , p_amb_context_code => l_amb_context_code
87253 , p_side => 'NA'
87254 );
87255
87256
87257 --
87258 --
87259 END IF;
87260 --
87261 -- Bug 4922099
87262 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87263 (NVL(l_enc_upg_option, 'N') = 'O')
87264 ) AND
87265 (l_bflow_method_code = 'PRIOR_ENTRY')
87266 )
87267 THEN
87268 IF
87269 --
87270 1 = 2
87271 --
87272 THEN
87273 xla_accounting_err_pkg.build_message
87274 (p_appli_s_name => 'XLA'
87275 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87276 ,p_token_1 => 'LINE_NUMBER'
87277 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
87278 ,p_token_2 => 'LINE_TYPE_NAME'
87279 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
87280 l_component_type
87281 ,l_component_code
87282 ,l_component_type_code
87283 ,l_component_appl_id
87284 ,l_amb_context_code
87285 ,l_entity_code
87286 ,l_event_class_code
87287 )
87288 ,p_token_3 => 'OWNER'
87289 ,p_value_3 => xla_lookups_pkg.get_meaning(
87290 p_lookup_type => 'XLA_OWNER_TYPE'
87291 ,p_lookup_code => l_component_type_code
87292 )
87293 ,p_token_4 => 'PRODUCT_NAME'
87294 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87295 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87296 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87297 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87298 ,p_ae_header_id => NULL
87299 );
87300
87301 IF (C_LEVEL_ERROR>= g_log_level) THEN
87302 trace
87303 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87304 ,p_level => C_LEVEL_ERROR
87305 ,p_module => l_log_module);
87306 END IF;
87307 END IF;
87308 END IF;
87309 --
87310 --
87311 ------------------------------------------------------------------------------------------------
87312 -- 4219869 Business Flow
87313 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87314 -- Prior Entry. Currently, the following code is always generated.
87315 ------------------------------------------------------------------------------------------------
87316 XLA_AE_LINES_PKG.ValidateCurrentLine;
87317
87318 ------------------------------------------------------------------------------------
87319 -- 4219869 Business Flow
87320 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87321 ------------------------------------------------------------------------------------
87322 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87323
87324 ----------------------------------------------------------------------------------
87325 -- 4219869 Business Flow
87326 -- Update journal entry status -- Need to generate this within IF <condition>
87327 ----------------------------------------------------------------------------------
87328 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87329 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87330 ,p_balance_type_code => l_balance_type_code
87331 );
87332
87333 -------------------------------------------------------------------------------------------
87334 -- 4262811 - Generate the Accrual Reversal lines
87335 -------------------------------------------------------------------------------------------
87336 BEGIN
87337 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87338 (g_array_event(p_event_id).array_value_num('header_index'));
87339 IF l_acc_rev_flag IS NULL THEN
87340 l_acc_rev_flag := 'N';
87341 END IF;
87342 EXCEPTION
87343 WHEN OTHERS THEN
87344 l_acc_rev_flag := 'N';
87345 END;
87346 --
87347 IF (l_acc_rev_flag = 'Y') THEN
87348
87349 -- 4645092 ------------------------------------------------------------------------------
87350 -- To allow MPA report to determine if it should generate report process
87351 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87352 ------------------------------------------------------------------------------------------
87353
87354 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87355 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87356 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
87357 -- call ADRs
87358 -- Bug 4922099
87359 --
87360 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87361 (NVL(l_actual_upg_option, 'N') = 'O') OR
87362 (NVL(l_enc_upg_option, 'N') = 'O')
87363 )
87364 THEN
87365 NULL;
87366 --
87367 --
87368
87369 l_ccid := AcctDerRule_4(
87370 p_application_id => p_application_id
87371 , p_ae_header_id => l_ae_header_id
87372 , p_source_4 => p_source_4
87373 , x_transaction_coa_id => l_adr_transaction_coa_id
87374 , x_accounting_coa_id => l_adr_accounting_coa_id
87375 , x_value_type_code => l_adr_value_type_code
87376 , p_side => 'NA'
87377 );
87378
87379 xla_ae_lines_pkg.set_ccid(
87380 p_code_combination_id => l_ccid
87381 , p_value_type_code => l_adr_value_type_code
87382 , p_transaction_coa_id => l_adr_transaction_coa_id
87383 , p_accounting_coa_id => l_adr_accounting_coa_id
87384 , p_adr_code => 'CST_DEFAULT'
87385 , p_adr_type_code => 'S'
87386 , p_component_type => l_component_type
87387 , p_component_code => l_component_code
87388 , p_component_type_code => l_component_type_code
87389 , p_component_appl_id => l_component_appl_id
87390 , p_amb_context_code => l_amb_context_code
87391 , p_side => 'NA'
87392 );
87393
87394
87395 --
87396 --
87397 END IF;
87398
87399 --
87400 -- Update the line information that should be overwritten
87401 --
87402 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87403 p_header_num => 1);
87404 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
87405
87406 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87407
87408 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
87409 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87410 END IF;
87411
87412 --
87413 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87414 --
87415 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87416 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
87417 ELSE
87418 ---------------------------------------------------------------------------------------------------
87419 -- 4262811a Switch Sign
87420 ---------------------------------------------------------------------------------------------------
87421 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
87422 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87423 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87424 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87425 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87426 -- 5132302
87427 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87428 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87429
87430 END IF;
87431
87432 -- 4955764
87433 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87434 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87435
87436
87437 XLA_AE_LINES_PKG.ValidateCurrentLine;
87438 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87439
87440 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87441 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87442 ,p_balance_type_code => l_balance_type_code);
87443
87444 END IF;
87445
87446 -----------------------------------------------------------------------------------------
87447 -- 4262811 Multiperiod Accounting
87448 -----------------------------------------------------------------------------------------
87449 -- No MPA option is assigned.
87450
87451
87452 END IF;
87453 END IF;
87454 --
87455
87456 --
87457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87458 trace
87459 (p_msg => 'END of AcctLineType_159'
87460 ,p_level => C_LEVEL_PROCEDURE
87461 ,p_module => l_log_module);
87462 END IF;
87463 --
87464 EXCEPTION
87465 WHEN xla_exceptions_pkg.application_exception THEN
87466 RAISE;
87467 WHEN OTHERS THEN
87468 xla_exceptions_pkg.raise_message
87469 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_159');
87470 END AcctLineType_159;
87471 --
87472
87473 ---------------------------------------
87474 --
87475 -- PRIVATE FUNCTION
87476 -- AcctLineType_160
87477 --
87478 ---------------------------------------
87479 PROCEDURE AcctLineType_160 (
87480 p_application_id IN NUMBER
87481 ,p_event_id IN NUMBER
87482 ,p_calculate_acctd_flag IN VARCHAR2
87483 ,p_calculate_g_l_flag IN VARCHAR2
87484 ,p_actual_flag IN OUT VARCHAR2
87485 ,p_balance_type_code OUT VARCHAR2
87486 ,p_gain_or_loss_ref OUT VARCHAR2
87487
87488 --Cost Management Default Account
87489 , p_source_4 IN NUMBER
87490 --DISTRIBUTION_IDENTIFIER
87491 , p_source_11 IN NUMBER
87492 --Distribution Type
87493 , p_source_12 IN VARCHAR2
87494 , p_source_12_meaning IN VARCHAR2
87495 --Entered Currency Code
87496 , p_source_15 IN VARCHAR2
87497 --Entered Amount
87498 , p_source_18 IN NUMBER
87499 --Currency Conversion Date
87500 , p_source_19 IN DATE
87501 --Currency Conversion Rate
87502 , p_source_20 IN NUMBER
87503 --Currency Conversion Type
87504 , p_source_21 IN VARCHAR2
87505 --Accounted Amount
87506 , p_source_22 IN NUMBER
87507 --Accounting Line Type
87508 , p_source_24 IN NUMBER
87509 )
87510 IS
87511
87512 l_component_type VARCHAR2(80);
87513 l_component_code VARCHAR2(30);
87514 l_component_type_code VARCHAR2(1);
87515 l_component_appl_id INTEGER;
87516 l_amb_context_code VARCHAR2(30);
87517 l_entity_code VARCHAR2(30);
87518 l_event_class_code VARCHAR2(30);
87519 l_ae_header_id NUMBER;
87520 l_event_type_code VARCHAR2(30);
87521 l_line_definition_code VARCHAR2(30);
87522 l_line_definition_owner_code VARCHAR2(1);
87523 --
87524 -- adr variables
87525 l_segment VARCHAR2(30);
87526 l_ccid NUMBER;
87527 l_adr_transaction_coa_id NUMBER;
87528 l_adr_accounting_coa_id NUMBER;
87529 l_adr_flexfield_segment_code VARCHAR2(30);
87530 l_adr_flex_value_set_id NUMBER;
87531 l_adr_value_type_code VARCHAR2(30);
87532 l_adr_value_combination_id NUMBER;
87533 l_adr_value_segment_code VARCHAR2(30);
87534
87535 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
87536 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
87537 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
87538 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
87539
87540 -- 4262811 Variables ------------------------------------------------------------------------------------------
87541 l_entered_amt_idx NUMBER;
87542 l_accted_amt_idx NUMBER;
87543 l_acc_rev_flag VARCHAR2(1);
87544 l_accrual_line_num NUMBER;
87545 l_tmp_amt NUMBER;
87546 l_acc_rev_natural_side_code VARCHAR2(1);
87547
87548 l_num_entries NUMBER;
87549 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
87550 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
87551 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
87552 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
87553 l_recog_line_1 NUMBER;
87554 l_recog_line_2 NUMBER;
87555
87556 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
87557 l_bflow_applied_to_amt NUMBER; -- 5132302
87558 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
87559
87560 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
87561
87562 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
87563 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
87564
87565 ---------------------------------------------------------------------------------------------------------------
87566
87567
87568 --
87569 -- bulk performance
87570 --
87571 l_balance_type_code VARCHAR2(1);
87572 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
87573 l_log_module VARCHAR2(240);
87574
87575 --
87576 -- Upgrade strategy
87577 --
87578 l_actual_upg_option VARCHAR2(1);
87579 l_enc_upg_option VARCHAR2(1);
87580
87581 --
87582 BEGIN
87583 --
87584 IF g_log_enabled THEN
87585 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_160';
87586 END IF;
87587 --
87588 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87589
87590 trace
87591 (p_msg => 'BEGIN of AcctLineType_160'
87592 ,p_level => C_LEVEL_PROCEDURE
87593 ,p_module => l_log_module);
87594
87595 END IF;
87596 --
87597 l_component_type := 'AMB_JLT';
87598 l_component_code := 'INVENTORY_VALUATION';
87599 l_component_type_code := 'S';
87600 l_component_appl_id := 707;
87601 l_amb_context_code := 'DEFAULT';
87602 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
87603 l_event_class_code := 'USER_DEFINE';
87604 l_event_type_code := 'UDIR_INTERORG_RCPT';
87605 l_line_definition_owner_code := 'S';
87606 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
87607 --
87608 l_balance_type_code := 'A';
87609 l_segment := NULL;
87610 l_ccid := NULL;
87611 l_adr_transaction_coa_id := NULL;
87612 l_adr_accounting_coa_id := NULL;
87613 l_adr_flexfield_segment_code := NULL;
87614 l_adr_flex_value_set_id := NULL;
87615 l_adr_value_type_code := NULL;
87616 l_adr_value_combination_id := NULL;
87617 l_adr_value_segment_code := NULL;
87618
87619 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
87620 l_bflow_class_code := ''; -- 4219869 Business Flow
87621 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
87622 l_budgetary_control_flag := 'N';
87623
87624 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87625 l_bflow_applied_to_amt := NULL; -- 5132302
87626 l_entered_amt_idx := NULL; -- 4262811
87627 l_accted_amt_idx := NULL; -- 4262811
87628 l_acc_rev_flag := NULL; -- 4262811
87629 l_accrual_line_num := NULL; -- 4262811
87630 l_tmp_amt := NULL; -- 4262811
87631 --
87632
87633 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
87634 l_balance_type_code <> 'B' THEN
87635 IF NVL(p_source_24,9E125) = 1
87636 THEN
87637
87638 --
87639 XLA_AE_LINES_PKG.SetNewLine;
87640
87641 p_balance_type_code := l_balance_type_code;
87642 -- set the flag so later we will know whether the gain loss line needs to be created
87643
87644 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
87645 p_actual_flag :='A';
87646 END IF;
87647
87648 --
87649 -- bulk performance
87650 --
87651 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
87652 p_header_num => 0); -- 4262811
87653 --
87654 -- set accounting line options
87655 --
87656 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
87657 p_natural_side_code => 'D'
87658 , p_gain_or_loss_flag => 'N'
87659 , p_gl_transfer_mode_code => 'S'
87660 , p_acct_entry_type_code => 'A'
87661 , p_switch_side_flag => 'Y'
87662 , p_merge_duplicate_code => 'N'
87663 );
87664 --
87665 l_acc_rev_natural_side_code := 'C'; -- 4262811
87666 --
87667 --
87668 -- set accounting line type info
87669 --
87670 xla_ae_lines_pkg.SetAcctLineType
87671 (p_component_type => l_component_type
87672 ,p_event_type_code => l_event_type_code
87673 ,p_line_definition_owner_code => l_line_definition_owner_code
87674 ,p_line_definition_code => l_line_definition_code
87675 ,p_accounting_line_code => l_component_code
87676 ,p_accounting_line_type_code => l_component_type_code
87677 ,p_accounting_line_appl_id => l_component_appl_id
87678 ,p_amb_context_code => l_amb_context_code
87679 ,p_entity_code => l_entity_code
87680 ,p_event_class_code => l_event_class_code);
87681 --
87682 -- set accounting class
87683 --
87684 xla_ae_lines_pkg.SetAcctClass(
87685 p_accounting_class_code => 'INVENTORY_VALUATION'
87686 , p_ae_header_id => l_ae_header_id
87687 );
87688
87689 --
87690 -- set rounding class
87691 --
87692 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
87693 'INVENTORY_VALUATION';
87694
87695 --
87696 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
87697 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
87698 --
87699 -- bulk performance
87700 --
87701 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
87702
87703 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
87704 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
87705
87706 -- 4955764
87707 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87708 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
87709
87710 -- 4458381 Public Sector Enh
87711
87712 --
87713 -- set accounting attributes for the line type
87714 --
87715 l_entered_amt_idx := 3;
87716 l_accted_amt_idx := 8;
87717 l_bflow_applied_to_amt_idx := NULL; -- 5132302
87718 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
87719 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
87720 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
87721 l_rec_acct_attrs.array_char_value(2) := p_source_12;
87722 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
87723 l_rec_acct_attrs.array_num_value(3) := p_source_18;
87724 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
87725 l_rec_acct_attrs.array_char_value(4) := p_source_15;
87726 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
87727 l_rec_acct_attrs.array_date_value(5) := p_source_19;
87728 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
87729 l_rec_acct_attrs.array_num_value(6) := p_source_20;
87730 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
87731 l_rec_acct_attrs.array_char_value(7) := p_source_21;
87732 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
87733 l_rec_acct_attrs.array_num_value(8) := p_source_22;
87734
87735 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
87736 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
87737
87738 ---------------------------------------------------------------------------------------------------------------
87739 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
87740 ---------------------------------------------------------------------------------------------------------------
87741 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
87742
87743 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87744 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
87745
87746 IF xla_accounting_cache_pkg.GetValueChar
87747 (p_source_code => 'LEDGER_CATEGORY_CODE'
87748 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
87749 AND l_bflow_method_code = 'PRIOR_ENTRY'
87750 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
87751 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
87752 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
87753 )
87754 THEN
87755 xla_ae_lines_pkg.BflowUpgEntry
87756 (p_business_method_code => l_bflow_method_code
87757 ,p_business_class_code => l_bflow_class_code
87758 ,p_balance_type => l_balance_type_code);
87759 ELSE
87760 NULL;
87761 -- No business flow processing for business flow method of NONE.
87762 END IF;
87763
87764 --
87765 -- call analytical criteria
87766 --
87767
87768 --
87769 -- call description
87770 --
87771 -- No description or it is inherited.
87772 --
87773 -- call ADRs
87774 -- Bug 4922099
87775 --
87776 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87777 (NVL(l_actual_upg_option, 'N') = 'O') OR
87778 (NVL(l_enc_upg_option, 'N') = 'O')
87779 )
87780 THEN
87781 NULL;
87782 --
87783 --
87784
87785 l_ccid := AcctDerRule_4(
87786 p_application_id => p_application_id
87787 , p_ae_header_id => l_ae_header_id
87788 , p_source_4 => p_source_4
87789 , x_transaction_coa_id => l_adr_transaction_coa_id
87790 , x_accounting_coa_id => l_adr_accounting_coa_id
87791 , x_value_type_code => l_adr_value_type_code
87792 , p_side => 'NA'
87793 );
87794
87795 xla_ae_lines_pkg.set_ccid(
87796 p_code_combination_id => l_ccid
87797 , p_value_type_code => l_adr_value_type_code
87798 , p_transaction_coa_id => l_adr_transaction_coa_id
87799 , p_accounting_coa_id => l_adr_accounting_coa_id
87800 , p_adr_code => 'CST_DEFAULT'
87801 , p_adr_type_code => 'S'
87802 , p_component_type => l_component_type
87803 , p_component_code => l_component_code
87804 , p_component_type_code => l_component_type_code
87805 , p_component_appl_id => l_component_appl_id
87806 , p_amb_context_code => l_amb_context_code
87807 , p_side => 'NA'
87808 );
87809
87810
87811 --
87812 --
87813 END IF;
87814 --
87815 -- Bug 4922099
87816 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
87817 (NVL(l_enc_upg_option, 'N') = 'O')
87818 ) AND
87819 (l_bflow_method_code = 'PRIOR_ENTRY')
87820 )
87821 THEN
87822 IF
87823 --
87824 1 = 2
87825 --
87826 THEN
87827 xla_accounting_err_pkg.build_message
87828 (p_appli_s_name => 'XLA'
87829 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87830 ,p_token_1 => 'LINE_NUMBER'
87831 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
87832 ,p_token_2 => 'LINE_TYPE_NAME'
87833 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
87834 l_component_type
87835 ,l_component_code
87836 ,l_component_type_code
87837 ,l_component_appl_id
87838 ,l_amb_context_code
87839 ,l_entity_code
87840 ,l_event_class_code
87841 )
87842 ,p_token_3 => 'OWNER'
87843 ,p_value_3 => xla_lookups_pkg.get_meaning(
87844 p_lookup_type => 'XLA_OWNER_TYPE'
87845 ,p_lookup_code => l_component_type_code
87846 )
87847 ,p_token_4 => 'PRODUCT_NAME'
87848 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
87849 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
87850 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
87851 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
87852 ,p_ae_header_id => NULL
87853 );
87854
87855 IF (C_LEVEL_ERROR>= g_log_level) THEN
87856 trace
87857 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
87858 ,p_level => C_LEVEL_ERROR
87859 ,p_module => l_log_module);
87860 END IF;
87861 END IF;
87862 END IF;
87863 --
87864 --
87865 ------------------------------------------------------------------------------------------------
87866 -- 4219869 Business Flow
87867 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
87868 -- Prior Entry. Currently, the following code is always generated.
87869 ------------------------------------------------------------------------------------------------
87870 XLA_AE_LINES_PKG.ValidateCurrentLine;
87871
87872 ------------------------------------------------------------------------------------
87873 -- 4219869 Business Flow
87874 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
87875 ------------------------------------------------------------------------------------
87876 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87877
87878 ----------------------------------------------------------------------------------
87879 -- 4219869 Business Flow
87880 -- Update journal entry status -- Need to generate this within IF <condition>
87881 ----------------------------------------------------------------------------------
87882 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87883 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
87884 ,p_balance_type_code => l_balance_type_code
87885 );
87886
87887 -------------------------------------------------------------------------------------------
87888 -- 4262811 - Generate the Accrual Reversal lines
87889 -------------------------------------------------------------------------------------------
87890 BEGIN
87891 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
87892 (g_array_event(p_event_id).array_value_num('header_index'));
87893 IF l_acc_rev_flag IS NULL THEN
87894 l_acc_rev_flag := 'N';
87895 END IF;
87896 EXCEPTION
87897 WHEN OTHERS THEN
87898 l_acc_rev_flag := 'N';
87899 END;
87900 --
87901 IF (l_acc_rev_flag = 'Y') THEN
87902
87903 -- 4645092 ------------------------------------------------------------------------------
87904 -- To allow MPA report to determine if it should generate report process
87905 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
87906 ------------------------------------------------------------------------------------------
87907
87908 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
87909 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
87910 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
87911 -- call ADRs
87912 -- Bug 4922099
87913 --
87914 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
87915 (NVL(l_actual_upg_option, 'N') = 'O') OR
87916 (NVL(l_enc_upg_option, 'N') = 'O')
87917 )
87918 THEN
87919 NULL;
87920 --
87921 --
87922
87923 l_ccid := AcctDerRule_4(
87924 p_application_id => p_application_id
87925 , p_ae_header_id => l_ae_header_id
87926 , p_source_4 => p_source_4
87927 , x_transaction_coa_id => l_adr_transaction_coa_id
87928 , x_accounting_coa_id => l_adr_accounting_coa_id
87929 , x_value_type_code => l_adr_value_type_code
87930 , p_side => 'NA'
87931 );
87932
87933 xla_ae_lines_pkg.set_ccid(
87934 p_code_combination_id => l_ccid
87935 , p_value_type_code => l_adr_value_type_code
87936 , p_transaction_coa_id => l_adr_transaction_coa_id
87937 , p_accounting_coa_id => l_adr_accounting_coa_id
87938 , p_adr_code => 'CST_DEFAULT'
87939 , p_adr_type_code => 'S'
87940 , p_component_type => l_component_type
87941 , p_component_code => l_component_code
87942 , p_component_type_code => l_component_type_code
87943 , p_component_appl_id => l_component_appl_id
87944 , p_amb_context_code => l_amb_context_code
87945 , p_side => 'NA'
87946 );
87947
87948
87949 --
87950 --
87951 END IF;
87952
87953 --
87954 -- Update the line information that should be overwritten
87955 --
87956 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
87957 p_header_num => 1);
87958 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
87959
87960 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
87961
87962 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
87963 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
87964 END IF;
87965
87966 --
87967 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
87968 --
87969 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
87970 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
87971 ELSE
87972 ---------------------------------------------------------------------------------------------------
87973 -- 4262811a Switch Sign
87974 ---------------------------------------------------------------------------------------------------
87975 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
87976 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87977 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87978 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
87979 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87980 -- 5132302
87981 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
87982 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
87983
87984 END IF;
87985
87986 -- 4955764
87987 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
87988 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
87989
87990
87991 XLA_AE_LINES_PKG.ValidateCurrentLine;
87992 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
87993
87994 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
87995 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
87996 ,p_balance_type_code => l_balance_type_code);
87997
87998 END IF;
87999
88000 -----------------------------------------------------------------------------------------
88001 -- 4262811 Multiperiod Accounting
88002 -----------------------------------------------------------------------------------------
88003 -- No MPA option is assigned.
88004
88005
88006 END IF;
88007 END IF;
88008 --
88009
88010 --
88011 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88012 trace
88013 (p_msg => 'END of AcctLineType_160'
88014 ,p_level => C_LEVEL_PROCEDURE
88015 ,p_module => l_log_module);
88016 END IF;
88017 --
88018 EXCEPTION
88019 WHEN xla_exceptions_pkg.application_exception THEN
88020 RAISE;
88021 WHEN OTHERS THEN
88022 xla_exceptions_pkg.raise_message
88023 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_160');
88024 END AcctLineType_160;
88025 --
88026
88027 ---------------------------------------
88028 --
88029 -- PRIVATE FUNCTION
88030 -- AcctLineType_161
88031 --
88032 ---------------------------------------
88033 PROCEDURE AcctLineType_161 (
88034 p_application_id IN NUMBER
88035 ,p_event_id IN NUMBER
88036 ,p_calculate_acctd_flag IN VARCHAR2
88037 ,p_calculate_g_l_flag IN VARCHAR2
88038 ,p_actual_flag IN OUT VARCHAR2
88039 ,p_balance_type_code OUT VARCHAR2
88040 ,p_gain_or_loss_ref OUT VARCHAR2
88041
88042 --Cost Management Default Account
88043 , p_source_4 IN NUMBER
88044 --Receiving Accounting Line Type
88045 , p_source_5 IN VARCHAR2
88046 --DISTRIBUTION_IDENTIFIER
88047 , p_source_11 IN NUMBER
88048 --Distribution Type
88049 , p_source_12 IN VARCHAR2
88050 , p_source_12_meaning IN VARCHAR2
88051 --Entered Amount
88052 , p_source_18 IN NUMBER
88053 --Accounted Amount
88054 , p_source_22 IN NUMBER
88055 --Entered Currency Code
88056 , p_source_32 IN VARCHAR2
88057 --Currency Conversion Date
88058 , p_source_33 IN DATE
88059 --Currency Conversion Rate
88060 , p_source_34 IN NUMBER
88061 --Currency Conversion Type
88062 , p_source_36 IN VARCHAR2
88063 )
88064 IS
88065
88066 l_component_type VARCHAR2(80);
88067 l_component_code VARCHAR2(30);
88068 l_component_type_code VARCHAR2(1);
88069 l_component_appl_id INTEGER;
88070 l_amb_context_code VARCHAR2(30);
88071 l_entity_code VARCHAR2(30);
88072 l_event_class_code VARCHAR2(30);
88073 l_ae_header_id NUMBER;
88074 l_event_type_code VARCHAR2(30);
88075 l_line_definition_code VARCHAR2(30);
88076 l_line_definition_owner_code VARCHAR2(1);
88077 --
88078 -- adr variables
88079 l_segment VARCHAR2(30);
88080 l_ccid NUMBER;
88081 l_adr_transaction_coa_id NUMBER;
88082 l_adr_accounting_coa_id NUMBER;
88083 l_adr_flexfield_segment_code VARCHAR2(30);
88084 l_adr_flex_value_set_id NUMBER;
88085 l_adr_value_type_code VARCHAR2(30);
88086 l_adr_value_combination_id NUMBER;
88087 l_adr_value_segment_code VARCHAR2(30);
88088
88089 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
88090 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
88091 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
88092 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
88093
88094 -- 4262811 Variables ------------------------------------------------------------------------------------------
88095 l_entered_amt_idx NUMBER;
88096 l_accted_amt_idx NUMBER;
88097 l_acc_rev_flag VARCHAR2(1);
88098 l_accrual_line_num NUMBER;
88099 l_tmp_amt NUMBER;
88100 l_acc_rev_natural_side_code VARCHAR2(1);
88101
88102 l_num_entries NUMBER;
88103 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
88104 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
88105 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
88106 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
88107 l_recog_line_1 NUMBER;
88108 l_recog_line_2 NUMBER;
88109
88110 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
88111 l_bflow_applied_to_amt NUMBER; -- 5132302
88112 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
88113
88114 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88115
88116 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
88117 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
88118
88119 ---------------------------------------------------------------------------------------------------------------
88120
88121
88122 --
88123 -- bulk performance
88124 --
88125 l_balance_type_code VARCHAR2(1);
88126 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
88127 l_log_module VARCHAR2(240);
88128
88129 --
88130 -- Upgrade strategy
88131 --
88132 l_actual_upg_option VARCHAR2(1);
88133 l_enc_upg_option VARCHAR2(1);
88134
88135 --
88136 BEGIN
88137 --
88138 IF g_log_enabled THEN
88139 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_161';
88140 END IF;
88141 --
88142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88143
88144 trace
88145 (p_msg => 'BEGIN of AcctLineType_161'
88146 ,p_level => C_LEVEL_PROCEDURE
88147 ,p_module => l_log_module);
88148
88149 END IF;
88150 --
88151 l_component_type := 'AMB_JLT';
88152 l_component_code := 'LANDED_COST_ABSORPTION';
88153 l_component_type_code := 'S';
88154 l_component_appl_id := 707;
88155 l_amb_context_code := 'DEFAULT';
88156 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
88157 l_event_class_code := 'LDD_COST_ADJ_RCV';
88158 l_event_type_code := 'LDD_COST_ADJ_RCV_ALL';
88159 l_line_definition_owner_code := 'S';
88160 l_line_definition_code := 'LDD_COST_ADJ_RCV';
88161 --
88162 l_balance_type_code := 'A';
88163 l_segment := NULL;
88164 l_ccid := NULL;
88165 l_adr_transaction_coa_id := NULL;
88166 l_adr_accounting_coa_id := NULL;
88167 l_adr_flexfield_segment_code := NULL;
88168 l_adr_flex_value_set_id := NULL;
88169 l_adr_value_type_code := NULL;
88170 l_adr_value_combination_id := NULL;
88171 l_adr_value_segment_code := NULL;
88172
88173 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
88174 l_bflow_class_code := ''; -- 4219869 Business Flow
88175 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
88176 l_budgetary_control_flag := 'N';
88177
88178 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88179 l_bflow_applied_to_amt := NULL; -- 5132302
88180 l_entered_amt_idx := NULL; -- 4262811
88181 l_accted_amt_idx := NULL; -- 4262811
88182 l_acc_rev_flag := NULL; -- 4262811
88183 l_accrual_line_num := NULL; -- 4262811
88184 l_tmp_amt := NULL; -- 4262811
88185 --
88186
88187 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88188 l_balance_type_code <> 'B' THEN
88189 IF NVL(p_source_5,'
88190 ') = 'Landed Cost Absorption'
88191 THEN
88192
88193 --
88194 XLA_AE_LINES_PKG.SetNewLine;
88195
88196 p_balance_type_code := l_balance_type_code;
88197 -- set the flag so later we will know whether the gain loss line needs to be created
88198
88199 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88200 p_actual_flag :='A';
88201 END IF;
88202
88203 --
88204 -- bulk performance
88205 --
88206 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88207 p_header_num => 0); -- 4262811
88208 --
88209 -- set accounting line options
88210 --
88211 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88212 p_natural_side_code => 'D'
88213 , p_gain_or_loss_flag => 'N'
88214 , p_gl_transfer_mode_code => 'S'
88215 , p_acct_entry_type_code => 'A'
88216 , p_switch_side_flag => 'Y'
88217 , p_merge_duplicate_code => 'N'
88218 );
88219 --
88220 l_acc_rev_natural_side_code := 'C'; -- 4262811
88221 --
88222 --
88223 -- set accounting line type info
88224 --
88225 xla_ae_lines_pkg.SetAcctLineType
88226 (p_component_type => l_component_type
88227 ,p_event_type_code => l_event_type_code
88228 ,p_line_definition_owner_code => l_line_definition_owner_code
88229 ,p_line_definition_code => l_line_definition_code
88230 ,p_accounting_line_code => l_component_code
88231 ,p_accounting_line_type_code => l_component_type_code
88232 ,p_accounting_line_appl_id => l_component_appl_id
88233 ,p_amb_context_code => l_amb_context_code
88234 ,p_entity_code => l_entity_code
88235 ,p_event_class_code => l_event_class_code);
88236 --
88237 -- set accounting class
88238 --
88239 xla_ae_lines_pkg.SetAcctClass(
88240 p_accounting_class_code => 'LANDED_COST_ABSORPTION'
88241 , p_ae_header_id => l_ae_header_id
88242 );
88243
88244 --
88245 -- set rounding class
88246 --
88247 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88248 'LANDED_COST_ABSORPTION';
88249
88250 --
88251 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88252 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88253 --
88254 -- bulk performance
88255 --
88256 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88257
88258 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88259 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88260
88261 -- 4955764
88262 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88263 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88264
88265 -- 4458381 Public Sector Enh
88266
88267 --
88268 -- set accounting attributes for the line type
88269 --
88270 l_entered_amt_idx := 3;
88271 l_accted_amt_idx := 8;
88272 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88273 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88274 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
88275 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88276 l_rec_acct_attrs.array_char_value(2) := p_source_12;
88277 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88278 l_rec_acct_attrs.array_num_value(3) := p_source_18;
88279 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88280 l_rec_acct_attrs.array_char_value(4) := p_source_32;
88281 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88282 l_rec_acct_attrs.array_date_value(5) := p_source_33;
88283 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88284 l_rec_acct_attrs.array_num_value(6) := p_source_34;
88285 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88286 l_rec_acct_attrs.array_char_value(7) := p_source_36;
88287 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88288 l_rec_acct_attrs.array_num_value(8) := p_source_22;
88289
88290 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88291 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88292
88293 ---------------------------------------------------------------------------------------------------------------
88294 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88295 ---------------------------------------------------------------------------------------------------------------
88296 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88297
88298 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88299 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88300
88301 IF xla_accounting_cache_pkg.GetValueChar
88302 (p_source_code => 'LEDGER_CATEGORY_CODE'
88303 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88304 AND l_bflow_method_code = 'PRIOR_ENTRY'
88305 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88306 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88307 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88308 )
88309 THEN
88310 xla_ae_lines_pkg.BflowUpgEntry
88311 (p_business_method_code => l_bflow_method_code
88312 ,p_business_class_code => l_bflow_class_code
88313 ,p_balance_type => l_balance_type_code);
88314 ELSE
88315 NULL;
88316 -- No business flow processing for business flow method of NONE.
88317 END IF;
88318
88319 --
88320 -- call analytical criteria
88321 --
88322
88323 --
88324 -- call description
88325 --
88326 -- No description or it is inherited.
88327 --
88328 -- call ADRs
88329 -- Bug 4922099
88330 --
88331 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88332 (NVL(l_actual_upg_option, 'N') = 'O') OR
88333 (NVL(l_enc_upg_option, 'N') = 'O')
88334 )
88335 THEN
88336 NULL;
88337 --
88338 --
88339
88340 l_ccid := AcctDerRule_4(
88341 p_application_id => p_application_id
88342 , p_ae_header_id => l_ae_header_id
88343 , p_source_4 => p_source_4
88344 , x_transaction_coa_id => l_adr_transaction_coa_id
88345 , x_accounting_coa_id => l_adr_accounting_coa_id
88346 , x_value_type_code => l_adr_value_type_code
88347 , p_side => 'NA'
88348 );
88349
88350 xla_ae_lines_pkg.set_ccid(
88351 p_code_combination_id => l_ccid
88352 , p_value_type_code => l_adr_value_type_code
88353 , p_transaction_coa_id => l_adr_transaction_coa_id
88354 , p_accounting_coa_id => l_adr_accounting_coa_id
88355 , p_adr_code => 'CST_DEFAULT'
88356 , p_adr_type_code => 'S'
88357 , p_component_type => l_component_type
88358 , p_component_code => l_component_code
88359 , p_component_type_code => l_component_type_code
88360 , p_component_appl_id => l_component_appl_id
88361 , p_amb_context_code => l_amb_context_code
88362 , p_side => 'NA'
88363 );
88364
88365
88366 --
88367 --
88368 END IF;
88369 --
88370 -- Bug 4922099
88371 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88372 (NVL(l_enc_upg_option, 'N') = 'O')
88373 ) AND
88374 (l_bflow_method_code = 'PRIOR_ENTRY')
88375 )
88376 THEN
88377 IF
88378 --
88379 1 = 2
88380 --
88381 THEN
88382 xla_accounting_err_pkg.build_message
88383 (p_appli_s_name => 'XLA'
88384 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88385 ,p_token_1 => 'LINE_NUMBER'
88386 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
88387 ,p_token_2 => 'LINE_TYPE_NAME'
88388 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
88389 l_component_type
88390 ,l_component_code
88391 ,l_component_type_code
88392 ,l_component_appl_id
88393 ,l_amb_context_code
88394 ,l_entity_code
88395 ,l_event_class_code
88396 )
88397 ,p_token_3 => 'OWNER'
88398 ,p_value_3 => xla_lookups_pkg.get_meaning(
88399 p_lookup_type => 'XLA_OWNER_TYPE'
88400 ,p_lookup_code => l_component_type_code
88401 )
88402 ,p_token_4 => 'PRODUCT_NAME'
88403 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88404 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88405 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88406 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88407 ,p_ae_header_id => NULL
88408 );
88409
88410 IF (C_LEVEL_ERROR>= g_log_level) THEN
88411 trace
88412 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88413 ,p_level => C_LEVEL_ERROR
88414 ,p_module => l_log_module);
88415 END IF;
88416 END IF;
88417 END IF;
88418 --
88419 --
88420 ------------------------------------------------------------------------------------------------
88421 -- 4219869 Business Flow
88422 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88423 -- Prior Entry. Currently, the following code is always generated.
88424 ------------------------------------------------------------------------------------------------
88425 XLA_AE_LINES_PKG.ValidateCurrentLine;
88426
88427 ------------------------------------------------------------------------------------
88428 -- 4219869 Business Flow
88429 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88430 ------------------------------------------------------------------------------------
88431 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88432
88433 ----------------------------------------------------------------------------------
88434 -- 4219869 Business Flow
88435 -- Update journal entry status -- Need to generate this within IF <condition>
88436 ----------------------------------------------------------------------------------
88437 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88438 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88439 ,p_balance_type_code => l_balance_type_code
88440 );
88441
88442 -------------------------------------------------------------------------------------------
88443 -- 4262811 - Generate the Accrual Reversal lines
88444 -------------------------------------------------------------------------------------------
88445 BEGIN
88446 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
88447 (g_array_event(p_event_id).array_value_num('header_index'));
88448 IF l_acc_rev_flag IS NULL THEN
88449 l_acc_rev_flag := 'N';
88450 END IF;
88451 EXCEPTION
88452 WHEN OTHERS THEN
88453 l_acc_rev_flag := 'N';
88454 END;
88455 --
88456 IF (l_acc_rev_flag = 'Y') THEN
88457
88458 -- 4645092 ------------------------------------------------------------------------------
88459 -- To allow MPA report to determine if it should generate report process
88460 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
88461 ------------------------------------------------------------------------------------------
88462
88463 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
88464 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
88465 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
88466 -- call ADRs
88467 -- Bug 4922099
88468 --
88469 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88470 (NVL(l_actual_upg_option, 'N') = 'O') OR
88471 (NVL(l_enc_upg_option, 'N') = 'O')
88472 )
88473 THEN
88474 NULL;
88475 --
88476 --
88477
88478 l_ccid := AcctDerRule_4(
88479 p_application_id => p_application_id
88480 , p_ae_header_id => l_ae_header_id
88481 , p_source_4 => p_source_4
88482 , x_transaction_coa_id => l_adr_transaction_coa_id
88483 , x_accounting_coa_id => l_adr_accounting_coa_id
88484 , x_value_type_code => l_adr_value_type_code
88485 , p_side => 'NA'
88486 );
88487
88488 xla_ae_lines_pkg.set_ccid(
88489 p_code_combination_id => l_ccid
88490 , p_value_type_code => l_adr_value_type_code
88491 , p_transaction_coa_id => l_adr_transaction_coa_id
88492 , p_accounting_coa_id => l_adr_accounting_coa_id
88493 , p_adr_code => 'CST_DEFAULT'
88494 , p_adr_type_code => 'S'
88495 , p_component_type => l_component_type
88496 , p_component_code => l_component_code
88497 , p_component_type_code => l_component_type_code
88498 , p_component_appl_id => l_component_appl_id
88499 , p_amb_context_code => l_amb_context_code
88500 , p_side => 'NA'
88501 );
88502
88503
88504 --
88505 --
88506 END IF;
88507
88508 --
88509 -- Update the line information that should be overwritten
88510 --
88511 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
88512 p_header_num => 1);
88513 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
88514
88515 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
88516
88517 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
88518 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
88519 END IF;
88520
88521 --
88522 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
88523 --
88524 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
88525 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
88526 ELSE
88527 ---------------------------------------------------------------------------------------------------
88528 -- 4262811a Switch Sign
88529 ---------------------------------------------------------------------------------------------------
88530 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
88531 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88532 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88533 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
88534 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88535 -- 5132302
88536 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
88537 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
88538
88539 END IF;
88540
88541 -- 4955764
88542 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88543 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
88544
88545
88546 XLA_AE_LINES_PKG.ValidateCurrentLine;
88547 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88548
88549 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88550 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
88551 ,p_balance_type_code => l_balance_type_code);
88552
88553 END IF;
88554
88555 -----------------------------------------------------------------------------------------
88556 -- 4262811 Multiperiod Accounting
88557 -----------------------------------------------------------------------------------------
88558 -- No MPA option is assigned.
88559
88560
88561 END IF;
88562 END IF;
88563 --
88564
88565 --
88566 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88567 trace
88568 (p_msg => 'END of AcctLineType_161'
88569 ,p_level => C_LEVEL_PROCEDURE
88570 ,p_module => l_log_module);
88571 END IF;
88572 --
88573 EXCEPTION
88574 WHEN xla_exceptions_pkg.application_exception THEN
88575 RAISE;
88576 WHEN OTHERS THEN
88577 xla_exceptions_pkg.raise_message
88578 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_161');
88579 END AcctLineType_161;
88580 --
88581
88582 ---------------------------------------
88583 --
88584 -- PRIVATE FUNCTION
88585 -- AcctLineType_162
88586 --
88587 ---------------------------------------
88588 PROCEDURE AcctLineType_162 (
88589 p_application_id IN NUMBER
88590 ,p_event_id IN NUMBER
88591 ,p_calculate_acctd_flag IN VARCHAR2
88592 ,p_calculate_g_l_flag IN VARCHAR2
88593 ,p_actual_flag IN OUT VARCHAR2
88594 ,p_balance_type_code OUT VARCHAR2
88595 ,p_gain_or_loss_ref OUT VARCHAR2
88596
88597 --Cost Management Default Account
88598 , p_source_4 IN NUMBER
88599 --Receiving Accounting Line Type
88600 , p_source_5 IN VARCHAR2
88601 --DISTRIBUTION_IDENTIFIER
88602 , p_source_11 IN NUMBER
88603 --Distribution Type
88604 , p_source_12 IN VARCHAR2
88605 , p_source_12_meaning IN VARCHAR2
88606 --Entered Currency Code
88607 , p_source_15 IN VARCHAR2
88608 --Entered Amount
88609 , p_source_18 IN NUMBER
88610 --Currency Conversion Date
88611 , p_source_19 IN DATE
88612 --Currency Conversion Rate
88613 , p_source_20 IN NUMBER
88614 --Currency Conversion Type
88615 , p_source_21 IN VARCHAR2
88616 --Accounted Amount
88617 , p_source_22 IN NUMBER
88618 )
88619 IS
88620
88621 l_component_type VARCHAR2(80);
88622 l_component_code VARCHAR2(30);
88623 l_component_type_code VARCHAR2(1);
88624 l_component_appl_id INTEGER;
88625 l_amb_context_code VARCHAR2(30);
88626 l_entity_code VARCHAR2(30);
88627 l_event_class_code VARCHAR2(30);
88628 l_ae_header_id NUMBER;
88629 l_event_type_code VARCHAR2(30);
88630 l_line_definition_code VARCHAR2(30);
88631 l_line_definition_owner_code VARCHAR2(1);
88632 --
88633 -- adr variables
88634 l_segment VARCHAR2(30);
88635 l_ccid NUMBER;
88636 l_adr_transaction_coa_id NUMBER;
88637 l_adr_accounting_coa_id NUMBER;
88638 l_adr_flexfield_segment_code VARCHAR2(30);
88639 l_adr_flex_value_set_id NUMBER;
88640 l_adr_value_type_code VARCHAR2(30);
88641 l_adr_value_combination_id NUMBER;
88642 l_adr_value_segment_code VARCHAR2(30);
88643
88644 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
88645 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
88646 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
88647 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
88648
88649 -- 4262811 Variables ------------------------------------------------------------------------------------------
88650 l_entered_amt_idx NUMBER;
88651 l_accted_amt_idx NUMBER;
88652 l_acc_rev_flag VARCHAR2(1);
88653 l_accrual_line_num NUMBER;
88654 l_tmp_amt NUMBER;
88655 l_acc_rev_natural_side_code VARCHAR2(1);
88656
88657 l_num_entries NUMBER;
88658 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
88659 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
88660 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
88661 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
88662 l_recog_line_1 NUMBER;
88663 l_recog_line_2 NUMBER;
88664
88665 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
88666 l_bflow_applied_to_amt NUMBER; -- 5132302
88667 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
88668
88669 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
88670
88671 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
88672 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
88673
88674 ---------------------------------------------------------------------------------------------------------------
88675
88676
88677 --
88678 -- bulk performance
88679 --
88680 l_balance_type_code VARCHAR2(1);
88681 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
88682 l_log_module VARCHAR2(240);
88683
88684 --
88685 -- Upgrade strategy
88686 --
88687 l_actual_upg_option VARCHAR2(1);
88688 l_enc_upg_option VARCHAR2(1);
88689
88690 --
88691 BEGIN
88692 --
88693 IF g_log_enabled THEN
88694 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_162';
88695 END IF;
88696 --
88697 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88698
88699 trace
88700 (p_msg => 'BEGIN of AcctLineType_162'
88701 ,p_level => C_LEVEL_PROCEDURE
88702 ,p_module => l_log_module);
88703
88704 END IF;
88705 --
88706 l_component_type := 'AMB_JLT';
88707 l_component_code := 'LANDED_COST_ABSORPTION';
88708 l_component_type_code := 'S';
88709 l_component_appl_id := 707;
88710 l_amb_context_code := 'DEFAULT';
88711 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
88712 l_event_class_code := 'RCPT_REC_INSP';
88713 l_event_type_code := 'RCPT_REC_INSP_ALL';
88714 l_line_definition_owner_code := 'S';
88715 l_line_definition_code := 'RCPT_REC_INSP';
88716 --
88717 l_balance_type_code := 'A';
88718 l_segment := NULL;
88719 l_ccid := NULL;
88720 l_adr_transaction_coa_id := NULL;
88721 l_adr_accounting_coa_id := NULL;
88722 l_adr_flexfield_segment_code := NULL;
88723 l_adr_flex_value_set_id := NULL;
88724 l_adr_value_type_code := NULL;
88725 l_adr_value_combination_id := NULL;
88726 l_adr_value_segment_code := NULL;
88727
88728 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
88729 l_bflow_class_code := ''; -- 4219869 Business Flow
88730 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
88731 l_budgetary_control_flag := 'N';
88732
88733 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88734 l_bflow_applied_to_amt := NULL; -- 5132302
88735 l_entered_amt_idx := NULL; -- 4262811
88736 l_accted_amt_idx := NULL; -- 4262811
88737 l_acc_rev_flag := NULL; -- 4262811
88738 l_accrual_line_num := NULL; -- 4262811
88739 l_tmp_amt := NULL; -- 4262811
88740 --
88741
88742 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
88743 l_balance_type_code <> 'B' THEN
88744 IF NVL(p_source_5,'
88745 ') = 'Landed Cost Absorption'
88746 THEN
88747
88748 --
88749 XLA_AE_LINES_PKG.SetNewLine;
88750
88751 p_balance_type_code := l_balance_type_code;
88752 -- set the flag so later we will know whether the gain loss line needs to be created
88753
88754 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
88755 p_actual_flag :='A';
88756 END IF;
88757
88758 --
88759 -- bulk performance
88760 --
88761 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
88762 p_header_num => 0); -- 4262811
88763 --
88764 -- set accounting line options
88765 --
88766 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
88767 p_natural_side_code => 'D'
88768 , p_gain_or_loss_flag => 'N'
88769 , p_gl_transfer_mode_code => 'S'
88770 , p_acct_entry_type_code => 'A'
88771 , p_switch_side_flag => 'Y'
88772 , p_merge_duplicate_code => 'N'
88773 );
88774 --
88775 l_acc_rev_natural_side_code := 'C'; -- 4262811
88776 --
88777 --
88778 -- set accounting line type info
88779 --
88780 xla_ae_lines_pkg.SetAcctLineType
88781 (p_component_type => l_component_type
88782 ,p_event_type_code => l_event_type_code
88783 ,p_line_definition_owner_code => l_line_definition_owner_code
88784 ,p_line_definition_code => l_line_definition_code
88785 ,p_accounting_line_code => l_component_code
88786 ,p_accounting_line_type_code => l_component_type_code
88787 ,p_accounting_line_appl_id => l_component_appl_id
88788 ,p_amb_context_code => l_amb_context_code
88789 ,p_entity_code => l_entity_code
88790 ,p_event_class_code => l_event_class_code);
88791 --
88792 -- set accounting class
88793 --
88794 xla_ae_lines_pkg.SetAcctClass(
88795 p_accounting_class_code => 'LANDED_COST_ABSORPTION'
88796 , p_ae_header_id => l_ae_header_id
88797 );
88798
88799 --
88800 -- set rounding class
88801 --
88802 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
88803 'LANDED_COST_ABSORPTION';
88804
88805 --
88806 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
88807 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
88808 --
88809 -- bulk performance
88810 --
88811 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
88812
88813 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
88814 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
88815
88816 -- 4955764
88817 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
88818 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
88819
88820 -- 4458381 Public Sector Enh
88821
88822 --
88823 -- set accounting attributes for the line type
88824 --
88825 l_entered_amt_idx := 3;
88826 l_accted_amt_idx := 8;
88827 l_bflow_applied_to_amt_idx := NULL; -- 5132302
88828 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
88829 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
88830 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
88831 l_rec_acct_attrs.array_char_value(2) := p_source_12;
88832 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
88833 l_rec_acct_attrs.array_num_value(3) := p_source_18;
88834 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
88835 l_rec_acct_attrs.array_char_value(4) := p_source_15;
88836 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
88837 l_rec_acct_attrs.array_date_value(5) := p_source_19;
88838 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
88839 l_rec_acct_attrs.array_num_value(6) := p_source_20;
88840 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
88841 l_rec_acct_attrs.array_char_value(7) := p_source_21;
88842 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
88843 l_rec_acct_attrs.array_num_value(8) := p_source_22;
88844
88845 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
88846 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
88847
88848 ---------------------------------------------------------------------------------------------------------------
88849 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
88850 ---------------------------------------------------------------------------------------------------------------
88851 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
88852
88853 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88854 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
88855
88856 IF xla_accounting_cache_pkg.GetValueChar
88857 (p_source_code => 'LEDGER_CATEGORY_CODE'
88858 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
88859 AND l_bflow_method_code = 'PRIOR_ENTRY'
88860 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
88861 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
88862 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
88863 )
88864 THEN
88865 xla_ae_lines_pkg.BflowUpgEntry
88866 (p_business_method_code => l_bflow_method_code
88867 ,p_business_class_code => l_bflow_class_code
88868 ,p_balance_type => l_balance_type_code);
88869 ELSE
88870 NULL;
88871 -- No business flow processing for business flow method of NONE.
88872 END IF;
88873
88874 --
88875 -- call analytical criteria
88876 --
88877
88878 --
88879 -- call description
88880 --
88881 -- No description or it is inherited.
88882 --
88883 -- call ADRs
88884 -- Bug 4922099
88885 --
88886 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
88887 (NVL(l_actual_upg_option, 'N') = 'O') OR
88888 (NVL(l_enc_upg_option, 'N') = 'O')
88889 )
88890 THEN
88891 NULL;
88892 --
88893 --
88894
88895 l_ccid := AcctDerRule_4(
88896 p_application_id => p_application_id
88897 , p_ae_header_id => l_ae_header_id
88898 , p_source_4 => p_source_4
88899 , x_transaction_coa_id => l_adr_transaction_coa_id
88900 , x_accounting_coa_id => l_adr_accounting_coa_id
88901 , x_value_type_code => l_adr_value_type_code
88902 , p_side => 'NA'
88903 );
88904
88905 xla_ae_lines_pkg.set_ccid(
88906 p_code_combination_id => l_ccid
88907 , p_value_type_code => l_adr_value_type_code
88908 , p_transaction_coa_id => l_adr_transaction_coa_id
88909 , p_accounting_coa_id => l_adr_accounting_coa_id
88910 , p_adr_code => 'CST_DEFAULT'
88911 , p_adr_type_code => 'S'
88912 , p_component_type => l_component_type
88913 , p_component_code => l_component_code
88914 , p_component_type_code => l_component_type_code
88915 , p_component_appl_id => l_component_appl_id
88916 , p_amb_context_code => l_amb_context_code
88917 , p_side => 'NA'
88918 );
88919
88920
88921 --
88922 --
88923 END IF;
88924 --
88925 -- Bug 4922099
88926 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
88927 (NVL(l_enc_upg_option, 'N') = 'O')
88928 ) AND
88929 (l_bflow_method_code = 'PRIOR_ENTRY')
88930 )
88931 THEN
88932 IF
88933 --
88934 1 = 2
88935 --
88936 THEN
88937 xla_accounting_err_pkg.build_message
88938 (p_appli_s_name => 'XLA'
88939 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88940 ,p_token_1 => 'LINE_NUMBER'
88941 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
88942 ,p_token_2 => 'LINE_TYPE_NAME'
88943 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
88944 l_component_type
88945 ,l_component_code
88946 ,l_component_type_code
88947 ,l_component_appl_id
88948 ,l_amb_context_code
88949 ,l_entity_code
88950 ,l_event_class_code
88951 )
88952 ,p_token_3 => 'OWNER'
88953 ,p_value_3 => xla_lookups_pkg.get_meaning(
88954 p_lookup_type => 'XLA_OWNER_TYPE'
88955 ,p_lookup_code => l_component_type_code
88956 )
88957 ,p_token_4 => 'PRODUCT_NAME'
88958 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
88959 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
88960 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
88961 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
88962 ,p_ae_header_id => NULL
88963 );
88964
88965 IF (C_LEVEL_ERROR>= g_log_level) THEN
88966 trace
88967 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
88968 ,p_level => C_LEVEL_ERROR
88969 ,p_module => l_log_module);
88970 END IF;
88971 END IF;
88972 END IF;
88973 --
88974 --
88975 ------------------------------------------------------------------------------------------------
88976 -- 4219869 Business Flow
88977 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
88978 -- Prior Entry. Currently, the following code is always generated.
88979 ------------------------------------------------------------------------------------------------
88980 XLA_AE_LINES_PKG.ValidateCurrentLine;
88981
88982 ------------------------------------------------------------------------------------
88983 -- 4219869 Business Flow
88984 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
88985 ------------------------------------------------------------------------------------
88986 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
88987
88988 ----------------------------------------------------------------------------------
88989 -- 4219869 Business Flow
88990 -- Update journal entry status -- Need to generate this within IF <condition>
88991 ----------------------------------------------------------------------------------
88992 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
88993 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
88994 ,p_balance_type_code => l_balance_type_code
88995 );
88996
88997 -------------------------------------------------------------------------------------------
88998 -- 4262811 - Generate the Accrual Reversal lines
88999 -------------------------------------------------------------------------------------------
89000 BEGIN
89001 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89002 (g_array_event(p_event_id).array_value_num('header_index'));
89003 IF l_acc_rev_flag IS NULL THEN
89004 l_acc_rev_flag := 'N';
89005 END IF;
89006 EXCEPTION
89007 WHEN OTHERS THEN
89008 l_acc_rev_flag := 'N';
89009 END;
89010 --
89011 IF (l_acc_rev_flag = 'Y') THEN
89012
89013 -- 4645092 ------------------------------------------------------------------------------
89014 -- To allow MPA report to determine if it should generate report process
89015 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89016 ------------------------------------------------------------------------------------------
89017
89018 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89019 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89020 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
89021 -- call ADRs
89022 -- Bug 4922099
89023 --
89024 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89025 (NVL(l_actual_upg_option, 'N') = 'O') OR
89026 (NVL(l_enc_upg_option, 'N') = 'O')
89027 )
89028 THEN
89029 NULL;
89030 --
89031 --
89032
89033 l_ccid := AcctDerRule_4(
89034 p_application_id => p_application_id
89035 , p_ae_header_id => l_ae_header_id
89036 , p_source_4 => p_source_4
89037 , x_transaction_coa_id => l_adr_transaction_coa_id
89038 , x_accounting_coa_id => l_adr_accounting_coa_id
89039 , x_value_type_code => l_adr_value_type_code
89040 , p_side => 'NA'
89041 );
89042
89043 xla_ae_lines_pkg.set_ccid(
89044 p_code_combination_id => l_ccid
89045 , p_value_type_code => l_adr_value_type_code
89046 , p_transaction_coa_id => l_adr_transaction_coa_id
89047 , p_accounting_coa_id => l_adr_accounting_coa_id
89048 , p_adr_code => 'CST_DEFAULT'
89049 , p_adr_type_code => 'S'
89050 , p_component_type => l_component_type
89051 , p_component_code => l_component_code
89052 , p_component_type_code => l_component_type_code
89053 , p_component_appl_id => l_component_appl_id
89054 , p_amb_context_code => l_amb_context_code
89055 , p_side => 'NA'
89056 );
89057
89058
89059 --
89060 --
89061 END IF;
89062
89063 --
89064 -- Update the line information that should be overwritten
89065 --
89066 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89067 p_header_num => 1);
89068 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
89069
89070 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89071
89072 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
89073 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89074 END IF;
89075
89076 --
89077 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89078 --
89079 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89080 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
89081 ELSE
89082 ---------------------------------------------------------------------------------------------------
89083 -- 4262811a Switch Sign
89084 ---------------------------------------------------------------------------------------------------
89085 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
89086 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89087 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89088 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89089 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89090 -- 5132302
89091 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89092 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89093
89094 END IF;
89095
89096 -- 4955764
89097 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89098 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89099
89100
89101 XLA_AE_LINES_PKG.ValidateCurrentLine;
89102 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89103
89104 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89105 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89106 ,p_balance_type_code => l_balance_type_code);
89107
89108 END IF;
89109
89110 -----------------------------------------------------------------------------------------
89111 -- 4262811 Multiperiod Accounting
89112 -----------------------------------------------------------------------------------------
89113 -- No MPA option is assigned.
89114
89115
89116 END IF;
89117 END IF;
89118 --
89119
89120 --
89121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89122 trace
89123 (p_msg => 'END of AcctLineType_162'
89124 ,p_level => C_LEVEL_PROCEDURE
89125 ,p_module => l_log_module);
89126 END IF;
89127 --
89128 EXCEPTION
89129 WHEN xla_exceptions_pkg.application_exception THEN
89130 RAISE;
89131 WHEN OTHERS THEN
89132 xla_exceptions_pkg.raise_message
89133 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_162');
89134 END AcctLineType_162;
89135 --
89136
89137 ---------------------------------------
89138 --
89139 -- PRIVATE FUNCTION
89140 -- AcctLineType_163
89141 --
89142 ---------------------------------------
89143 PROCEDURE AcctLineType_163 (
89144 p_application_id IN NUMBER
89145 ,p_event_id IN NUMBER
89146 ,p_calculate_acctd_flag IN VARCHAR2
89147 ,p_calculate_g_l_flag IN VARCHAR2
89148 ,p_actual_flag IN OUT VARCHAR2
89149 ,p_balance_type_code OUT VARCHAR2
89150 ,p_gain_or_loss_ref OUT VARCHAR2
89151
89152 --Cost Management Default Account
89153 , p_source_4 IN NUMBER
89154 --Receiving Accounting Line Type
89155 , p_source_5 IN VARCHAR2
89156 --DISTRIBUTION_IDENTIFIER
89157 , p_source_11 IN NUMBER
89158 --Distribution Type
89159 , p_source_12 IN VARCHAR2
89160 , p_source_12_meaning IN VARCHAR2
89161 --Entered Amount
89162 , p_source_18 IN NUMBER
89163 --Accounted Amount
89164 , p_source_22 IN NUMBER
89165 --Entered Currency Code
89166 , p_source_32 IN VARCHAR2
89167 --Currency Conversion Date
89168 , p_source_33 IN DATE
89169 --Currency Conversion Rate
89170 , p_source_34 IN NUMBER
89171 )
89172 IS
89173
89174 l_component_type VARCHAR2(80);
89175 l_component_code VARCHAR2(30);
89176 l_component_type_code VARCHAR2(1);
89177 l_component_appl_id INTEGER;
89178 l_amb_context_code VARCHAR2(30);
89179 l_entity_code VARCHAR2(30);
89180 l_event_class_code VARCHAR2(30);
89181 l_ae_header_id NUMBER;
89182 l_event_type_code VARCHAR2(30);
89183 l_line_definition_code VARCHAR2(30);
89184 l_line_definition_owner_code VARCHAR2(1);
89185 --
89186 -- adr variables
89187 l_segment VARCHAR2(30);
89188 l_ccid NUMBER;
89189 l_adr_transaction_coa_id NUMBER;
89190 l_adr_accounting_coa_id NUMBER;
89191 l_adr_flexfield_segment_code VARCHAR2(30);
89192 l_adr_flex_value_set_id NUMBER;
89193 l_adr_value_type_code VARCHAR2(30);
89194 l_adr_value_combination_id NUMBER;
89195 l_adr_value_segment_code VARCHAR2(30);
89196
89197 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
89198 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
89199 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
89200 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
89201
89202 -- 4262811 Variables ------------------------------------------------------------------------------------------
89203 l_entered_amt_idx NUMBER;
89204 l_accted_amt_idx NUMBER;
89205 l_acc_rev_flag VARCHAR2(1);
89206 l_accrual_line_num NUMBER;
89207 l_tmp_amt NUMBER;
89208 l_acc_rev_natural_side_code VARCHAR2(1);
89209
89210 l_num_entries NUMBER;
89211 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
89212 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
89213 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
89214 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
89215 l_recog_line_1 NUMBER;
89216 l_recog_line_2 NUMBER;
89217
89218 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
89219 l_bflow_applied_to_amt NUMBER; -- 5132302
89220 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
89221
89222 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89223
89224 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
89225 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
89226
89227 ---------------------------------------------------------------------------------------------------------------
89228
89229
89230 --
89231 -- bulk performance
89232 --
89233 l_balance_type_code VARCHAR2(1);
89234 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
89235 l_log_module VARCHAR2(240);
89236
89237 --
89238 -- Upgrade strategy
89239 --
89240 l_actual_upg_option VARCHAR2(1);
89241 l_enc_upg_option VARCHAR2(1);
89242
89243 --
89244 BEGIN
89245 --
89246 IF g_log_enabled THEN
89247 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_163';
89248 END IF;
89249 --
89250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89251
89252 trace
89253 (p_msg => 'BEGIN of AcctLineType_163'
89254 ,p_level => C_LEVEL_PROCEDURE
89255 ,p_module => l_log_module);
89256
89257 END IF;
89258 --
89259 l_component_type := 'AMB_JLT';
89260 l_component_code := 'LANDED_COST_ABSORPTION';
89261 l_component_type_code := 'S';
89262 l_component_appl_id := 707;
89263 l_amb_context_code := 'DEFAULT';
89264 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
89265 l_event_class_code := 'LDD_COST_ADJ_DEL';
89266 l_event_type_code := 'LDD_COST_ADJ_DEL_ALL';
89267 l_line_definition_owner_code := 'S';
89268 l_line_definition_code := 'LDD_COST_ADJ_DEL';
89269 --
89270 l_balance_type_code := 'A';
89271 l_segment := NULL;
89272 l_ccid := NULL;
89273 l_adr_transaction_coa_id := NULL;
89274 l_adr_accounting_coa_id := NULL;
89275 l_adr_flexfield_segment_code := NULL;
89276 l_adr_flex_value_set_id := NULL;
89277 l_adr_value_type_code := NULL;
89278 l_adr_value_combination_id := NULL;
89279 l_adr_value_segment_code := NULL;
89280
89281 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
89282 l_bflow_class_code := ''; -- 4219869 Business Flow
89283 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
89284 l_budgetary_control_flag := 'N';
89285
89286 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89287 l_bflow_applied_to_amt := NULL; -- 5132302
89288 l_entered_amt_idx := NULL; -- 4262811
89289 l_accted_amt_idx := NULL; -- 4262811
89290 l_acc_rev_flag := NULL; -- 4262811
89291 l_accrual_line_num := NULL; -- 4262811
89292 l_tmp_amt := NULL; -- 4262811
89293 --
89294
89295 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89296 l_balance_type_code <> 'B' THEN
89297 IF NVL(p_source_5,'
89298 ') = 'Landed Cost Absorption'
89299 THEN
89300
89301 --
89302 XLA_AE_LINES_PKG.SetNewLine;
89303
89304 p_balance_type_code := l_balance_type_code;
89305 -- set the flag so later we will know whether the gain loss line needs to be created
89306
89307 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89308 p_actual_flag :='A';
89309 END IF;
89310
89311 --
89312 -- bulk performance
89313 --
89314 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89315 p_header_num => 0); -- 4262811
89316 --
89317 -- set accounting line options
89318 --
89319 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89320 p_natural_side_code => 'D'
89321 , p_gain_or_loss_flag => 'N'
89322 , p_gl_transfer_mode_code => 'S'
89323 , p_acct_entry_type_code => 'A'
89324 , p_switch_side_flag => 'Y'
89325 , p_merge_duplicate_code => 'N'
89326 );
89327 --
89328 l_acc_rev_natural_side_code := 'C'; -- 4262811
89329 --
89330 --
89331 -- set accounting line type info
89332 --
89333 xla_ae_lines_pkg.SetAcctLineType
89334 (p_component_type => l_component_type
89335 ,p_event_type_code => l_event_type_code
89336 ,p_line_definition_owner_code => l_line_definition_owner_code
89337 ,p_line_definition_code => l_line_definition_code
89338 ,p_accounting_line_code => l_component_code
89339 ,p_accounting_line_type_code => l_component_type_code
89340 ,p_accounting_line_appl_id => l_component_appl_id
89341 ,p_amb_context_code => l_amb_context_code
89342 ,p_entity_code => l_entity_code
89343 ,p_event_class_code => l_event_class_code);
89344 --
89345 -- set accounting class
89346 --
89347 xla_ae_lines_pkg.SetAcctClass(
89348 p_accounting_class_code => 'LANDED_COST_ABSORPTION'
89349 , p_ae_header_id => l_ae_header_id
89350 );
89351
89352 --
89353 -- set rounding class
89354 --
89355 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89356 'LANDED_COST_ABSORPTION';
89357
89358 --
89359 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89360 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89361 --
89362 -- bulk performance
89363 --
89364 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89365
89366 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89367 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89368
89369 -- 4955764
89370 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89371 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89372
89373 -- 4458381 Public Sector Enh
89374
89375 --
89376 -- set accounting attributes for the line type
89377 --
89378 l_entered_amt_idx := 3;
89379 l_accted_amt_idx := 7;
89380 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89381 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89382 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
89383 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89384 l_rec_acct_attrs.array_char_value(2) := p_source_12;
89385 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89386 l_rec_acct_attrs.array_num_value(3) := p_source_18;
89387 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89388 l_rec_acct_attrs.array_char_value(4) := p_source_32;
89389 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89390 l_rec_acct_attrs.array_date_value(5) := p_source_33;
89391 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89392 l_rec_acct_attrs.array_num_value(6) := p_source_34;
89393 l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
89394 l_rec_acct_attrs.array_num_value(7) := p_source_22;
89395
89396 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89397 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89398
89399 ---------------------------------------------------------------------------------------------------------------
89400 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89401 ---------------------------------------------------------------------------------------------------------------
89402 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89403
89404 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89405 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89406
89407 IF xla_accounting_cache_pkg.GetValueChar
89408 (p_source_code => 'LEDGER_CATEGORY_CODE'
89409 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89410 AND l_bflow_method_code = 'PRIOR_ENTRY'
89411 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89412 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89413 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89414 )
89415 THEN
89416 xla_ae_lines_pkg.BflowUpgEntry
89417 (p_business_method_code => l_bflow_method_code
89418 ,p_business_class_code => l_bflow_class_code
89419 ,p_balance_type => l_balance_type_code);
89420 ELSE
89421 NULL;
89422 -- No business flow processing for business flow method of NONE.
89423 END IF;
89424
89425 --
89426 -- call analytical criteria
89427 --
89428
89429 --
89430 -- call description
89431 --
89432 -- No description or it is inherited.
89433 --
89434 -- call ADRs
89435 -- Bug 4922099
89436 --
89437 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89438 (NVL(l_actual_upg_option, 'N') = 'O') OR
89439 (NVL(l_enc_upg_option, 'N') = 'O')
89440 )
89441 THEN
89442 NULL;
89443 --
89444 --
89445
89446 l_ccid := AcctDerRule_4(
89447 p_application_id => p_application_id
89448 , p_ae_header_id => l_ae_header_id
89449 , p_source_4 => p_source_4
89450 , x_transaction_coa_id => l_adr_transaction_coa_id
89451 , x_accounting_coa_id => l_adr_accounting_coa_id
89452 , x_value_type_code => l_adr_value_type_code
89453 , p_side => 'NA'
89454 );
89455
89456 xla_ae_lines_pkg.set_ccid(
89457 p_code_combination_id => l_ccid
89458 , p_value_type_code => l_adr_value_type_code
89459 , p_transaction_coa_id => l_adr_transaction_coa_id
89460 , p_accounting_coa_id => l_adr_accounting_coa_id
89461 , p_adr_code => 'CST_DEFAULT'
89462 , p_adr_type_code => 'S'
89463 , p_component_type => l_component_type
89464 , p_component_code => l_component_code
89465 , p_component_type_code => l_component_type_code
89466 , p_component_appl_id => l_component_appl_id
89467 , p_amb_context_code => l_amb_context_code
89468 , p_side => 'NA'
89469 );
89470
89471
89472 --
89473 --
89474 END IF;
89475 --
89476 -- Bug 4922099
89477 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
89478 (NVL(l_enc_upg_option, 'N') = 'O')
89479 ) AND
89480 (l_bflow_method_code = 'PRIOR_ENTRY')
89481 )
89482 THEN
89483 IF
89484 --
89485 1 = 2
89486 --
89487 THEN
89488 xla_accounting_err_pkg.build_message
89489 (p_appli_s_name => 'XLA'
89490 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89491 ,p_token_1 => 'LINE_NUMBER'
89492 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
89493 ,p_token_2 => 'LINE_TYPE_NAME'
89494 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
89495 l_component_type
89496 ,l_component_code
89497 ,l_component_type_code
89498 ,l_component_appl_id
89499 ,l_amb_context_code
89500 ,l_entity_code
89501 ,l_event_class_code
89502 )
89503 ,p_token_3 => 'OWNER'
89504 ,p_value_3 => xla_lookups_pkg.get_meaning(
89505 p_lookup_type => 'XLA_OWNER_TYPE'
89506 ,p_lookup_code => l_component_type_code
89507 )
89508 ,p_token_4 => 'PRODUCT_NAME'
89509 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
89510 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
89511 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
89512 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
89513 ,p_ae_header_id => NULL
89514 );
89515
89516 IF (C_LEVEL_ERROR>= g_log_level) THEN
89517 trace
89518 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
89519 ,p_level => C_LEVEL_ERROR
89520 ,p_module => l_log_module);
89521 END IF;
89522 END IF;
89523 END IF;
89524 --
89525 --
89526 ------------------------------------------------------------------------------------------------
89527 -- 4219869 Business Flow
89528 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
89529 -- Prior Entry. Currently, the following code is always generated.
89530 ------------------------------------------------------------------------------------------------
89531 XLA_AE_LINES_PKG.ValidateCurrentLine;
89532
89533 ------------------------------------------------------------------------------------
89534 -- 4219869 Business Flow
89535 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
89536 ------------------------------------------------------------------------------------
89537 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89538
89539 ----------------------------------------------------------------------------------
89540 -- 4219869 Business Flow
89541 -- Update journal entry status -- Need to generate this within IF <condition>
89542 ----------------------------------------------------------------------------------
89543 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89544 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
89545 ,p_balance_type_code => l_balance_type_code
89546 );
89547
89548 -------------------------------------------------------------------------------------------
89549 -- 4262811 - Generate the Accrual Reversal lines
89550 -------------------------------------------------------------------------------------------
89551 BEGIN
89552 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
89553 (g_array_event(p_event_id).array_value_num('header_index'));
89554 IF l_acc_rev_flag IS NULL THEN
89555 l_acc_rev_flag := 'N';
89556 END IF;
89557 EXCEPTION
89558 WHEN OTHERS THEN
89559 l_acc_rev_flag := 'N';
89560 END;
89561 --
89562 IF (l_acc_rev_flag = 'Y') THEN
89563
89564 -- 4645092 ------------------------------------------------------------------------------
89565 -- To allow MPA report to determine if it should generate report process
89566 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
89567 ------------------------------------------------------------------------------------------
89568
89569 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
89570 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
89571 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
89572 -- call ADRs
89573 -- Bug 4922099
89574 --
89575 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89576 (NVL(l_actual_upg_option, 'N') = 'O') OR
89577 (NVL(l_enc_upg_option, 'N') = 'O')
89578 )
89579 THEN
89580 NULL;
89581 --
89582 --
89583
89584 l_ccid := AcctDerRule_4(
89585 p_application_id => p_application_id
89586 , p_ae_header_id => l_ae_header_id
89587 , p_source_4 => p_source_4
89588 , x_transaction_coa_id => l_adr_transaction_coa_id
89589 , x_accounting_coa_id => l_adr_accounting_coa_id
89590 , x_value_type_code => l_adr_value_type_code
89591 , p_side => 'NA'
89592 );
89593
89594 xla_ae_lines_pkg.set_ccid(
89595 p_code_combination_id => l_ccid
89596 , p_value_type_code => l_adr_value_type_code
89597 , p_transaction_coa_id => l_adr_transaction_coa_id
89598 , p_accounting_coa_id => l_adr_accounting_coa_id
89599 , p_adr_code => 'CST_DEFAULT'
89600 , p_adr_type_code => 'S'
89601 , p_component_type => l_component_type
89602 , p_component_code => l_component_code
89603 , p_component_type_code => l_component_type_code
89604 , p_component_appl_id => l_component_appl_id
89605 , p_amb_context_code => l_amb_context_code
89606 , p_side => 'NA'
89607 );
89608
89609
89610 --
89611 --
89612 END IF;
89613
89614 --
89615 -- Update the line information that should be overwritten
89616 --
89617 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
89618 p_header_num => 1);
89619 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
89620
89621 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
89622
89623 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
89624 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
89625 END IF;
89626
89627 --
89628 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
89629 --
89630 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
89631 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
89632 ELSE
89633 ---------------------------------------------------------------------------------------------------
89634 -- 4262811a Switch Sign
89635 ---------------------------------------------------------------------------------------------------
89636 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
89637 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89638 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89639 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
89640 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89641 -- 5132302
89642 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
89643 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
89644
89645 END IF;
89646
89647 -- 4955764
89648 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89649 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
89650
89651
89652 XLA_AE_LINES_PKG.ValidateCurrentLine;
89653 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
89654
89655 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
89656 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
89657 ,p_balance_type_code => l_balance_type_code);
89658
89659 END IF;
89660
89661 -----------------------------------------------------------------------------------------
89662 -- 4262811 Multiperiod Accounting
89663 -----------------------------------------------------------------------------------------
89664 -- No MPA option is assigned.
89665
89666
89667 END IF;
89668 END IF;
89669 --
89670
89671 --
89672 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89673 trace
89674 (p_msg => 'END of AcctLineType_163'
89675 ,p_level => C_LEVEL_PROCEDURE
89676 ,p_module => l_log_module);
89677 END IF;
89678 --
89679 EXCEPTION
89680 WHEN xla_exceptions_pkg.application_exception THEN
89681 RAISE;
89682 WHEN OTHERS THEN
89683 xla_exceptions_pkg.raise_message
89684 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_163');
89685 END AcctLineType_163;
89686 --
89687
89688 ---------------------------------------
89689 --
89690 -- PRIVATE FUNCTION
89691 -- AcctLineType_164
89692 --
89693 ---------------------------------------
89694 PROCEDURE AcctLineType_164 (
89695 p_application_id IN NUMBER
89696 ,p_event_id IN NUMBER
89697 ,p_calculate_acctd_flag IN VARCHAR2
89698 ,p_calculate_g_l_flag IN VARCHAR2
89699 ,p_actual_flag IN OUT VARCHAR2
89700 ,p_balance_type_code OUT VARCHAR2
89701 ,p_gain_or_loss_ref OUT VARCHAR2
89702
89703 --Cost Management Default Account
89704 , p_source_4 IN NUMBER
89705 --DISTRIBUTION_IDENTIFIER
89706 , p_source_11 IN NUMBER
89707 --Distribution Type
89708 , p_source_12 IN VARCHAR2
89709 , p_source_12_meaning IN VARCHAR2
89710 --Entered Currency Code
89711 , p_source_15 IN VARCHAR2
89712 --Entered Amount
89713 , p_source_18 IN NUMBER
89714 --Currency Conversion Date
89715 , p_source_19 IN DATE
89716 --Currency Conversion Rate
89717 , p_source_20 IN NUMBER
89718 --Currency Conversion Type
89719 , p_source_21 IN VARCHAR2
89720 --Accounted Amount
89721 , p_source_22 IN NUMBER
89722 --Accounting Line Type
89723 , p_source_24 IN NUMBER
89724 )
89725 IS
89726
89727 l_component_type VARCHAR2(80);
89728 l_component_code VARCHAR2(30);
89729 l_component_type_code VARCHAR2(1);
89730 l_component_appl_id INTEGER;
89731 l_amb_context_code VARCHAR2(30);
89732 l_entity_code VARCHAR2(30);
89733 l_event_class_code VARCHAR2(30);
89734 l_ae_header_id NUMBER;
89735 l_event_type_code VARCHAR2(30);
89736 l_line_definition_code VARCHAR2(30);
89737 l_line_definition_owner_code VARCHAR2(1);
89738 --
89739 -- adr variables
89740 l_segment VARCHAR2(30);
89741 l_ccid NUMBER;
89742 l_adr_transaction_coa_id NUMBER;
89743 l_adr_accounting_coa_id NUMBER;
89744 l_adr_flexfield_segment_code VARCHAR2(30);
89745 l_adr_flex_value_set_id NUMBER;
89746 l_adr_value_type_code VARCHAR2(30);
89747 l_adr_value_combination_id NUMBER;
89748 l_adr_value_segment_code VARCHAR2(30);
89749
89750 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
89751 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
89752 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
89753 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
89754
89755 -- 4262811 Variables ------------------------------------------------------------------------------------------
89756 l_entered_amt_idx NUMBER;
89757 l_accted_amt_idx NUMBER;
89758 l_acc_rev_flag VARCHAR2(1);
89759 l_accrual_line_num NUMBER;
89760 l_tmp_amt NUMBER;
89761 l_acc_rev_natural_side_code VARCHAR2(1);
89762
89763 l_num_entries NUMBER;
89764 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
89765 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
89766 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
89767 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
89768 l_recog_line_1 NUMBER;
89769 l_recog_line_2 NUMBER;
89770
89771 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
89772 l_bflow_applied_to_amt NUMBER; -- 5132302
89773 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
89774
89775 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
89776
89777 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
89778 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
89779
89780 ---------------------------------------------------------------------------------------------------------------
89781
89782
89783 --
89784 -- bulk performance
89785 --
89786 l_balance_type_code VARCHAR2(1);
89787 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
89788 l_log_module VARCHAR2(240);
89789
89790 --
89791 -- Upgrade strategy
89792 --
89793 l_actual_upg_option VARCHAR2(1);
89794 l_enc_upg_option VARCHAR2(1);
89795
89796 --
89797 BEGIN
89798 --
89799 IF g_log_enabled THEN
89800 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_164';
89801 END IF;
89802 --
89803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89804
89805 trace
89806 (p_msg => 'BEGIN of AcctLineType_164'
89807 ,p_level => C_LEVEL_PROCEDURE
89808 ,p_module => l_log_module);
89809
89810 END IF;
89811 --
89812 l_component_type := 'AMB_JLT';
89813 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
89814 l_component_type_code := 'S';
89815 l_component_appl_id := 707;
89816 l_amb_context_code := 'DEFAULT';
89817 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
89818 l_event_class_code := 'CON_INV_OWNR_TXFR';
89819 l_event_type_code := 'CON_INV_OWNR_TXFR_ALL';
89820 l_line_definition_owner_code := 'S';
89821 l_line_definition_code := 'CON_INV_OWNR_TXFR';
89822 --
89823 l_balance_type_code := 'A';
89824 l_segment := NULL;
89825 l_ccid := NULL;
89826 l_adr_transaction_coa_id := NULL;
89827 l_adr_accounting_coa_id := NULL;
89828 l_adr_flexfield_segment_code := NULL;
89829 l_adr_flex_value_set_id := NULL;
89830 l_adr_value_type_code := NULL;
89831 l_adr_value_combination_id := NULL;
89832 l_adr_value_segment_code := NULL;
89833
89834 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
89835 l_bflow_class_code := ''; -- 4219869 Business Flow
89836 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
89837 l_budgetary_control_flag := 'N';
89838
89839 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89840 l_bflow_applied_to_amt := NULL; -- 5132302
89841 l_entered_amt_idx := NULL; -- 4262811
89842 l_accted_amt_idx := NULL; -- 4262811
89843 l_acc_rev_flag := NULL; -- 4262811
89844 l_accrual_line_num := NULL; -- 4262811
89845 l_tmp_amt := NULL; -- 4262811
89846 --
89847
89848 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
89849 l_balance_type_code <> 'B' THEN
89850 IF NVL(p_source_24,9E125) = 3
89851 THEN
89852
89853 --
89854 XLA_AE_LINES_PKG.SetNewLine;
89855
89856 p_balance_type_code := l_balance_type_code;
89857 -- set the flag so later we will know whether the gain loss line needs to be created
89858
89859 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
89860 p_actual_flag :='A';
89861 END IF;
89862
89863 --
89864 -- bulk performance
89865 --
89866 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
89867 p_header_num => 0); -- 4262811
89868 --
89869 -- set accounting line options
89870 --
89871 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
89872 p_natural_side_code => 'D'
89873 , p_gain_or_loss_flag => 'N'
89874 , p_gl_transfer_mode_code => 'S'
89875 , p_acct_entry_type_code => 'A'
89876 , p_switch_side_flag => 'Y'
89877 , p_merge_duplicate_code => 'N'
89878 );
89879 --
89880 l_acc_rev_natural_side_code := 'C'; -- 4262811
89881 --
89882 --
89883 -- set accounting line type info
89884 --
89885 xla_ae_lines_pkg.SetAcctLineType
89886 (p_component_type => l_component_type
89887 ,p_event_type_code => l_event_type_code
89888 ,p_line_definition_owner_code => l_line_definition_owner_code
89889 ,p_line_definition_code => l_line_definition_code
89890 ,p_accounting_line_code => l_component_code
89891 ,p_accounting_line_type_code => l_component_type_code
89892 ,p_accounting_line_appl_id => l_component_appl_id
89893 ,p_amb_context_code => l_amb_context_code
89894 ,p_entity_code => l_entity_code
89895 ,p_event_class_code => l_event_class_code);
89896 --
89897 -- set accounting class
89898 --
89899 xla_ae_lines_pkg.SetAcctClass(
89900 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
89901 , p_ae_header_id => l_ae_header_id
89902 );
89903
89904 --
89905 -- set rounding class
89906 --
89907 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
89908 'MATERIAL_OVERHEAD_ABSORPTION';
89909
89910 --
89911 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
89912 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
89913 --
89914 -- bulk performance
89915 --
89916 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
89917
89918 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
89919 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
89920
89921 -- 4955764
89922 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
89923 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
89924
89925 -- 4458381 Public Sector Enh
89926
89927 --
89928 -- set accounting attributes for the line type
89929 --
89930 l_entered_amt_idx := 3;
89931 l_accted_amt_idx := 8;
89932 l_bflow_applied_to_amt_idx := NULL; -- 5132302
89933 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
89934 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
89935 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
89936 l_rec_acct_attrs.array_char_value(2) := p_source_12;
89937 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
89938 l_rec_acct_attrs.array_num_value(3) := p_source_18;
89939 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
89940 l_rec_acct_attrs.array_char_value(4) := p_source_15;
89941 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
89942 l_rec_acct_attrs.array_date_value(5) := p_source_19;
89943 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
89944 l_rec_acct_attrs.array_num_value(6) := p_source_20;
89945 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
89946 l_rec_acct_attrs.array_char_value(7) := p_source_21;
89947 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
89948 l_rec_acct_attrs.array_num_value(8) := p_source_22;
89949
89950 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
89951 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
89952
89953 ---------------------------------------------------------------------------------------------------------------
89954 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
89955 ---------------------------------------------------------------------------------------------------------------
89956 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
89957
89958 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89959 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
89960
89961 IF xla_accounting_cache_pkg.GetValueChar
89962 (p_source_code => 'LEDGER_CATEGORY_CODE'
89963 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
89964 AND l_bflow_method_code = 'PRIOR_ENTRY'
89965 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
89966 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
89967 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
89968 )
89969 THEN
89970 xla_ae_lines_pkg.BflowUpgEntry
89971 (p_business_method_code => l_bflow_method_code
89972 ,p_business_class_code => l_bflow_class_code
89973 ,p_balance_type => l_balance_type_code);
89974 ELSE
89975 NULL;
89976 -- No business flow processing for business flow method of NONE.
89977 END IF;
89978
89979 --
89980 -- call analytical criteria
89981 --
89982
89983 --
89984 -- call description
89985 --
89986 -- No description or it is inherited.
89987 --
89988 -- call ADRs
89989 -- Bug 4922099
89990 --
89991 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
89992 (NVL(l_actual_upg_option, 'N') = 'O') OR
89993 (NVL(l_enc_upg_option, 'N') = 'O')
89994 )
89995 THEN
89996 NULL;
89997 --
89998 --
89999
90000 l_ccid := AcctDerRule_4(
90001 p_application_id => p_application_id
90002 , p_ae_header_id => l_ae_header_id
90003 , p_source_4 => p_source_4
90004 , x_transaction_coa_id => l_adr_transaction_coa_id
90005 , x_accounting_coa_id => l_adr_accounting_coa_id
90006 , x_value_type_code => l_adr_value_type_code
90007 , p_side => 'NA'
90008 );
90009
90010 xla_ae_lines_pkg.set_ccid(
90011 p_code_combination_id => l_ccid
90012 , p_value_type_code => l_adr_value_type_code
90013 , p_transaction_coa_id => l_adr_transaction_coa_id
90014 , p_accounting_coa_id => l_adr_accounting_coa_id
90015 , p_adr_code => 'CST_DEFAULT'
90016 , p_adr_type_code => 'S'
90017 , p_component_type => l_component_type
90018 , p_component_code => l_component_code
90019 , p_component_type_code => l_component_type_code
90020 , p_component_appl_id => l_component_appl_id
90021 , p_amb_context_code => l_amb_context_code
90022 , p_side => 'NA'
90023 );
90024
90025
90026 --
90027 --
90028 END IF;
90029 --
90030 -- Bug 4922099
90031 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90032 (NVL(l_enc_upg_option, 'N') = 'O')
90033 ) AND
90034 (l_bflow_method_code = 'PRIOR_ENTRY')
90035 )
90036 THEN
90037 IF
90038 --
90039 1 = 2
90040 --
90041 THEN
90042 xla_accounting_err_pkg.build_message
90043 (p_appli_s_name => 'XLA'
90044 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90045 ,p_token_1 => 'LINE_NUMBER'
90046 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
90047 ,p_token_2 => 'LINE_TYPE_NAME'
90048 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
90049 l_component_type
90050 ,l_component_code
90051 ,l_component_type_code
90052 ,l_component_appl_id
90053 ,l_amb_context_code
90054 ,l_entity_code
90055 ,l_event_class_code
90056 )
90057 ,p_token_3 => 'OWNER'
90058 ,p_value_3 => xla_lookups_pkg.get_meaning(
90059 p_lookup_type => 'XLA_OWNER_TYPE'
90060 ,p_lookup_code => l_component_type_code
90061 )
90062 ,p_token_4 => 'PRODUCT_NAME'
90063 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90064 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90065 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90066 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90067 ,p_ae_header_id => NULL
90068 );
90069
90070 IF (C_LEVEL_ERROR>= g_log_level) THEN
90071 trace
90072 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90073 ,p_level => C_LEVEL_ERROR
90074 ,p_module => l_log_module);
90075 END IF;
90076 END IF;
90077 END IF;
90078 --
90079 --
90080 ------------------------------------------------------------------------------------------------
90081 -- 4219869 Business Flow
90082 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90083 -- Prior Entry. Currently, the following code is always generated.
90084 ------------------------------------------------------------------------------------------------
90085 XLA_AE_LINES_PKG.ValidateCurrentLine;
90086
90087 ------------------------------------------------------------------------------------
90088 -- 4219869 Business Flow
90089 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90090 ------------------------------------------------------------------------------------
90091 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90092
90093 ----------------------------------------------------------------------------------
90094 -- 4219869 Business Flow
90095 -- Update journal entry status -- Need to generate this within IF <condition>
90096 ----------------------------------------------------------------------------------
90097 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90098 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90099 ,p_balance_type_code => l_balance_type_code
90100 );
90101
90102 -------------------------------------------------------------------------------------------
90103 -- 4262811 - Generate the Accrual Reversal lines
90104 -------------------------------------------------------------------------------------------
90105 BEGIN
90106 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90107 (g_array_event(p_event_id).array_value_num('header_index'));
90108 IF l_acc_rev_flag IS NULL THEN
90109 l_acc_rev_flag := 'N';
90110 END IF;
90111 EXCEPTION
90112 WHEN OTHERS THEN
90113 l_acc_rev_flag := 'N';
90114 END;
90115 --
90116 IF (l_acc_rev_flag = 'Y') THEN
90117
90118 -- 4645092 ------------------------------------------------------------------------------
90119 -- To allow MPA report to determine if it should generate report process
90120 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90121 ------------------------------------------------------------------------------------------
90122
90123 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90124 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90125 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
90126 -- call ADRs
90127 -- Bug 4922099
90128 --
90129 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90130 (NVL(l_actual_upg_option, 'N') = 'O') OR
90131 (NVL(l_enc_upg_option, 'N') = 'O')
90132 )
90133 THEN
90134 NULL;
90135 --
90136 --
90137
90138 l_ccid := AcctDerRule_4(
90139 p_application_id => p_application_id
90140 , p_ae_header_id => l_ae_header_id
90141 , p_source_4 => p_source_4
90142 , x_transaction_coa_id => l_adr_transaction_coa_id
90143 , x_accounting_coa_id => l_adr_accounting_coa_id
90144 , x_value_type_code => l_adr_value_type_code
90145 , p_side => 'NA'
90146 );
90147
90148 xla_ae_lines_pkg.set_ccid(
90149 p_code_combination_id => l_ccid
90150 , p_value_type_code => l_adr_value_type_code
90151 , p_transaction_coa_id => l_adr_transaction_coa_id
90152 , p_accounting_coa_id => l_adr_accounting_coa_id
90153 , p_adr_code => 'CST_DEFAULT'
90154 , p_adr_type_code => 'S'
90155 , p_component_type => l_component_type
90156 , p_component_code => l_component_code
90157 , p_component_type_code => l_component_type_code
90158 , p_component_appl_id => l_component_appl_id
90159 , p_amb_context_code => l_amb_context_code
90160 , p_side => 'NA'
90161 );
90162
90163
90164 --
90165 --
90166 END IF;
90167
90168 --
90169 -- Update the line information that should be overwritten
90170 --
90171 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90172 p_header_num => 1);
90173 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
90174
90175 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90176
90177 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
90178 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90179 END IF;
90180
90181 --
90182 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90183 --
90184 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90185 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
90186 ELSE
90187 ---------------------------------------------------------------------------------------------------
90188 -- 4262811a Switch Sign
90189 ---------------------------------------------------------------------------------------------------
90190 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
90191 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90192 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90193 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90194 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90195 -- 5132302
90196 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90197 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90198
90199 END IF;
90200
90201 -- 4955764
90202 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90203 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90204
90205
90206 XLA_AE_LINES_PKG.ValidateCurrentLine;
90207 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90208
90209 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90210 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90211 ,p_balance_type_code => l_balance_type_code);
90212
90213 END IF;
90214
90215 -----------------------------------------------------------------------------------------
90216 -- 4262811 Multiperiod Accounting
90217 -----------------------------------------------------------------------------------------
90218 -- No MPA option is assigned.
90219
90220
90221 END IF;
90222 END IF;
90223 --
90224
90225 --
90226 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90227 trace
90228 (p_msg => 'END of AcctLineType_164'
90229 ,p_level => C_LEVEL_PROCEDURE
90230 ,p_module => l_log_module);
90231 END IF;
90232 --
90233 EXCEPTION
90234 WHEN xla_exceptions_pkg.application_exception THEN
90235 RAISE;
90236 WHEN OTHERS THEN
90237 xla_exceptions_pkg.raise_message
90238 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_164');
90239 END AcctLineType_164;
90240 --
90241
90242 ---------------------------------------
90243 --
90244 -- PRIVATE FUNCTION
90245 -- AcctLineType_165
90246 --
90247 ---------------------------------------
90248 PROCEDURE AcctLineType_165 (
90249 p_application_id IN NUMBER
90250 ,p_event_id IN NUMBER
90251 ,p_calculate_acctd_flag IN VARCHAR2
90252 ,p_calculate_g_l_flag IN VARCHAR2
90253 ,p_actual_flag IN OUT VARCHAR2
90254 ,p_balance_type_code OUT VARCHAR2
90255 ,p_gain_or_loss_ref OUT VARCHAR2
90256
90257 --Cost Management Default Account
90258 , p_source_4 IN NUMBER
90259 --DISTRIBUTION_IDENTIFIER
90260 , p_source_11 IN NUMBER
90261 --Distribution Type
90262 , p_source_12 IN VARCHAR2
90263 , p_source_12_meaning IN VARCHAR2
90264 --Entered Currency Code
90265 , p_source_15 IN VARCHAR2
90266 --Entered Amount
90267 , p_source_18 IN NUMBER
90268 --Currency Conversion Date
90269 , p_source_19 IN DATE
90270 --Currency Conversion Rate
90271 , p_source_20 IN NUMBER
90272 --Currency Conversion Type
90273 , p_source_21 IN VARCHAR2
90274 --Accounted Amount
90275 , p_source_22 IN NUMBER
90276 --Accounting Line Type
90277 , p_source_24 IN NUMBER
90278 )
90279 IS
90280
90281 l_component_type VARCHAR2(80);
90282 l_component_code VARCHAR2(30);
90283 l_component_type_code VARCHAR2(1);
90284 l_component_appl_id INTEGER;
90285 l_amb_context_code VARCHAR2(30);
90286 l_entity_code VARCHAR2(30);
90287 l_event_class_code VARCHAR2(30);
90288 l_ae_header_id NUMBER;
90289 l_event_type_code VARCHAR2(30);
90290 l_line_definition_code VARCHAR2(30);
90291 l_line_definition_owner_code VARCHAR2(1);
90292 --
90293 -- adr variables
90294 l_segment VARCHAR2(30);
90295 l_ccid NUMBER;
90296 l_adr_transaction_coa_id NUMBER;
90297 l_adr_accounting_coa_id NUMBER;
90298 l_adr_flexfield_segment_code VARCHAR2(30);
90299 l_adr_flex_value_set_id NUMBER;
90300 l_adr_value_type_code VARCHAR2(30);
90301 l_adr_value_combination_id NUMBER;
90302 l_adr_value_segment_code VARCHAR2(30);
90303
90304 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
90305 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
90306 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
90307 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
90308
90309 -- 4262811 Variables ------------------------------------------------------------------------------------------
90310 l_entered_amt_idx NUMBER;
90311 l_accted_amt_idx NUMBER;
90312 l_acc_rev_flag VARCHAR2(1);
90313 l_accrual_line_num NUMBER;
90314 l_tmp_amt NUMBER;
90315 l_acc_rev_natural_side_code VARCHAR2(1);
90316
90317 l_num_entries NUMBER;
90318 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
90319 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
90320 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
90321 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
90322 l_recog_line_1 NUMBER;
90323 l_recog_line_2 NUMBER;
90324
90325 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
90326 l_bflow_applied_to_amt NUMBER; -- 5132302
90327 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
90328
90329 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90330
90331 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
90332 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
90333
90334 ---------------------------------------------------------------------------------------------------------------
90335
90336
90337 --
90338 -- bulk performance
90339 --
90340 l_balance_type_code VARCHAR2(1);
90341 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
90342 l_log_module VARCHAR2(240);
90343
90344 --
90345 -- Upgrade strategy
90346 --
90347 l_actual_upg_option VARCHAR2(1);
90348 l_enc_upg_option VARCHAR2(1);
90349
90350 --
90351 BEGIN
90352 --
90353 IF g_log_enabled THEN
90354 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_165';
90355 END IF;
90356 --
90357 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90358
90359 trace
90360 (p_msg => 'BEGIN of AcctLineType_165'
90361 ,p_level => C_LEVEL_PROCEDURE
90362 ,p_module => l_log_module);
90363
90364 END IF;
90365 --
90366 l_component_type := 'AMB_JLT';
90367 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
90368 l_component_type_code := 'S';
90369 l_component_appl_id := 707;
90370 l_amb_context_code := 'DEFAULT';
90371 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
90372 l_event_class_code := 'USER_DEFINE';
90373 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
90374 l_line_definition_owner_code := 'S';
90375 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
90376 --
90377 l_balance_type_code := 'A';
90378 l_segment := NULL;
90379 l_ccid := NULL;
90380 l_adr_transaction_coa_id := NULL;
90381 l_adr_accounting_coa_id := NULL;
90382 l_adr_flexfield_segment_code := NULL;
90383 l_adr_flex_value_set_id := NULL;
90384 l_adr_value_type_code := NULL;
90385 l_adr_value_combination_id := NULL;
90386 l_adr_value_segment_code := NULL;
90387
90388 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
90389 l_bflow_class_code := ''; -- 4219869 Business Flow
90390 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
90391 l_budgetary_control_flag := 'N';
90392
90393 l_bflow_applied_to_amt_idx := NULL; -- 5132302
90394 l_bflow_applied_to_amt := NULL; -- 5132302
90395 l_entered_amt_idx := NULL; -- 4262811
90396 l_accted_amt_idx := NULL; -- 4262811
90397 l_acc_rev_flag := NULL; -- 4262811
90398 l_accrual_line_num := NULL; -- 4262811
90399 l_tmp_amt := NULL; -- 4262811
90400 --
90401
90402 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90403 l_balance_type_code <> 'B' THEN
90404 IF NVL(p_source_24,9E125) = 3
90405 THEN
90406
90407 --
90408 XLA_AE_LINES_PKG.SetNewLine;
90409
90410 p_balance_type_code := l_balance_type_code;
90411 -- set the flag so later we will know whether the gain loss line needs to be created
90412
90413 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90414 p_actual_flag :='A';
90415 END IF;
90416
90417 --
90418 -- bulk performance
90419 --
90420 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90421 p_header_num => 0); -- 4262811
90422 --
90423 -- set accounting line options
90424 --
90425 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
90426 p_natural_side_code => 'D'
90427 , p_gain_or_loss_flag => 'N'
90428 , p_gl_transfer_mode_code => 'S'
90429 , p_acct_entry_type_code => 'A'
90430 , p_switch_side_flag => 'Y'
90431 , p_merge_duplicate_code => 'N'
90432 );
90433 --
90434 l_acc_rev_natural_side_code := 'C'; -- 4262811
90435 --
90436 --
90437 -- set accounting line type info
90438 --
90439 xla_ae_lines_pkg.SetAcctLineType
90440 (p_component_type => l_component_type
90441 ,p_event_type_code => l_event_type_code
90442 ,p_line_definition_owner_code => l_line_definition_owner_code
90443 ,p_line_definition_code => l_line_definition_code
90444 ,p_accounting_line_code => l_component_code
90445 ,p_accounting_line_type_code => l_component_type_code
90446 ,p_accounting_line_appl_id => l_component_appl_id
90447 ,p_amb_context_code => l_amb_context_code
90448 ,p_entity_code => l_entity_code
90449 ,p_event_class_code => l_event_class_code);
90450 --
90451 -- set accounting class
90452 --
90453 xla_ae_lines_pkg.SetAcctClass(
90454 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
90455 , p_ae_header_id => l_ae_header_id
90456 );
90457
90458 --
90459 -- set rounding class
90460 --
90461 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
90462 'MATERIAL_OVERHEAD_ABSORPTION';
90463
90464 --
90465 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
90466 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
90467 --
90468 -- bulk performance
90469 --
90470 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
90471
90472 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
90473 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
90474
90475 -- 4955764
90476 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90477 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
90478
90479 -- 4458381 Public Sector Enh
90480
90481 --
90482 -- set accounting attributes for the line type
90483 --
90484 l_entered_amt_idx := 3;
90485 l_accted_amt_idx := 8;
90486 l_bflow_applied_to_amt_idx := NULL; -- 5132302
90487 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
90488 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
90489 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
90490 l_rec_acct_attrs.array_char_value(2) := p_source_12;
90491 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
90492 l_rec_acct_attrs.array_num_value(3) := p_source_18;
90493 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
90494 l_rec_acct_attrs.array_char_value(4) := p_source_15;
90495 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
90496 l_rec_acct_attrs.array_date_value(5) := p_source_19;
90497 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
90498 l_rec_acct_attrs.array_num_value(6) := p_source_20;
90499 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
90500 l_rec_acct_attrs.array_char_value(7) := p_source_21;
90501 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
90502 l_rec_acct_attrs.array_num_value(8) := p_source_22;
90503
90504 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
90505 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
90506
90507 ---------------------------------------------------------------------------------------------------------------
90508 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
90509 ---------------------------------------------------------------------------------------------------------------
90510 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
90511
90512 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90513 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
90514
90515 IF xla_accounting_cache_pkg.GetValueChar
90516 (p_source_code => 'LEDGER_CATEGORY_CODE'
90517 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
90518 AND l_bflow_method_code = 'PRIOR_ENTRY'
90519 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
90520 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
90521 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
90522 )
90523 THEN
90524 xla_ae_lines_pkg.BflowUpgEntry
90525 (p_business_method_code => l_bflow_method_code
90526 ,p_business_class_code => l_bflow_class_code
90527 ,p_balance_type => l_balance_type_code);
90528 ELSE
90529 NULL;
90530 -- No business flow processing for business flow method of NONE.
90531 END IF;
90532
90533 --
90534 -- call analytical criteria
90535 --
90536
90537 --
90538 -- call description
90539 --
90540 -- No description or it is inherited.
90541 --
90542 -- call ADRs
90543 -- Bug 4922099
90544 --
90545 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90546 (NVL(l_actual_upg_option, 'N') = 'O') OR
90547 (NVL(l_enc_upg_option, 'N') = 'O')
90548 )
90549 THEN
90550 NULL;
90551 --
90552 --
90553
90554 l_ccid := AcctDerRule_4(
90555 p_application_id => p_application_id
90556 , p_ae_header_id => l_ae_header_id
90557 , p_source_4 => p_source_4
90558 , x_transaction_coa_id => l_adr_transaction_coa_id
90559 , x_accounting_coa_id => l_adr_accounting_coa_id
90560 , x_value_type_code => l_adr_value_type_code
90561 , p_side => 'NA'
90562 );
90563
90564 xla_ae_lines_pkg.set_ccid(
90565 p_code_combination_id => l_ccid
90566 , p_value_type_code => l_adr_value_type_code
90567 , p_transaction_coa_id => l_adr_transaction_coa_id
90568 , p_accounting_coa_id => l_adr_accounting_coa_id
90569 , p_adr_code => 'CST_DEFAULT'
90570 , p_adr_type_code => 'S'
90571 , p_component_type => l_component_type
90572 , p_component_code => l_component_code
90573 , p_component_type_code => l_component_type_code
90574 , p_component_appl_id => l_component_appl_id
90575 , p_amb_context_code => l_amb_context_code
90576 , p_side => 'NA'
90577 );
90578
90579
90580 --
90581 --
90582 END IF;
90583 --
90584 -- Bug 4922099
90585 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
90586 (NVL(l_enc_upg_option, 'N') = 'O')
90587 ) AND
90588 (l_bflow_method_code = 'PRIOR_ENTRY')
90589 )
90590 THEN
90591 IF
90592 --
90593 1 = 2
90594 --
90595 THEN
90596 xla_accounting_err_pkg.build_message
90597 (p_appli_s_name => 'XLA'
90598 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90599 ,p_token_1 => 'LINE_NUMBER'
90600 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
90601 ,p_token_2 => 'LINE_TYPE_NAME'
90602 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
90603 l_component_type
90604 ,l_component_code
90605 ,l_component_type_code
90606 ,l_component_appl_id
90607 ,l_amb_context_code
90608 ,l_entity_code
90609 ,l_event_class_code
90610 )
90611 ,p_token_3 => 'OWNER'
90612 ,p_value_3 => xla_lookups_pkg.get_meaning(
90613 p_lookup_type => 'XLA_OWNER_TYPE'
90614 ,p_lookup_code => l_component_type_code
90615 )
90616 ,p_token_4 => 'PRODUCT_NAME'
90617 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
90618 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
90619 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
90620 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
90621 ,p_ae_header_id => NULL
90622 );
90623
90624 IF (C_LEVEL_ERROR>= g_log_level) THEN
90625 trace
90626 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
90627 ,p_level => C_LEVEL_ERROR
90628 ,p_module => l_log_module);
90629 END IF;
90630 END IF;
90631 END IF;
90632 --
90633 --
90634 ------------------------------------------------------------------------------------------------
90635 -- 4219869 Business Flow
90636 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
90637 -- Prior Entry. Currently, the following code is always generated.
90638 ------------------------------------------------------------------------------------------------
90639 XLA_AE_LINES_PKG.ValidateCurrentLine;
90640
90641 ------------------------------------------------------------------------------------
90642 -- 4219869 Business Flow
90643 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
90644 ------------------------------------------------------------------------------------
90645 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90646
90647 ----------------------------------------------------------------------------------
90648 -- 4219869 Business Flow
90649 -- Update journal entry status -- Need to generate this within IF <condition>
90650 ----------------------------------------------------------------------------------
90651 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90652 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
90653 ,p_balance_type_code => l_balance_type_code
90654 );
90655
90656 -------------------------------------------------------------------------------------------
90657 -- 4262811 - Generate the Accrual Reversal lines
90658 -------------------------------------------------------------------------------------------
90659 BEGIN
90660 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
90661 (g_array_event(p_event_id).array_value_num('header_index'));
90662 IF l_acc_rev_flag IS NULL THEN
90663 l_acc_rev_flag := 'N';
90664 END IF;
90665 EXCEPTION
90666 WHEN OTHERS THEN
90667 l_acc_rev_flag := 'N';
90668 END;
90669 --
90670 IF (l_acc_rev_flag = 'Y') THEN
90671
90672 -- 4645092 ------------------------------------------------------------------------------
90673 -- To allow MPA report to determine if it should generate report process
90674 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
90675 ------------------------------------------------------------------------------------------
90676
90677 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
90678 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
90679 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
90680 -- call ADRs
90681 -- Bug 4922099
90682 --
90683 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
90684 (NVL(l_actual_upg_option, 'N') = 'O') OR
90685 (NVL(l_enc_upg_option, 'N') = 'O')
90686 )
90687 THEN
90688 NULL;
90689 --
90690 --
90691
90692 l_ccid := AcctDerRule_4(
90693 p_application_id => p_application_id
90694 , p_ae_header_id => l_ae_header_id
90695 , p_source_4 => p_source_4
90696 , x_transaction_coa_id => l_adr_transaction_coa_id
90697 , x_accounting_coa_id => l_adr_accounting_coa_id
90698 , x_value_type_code => l_adr_value_type_code
90699 , p_side => 'NA'
90700 );
90701
90702 xla_ae_lines_pkg.set_ccid(
90703 p_code_combination_id => l_ccid
90704 , p_value_type_code => l_adr_value_type_code
90705 , p_transaction_coa_id => l_adr_transaction_coa_id
90706 , p_accounting_coa_id => l_adr_accounting_coa_id
90707 , p_adr_code => 'CST_DEFAULT'
90708 , p_adr_type_code => 'S'
90709 , p_component_type => l_component_type
90710 , p_component_code => l_component_code
90711 , p_component_type_code => l_component_type_code
90712 , p_component_appl_id => l_component_appl_id
90713 , p_amb_context_code => l_amb_context_code
90714 , p_side => 'NA'
90715 );
90716
90717
90718 --
90719 --
90720 END IF;
90721
90722 --
90723 -- Update the line information that should be overwritten
90724 --
90725 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
90726 p_header_num => 1);
90727 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
90728
90729 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
90730
90731 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
90732 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
90733 END IF;
90734
90735 --
90736 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
90737 --
90738 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
90739 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
90740 ELSE
90741 ---------------------------------------------------------------------------------------------------
90742 -- 4262811a Switch Sign
90743 ---------------------------------------------------------------------------------------------------
90744 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
90745 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90746 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90747 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
90748 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90749 -- 5132302
90750 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
90751 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
90752
90753 END IF;
90754
90755 -- 4955764
90756 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
90757 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
90758
90759
90760 XLA_AE_LINES_PKG.ValidateCurrentLine;
90761 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
90762
90763 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
90764 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
90765 ,p_balance_type_code => l_balance_type_code);
90766
90767 END IF;
90768
90769 -----------------------------------------------------------------------------------------
90770 -- 4262811 Multiperiod Accounting
90771 -----------------------------------------------------------------------------------------
90772 -- No MPA option is assigned.
90773
90774
90775 END IF;
90776 END IF;
90777 --
90778
90779 --
90780 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90781 trace
90782 (p_msg => 'END of AcctLineType_165'
90783 ,p_level => C_LEVEL_PROCEDURE
90784 ,p_module => l_log_module);
90785 END IF;
90786 --
90787 EXCEPTION
90788 WHEN xla_exceptions_pkg.application_exception THEN
90789 RAISE;
90790 WHEN OTHERS THEN
90791 xla_exceptions_pkg.raise_message
90792 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_165');
90793 END AcctLineType_165;
90794 --
90795
90796 ---------------------------------------
90797 --
90798 -- PRIVATE FUNCTION
90799 -- AcctLineType_166
90800 --
90801 ---------------------------------------
90802 PROCEDURE AcctLineType_166 (
90803 p_application_id IN NUMBER
90804 ,p_event_id IN NUMBER
90805 ,p_calculate_acctd_flag IN VARCHAR2
90806 ,p_calculate_g_l_flag IN VARCHAR2
90807 ,p_actual_flag IN OUT VARCHAR2
90808 ,p_balance_type_code OUT VARCHAR2
90809 ,p_gain_or_loss_ref OUT VARCHAR2
90810
90811 --Cost Management Default Account
90812 , p_source_4 IN NUMBER
90813 --Applied to Application ID
90814 , p_source_6 IN NUMBER
90815 --Applied to Distribution Link Type
90816 , p_source_7 IN VARCHAR2
90817 --Applied to Entity Code
90818 , p_source_8 IN VARCHAR2
90819 --DISTRIBUTION_IDENTIFIER
90820 , p_source_11 IN NUMBER
90821 --Distribution Type
90822 , p_source_12 IN VARCHAR2
90823 , p_source_12_meaning IN VARCHAR2
90824 --Encumbrance Reversal Amount Entered
90825 , p_source_14 IN NUMBER
90826 --Entered Currency Code
90827 , p_source_15 IN VARCHAR2
90828 --Transaction Encumbrance Reversal Amount
90829 , p_source_16 IN NUMBER
90830 --Entered Amount
90831 , p_source_18 IN NUMBER
90832 --Currency Conversion Date
90833 , p_source_19 IN DATE
90834 --Currency Conversion Rate
90835 , p_source_20 IN NUMBER
90836 --Currency Conversion Type
90837 , p_source_21 IN VARCHAR2
90838 --Accounted Amount
90839 , p_source_22 IN NUMBER
90840 --Accounting Line Type
90841 , p_source_24 IN NUMBER
90842 --Costing Encumbrance Upgrade Option
90843 , p_source_27 IN VARCHAR2
90844 --TXN_PO_DISTRIBUTION_ID
90845 , p_source_28 IN NUMBER
90846 --TXN_PO_HEADER_ID
90847 , p_source_29 IN NUMBER
90848 --Requisition Budget Account
90849 , p_source_30 IN NUMBER
90850 --Requisition Encumbrance Type Identifier
90851 , p_source_31 IN NUMBER
90852 )
90853 IS
90854
90855 l_component_type VARCHAR2(80);
90856 l_component_code VARCHAR2(30);
90857 l_component_type_code VARCHAR2(1);
90858 l_component_appl_id INTEGER;
90859 l_amb_context_code VARCHAR2(30);
90860 l_entity_code VARCHAR2(30);
90861 l_event_class_code VARCHAR2(30);
90862 l_ae_header_id NUMBER;
90863 l_event_type_code VARCHAR2(30);
90864 l_line_definition_code VARCHAR2(30);
90865 l_line_definition_owner_code VARCHAR2(1);
90866 --
90867 -- adr variables
90868 l_segment VARCHAR2(30);
90869 l_ccid NUMBER;
90870 l_adr_transaction_coa_id NUMBER;
90871 l_adr_accounting_coa_id NUMBER;
90872 l_adr_flexfield_segment_code VARCHAR2(30);
90873 l_adr_flex_value_set_id NUMBER;
90874 l_adr_value_type_code VARCHAR2(30);
90875 l_adr_value_combination_id NUMBER;
90876 l_adr_value_segment_code VARCHAR2(30);
90877
90878 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
90879 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
90880 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
90881 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
90882
90883 -- 4262811 Variables ------------------------------------------------------------------------------------------
90884 l_entered_amt_idx NUMBER;
90885 l_accted_amt_idx NUMBER;
90886 l_acc_rev_flag VARCHAR2(1);
90887 l_accrual_line_num NUMBER;
90888 l_tmp_amt NUMBER;
90889 l_acc_rev_natural_side_code VARCHAR2(1);
90890
90891 l_num_entries NUMBER;
90892 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
90893 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
90894 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
90895 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
90896 l_recog_line_1 NUMBER;
90897 l_recog_line_2 NUMBER;
90898
90899 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
90900 l_bflow_applied_to_amt NUMBER; -- 5132302
90901 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
90902
90903 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
90904
90905 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
90906 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
90907
90908 ---------------------------------------------------------------------------------------------------------------
90909
90910
90911 --
90912 -- bulk performance
90913 --
90914 l_balance_type_code VARCHAR2(1);
90915 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
90916 l_log_module VARCHAR2(240);
90917
90918 --
90919 -- Upgrade strategy
90920 --
90921 l_actual_upg_option VARCHAR2(1);
90922 l_enc_upg_option VARCHAR2(1);
90923
90924 --
90925 BEGIN
90926 --
90927 IF g_log_enabled THEN
90928 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_166';
90929 END IF;
90930 --
90931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90932
90933 trace
90934 (p_msg => 'BEGIN of AcctLineType_166'
90935 ,p_level => C_LEVEL_PROCEDURE
90936 ,p_module => l_log_module);
90937
90938 END IF;
90939 --
90940 l_component_type := 'AMB_JLT';
90941 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
90942 l_component_type_code := 'S';
90943 l_component_appl_id := 707;
90944 l_amb_context_code := 'DEFAULT';
90945 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
90946 l_event_class_code := 'DIR_INTERORG_RCPT';
90947 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
90948 l_line_definition_owner_code := 'S';
90949 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
90950 --
90951 l_balance_type_code := 'A';
90952 l_segment := NULL;
90953 l_ccid := NULL;
90954 l_adr_transaction_coa_id := NULL;
90955 l_adr_accounting_coa_id := NULL;
90956 l_adr_flexfield_segment_code := NULL;
90957 l_adr_flex_value_set_id := NULL;
90958 l_adr_value_type_code := NULL;
90959 l_adr_value_combination_id := NULL;
90960 l_adr_value_segment_code := NULL;
90961
90962 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
90963 l_bflow_class_code := ''; -- 4219869 Business Flow
90964 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
90965 l_budgetary_control_flag := 'N';
90966
90967 l_bflow_applied_to_amt_idx := NULL; -- 5132302
90968 l_bflow_applied_to_amt := NULL; -- 5132302
90969 l_entered_amt_idx := NULL; -- 4262811
90970 l_accted_amt_idx := NULL; -- 4262811
90971 l_acc_rev_flag := NULL; -- 4262811
90972 l_accrual_line_num := NULL; -- 4262811
90973 l_tmp_amt := NULL; -- 4262811
90974 --
90975
90976 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
90977 l_balance_type_code <> 'B' THEN
90978 IF NVL(p_source_24,9E125) = 3
90979 THEN
90980
90981 --
90982 XLA_AE_LINES_PKG.SetNewLine;
90983
90984 p_balance_type_code := l_balance_type_code;
90985 -- set the flag so later we will know whether the gain loss line needs to be created
90986
90987 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
90988 p_actual_flag :='A';
90989 END IF;
90990
90991 --
90992 -- bulk performance
90993 --
90994 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
90995 p_header_num => 0); -- 4262811
90996 --
90997 -- set accounting line options
90998 --
90999 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91000 p_natural_side_code => 'D'
91001 , p_gain_or_loss_flag => 'N'
91002 , p_gl_transfer_mode_code => 'S'
91003 , p_acct_entry_type_code => 'A'
91004 , p_switch_side_flag => 'Y'
91005 , p_merge_duplicate_code => 'N'
91006 );
91007 --
91008 l_acc_rev_natural_side_code := 'C'; -- 4262811
91009 --
91010 --
91011 -- set accounting line type info
91012 --
91013 xla_ae_lines_pkg.SetAcctLineType
91014 (p_component_type => l_component_type
91015 ,p_event_type_code => l_event_type_code
91016 ,p_line_definition_owner_code => l_line_definition_owner_code
91017 ,p_line_definition_code => l_line_definition_code
91018 ,p_accounting_line_code => l_component_code
91019 ,p_accounting_line_type_code => l_component_type_code
91020 ,p_accounting_line_appl_id => l_component_appl_id
91021 ,p_amb_context_code => l_amb_context_code
91022 ,p_entity_code => l_entity_code
91023 ,p_event_class_code => l_event_class_code);
91024 --
91025 -- set accounting class
91026 --
91027 xla_ae_lines_pkg.SetAcctClass(
91028 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
91029 , p_ae_header_id => l_ae_header_id
91030 );
91031
91032 --
91033 -- set rounding class
91034 --
91035 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91036 'MATERIAL_OVERHEAD_ABSORPTION';
91037
91038 --
91039 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91040 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91041 --
91042 -- bulk performance
91043 --
91044 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91045
91046 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91047 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91048
91049 -- 4955764
91050 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91051 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91052
91053 -- 4458381 Public Sector Enh
91054
91055 --
91056 -- set accounting attributes for the line type
91057 --
91058 l_entered_amt_idx := 17;
91059 l_accted_amt_idx := 22;
91060 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91061 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
91062 l_rec_acct_attrs.array_num_value(1) := p_source_6;
91063 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
91064 l_rec_acct_attrs.array_char_value(2) := p_source_7;
91065 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
91066 l_rec_acct_attrs.array_char_value(3) := p_source_8;
91067 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
91068 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
91069 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
91070 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
91071 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
91072 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
91073 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
91074 l_rec_acct_attrs.array_char_value(7) := p_source_12;
91075 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
91076 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
91077 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
91078 l_rec_acct_attrs.array_num_value(9) := p_source_14;
91079 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
91080 l_rec_acct_attrs.array_char_value(10) := p_source_15;
91081 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
91082 l_rec_acct_attrs.array_num_value(11) := p_source_16;
91083 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
91084 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
91085 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
91086 l_rec_acct_attrs.array_num_value(13) := p_source_14;
91087 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
91088 l_rec_acct_attrs.array_char_value(14) := p_source_15;
91089 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
91090 l_rec_acct_attrs.array_num_value(15) := p_source_16;
91091 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
91092 l_rec_acct_attrs.array_char_value(16) := p_source_27;
91093 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
91094 l_rec_acct_attrs.array_num_value(17) := p_source_18;
91095 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
91096 l_rec_acct_attrs.array_char_value(18) := p_source_15;
91097 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
91098 l_rec_acct_attrs.array_date_value(19) := p_source_19;
91099 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
91100 l_rec_acct_attrs.array_num_value(20) := p_source_20;
91101 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
91102 l_rec_acct_attrs.array_char_value(21) := p_source_21;
91103 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
91104 l_rec_acct_attrs.array_num_value(22) := p_source_22;
91105 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
91106 l_rec_acct_attrs.array_num_value(23) := p_source_31;
91107 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
91108 l_rec_acct_attrs.array_num_value(24) := p_source_31;
91109
91110 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91111 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91112
91113 ---------------------------------------------------------------------------------------------------------------
91114 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91115 ---------------------------------------------------------------------------------------------------------------
91116 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91117
91118 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91119 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91120
91121 IF xla_accounting_cache_pkg.GetValueChar
91122 (p_source_code => 'LEDGER_CATEGORY_CODE'
91123 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91124 AND l_bflow_method_code = 'PRIOR_ENTRY'
91125 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91126 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91127 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91128 )
91129 THEN
91130 xla_ae_lines_pkg.BflowUpgEntry
91131 (p_business_method_code => l_bflow_method_code
91132 ,p_business_class_code => l_bflow_class_code
91133 ,p_balance_type => l_balance_type_code);
91134 ELSE
91135 NULL;
91136 -- No business flow processing for business flow method of NONE.
91137 END IF;
91138
91139 --
91140 -- call analytical criteria
91141 --
91142
91143 --
91144 -- call description
91145 --
91146 -- No description or it is inherited.
91147 --
91148 -- call ADRs
91149 -- Bug 4922099
91150 --
91151 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91152 (NVL(l_actual_upg_option, 'N') = 'O') OR
91153 (NVL(l_enc_upg_option, 'N') = 'O')
91154 )
91155 THEN
91156 NULL;
91157 --
91158 --
91159
91160 l_ccid := AcctDerRule_4(
91161 p_application_id => p_application_id
91162 , p_ae_header_id => l_ae_header_id
91163 , p_source_4 => p_source_4
91164 , x_transaction_coa_id => l_adr_transaction_coa_id
91165 , x_accounting_coa_id => l_adr_accounting_coa_id
91166 , x_value_type_code => l_adr_value_type_code
91167 , p_side => 'NA'
91168 );
91169
91170 xla_ae_lines_pkg.set_ccid(
91171 p_code_combination_id => l_ccid
91172 , p_value_type_code => l_adr_value_type_code
91173 , p_transaction_coa_id => l_adr_transaction_coa_id
91174 , p_accounting_coa_id => l_adr_accounting_coa_id
91175 , p_adr_code => 'CST_DEFAULT'
91176 , p_adr_type_code => 'S'
91177 , p_component_type => l_component_type
91178 , p_component_code => l_component_code
91179 , p_component_type_code => l_component_type_code
91180 , p_component_appl_id => l_component_appl_id
91181 , p_amb_context_code => l_amb_context_code
91182 , p_side => 'NA'
91183 );
91184
91185
91186 --
91187 --
91188 END IF;
91189 --
91190 -- Bug 4922099
91191 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91192 (NVL(l_enc_upg_option, 'N') = 'O')
91193 ) AND
91194 (l_bflow_method_code = 'PRIOR_ENTRY')
91195 )
91196 THEN
91197 IF
91198 --
91199 1 = 2
91200 --
91201 THEN
91202 xla_accounting_err_pkg.build_message
91203 (p_appli_s_name => 'XLA'
91204 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91205 ,p_token_1 => 'LINE_NUMBER'
91206 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
91207 ,p_token_2 => 'LINE_TYPE_NAME'
91208 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
91209 l_component_type
91210 ,l_component_code
91211 ,l_component_type_code
91212 ,l_component_appl_id
91213 ,l_amb_context_code
91214 ,l_entity_code
91215 ,l_event_class_code
91216 )
91217 ,p_token_3 => 'OWNER'
91218 ,p_value_3 => xla_lookups_pkg.get_meaning(
91219 p_lookup_type => 'XLA_OWNER_TYPE'
91220 ,p_lookup_code => l_component_type_code
91221 )
91222 ,p_token_4 => 'PRODUCT_NAME'
91223 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91224 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91225 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91226 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91227 ,p_ae_header_id => NULL
91228 );
91229
91230 IF (C_LEVEL_ERROR>= g_log_level) THEN
91231 trace
91232 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91233 ,p_level => C_LEVEL_ERROR
91234 ,p_module => l_log_module);
91235 END IF;
91236 END IF;
91237 END IF;
91238 --
91239 --
91240 ------------------------------------------------------------------------------------------------
91241 -- 4219869 Business Flow
91242 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91243 -- Prior Entry. Currently, the following code is always generated.
91244 ------------------------------------------------------------------------------------------------
91245 XLA_AE_LINES_PKG.ValidateCurrentLine;
91246
91247 ------------------------------------------------------------------------------------
91248 -- 4219869 Business Flow
91249 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91250 ------------------------------------------------------------------------------------
91251 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91252
91253 ----------------------------------------------------------------------------------
91254 -- 4219869 Business Flow
91255 -- Update journal entry status -- Need to generate this within IF <condition>
91256 ----------------------------------------------------------------------------------
91257 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91258 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91259 ,p_balance_type_code => l_balance_type_code
91260 );
91261
91262 -------------------------------------------------------------------------------------------
91263 -- 4262811 - Generate the Accrual Reversal lines
91264 -------------------------------------------------------------------------------------------
91265 BEGIN
91266 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91267 (g_array_event(p_event_id).array_value_num('header_index'));
91268 IF l_acc_rev_flag IS NULL THEN
91269 l_acc_rev_flag := 'N';
91270 END IF;
91271 EXCEPTION
91272 WHEN OTHERS THEN
91273 l_acc_rev_flag := 'N';
91274 END;
91275 --
91276 IF (l_acc_rev_flag = 'Y') THEN
91277
91278 -- 4645092 ------------------------------------------------------------------------------
91279 -- To allow MPA report to determine if it should generate report process
91280 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91281 ------------------------------------------------------------------------------------------
91282
91283 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91284 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91285 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
91286 -- call ADRs
91287 -- Bug 4922099
91288 --
91289 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91290 (NVL(l_actual_upg_option, 'N') = 'O') OR
91291 (NVL(l_enc_upg_option, 'N') = 'O')
91292 )
91293 THEN
91294 NULL;
91295 --
91296 --
91297
91298 l_ccid := AcctDerRule_4(
91299 p_application_id => p_application_id
91300 , p_ae_header_id => l_ae_header_id
91301 , p_source_4 => p_source_4
91302 , x_transaction_coa_id => l_adr_transaction_coa_id
91303 , x_accounting_coa_id => l_adr_accounting_coa_id
91304 , x_value_type_code => l_adr_value_type_code
91305 , p_side => 'NA'
91306 );
91307
91308 xla_ae_lines_pkg.set_ccid(
91309 p_code_combination_id => l_ccid
91310 , p_value_type_code => l_adr_value_type_code
91311 , p_transaction_coa_id => l_adr_transaction_coa_id
91312 , p_accounting_coa_id => l_adr_accounting_coa_id
91313 , p_adr_code => 'CST_DEFAULT'
91314 , p_adr_type_code => 'S'
91315 , p_component_type => l_component_type
91316 , p_component_code => l_component_code
91317 , p_component_type_code => l_component_type_code
91318 , p_component_appl_id => l_component_appl_id
91319 , p_amb_context_code => l_amb_context_code
91320 , p_side => 'NA'
91321 );
91322
91323
91324 --
91325 --
91326 END IF;
91327
91328 --
91329 -- Update the line information that should be overwritten
91330 --
91331 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91332 p_header_num => 1);
91333 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
91334
91335 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91336
91337 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
91338 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91339 END IF;
91340
91341 --
91342 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91343 --
91344 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91345 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
91346 ELSE
91347 ---------------------------------------------------------------------------------------------------
91348 -- 4262811a Switch Sign
91349 ---------------------------------------------------------------------------------------------------
91350 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
91351 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91352 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91353 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91354 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91355 -- 5132302
91356 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91357 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91358
91359 END IF;
91360
91361 -- 4955764
91362 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91363 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91364
91365
91366 XLA_AE_LINES_PKG.ValidateCurrentLine;
91367 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91368
91369 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91370 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91371 ,p_balance_type_code => l_balance_type_code);
91372
91373 END IF;
91374
91375 -----------------------------------------------------------------------------------------
91376 -- 4262811 Multiperiod Accounting
91377 -----------------------------------------------------------------------------------------
91378 -- No MPA option is assigned.
91379
91380
91381 END IF;
91382 END IF;
91383 --
91384
91385 --
91386 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91387 trace
91388 (p_msg => 'END of AcctLineType_166'
91389 ,p_level => C_LEVEL_PROCEDURE
91390 ,p_module => l_log_module);
91391 END IF;
91392 --
91393 EXCEPTION
91394 WHEN xla_exceptions_pkg.application_exception THEN
91395 RAISE;
91396 WHEN OTHERS THEN
91397 xla_exceptions_pkg.raise_message
91398 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_166');
91399 END AcctLineType_166;
91400 --
91401
91402 ---------------------------------------
91403 --
91404 -- PRIVATE FUNCTION
91405 -- AcctLineType_167
91406 --
91407 ---------------------------------------
91408 PROCEDURE AcctLineType_167 (
91409 p_application_id IN NUMBER
91410 ,p_event_id IN NUMBER
91411 ,p_calculate_acctd_flag IN VARCHAR2
91412 ,p_calculate_g_l_flag IN VARCHAR2
91413 ,p_actual_flag IN OUT VARCHAR2
91414 ,p_balance_type_code OUT VARCHAR2
91415 ,p_gain_or_loss_ref OUT VARCHAR2
91416
91417 --Cost Management Default Account
91418 , p_source_4 IN NUMBER
91419 --DISTRIBUTION_IDENTIFIER
91420 , p_source_11 IN NUMBER
91421 --Distribution Type
91422 , p_source_12 IN VARCHAR2
91423 , p_source_12_meaning IN VARCHAR2
91424 --Entered Currency Code
91425 , p_source_15 IN VARCHAR2
91426 --Entered Amount
91427 , p_source_18 IN NUMBER
91428 --Currency Conversion Date
91429 , p_source_19 IN DATE
91430 --Currency Conversion Rate
91431 , p_source_20 IN NUMBER
91432 --Currency Conversion Type
91433 , p_source_21 IN VARCHAR2
91434 --Accounted Amount
91435 , p_source_22 IN NUMBER
91436 --Accounting Line Type
91437 , p_source_24 IN NUMBER
91438 )
91439 IS
91440
91441 l_component_type VARCHAR2(80);
91442 l_component_code VARCHAR2(30);
91443 l_component_type_code VARCHAR2(1);
91444 l_component_appl_id INTEGER;
91445 l_amb_context_code VARCHAR2(30);
91446 l_entity_code VARCHAR2(30);
91447 l_event_class_code VARCHAR2(30);
91448 l_ae_header_id NUMBER;
91449 l_event_type_code VARCHAR2(30);
91450 l_line_definition_code VARCHAR2(30);
91451 l_line_definition_owner_code VARCHAR2(1);
91452 --
91453 -- adr variables
91454 l_segment VARCHAR2(30);
91455 l_ccid NUMBER;
91456 l_adr_transaction_coa_id NUMBER;
91457 l_adr_accounting_coa_id NUMBER;
91458 l_adr_flexfield_segment_code VARCHAR2(30);
91459 l_adr_flex_value_set_id NUMBER;
91460 l_adr_value_type_code VARCHAR2(30);
91461 l_adr_value_combination_id NUMBER;
91462 l_adr_value_segment_code VARCHAR2(30);
91463
91464 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
91465 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
91466 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
91467 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
91468
91469 -- 4262811 Variables ------------------------------------------------------------------------------------------
91470 l_entered_amt_idx NUMBER;
91471 l_accted_amt_idx NUMBER;
91472 l_acc_rev_flag VARCHAR2(1);
91473 l_accrual_line_num NUMBER;
91474 l_tmp_amt NUMBER;
91475 l_acc_rev_natural_side_code VARCHAR2(1);
91476
91477 l_num_entries NUMBER;
91478 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
91479 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
91480 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
91481 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
91482 l_recog_line_1 NUMBER;
91483 l_recog_line_2 NUMBER;
91484
91485 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
91486 l_bflow_applied_to_amt NUMBER; -- 5132302
91487 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
91488
91489 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
91490
91491 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
91492 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
91493
91494 ---------------------------------------------------------------------------------------------------------------
91495
91496
91497 --
91498 -- bulk performance
91499 --
91500 l_balance_type_code VARCHAR2(1);
91501 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
91502 l_log_module VARCHAR2(240);
91503
91504 --
91505 -- Upgrade strategy
91506 --
91507 l_actual_upg_option VARCHAR2(1);
91508 l_enc_upg_option VARCHAR2(1);
91509
91510 --
91511 BEGIN
91512 --
91513 IF g_log_enabled THEN
91514 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_167';
91515 END IF;
91516 --
91517 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91518
91519 trace
91520 (p_msg => 'BEGIN of AcctLineType_167'
91521 ,p_level => C_LEVEL_PROCEDURE
91522 ,p_module => l_log_module);
91523
91524 END IF;
91525 --
91526 l_component_type := 'AMB_JLT';
91527 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
91528 l_component_type_code := 'S';
91529 l_component_appl_id := 707;
91530 l_amb_context_code := 'DEFAULT';
91531 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
91532 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
91533 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
91534 l_line_definition_owner_code := 'S';
91535 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
91536 --
91537 l_balance_type_code := 'A';
91538 l_segment := NULL;
91539 l_ccid := NULL;
91540 l_adr_transaction_coa_id := NULL;
91541 l_adr_accounting_coa_id := NULL;
91542 l_adr_flexfield_segment_code := NULL;
91543 l_adr_flex_value_set_id := NULL;
91544 l_adr_value_type_code := NULL;
91545 l_adr_value_combination_id := NULL;
91546 l_adr_value_segment_code := NULL;
91547
91548 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
91549 l_bflow_class_code := ''; -- 4219869 Business Flow
91550 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
91551 l_budgetary_control_flag := 'N';
91552
91553 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91554 l_bflow_applied_to_amt := NULL; -- 5132302
91555 l_entered_amt_idx := NULL; -- 4262811
91556 l_accted_amt_idx := NULL; -- 4262811
91557 l_acc_rev_flag := NULL; -- 4262811
91558 l_accrual_line_num := NULL; -- 4262811
91559 l_tmp_amt := NULL; -- 4262811
91560 --
91561
91562 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
91563 l_balance_type_code <> 'B' THEN
91564 IF NVL(p_source_24,9E125) = 3
91565 THEN
91566
91567 --
91568 XLA_AE_LINES_PKG.SetNewLine;
91569
91570 p_balance_type_code := l_balance_type_code;
91571 -- set the flag so later we will know whether the gain loss line needs to be created
91572
91573 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
91574 p_actual_flag :='A';
91575 END IF;
91576
91577 --
91578 -- bulk performance
91579 --
91580 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
91581 p_header_num => 0); -- 4262811
91582 --
91583 -- set accounting line options
91584 --
91585 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
91586 p_natural_side_code => 'D'
91587 , p_gain_or_loss_flag => 'N'
91588 , p_gl_transfer_mode_code => 'S'
91589 , p_acct_entry_type_code => 'A'
91590 , p_switch_side_flag => 'Y'
91591 , p_merge_duplicate_code => 'N'
91592 );
91593 --
91594 l_acc_rev_natural_side_code := 'C'; -- 4262811
91595 --
91596 --
91597 -- set accounting line type info
91598 --
91599 xla_ae_lines_pkg.SetAcctLineType
91600 (p_component_type => l_component_type
91601 ,p_event_type_code => l_event_type_code
91602 ,p_line_definition_owner_code => l_line_definition_owner_code
91603 ,p_line_definition_code => l_line_definition_code
91604 ,p_accounting_line_code => l_component_code
91605 ,p_accounting_line_type_code => l_component_type_code
91606 ,p_accounting_line_appl_id => l_component_appl_id
91607 ,p_amb_context_code => l_amb_context_code
91608 ,p_entity_code => l_entity_code
91609 ,p_event_class_code => l_event_class_code);
91610 --
91611 -- set accounting class
91612 --
91613 xla_ae_lines_pkg.SetAcctClass(
91614 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
91615 , p_ae_header_id => l_ae_header_id
91616 );
91617
91618 --
91619 -- set rounding class
91620 --
91621 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
91622 'MATERIAL_OVERHEAD_ABSORPTION';
91623
91624 --
91625 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
91626 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
91627 --
91628 -- bulk performance
91629 --
91630 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
91631
91632 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
91633 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
91634
91635 -- 4955764
91636 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91637 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
91638
91639 -- 4458381 Public Sector Enh
91640
91641 --
91642 -- set accounting attributes for the line type
91643 --
91644 l_entered_amt_idx := 3;
91645 l_accted_amt_idx := 8;
91646 l_bflow_applied_to_amt_idx := NULL; -- 5132302
91647 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
91648 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
91649 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
91650 l_rec_acct_attrs.array_char_value(2) := p_source_12;
91651 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
91652 l_rec_acct_attrs.array_num_value(3) := p_source_18;
91653 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
91654 l_rec_acct_attrs.array_char_value(4) := p_source_15;
91655 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
91656 l_rec_acct_attrs.array_date_value(5) := p_source_19;
91657 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
91658 l_rec_acct_attrs.array_num_value(6) := p_source_20;
91659 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
91660 l_rec_acct_attrs.array_char_value(7) := p_source_21;
91661 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
91662 l_rec_acct_attrs.array_num_value(8) := p_source_22;
91663
91664 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
91665 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
91666
91667 ---------------------------------------------------------------------------------------------------------------
91668 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
91669 ---------------------------------------------------------------------------------------------------------------
91670 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
91671
91672 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91673 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
91674
91675 IF xla_accounting_cache_pkg.GetValueChar
91676 (p_source_code => 'LEDGER_CATEGORY_CODE'
91677 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
91678 AND l_bflow_method_code = 'PRIOR_ENTRY'
91679 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
91680 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
91681 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
91682 )
91683 THEN
91684 xla_ae_lines_pkg.BflowUpgEntry
91685 (p_business_method_code => l_bflow_method_code
91686 ,p_business_class_code => l_bflow_class_code
91687 ,p_balance_type => l_balance_type_code);
91688 ELSE
91689 NULL;
91690 -- No business flow processing for business flow method of NONE.
91691 END IF;
91692
91693 --
91694 -- call analytical criteria
91695 --
91696
91697 --
91698 -- call description
91699 --
91700 -- No description or it is inherited.
91701 --
91702 -- call ADRs
91703 -- Bug 4922099
91704 --
91705 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91706 (NVL(l_actual_upg_option, 'N') = 'O') OR
91707 (NVL(l_enc_upg_option, 'N') = 'O')
91708 )
91709 THEN
91710 NULL;
91711 --
91712 --
91713
91714 l_ccid := AcctDerRule_4(
91715 p_application_id => p_application_id
91716 , p_ae_header_id => l_ae_header_id
91717 , p_source_4 => p_source_4
91718 , x_transaction_coa_id => l_adr_transaction_coa_id
91719 , x_accounting_coa_id => l_adr_accounting_coa_id
91720 , x_value_type_code => l_adr_value_type_code
91721 , p_side => 'NA'
91722 );
91723
91724 xla_ae_lines_pkg.set_ccid(
91725 p_code_combination_id => l_ccid
91726 , p_value_type_code => l_adr_value_type_code
91727 , p_transaction_coa_id => l_adr_transaction_coa_id
91728 , p_accounting_coa_id => l_adr_accounting_coa_id
91729 , p_adr_code => 'CST_DEFAULT'
91730 , p_adr_type_code => 'S'
91731 , p_component_type => l_component_type
91732 , p_component_code => l_component_code
91733 , p_component_type_code => l_component_type_code
91734 , p_component_appl_id => l_component_appl_id
91735 , p_amb_context_code => l_amb_context_code
91736 , p_side => 'NA'
91737 );
91738
91739
91740 --
91741 --
91742 END IF;
91743 --
91744 -- Bug 4922099
91745 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
91746 (NVL(l_enc_upg_option, 'N') = 'O')
91747 ) AND
91748 (l_bflow_method_code = 'PRIOR_ENTRY')
91749 )
91750 THEN
91751 IF
91752 --
91753 1 = 2
91754 --
91755 THEN
91756 xla_accounting_err_pkg.build_message
91757 (p_appli_s_name => 'XLA'
91758 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91759 ,p_token_1 => 'LINE_NUMBER'
91760 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
91761 ,p_token_2 => 'LINE_TYPE_NAME'
91762 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
91763 l_component_type
91764 ,l_component_code
91765 ,l_component_type_code
91766 ,l_component_appl_id
91767 ,l_amb_context_code
91768 ,l_entity_code
91769 ,l_event_class_code
91770 )
91771 ,p_token_3 => 'OWNER'
91772 ,p_value_3 => xla_lookups_pkg.get_meaning(
91773 p_lookup_type => 'XLA_OWNER_TYPE'
91774 ,p_lookup_code => l_component_type_code
91775 )
91776 ,p_token_4 => 'PRODUCT_NAME'
91777 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
91778 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
91779 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
91780 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
91781 ,p_ae_header_id => NULL
91782 );
91783
91784 IF (C_LEVEL_ERROR>= g_log_level) THEN
91785 trace
91786 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
91787 ,p_level => C_LEVEL_ERROR
91788 ,p_module => l_log_module);
91789 END IF;
91790 END IF;
91791 END IF;
91792 --
91793 --
91794 ------------------------------------------------------------------------------------------------
91795 -- 4219869 Business Flow
91796 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
91797 -- Prior Entry. Currently, the following code is always generated.
91798 ------------------------------------------------------------------------------------------------
91799 XLA_AE_LINES_PKG.ValidateCurrentLine;
91800
91801 ------------------------------------------------------------------------------------
91802 -- 4219869 Business Flow
91803 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
91804 ------------------------------------------------------------------------------------
91805 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91806
91807 ----------------------------------------------------------------------------------
91808 -- 4219869 Business Flow
91809 -- Update journal entry status -- Need to generate this within IF <condition>
91810 ----------------------------------------------------------------------------------
91811 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91812 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
91813 ,p_balance_type_code => l_balance_type_code
91814 );
91815
91816 -------------------------------------------------------------------------------------------
91817 -- 4262811 - Generate the Accrual Reversal lines
91818 -------------------------------------------------------------------------------------------
91819 BEGIN
91820 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
91821 (g_array_event(p_event_id).array_value_num('header_index'));
91822 IF l_acc_rev_flag IS NULL THEN
91823 l_acc_rev_flag := 'N';
91824 END IF;
91825 EXCEPTION
91826 WHEN OTHERS THEN
91827 l_acc_rev_flag := 'N';
91828 END;
91829 --
91830 IF (l_acc_rev_flag = 'Y') THEN
91831
91832 -- 4645092 ------------------------------------------------------------------------------
91833 -- To allow MPA report to determine if it should generate report process
91834 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
91835 ------------------------------------------------------------------------------------------
91836
91837 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
91838 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
91839 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
91840 -- call ADRs
91841 -- Bug 4922099
91842 --
91843 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
91844 (NVL(l_actual_upg_option, 'N') = 'O') OR
91845 (NVL(l_enc_upg_option, 'N') = 'O')
91846 )
91847 THEN
91848 NULL;
91849 --
91850 --
91851
91852 l_ccid := AcctDerRule_4(
91853 p_application_id => p_application_id
91854 , p_ae_header_id => l_ae_header_id
91855 , p_source_4 => p_source_4
91856 , x_transaction_coa_id => l_adr_transaction_coa_id
91857 , x_accounting_coa_id => l_adr_accounting_coa_id
91858 , x_value_type_code => l_adr_value_type_code
91859 , p_side => 'NA'
91860 );
91861
91862 xla_ae_lines_pkg.set_ccid(
91863 p_code_combination_id => l_ccid
91864 , p_value_type_code => l_adr_value_type_code
91865 , p_transaction_coa_id => l_adr_transaction_coa_id
91866 , p_accounting_coa_id => l_adr_accounting_coa_id
91867 , p_adr_code => 'CST_DEFAULT'
91868 , p_adr_type_code => 'S'
91869 , p_component_type => l_component_type
91870 , p_component_code => l_component_code
91871 , p_component_type_code => l_component_type_code
91872 , p_component_appl_id => l_component_appl_id
91873 , p_amb_context_code => l_amb_context_code
91874 , p_side => 'NA'
91875 );
91876
91877
91878 --
91879 --
91880 END IF;
91881
91882 --
91883 -- Update the line information that should be overwritten
91884 --
91885 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
91886 p_header_num => 1);
91887 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
91888
91889 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
91890
91891 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
91892 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
91893 END IF;
91894
91895 --
91896 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
91897 --
91898 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
91899 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
91900 ELSE
91901 ---------------------------------------------------------------------------------------------------
91902 -- 4262811a Switch Sign
91903 ---------------------------------------------------------------------------------------------------
91904 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
91905 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91906 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91907 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
91908 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91909 -- 5132302
91910 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
91911 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
91912
91913 END IF;
91914
91915 -- 4955764
91916 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
91917 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
91918
91919
91920 XLA_AE_LINES_PKG.ValidateCurrentLine;
91921 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
91922
91923 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
91924 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
91925 ,p_balance_type_code => l_balance_type_code);
91926
91927 END IF;
91928
91929 -----------------------------------------------------------------------------------------
91930 -- 4262811 Multiperiod Accounting
91931 -----------------------------------------------------------------------------------------
91932 -- No MPA option is assigned.
91933
91934
91935 END IF;
91936 END IF;
91937 --
91938
91939 --
91940 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91941 trace
91942 (p_msg => 'END of AcctLineType_167'
91943 ,p_level => C_LEVEL_PROCEDURE
91944 ,p_module => l_log_module);
91945 END IF;
91946 --
91947 EXCEPTION
91948 WHEN xla_exceptions_pkg.application_exception THEN
91949 RAISE;
91950 WHEN OTHERS THEN
91951 xla_exceptions_pkg.raise_message
91952 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_167');
91953 END AcctLineType_167;
91954 --
91955
91956 ---------------------------------------
91957 --
91958 -- PRIVATE FUNCTION
91959 -- AcctLineType_168
91960 --
91961 ---------------------------------------
91962 PROCEDURE AcctLineType_168 (
91963 p_application_id IN NUMBER
91964 ,p_event_id IN NUMBER
91965 ,p_calculate_acctd_flag IN VARCHAR2
91966 ,p_calculate_g_l_flag IN VARCHAR2
91967 ,p_actual_flag IN OUT VARCHAR2
91968 ,p_balance_type_code OUT VARCHAR2
91969 ,p_gain_or_loss_ref OUT VARCHAR2
91970
91971 --Cost Management Default Account
91972 , p_source_4 IN NUMBER
91973 --DISTRIBUTION_IDENTIFIER
91974 , p_source_11 IN NUMBER
91975 --Distribution Type
91976 , p_source_12 IN VARCHAR2
91977 , p_source_12_meaning IN VARCHAR2
91978 --Entered Currency Code
91979 , p_source_15 IN VARCHAR2
91980 --Entered Amount
91981 , p_source_18 IN NUMBER
91982 --Currency Conversion Date
91983 , p_source_19 IN DATE
91984 --Currency Conversion Rate
91985 , p_source_20 IN NUMBER
91986 --Currency Conversion Type
91987 , p_source_21 IN VARCHAR2
91988 --Accounted Amount
91989 , p_source_22 IN NUMBER
91990 --Accounting Line Type
91991 , p_source_24 IN NUMBER
91992 )
91993 IS
91994
91995 l_component_type VARCHAR2(80);
91996 l_component_code VARCHAR2(30);
91997 l_component_type_code VARCHAR2(1);
91998 l_component_appl_id INTEGER;
91999 l_amb_context_code VARCHAR2(30);
92000 l_entity_code VARCHAR2(30);
92001 l_event_class_code VARCHAR2(30);
92002 l_ae_header_id NUMBER;
92003 l_event_type_code VARCHAR2(30);
92004 l_line_definition_code VARCHAR2(30);
92005 l_line_definition_owner_code VARCHAR2(1);
92006 --
92007 -- adr variables
92008 l_segment VARCHAR2(30);
92009 l_ccid NUMBER;
92010 l_adr_transaction_coa_id NUMBER;
92011 l_adr_accounting_coa_id NUMBER;
92012 l_adr_flexfield_segment_code VARCHAR2(30);
92013 l_adr_flex_value_set_id NUMBER;
92014 l_adr_value_type_code VARCHAR2(30);
92015 l_adr_value_combination_id NUMBER;
92016 l_adr_value_segment_code VARCHAR2(30);
92017
92018 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
92019 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
92020 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
92021 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
92022
92023 -- 4262811 Variables ------------------------------------------------------------------------------------------
92024 l_entered_amt_idx NUMBER;
92025 l_accted_amt_idx NUMBER;
92026 l_acc_rev_flag VARCHAR2(1);
92027 l_accrual_line_num NUMBER;
92028 l_tmp_amt NUMBER;
92029 l_acc_rev_natural_side_code VARCHAR2(1);
92030
92031 l_num_entries NUMBER;
92032 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
92033 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
92034 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
92035 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
92036 l_recog_line_1 NUMBER;
92037 l_recog_line_2 NUMBER;
92038
92039 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
92040 l_bflow_applied_to_amt NUMBER; -- 5132302
92041 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
92042
92043 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92044
92045 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
92046 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
92047
92048 ---------------------------------------------------------------------------------------------------------------
92049
92050
92051 --
92052 -- bulk performance
92053 --
92054 l_balance_type_code VARCHAR2(1);
92055 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
92056 l_log_module VARCHAR2(240);
92057
92058 --
92059 -- Upgrade strategy
92060 --
92061 l_actual_upg_option VARCHAR2(1);
92062 l_enc_upg_option VARCHAR2(1);
92063
92064 --
92065 BEGIN
92066 --
92067 IF g_log_enabled THEN
92068 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_168';
92069 END IF;
92070 --
92071 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92072
92073 trace
92074 (p_msg => 'BEGIN of AcctLineType_168'
92075 ,p_level => C_LEVEL_PROCEDURE
92076 ,p_module => l_log_module);
92077
92078 END IF;
92079 --
92080 l_component_type := 'AMB_JLT';
92081 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
92082 l_component_type_code := 'S';
92083 l_component_appl_id := 707;
92084 l_amb_context_code := 'DEFAULT';
92085 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
92086 l_event_class_code := 'USER_DEFINE';
92087 l_event_type_code := 'UDIR_INTERORG_RCPT';
92088 l_line_definition_owner_code := 'S';
92089 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
92090 --
92091 l_balance_type_code := 'A';
92092 l_segment := NULL;
92093 l_ccid := NULL;
92094 l_adr_transaction_coa_id := NULL;
92095 l_adr_accounting_coa_id := NULL;
92096 l_adr_flexfield_segment_code := NULL;
92097 l_adr_flex_value_set_id := NULL;
92098 l_adr_value_type_code := NULL;
92099 l_adr_value_combination_id := NULL;
92100 l_adr_value_segment_code := NULL;
92101
92102 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
92103 l_bflow_class_code := ''; -- 4219869 Business Flow
92104 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
92105 l_budgetary_control_flag := 'N';
92106
92107 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92108 l_bflow_applied_to_amt := NULL; -- 5132302
92109 l_entered_amt_idx := NULL; -- 4262811
92110 l_accted_amt_idx := NULL; -- 4262811
92111 l_acc_rev_flag := NULL; -- 4262811
92112 l_accrual_line_num := NULL; -- 4262811
92113 l_tmp_amt := NULL; -- 4262811
92114 --
92115
92116 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92117 l_balance_type_code <> 'B' THEN
92118 IF NVL(p_source_24,9E125) = 3
92119 THEN
92120
92121 --
92122 XLA_AE_LINES_PKG.SetNewLine;
92123
92124 p_balance_type_code := l_balance_type_code;
92125 -- set the flag so later we will know whether the gain loss line needs to be created
92126
92127 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92128 p_actual_flag :='A';
92129 END IF;
92130
92131 --
92132 -- bulk performance
92133 --
92134 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92135 p_header_num => 0); -- 4262811
92136 --
92137 -- set accounting line options
92138 --
92139 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92140 p_natural_side_code => 'D'
92141 , p_gain_or_loss_flag => 'N'
92142 , p_gl_transfer_mode_code => 'S'
92143 , p_acct_entry_type_code => 'A'
92144 , p_switch_side_flag => 'Y'
92145 , p_merge_duplicate_code => 'N'
92146 );
92147 --
92148 l_acc_rev_natural_side_code := 'C'; -- 4262811
92149 --
92150 --
92151 -- set accounting line type info
92152 --
92153 xla_ae_lines_pkg.SetAcctLineType
92154 (p_component_type => l_component_type
92155 ,p_event_type_code => l_event_type_code
92156 ,p_line_definition_owner_code => l_line_definition_owner_code
92157 ,p_line_definition_code => l_line_definition_code
92158 ,p_accounting_line_code => l_component_code
92159 ,p_accounting_line_type_code => l_component_type_code
92160 ,p_accounting_line_appl_id => l_component_appl_id
92161 ,p_amb_context_code => l_amb_context_code
92162 ,p_entity_code => l_entity_code
92163 ,p_event_class_code => l_event_class_code);
92164 --
92165 -- set accounting class
92166 --
92167 xla_ae_lines_pkg.SetAcctClass(
92168 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
92169 , p_ae_header_id => l_ae_header_id
92170 );
92171
92172 --
92173 -- set rounding class
92174 --
92175 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92176 'MATERIAL_OVERHEAD_ABSORPTION';
92177
92178 --
92179 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92180 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92181 --
92182 -- bulk performance
92183 --
92184 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92185
92186 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92187 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92188
92189 -- 4955764
92190 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92191 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92192
92193 -- 4458381 Public Sector Enh
92194
92195 --
92196 -- set accounting attributes for the line type
92197 --
92198 l_entered_amt_idx := 3;
92199 l_accted_amt_idx := 8;
92200 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92201 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92202 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
92203 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92204 l_rec_acct_attrs.array_char_value(2) := p_source_12;
92205 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92206 l_rec_acct_attrs.array_num_value(3) := p_source_18;
92207 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92208 l_rec_acct_attrs.array_char_value(4) := p_source_15;
92209 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92210 l_rec_acct_attrs.array_date_value(5) := p_source_19;
92211 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92212 l_rec_acct_attrs.array_num_value(6) := p_source_20;
92213 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92214 l_rec_acct_attrs.array_char_value(7) := p_source_21;
92215 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92216 l_rec_acct_attrs.array_num_value(8) := p_source_22;
92217
92218 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92219 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92220
92221 ---------------------------------------------------------------------------------------------------------------
92222 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92223 ---------------------------------------------------------------------------------------------------------------
92224 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92225
92226 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92227 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92228
92229 IF xla_accounting_cache_pkg.GetValueChar
92230 (p_source_code => 'LEDGER_CATEGORY_CODE'
92231 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92232 AND l_bflow_method_code = 'PRIOR_ENTRY'
92233 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92234 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92235 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92236 )
92237 THEN
92238 xla_ae_lines_pkg.BflowUpgEntry
92239 (p_business_method_code => l_bflow_method_code
92240 ,p_business_class_code => l_bflow_class_code
92241 ,p_balance_type => l_balance_type_code);
92242 ELSE
92243 NULL;
92244 -- No business flow processing for business flow method of NONE.
92245 END IF;
92246
92247 --
92248 -- call analytical criteria
92249 --
92250
92251 --
92252 -- call description
92253 --
92254 -- No description or it is inherited.
92255 --
92256 -- call ADRs
92257 -- Bug 4922099
92258 --
92259 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92260 (NVL(l_actual_upg_option, 'N') = 'O') OR
92261 (NVL(l_enc_upg_option, 'N') = 'O')
92262 )
92263 THEN
92264 NULL;
92265 --
92266 --
92267
92268 l_ccid := AcctDerRule_4(
92269 p_application_id => p_application_id
92270 , p_ae_header_id => l_ae_header_id
92271 , p_source_4 => p_source_4
92272 , x_transaction_coa_id => l_adr_transaction_coa_id
92273 , x_accounting_coa_id => l_adr_accounting_coa_id
92274 , x_value_type_code => l_adr_value_type_code
92275 , p_side => 'NA'
92276 );
92277
92278 xla_ae_lines_pkg.set_ccid(
92279 p_code_combination_id => l_ccid
92280 , p_value_type_code => l_adr_value_type_code
92281 , p_transaction_coa_id => l_adr_transaction_coa_id
92282 , p_accounting_coa_id => l_adr_accounting_coa_id
92283 , p_adr_code => 'CST_DEFAULT'
92284 , p_adr_type_code => 'S'
92285 , p_component_type => l_component_type
92286 , p_component_code => l_component_code
92287 , p_component_type_code => l_component_type_code
92288 , p_component_appl_id => l_component_appl_id
92289 , p_amb_context_code => l_amb_context_code
92290 , p_side => 'NA'
92291 );
92292
92293
92294 --
92295 --
92296 END IF;
92297 --
92298 -- Bug 4922099
92299 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92300 (NVL(l_enc_upg_option, 'N') = 'O')
92301 ) AND
92302 (l_bflow_method_code = 'PRIOR_ENTRY')
92303 )
92304 THEN
92305 IF
92306 --
92307 1 = 2
92308 --
92309 THEN
92310 xla_accounting_err_pkg.build_message
92311 (p_appli_s_name => 'XLA'
92312 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92313 ,p_token_1 => 'LINE_NUMBER'
92314 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
92315 ,p_token_2 => 'LINE_TYPE_NAME'
92316 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
92317 l_component_type
92318 ,l_component_code
92319 ,l_component_type_code
92320 ,l_component_appl_id
92321 ,l_amb_context_code
92322 ,l_entity_code
92323 ,l_event_class_code
92324 )
92325 ,p_token_3 => 'OWNER'
92326 ,p_value_3 => xla_lookups_pkg.get_meaning(
92327 p_lookup_type => 'XLA_OWNER_TYPE'
92328 ,p_lookup_code => l_component_type_code
92329 )
92330 ,p_token_4 => 'PRODUCT_NAME'
92331 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92332 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92333 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92334 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92335 ,p_ae_header_id => NULL
92336 );
92337
92338 IF (C_LEVEL_ERROR>= g_log_level) THEN
92339 trace
92340 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92341 ,p_level => C_LEVEL_ERROR
92342 ,p_module => l_log_module);
92343 END IF;
92344 END IF;
92345 END IF;
92346 --
92347 --
92348 ------------------------------------------------------------------------------------------------
92349 -- 4219869 Business Flow
92350 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92351 -- Prior Entry. Currently, the following code is always generated.
92352 ------------------------------------------------------------------------------------------------
92353 XLA_AE_LINES_PKG.ValidateCurrentLine;
92354
92355 ------------------------------------------------------------------------------------
92356 -- 4219869 Business Flow
92357 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92358 ------------------------------------------------------------------------------------
92359 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92360
92361 ----------------------------------------------------------------------------------
92362 -- 4219869 Business Flow
92363 -- Update journal entry status -- Need to generate this within IF <condition>
92364 ----------------------------------------------------------------------------------
92365 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92366 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92367 ,p_balance_type_code => l_balance_type_code
92368 );
92369
92370 -------------------------------------------------------------------------------------------
92371 -- 4262811 - Generate the Accrual Reversal lines
92372 -------------------------------------------------------------------------------------------
92373 BEGIN
92374 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92375 (g_array_event(p_event_id).array_value_num('header_index'));
92376 IF l_acc_rev_flag IS NULL THEN
92377 l_acc_rev_flag := 'N';
92378 END IF;
92379 EXCEPTION
92380 WHEN OTHERS THEN
92381 l_acc_rev_flag := 'N';
92382 END;
92383 --
92384 IF (l_acc_rev_flag = 'Y') THEN
92385
92386 -- 4645092 ------------------------------------------------------------------------------
92387 -- To allow MPA report to determine if it should generate report process
92388 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92389 ------------------------------------------------------------------------------------------
92390
92391 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92392 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92393 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
92394 -- call ADRs
92395 -- Bug 4922099
92396 --
92397 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92398 (NVL(l_actual_upg_option, 'N') = 'O') OR
92399 (NVL(l_enc_upg_option, 'N') = 'O')
92400 )
92401 THEN
92402 NULL;
92403 --
92404 --
92405
92406 l_ccid := AcctDerRule_4(
92407 p_application_id => p_application_id
92408 , p_ae_header_id => l_ae_header_id
92409 , p_source_4 => p_source_4
92410 , x_transaction_coa_id => l_adr_transaction_coa_id
92411 , x_accounting_coa_id => l_adr_accounting_coa_id
92412 , x_value_type_code => l_adr_value_type_code
92413 , p_side => 'NA'
92414 );
92415
92416 xla_ae_lines_pkg.set_ccid(
92417 p_code_combination_id => l_ccid
92418 , p_value_type_code => l_adr_value_type_code
92419 , p_transaction_coa_id => l_adr_transaction_coa_id
92420 , p_accounting_coa_id => l_adr_accounting_coa_id
92421 , p_adr_code => 'CST_DEFAULT'
92422 , p_adr_type_code => 'S'
92423 , p_component_type => l_component_type
92424 , p_component_code => l_component_code
92425 , p_component_type_code => l_component_type_code
92426 , p_component_appl_id => l_component_appl_id
92427 , p_amb_context_code => l_amb_context_code
92428 , p_side => 'NA'
92429 );
92430
92431
92432 --
92433 --
92434 END IF;
92435
92436 --
92437 -- Update the line information that should be overwritten
92438 --
92439 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92440 p_header_num => 1);
92441 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
92442
92443 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92444
92445 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
92446 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
92447 END IF;
92448
92449 --
92450 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
92451 --
92452 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
92453 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
92454 ELSE
92455 ---------------------------------------------------------------------------------------------------
92456 -- 4262811a Switch Sign
92457 ---------------------------------------------------------------------------------------------------
92458 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
92459 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92460 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92461 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
92462 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92463 -- 5132302
92464 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
92465 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
92466
92467 END IF;
92468
92469 -- 4955764
92470 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92471 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
92472
92473
92474 XLA_AE_LINES_PKG.ValidateCurrentLine;
92475 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92476
92477 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92478 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
92479 ,p_balance_type_code => l_balance_type_code);
92480
92481 END IF;
92482
92483 -----------------------------------------------------------------------------------------
92484 -- 4262811 Multiperiod Accounting
92485 -----------------------------------------------------------------------------------------
92486 -- No MPA option is assigned.
92487
92488
92489 END IF;
92490 END IF;
92491 --
92492
92493 --
92494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92495 trace
92496 (p_msg => 'END of AcctLineType_168'
92497 ,p_level => C_LEVEL_PROCEDURE
92498 ,p_module => l_log_module);
92499 END IF;
92500 --
92501 EXCEPTION
92502 WHEN xla_exceptions_pkg.application_exception THEN
92503 RAISE;
92504 WHEN OTHERS THEN
92505 xla_exceptions_pkg.raise_message
92506 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_168');
92507 END AcctLineType_168;
92508 --
92509
92510 ---------------------------------------
92511 --
92512 -- PRIVATE FUNCTION
92513 -- AcctLineType_169
92514 --
92515 ---------------------------------------
92516 PROCEDURE AcctLineType_169 (
92517 p_application_id IN NUMBER
92518 ,p_event_id IN NUMBER
92519 ,p_calculate_acctd_flag IN VARCHAR2
92520 ,p_calculate_g_l_flag IN VARCHAR2
92521 ,p_actual_flag IN OUT VARCHAR2
92522 ,p_balance_type_code OUT VARCHAR2
92523 ,p_gain_or_loss_ref OUT VARCHAR2
92524
92525 --Cost Management Default Account
92526 , p_source_4 IN NUMBER
92527 --DISTRIBUTION_IDENTIFIER
92528 , p_source_11 IN NUMBER
92529 --Distribution Type
92530 , p_source_12 IN VARCHAR2
92531 , p_source_12_meaning IN VARCHAR2
92532 --Entered Currency Code
92533 , p_source_15 IN VARCHAR2
92534 --Entered Amount
92535 , p_source_18 IN NUMBER
92536 --Currency Conversion Date
92537 , p_source_19 IN DATE
92538 --Currency Conversion Rate
92539 , p_source_20 IN NUMBER
92540 --Currency Conversion Type
92541 , p_source_21 IN VARCHAR2
92542 --Accounted Amount
92543 , p_source_22 IN NUMBER
92544 --Accounting Line Type
92545 , p_source_24 IN NUMBER
92546 )
92547 IS
92548
92549 l_component_type VARCHAR2(80);
92550 l_component_code VARCHAR2(30);
92551 l_component_type_code VARCHAR2(1);
92552 l_component_appl_id INTEGER;
92553 l_amb_context_code VARCHAR2(30);
92554 l_entity_code VARCHAR2(30);
92555 l_event_class_code VARCHAR2(30);
92556 l_ae_header_id NUMBER;
92557 l_event_type_code VARCHAR2(30);
92558 l_line_definition_code VARCHAR2(30);
92559 l_line_definition_owner_code VARCHAR2(1);
92560 --
92561 -- adr variables
92562 l_segment VARCHAR2(30);
92563 l_ccid NUMBER;
92564 l_adr_transaction_coa_id NUMBER;
92565 l_adr_accounting_coa_id NUMBER;
92566 l_adr_flexfield_segment_code VARCHAR2(30);
92567 l_adr_flex_value_set_id NUMBER;
92568 l_adr_value_type_code VARCHAR2(30);
92569 l_adr_value_combination_id NUMBER;
92570 l_adr_value_segment_code VARCHAR2(30);
92571
92572 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
92573 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
92574 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
92575 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
92576
92577 -- 4262811 Variables ------------------------------------------------------------------------------------------
92578 l_entered_amt_idx NUMBER;
92579 l_accted_amt_idx NUMBER;
92580 l_acc_rev_flag VARCHAR2(1);
92581 l_accrual_line_num NUMBER;
92582 l_tmp_amt NUMBER;
92583 l_acc_rev_natural_side_code VARCHAR2(1);
92584
92585 l_num_entries NUMBER;
92586 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
92587 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
92588 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
92589 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
92590 l_recog_line_1 NUMBER;
92591 l_recog_line_2 NUMBER;
92592
92593 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
92594 l_bflow_applied_to_amt NUMBER; -- 5132302
92595 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
92596
92597 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
92598
92599 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
92600 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
92601
92602 ---------------------------------------------------------------------------------------------------------------
92603
92604
92605 --
92606 -- bulk performance
92607 --
92608 l_balance_type_code VARCHAR2(1);
92609 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
92610 l_log_module VARCHAR2(240);
92611
92612 --
92613 -- Upgrade strategy
92614 --
92615 l_actual_upg_option VARCHAR2(1);
92616 l_enc_upg_option VARCHAR2(1);
92617
92618 --
92619 BEGIN
92620 --
92621 IF g_log_enabled THEN
92622 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_169';
92623 END IF;
92624 --
92625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92626
92627 trace
92628 (p_msg => 'BEGIN of AcctLineType_169'
92629 ,p_level => C_LEVEL_PROCEDURE
92630 ,p_module => l_log_module);
92631
92632 END IF;
92633 --
92634 l_component_type := 'AMB_JLT';
92635 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
92636 l_component_type_code := 'S';
92637 l_component_appl_id := 707;
92638 l_amb_context_code := 'DEFAULT';
92639 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
92640 l_event_class_code := 'WIP_MTL';
92641 l_event_type_code := 'WIP_MTL_ALL';
92642 l_line_definition_owner_code := 'S';
92643 l_line_definition_code := 'WIP_MTL';
92644 --
92645 l_balance_type_code := 'A';
92646 l_segment := NULL;
92647 l_ccid := NULL;
92648 l_adr_transaction_coa_id := NULL;
92649 l_adr_accounting_coa_id := NULL;
92650 l_adr_flexfield_segment_code := NULL;
92651 l_adr_flex_value_set_id := NULL;
92652 l_adr_value_type_code := NULL;
92653 l_adr_value_combination_id := NULL;
92654 l_adr_value_segment_code := NULL;
92655
92656 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
92657 l_bflow_class_code := ''; -- 4219869 Business Flow
92658 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
92659 l_budgetary_control_flag := 'N';
92660
92661 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92662 l_bflow_applied_to_amt := NULL; -- 5132302
92663 l_entered_amt_idx := NULL; -- 4262811
92664 l_accted_amt_idx := NULL; -- 4262811
92665 l_acc_rev_flag := NULL; -- 4262811
92666 l_accrual_line_num := NULL; -- 4262811
92667 l_tmp_amt := NULL; -- 4262811
92668 --
92669
92670 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
92671 l_balance_type_code <> 'B' THEN
92672 IF NVL(p_source_24,9E125) = 3
92673 THEN
92674
92675 --
92676 XLA_AE_LINES_PKG.SetNewLine;
92677
92678 p_balance_type_code := l_balance_type_code;
92679 -- set the flag so later we will know whether the gain loss line needs to be created
92680
92681 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
92682 p_actual_flag :='A';
92683 END IF;
92684
92685 --
92686 -- bulk performance
92687 --
92688 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
92689 p_header_num => 0); -- 4262811
92690 --
92691 -- set accounting line options
92692 --
92693 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
92694 p_natural_side_code => 'D'
92695 , p_gain_or_loss_flag => 'N'
92696 , p_gl_transfer_mode_code => 'S'
92697 , p_acct_entry_type_code => 'A'
92698 , p_switch_side_flag => 'Y'
92699 , p_merge_duplicate_code => 'N'
92700 );
92701 --
92702 l_acc_rev_natural_side_code := 'C'; -- 4262811
92703 --
92704 --
92705 -- set accounting line type info
92706 --
92707 xla_ae_lines_pkg.SetAcctLineType
92708 (p_component_type => l_component_type
92709 ,p_event_type_code => l_event_type_code
92710 ,p_line_definition_owner_code => l_line_definition_owner_code
92711 ,p_line_definition_code => l_line_definition_code
92712 ,p_accounting_line_code => l_component_code
92713 ,p_accounting_line_type_code => l_component_type_code
92714 ,p_accounting_line_appl_id => l_component_appl_id
92715 ,p_amb_context_code => l_amb_context_code
92716 ,p_entity_code => l_entity_code
92717 ,p_event_class_code => l_event_class_code);
92718 --
92719 -- set accounting class
92720 --
92721 xla_ae_lines_pkg.SetAcctClass(
92722 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
92723 , p_ae_header_id => l_ae_header_id
92724 );
92725
92726 --
92727 -- set rounding class
92728 --
92729 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
92730 'MATERIAL_OVERHEAD_ABSORPTION';
92731
92732 --
92733 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
92734 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
92735 --
92736 -- bulk performance
92737 --
92738 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
92739
92740 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
92741 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
92742
92743 -- 4955764
92744 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
92745 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
92746
92747 -- 4458381 Public Sector Enh
92748
92749 --
92750 -- set accounting attributes for the line type
92751 --
92752 l_entered_amt_idx := 3;
92753 l_accted_amt_idx := 8;
92754 l_bflow_applied_to_amt_idx := NULL; -- 5132302
92755 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
92756 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
92757 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
92758 l_rec_acct_attrs.array_char_value(2) := p_source_12;
92759 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
92760 l_rec_acct_attrs.array_num_value(3) := p_source_18;
92761 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
92762 l_rec_acct_attrs.array_char_value(4) := p_source_15;
92763 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
92764 l_rec_acct_attrs.array_date_value(5) := p_source_19;
92765 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
92766 l_rec_acct_attrs.array_num_value(6) := p_source_20;
92767 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
92768 l_rec_acct_attrs.array_char_value(7) := p_source_21;
92769 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
92770 l_rec_acct_attrs.array_num_value(8) := p_source_22;
92771
92772 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
92773 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
92774
92775 ---------------------------------------------------------------------------------------------------------------
92776 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
92777 ---------------------------------------------------------------------------------------------------------------
92778 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
92779
92780 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92781 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
92782
92783 IF xla_accounting_cache_pkg.GetValueChar
92784 (p_source_code => 'LEDGER_CATEGORY_CODE'
92785 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
92786 AND l_bflow_method_code = 'PRIOR_ENTRY'
92787 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
92788 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
92789 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
92790 )
92791 THEN
92792 xla_ae_lines_pkg.BflowUpgEntry
92793 (p_business_method_code => l_bflow_method_code
92794 ,p_business_class_code => l_bflow_class_code
92795 ,p_balance_type => l_balance_type_code);
92796 ELSE
92797 NULL;
92798 -- No business flow processing for business flow method of NONE.
92799 END IF;
92800
92801 --
92802 -- call analytical criteria
92803 --
92804
92805 --
92806 -- call description
92807 --
92808 -- No description or it is inherited.
92809 --
92810 -- call ADRs
92811 -- Bug 4922099
92812 --
92813 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92814 (NVL(l_actual_upg_option, 'N') = 'O') OR
92815 (NVL(l_enc_upg_option, 'N') = 'O')
92816 )
92817 THEN
92818 NULL;
92819 --
92820 --
92821
92822 l_ccid := AcctDerRule_4(
92823 p_application_id => p_application_id
92824 , p_ae_header_id => l_ae_header_id
92825 , p_source_4 => p_source_4
92826 , x_transaction_coa_id => l_adr_transaction_coa_id
92827 , x_accounting_coa_id => l_adr_accounting_coa_id
92828 , x_value_type_code => l_adr_value_type_code
92829 , p_side => 'NA'
92830 );
92831
92832 xla_ae_lines_pkg.set_ccid(
92833 p_code_combination_id => l_ccid
92834 , p_value_type_code => l_adr_value_type_code
92835 , p_transaction_coa_id => l_adr_transaction_coa_id
92836 , p_accounting_coa_id => l_adr_accounting_coa_id
92837 , p_adr_code => 'CST_DEFAULT'
92838 , p_adr_type_code => 'S'
92839 , p_component_type => l_component_type
92840 , p_component_code => l_component_code
92841 , p_component_type_code => l_component_type_code
92842 , p_component_appl_id => l_component_appl_id
92843 , p_amb_context_code => l_amb_context_code
92844 , p_side => 'NA'
92845 );
92846
92847
92848 --
92849 --
92850 END IF;
92851 --
92852 -- Bug 4922099
92853 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
92854 (NVL(l_enc_upg_option, 'N') = 'O')
92855 ) AND
92856 (l_bflow_method_code = 'PRIOR_ENTRY')
92857 )
92858 THEN
92859 IF
92860 --
92861 1 = 2
92862 --
92863 THEN
92864 xla_accounting_err_pkg.build_message
92865 (p_appli_s_name => 'XLA'
92866 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92867 ,p_token_1 => 'LINE_NUMBER'
92868 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
92869 ,p_token_2 => 'LINE_TYPE_NAME'
92870 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
92871 l_component_type
92872 ,l_component_code
92873 ,l_component_type_code
92874 ,l_component_appl_id
92875 ,l_amb_context_code
92876 ,l_entity_code
92877 ,l_event_class_code
92878 )
92879 ,p_token_3 => 'OWNER'
92880 ,p_value_3 => xla_lookups_pkg.get_meaning(
92881 p_lookup_type => 'XLA_OWNER_TYPE'
92882 ,p_lookup_code => l_component_type_code
92883 )
92884 ,p_token_4 => 'PRODUCT_NAME'
92885 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
92886 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
92887 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
92888 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
92889 ,p_ae_header_id => NULL
92890 );
92891
92892 IF (C_LEVEL_ERROR>= g_log_level) THEN
92893 trace
92894 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
92895 ,p_level => C_LEVEL_ERROR
92896 ,p_module => l_log_module);
92897 END IF;
92898 END IF;
92899 END IF;
92900 --
92901 --
92902 ------------------------------------------------------------------------------------------------
92903 -- 4219869 Business Flow
92904 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
92905 -- Prior Entry. Currently, the following code is always generated.
92906 ------------------------------------------------------------------------------------------------
92907 XLA_AE_LINES_PKG.ValidateCurrentLine;
92908
92909 ------------------------------------------------------------------------------------
92910 -- 4219869 Business Flow
92911 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
92912 ------------------------------------------------------------------------------------
92913 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
92914
92915 ----------------------------------------------------------------------------------
92916 -- 4219869 Business Flow
92917 -- Update journal entry status -- Need to generate this within IF <condition>
92918 ----------------------------------------------------------------------------------
92919 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
92920 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
92921 ,p_balance_type_code => l_balance_type_code
92922 );
92923
92924 -------------------------------------------------------------------------------------------
92925 -- 4262811 - Generate the Accrual Reversal lines
92926 -------------------------------------------------------------------------------------------
92927 BEGIN
92928 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
92929 (g_array_event(p_event_id).array_value_num('header_index'));
92930 IF l_acc_rev_flag IS NULL THEN
92931 l_acc_rev_flag := 'N';
92932 END IF;
92933 EXCEPTION
92934 WHEN OTHERS THEN
92935 l_acc_rev_flag := 'N';
92936 END;
92937 --
92938 IF (l_acc_rev_flag = 'Y') THEN
92939
92940 -- 4645092 ------------------------------------------------------------------------------
92941 -- To allow MPA report to determine if it should generate report process
92942 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
92943 ------------------------------------------------------------------------------------------
92944
92945 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
92946 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
92947 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
92948 -- call ADRs
92949 -- Bug 4922099
92950 --
92951 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
92952 (NVL(l_actual_upg_option, 'N') = 'O') OR
92953 (NVL(l_enc_upg_option, 'N') = 'O')
92954 )
92955 THEN
92956 NULL;
92957 --
92958 --
92959
92960 l_ccid := AcctDerRule_4(
92961 p_application_id => p_application_id
92962 , p_ae_header_id => l_ae_header_id
92963 , p_source_4 => p_source_4
92964 , x_transaction_coa_id => l_adr_transaction_coa_id
92965 , x_accounting_coa_id => l_adr_accounting_coa_id
92966 , x_value_type_code => l_adr_value_type_code
92967 , p_side => 'NA'
92968 );
92969
92970 xla_ae_lines_pkg.set_ccid(
92971 p_code_combination_id => l_ccid
92972 , p_value_type_code => l_adr_value_type_code
92973 , p_transaction_coa_id => l_adr_transaction_coa_id
92974 , p_accounting_coa_id => l_adr_accounting_coa_id
92975 , p_adr_code => 'CST_DEFAULT'
92976 , p_adr_type_code => 'S'
92977 , p_component_type => l_component_type
92978 , p_component_code => l_component_code
92979 , p_component_type_code => l_component_type_code
92980 , p_component_appl_id => l_component_appl_id
92981 , p_amb_context_code => l_amb_context_code
92982 , p_side => 'NA'
92983 );
92984
92985
92986 --
92987 --
92988 END IF;
92989
92990 --
92991 -- Update the line information that should be overwritten
92992 --
92993 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
92994 p_header_num => 1);
92995 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
92996
92997 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
92998
92999 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
93000 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93001 END IF;
93002
93003 --
93004 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93005 --
93006 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93007 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
93008 ELSE
93009 ---------------------------------------------------------------------------------------------------
93010 -- 4262811a Switch Sign
93011 ---------------------------------------------------------------------------------------------------
93012 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
93013 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93014 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93015 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93016 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93017 -- 5132302
93018 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93019 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93020
93021 END IF;
93022
93023 -- 4955764
93024 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93025 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93026
93027
93028 XLA_AE_LINES_PKG.ValidateCurrentLine;
93029 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93030
93031 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93032 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93033 ,p_balance_type_code => l_balance_type_code);
93034
93035 END IF;
93036
93037 -----------------------------------------------------------------------------------------
93038 -- 4262811 Multiperiod Accounting
93039 -----------------------------------------------------------------------------------------
93040 -- No MPA option is assigned.
93041
93042
93043 END IF;
93044 END IF;
93045 --
93046
93047 --
93048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93049 trace
93050 (p_msg => 'END of AcctLineType_169'
93051 ,p_level => C_LEVEL_PROCEDURE
93052 ,p_module => l_log_module);
93053 END IF;
93054 --
93055 EXCEPTION
93056 WHEN xla_exceptions_pkg.application_exception THEN
93057 RAISE;
93058 WHEN OTHERS THEN
93059 xla_exceptions_pkg.raise_message
93060 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_169');
93061 END AcctLineType_169;
93062 --
93063
93064 ---------------------------------------
93065 --
93066 -- PRIVATE FUNCTION
93067 -- AcctLineType_170
93068 --
93069 ---------------------------------------
93070 PROCEDURE AcctLineType_170 (
93071 p_application_id IN NUMBER
93072 ,p_event_id IN NUMBER
93073 ,p_calculate_acctd_flag IN VARCHAR2
93074 ,p_calculate_g_l_flag IN VARCHAR2
93075 ,p_actual_flag IN OUT VARCHAR2
93076 ,p_balance_type_code OUT VARCHAR2
93077 ,p_gain_or_loss_ref OUT VARCHAR2
93078
93079 --Cost Management Default Account
93080 , p_source_4 IN NUMBER
93081 --DISTRIBUTION_IDENTIFIER
93082 , p_source_11 IN NUMBER
93083 --Distribution Type
93084 , p_source_12 IN VARCHAR2
93085 , p_source_12_meaning IN VARCHAR2
93086 --Entered Currency Code
93087 , p_source_15 IN VARCHAR2
93088 --Entered Amount
93089 , p_source_18 IN NUMBER
93090 --Currency Conversion Date
93091 , p_source_19 IN DATE
93092 --Currency Conversion Rate
93093 , p_source_20 IN NUMBER
93094 --Currency Conversion Type
93095 , p_source_21 IN VARCHAR2
93096 --Accounted Amount
93097 , p_source_22 IN NUMBER
93098 --Accounting Line Type
93099 , p_source_24 IN NUMBER
93100 )
93101 IS
93102
93103 l_component_type VARCHAR2(80);
93104 l_component_code VARCHAR2(30);
93105 l_component_type_code VARCHAR2(1);
93106 l_component_appl_id INTEGER;
93107 l_amb_context_code VARCHAR2(30);
93108 l_entity_code VARCHAR2(30);
93109 l_event_class_code VARCHAR2(30);
93110 l_ae_header_id NUMBER;
93111 l_event_type_code VARCHAR2(30);
93112 l_line_definition_code VARCHAR2(30);
93113 l_line_definition_owner_code VARCHAR2(1);
93114 --
93115 -- adr variables
93116 l_segment VARCHAR2(30);
93117 l_ccid NUMBER;
93118 l_adr_transaction_coa_id NUMBER;
93119 l_adr_accounting_coa_id NUMBER;
93120 l_adr_flexfield_segment_code VARCHAR2(30);
93121 l_adr_flex_value_set_id NUMBER;
93122 l_adr_value_type_code VARCHAR2(30);
93123 l_adr_value_combination_id NUMBER;
93124 l_adr_value_segment_code VARCHAR2(30);
93125
93126 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
93127 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
93128 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
93129 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
93130
93131 -- 4262811 Variables ------------------------------------------------------------------------------------------
93132 l_entered_amt_idx NUMBER;
93133 l_accted_amt_idx NUMBER;
93134 l_acc_rev_flag VARCHAR2(1);
93135 l_accrual_line_num NUMBER;
93136 l_tmp_amt NUMBER;
93137 l_acc_rev_natural_side_code VARCHAR2(1);
93138
93139 l_num_entries NUMBER;
93140 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
93141 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
93142 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
93143 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
93144 l_recog_line_1 NUMBER;
93145 l_recog_line_2 NUMBER;
93146
93147 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
93148 l_bflow_applied_to_amt NUMBER; -- 5132302
93149 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
93150
93151 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93152
93153 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
93154 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
93155
93156 ---------------------------------------------------------------------------------------------------------------
93157
93158
93159 --
93160 -- bulk performance
93161 --
93162 l_balance_type_code VARCHAR2(1);
93163 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
93164 l_log_module VARCHAR2(240);
93165
93166 --
93167 -- Upgrade strategy
93168 --
93169 l_actual_upg_option VARCHAR2(1);
93170 l_enc_upg_option VARCHAR2(1);
93171
93172 --
93173 BEGIN
93174 --
93175 IF g_log_enabled THEN
93176 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_170';
93177 END IF;
93178 --
93179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93180
93181 trace
93182 (p_msg => 'BEGIN of AcctLineType_170'
93183 ,p_level => C_LEVEL_PROCEDURE
93184 ,p_module => l_log_module);
93185
93186 END IF;
93187 --
93188 l_component_type := 'AMB_JLT';
93189 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
93190 l_component_type_code := 'S';
93191 l_component_appl_id := 707;
93192 l_amb_context_code := 'DEFAULT';
93193 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
93194 l_event_class_code := 'DIR_INTERORG_SHIP';
93195 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
93196 l_line_definition_owner_code := 'S';
93197 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
93198 --
93199 l_balance_type_code := 'A';
93200 l_segment := NULL;
93201 l_ccid := NULL;
93202 l_adr_transaction_coa_id := NULL;
93203 l_adr_accounting_coa_id := NULL;
93204 l_adr_flexfield_segment_code := NULL;
93205 l_adr_flex_value_set_id := NULL;
93206 l_adr_value_type_code := NULL;
93207 l_adr_value_combination_id := NULL;
93208 l_adr_value_segment_code := NULL;
93209
93210 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
93211 l_bflow_class_code := ''; -- 4219869 Business Flow
93212 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
93213 l_budgetary_control_flag := 'N';
93214
93215 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93216 l_bflow_applied_to_amt := NULL; -- 5132302
93217 l_entered_amt_idx := NULL; -- 4262811
93218 l_accted_amt_idx := NULL; -- 4262811
93219 l_acc_rev_flag := NULL; -- 4262811
93220 l_accrual_line_num := NULL; -- 4262811
93221 l_tmp_amt := NULL; -- 4262811
93222 --
93223
93224 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93225 l_balance_type_code <> 'B' THEN
93226 IF NVL(p_source_24,9E125) = 3
93227 THEN
93228
93229 --
93230 XLA_AE_LINES_PKG.SetNewLine;
93231
93232 p_balance_type_code := l_balance_type_code;
93233 -- set the flag so later we will know whether the gain loss line needs to be created
93234
93235 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93236 p_actual_flag :='A';
93237 END IF;
93238
93239 --
93240 -- bulk performance
93241 --
93242 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93243 p_header_num => 0); -- 4262811
93244 --
93245 -- set accounting line options
93246 --
93247 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93248 p_natural_side_code => 'D'
93249 , p_gain_or_loss_flag => 'N'
93250 , p_gl_transfer_mode_code => 'S'
93251 , p_acct_entry_type_code => 'A'
93252 , p_switch_side_flag => 'Y'
93253 , p_merge_duplicate_code => 'N'
93254 );
93255 --
93256 l_acc_rev_natural_side_code := 'C'; -- 4262811
93257 --
93258 --
93259 -- set accounting line type info
93260 --
93261 xla_ae_lines_pkg.SetAcctLineType
93262 (p_component_type => l_component_type
93263 ,p_event_type_code => l_event_type_code
93264 ,p_line_definition_owner_code => l_line_definition_owner_code
93265 ,p_line_definition_code => l_line_definition_code
93266 ,p_accounting_line_code => l_component_code
93267 ,p_accounting_line_type_code => l_component_type_code
93268 ,p_accounting_line_appl_id => l_component_appl_id
93269 ,p_amb_context_code => l_amb_context_code
93270 ,p_entity_code => l_entity_code
93271 ,p_event_class_code => l_event_class_code);
93272 --
93273 -- set accounting class
93274 --
93275 xla_ae_lines_pkg.SetAcctClass(
93276 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
93277 , p_ae_header_id => l_ae_header_id
93278 );
93279
93280 --
93281 -- set rounding class
93282 --
93283 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93284 'MATERIAL_OVERHEAD_ABSORPTION';
93285
93286 --
93287 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93288 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93289 --
93290 -- bulk performance
93291 --
93292 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93293
93294 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93295 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93296
93297 -- 4955764
93298 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93299 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93300
93301 -- 4458381 Public Sector Enh
93302
93303 --
93304 -- set accounting attributes for the line type
93305 --
93306 l_entered_amt_idx := 3;
93307 l_accted_amt_idx := 8;
93308 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93309 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93310 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
93311 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93312 l_rec_acct_attrs.array_char_value(2) := p_source_12;
93313 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93314 l_rec_acct_attrs.array_num_value(3) := p_source_18;
93315 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93316 l_rec_acct_attrs.array_char_value(4) := p_source_15;
93317 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93318 l_rec_acct_attrs.array_date_value(5) := p_source_19;
93319 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93320 l_rec_acct_attrs.array_num_value(6) := p_source_20;
93321 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93322 l_rec_acct_attrs.array_char_value(7) := p_source_21;
93323 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93324 l_rec_acct_attrs.array_num_value(8) := p_source_22;
93325
93326 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93327 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93328
93329 ---------------------------------------------------------------------------------------------------------------
93330 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93331 ---------------------------------------------------------------------------------------------------------------
93332 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93333
93334 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93335 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93336
93337 IF xla_accounting_cache_pkg.GetValueChar
93338 (p_source_code => 'LEDGER_CATEGORY_CODE'
93339 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93340 AND l_bflow_method_code = 'PRIOR_ENTRY'
93341 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93342 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93343 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93344 )
93345 THEN
93346 xla_ae_lines_pkg.BflowUpgEntry
93347 (p_business_method_code => l_bflow_method_code
93348 ,p_business_class_code => l_bflow_class_code
93349 ,p_balance_type => l_balance_type_code);
93350 ELSE
93351 NULL;
93352 -- No business flow processing for business flow method of NONE.
93353 END IF;
93354
93355 --
93356 -- call analytical criteria
93357 --
93358
93359 --
93360 -- call description
93361 --
93362 -- No description or it is inherited.
93363 --
93364 -- call ADRs
93365 -- Bug 4922099
93366 --
93367 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93368 (NVL(l_actual_upg_option, 'N') = 'O') OR
93369 (NVL(l_enc_upg_option, 'N') = 'O')
93370 )
93371 THEN
93372 NULL;
93373 --
93374 --
93375
93376 l_ccid := AcctDerRule_4(
93377 p_application_id => p_application_id
93378 , p_ae_header_id => l_ae_header_id
93379 , p_source_4 => p_source_4
93380 , x_transaction_coa_id => l_adr_transaction_coa_id
93381 , x_accounting_coa_id => l_adr_accounting_coa_id
93382 , x_value_type_code => l_adr_value_type_code
93383 , p_side => 'NA'
93384 );
93385
93386 xla_ae_lines_pkg.set_ccid(
93387 p_code_combination_id => l_ccid
93388 , p_value_type_code => l_adr_value_type_code
93389 , p_transaction_coa_id => l_adr_transaction_coa_id
93390 , p_accounting_coa_id => l_adr_accounting_coa_id
93391 , p_adr_code => 'CST_DEFAULT'
93392 , p_adr_type_code => 'S'
93393 , p_component_type => l_component_type
93394 , p_component_code => l_component_code
93395 , p_component_type_code => l_component_type_code
93396 , p_component_appl_id => l_component_appl_id
93397 , p_amb_context_code => l_amb_context_code
93398 , p_side => 'NA'
93399 );
93400
93401
93402 --
93403 --
93404 END IF;
93405 --
93406 -- Bug 4922099
93407 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93408 (NVL(l_enc_upg_option, 'N') = 'O')
93409 ) AND
93410 (l_bflow_method_code = 'PRIOR_ENTRY')
93411 )
93412 THEN
93413 IF
93414 --
93415 1 = 2
93416 --
93417 THEN
93418 xla_accounting_err_pkg.build_message
93419 (p_appli_s_name => 'XLA'
93420 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93421 ,p_token_1 => 'LINE_NUMBER'
93422 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
93423 ,p_token_2 => 'LINE_TYPE_NAME'
93424 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
93425 l_component_type
93426 ,l_component_code
93427 ,l_component_type_code
93428 ,l_component_appl_id
93429 ,l_amb_context_code
93430 ,l_entity_code
93431 ,l_event_class_code
93432 )
93433 ,p_token_3 => 'OWNER'
93434 ,p_value_3 => xla_lookups_pkg.get_meaning(
93435 p_lookup_type => 'XLA_OWNER_TYPE'
93436 ,p_lookup_code => l_component_type_code
93437 )
93438 ,p_token_4 => 'PRODUCT_NAME'
93439 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93440 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93441 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93442 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93443 ,p_ae_header_id => NULL
93444 );
93445
93446 IF (C_LEVEL_ERROR>= g_log_level) THEN
93447 trace
93448 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93449 ,p_level => C_LEVEL_ERROR
93450 ,p_module => l_log_module);
93451 END IF;
93452 END IF;
93453 END IF;
93454 --
93455 --
93456 ------------------------------------------------------------------------------------------------
93457 -- 4219869 Business Flow
93458 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
93459 -- Prior Entry. Currently, the following code is always generated.
93460 ------------------------------------------------------------------------------------------------
93461 XLA_AE_LINES_PKG.ValidateCurrentLine;
93462
93463 ------------------------------------------------------------------------------------
93464 -- 4219869 Business Flow
93465 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
93466 ------------------------------------------------------------------------------------
93467 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93468
93469 ----------------------------------------------------------------------------------
93470 -- 4219869 Business Flow
93471 -- Update journal entry status -- Need to generate this within IF <condition>
93472 ----------------------------------------------------------------------------------
93473 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93474 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
93475 ,p_balance_type_code => l_balance_type_code
93476 );
93477
93478 -------------------------------------------------------------------------------------------
93479 -- 4262811 - Generate the Accrual Reversal lines
93480 -------------------------------------------------------------------------------------------
93481 BEGIN
93482 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
93483 (g_array_event(p_event_id).array_value_num('header_index'));
93484 IF l_acc_rev_flag IS NULL THEN
93485 l_acc_rev_flag := 'N';
93486 END IF;
93487 EXCEPTION
93488 WHEN OTHERS THEN
93489 l_acc_rev_flag := 'N';
93490 END;
93491 --
93492 IF (l_acc_rev_flag = 'Y') THEN
93493
93494 -- 4645092 ------------------------------------------------------------------------------
93495 -- To allow MPA report to determine if it should generate report process
93496 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
93497 ------------------------------------------------------------------------------------------
93498
93499 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
93500 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
93501 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
93502 -- call ADRs
93503 -- Bug 4922099
93504 --
93505 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93506 (NVL(l_actual_upg_option, 'N') = 'O') OR
93507 (NVL(l_enc_upg_option, 'N') = 'O')
93508 )
93509 THEN
93510 NULL;
93511 --
93512 --
93513
93514 l_ccid := AcctDerRule_4(
93515 p_application_id => p_application_id
93516 , p_ae_header_id => l_ae_header_id
93517 , p_source_4 => p_source_4
93518 , x_transaction_coa_id => l_adr_transaction_coa_id
93519 , x_accounting_coa_id => l_adr_accounting_coa_id
93520 , x_value_type_code => l_adr_value_type_code
93521 , p_side => 'NA'
93522 );
93523
93524 xla_ae_lines_pkg.set_ccid(
93525 p_code_combination_id => l_ccid
93526 , p_value_type_code => l_adr_value_type_code
93527 , p_transaction_coa_id => l_adr_transaction_coa_id
93528 , p_accounting_coa_id => l_adr_accounting_coa_id
93529 , p_adr_code => 'CST_DEFAULT'
93530 , p_adr_type_code => 'S'
93531 , p_component_type => l_component_type
93532 , p_component_code => l_component_code
93533 , p_component_type_code => l_component_type_code
93534 , p_component_appl_id => l_component_appl_id
93535 , p_amb_context_code => l_amb_context_code
93536 , p_side => 'NA'
93537 );
93538
93539
93540 --
93541 --
93542 END IF;
93543
93544 --
93545 -- Update the line information that should be overwritten
93546 --
93547 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
93548 p_header_num => 1);
93549 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
93550
93551 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
93552
93553 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
93554 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
93555 END IF;
93556
93557 --
93558 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
93559 --
93560 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
93561 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
93562 ELSE
93563 ---------------------------------------------------------------------------------------------------
93564 -- 4262811a Switch Sign
93565 ---------------------------------------------------------------------------------------------------
93566 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
93567 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93568 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93569 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
93570 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93571 -- 5132302
93572 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
93573 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
93574
93575 END IF;
93576
93577 -- 4955764
93578 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93579 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
93580
93581
93582 XLA_AE_LINES_PKG.ValidateCurrentLine;
93583 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
93584
93585 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
93586 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
93587 ,p_balance_type_code => l_balance_type_code);
93588
93589 END IF;
93590
93591 -----------------------------------------------------------------------------------------
93592 -- 4262811 Multiperiod Accounting
93593 -----------------------------------------------------------------------------------------
93594 -- No MPA option is assigned.
93595
93596
93597 END IF;
93598 END IF;
93599 --
93600
93601 --
93602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93603 trace
93604 (p_msg => 'END of AcctLineType_170'
93605 ,p_level => C_LEVEL_PROCEDURE
93606 ,p_module => l_log_module);
93607 END IF;
93608 --
93609 EXCEPTION
93610 WHEN xla_exceptions_pkg.application_exception THEN
93611 RAISE;
93612 WHEN OTHERS THEN
93613 xla_exceptions_pkg.raise_message
93614 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_170');
93615 END AcctLineType_170;
93616 --
93617
93618 ---------------------------------------
93619 --
93620 -- PRIVATE FUNCTION
93621 -- AcctLineType_171
93622 --
93623 ---------------------------------------
93624 PROCEDURE AcctLineType_171 (
93625 p_application_id IN NUMBER
93626 ,p_event_id IN NUMBER
93627 ,p_calculate_acctd_flag IN VARCHAR2
93628 ,p_calculate_g_l_flag IN VARCHAR2
93629 ,p_actual_flag IN OUT VARCHAR2
93630 ,p_balance_type_code OUT VARCHAR2
93631 ,p_gain_or_loss_ref OUT VARCHAR2
93632
93633 --Cost Management Default Account
93634 , p_source_4 IN NUMBER
93635 --DISTRIBUTION_IDENTIFIER
93636 , p_source_11 IN NUMBER
93637 --Distribution Type
93638 , p_source_12 IN VARCHAR2
93639 , p_source_12_meaning IN VARCHAR2
93640 --Entered Currency Code
93641 , p_source_15 IN VARCHAR2
93642 --Entered Amount
93643 , p_source_18 IN NUMBER
93644 --Currency Conversion Date
93645 , p_source_19 IN DATE
93646 --Currency Conversion Rate
93647 , p_source_20 IN NUMBER
93648 --Currency Conversion Type
93649 , p_source_21 IN VARCHAR2
93650 --Accounted Amount
93651 , p_source_22 IN NUMBER
93652 --Accounting Line Type
93653 , p_source_24 IN NUMBER
93654 )
93655 IS
93656
93657 l_component_type VARCHAR2(80);
93658 l_component_code VARCHAR2(30);
93659 l_component_type_code VARCHAR2(1);
93660 l_component_appl_id INTEGER;
93661 l_amb_context_code VARCHAR2(30);
93662 l_entity_code VARCHAR2(30);
93663 l_event_class_code VARCHAR2(30);
93664 l_ae_header_id NUMBER;
93665 l_event_type_code VARCHAR2(30);
93666 l_line_definition_code VARCHAR2(30);
93667 l_line_definition_owner_code VARCHAR2(1);
93668 --
93669 -- adr variables
93670 l_segment VARCHAR2(30);
93671 l_ccid NUMBER;
93672 l_adr_transaction_coa_id NUMBER;
93673 l_adr_accounting_coa_id NUMBER;
93674 l_adr_flexfield_segment_code VARCHAR2(30);
93675 l_adr_flex_value_set_id NUMBER;
93676 l_adr_value_type_code VARCHAR2(30);
93677 l_adr_value_combination_id NUMBER;
93678 l_adr_value_segment_code VARCHAR2(30);
93679
93680 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
93681 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
93682 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
93683 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
93684
93685 -- 4262811 Variables ------------------------------------------------------------------------------------------
93686 l_entered_amt_idx NUMBER;
93687 l_accted_amt_idx NUMBER;
93688 l_acc_rev_flag VARCHAR2(1);
93689 l_accrual_line_num NUMBER;
93690 l_tmp_amt NUMBER;
93691 l_acc_rev_natural_side_code VARCHAR2(1);
93692
93693 l_num_entries NUMBER;
93694 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
93695 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
93696 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
93697 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
93698 l_recog_line_1 NUMBER;
93699 l_recog_line_2 NUMBER;
93700
93701 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
93702 l_bflow_applied_to_amt NUMBER; -- 5132302
93703 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
93704
93705 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
93706
93707 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
93708 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
93709
93710 ---------------------------------------------------------------------------------------------------------------
93711
93712
93713 --
93714 -- bulk performance
93715 --
93716 l_balance_type_code VARCHAR2(1);
93717 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
93718 l_log_module VARCHAR2(240);
93719
93720 --
93721 -- Upgrade strategy
93722 --
93723 l_actual_upg_option VARCHAR2(1);
93724 l_enc_upg_option VARCHAR2(1);
93725
93726 --
93727 BEGIN
93728 --
93729 IF g_log_enabled THEN
93730 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_171';
93731 END IF;
93732 --
93733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93734
93735 trace
93736 (p_msg => 'BEGIN of AcctLineType_171'
93737 ,p_level => C_LEVEL_PROCEDURE
93738 ,p_module => l_log_module);
93739
93740 END IF;
93741 --
93742 l_component_type := 'AMB_JLT';
93743 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
93744 l_component_type_code := 'S';
93745 l_component_appl_id := 707;
93746 l_amb_context_code := 'DEFAULT';
93747 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
93748 l_event_class_code := 'USER_DEFINE';
93749 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
93750 l_line_definition_owner_code := 'S';
93751 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
93752 --
93753 l_balance_type_code := 'A';
93754 l_segment := NULL;
93755 l_ccid := NULL;
93756 l_adr_transaction_coa_id := NULL;
93757 l_adr_accounting_coa_id := NULL;
93758 l_adr_flexfield_segment_code := NULL;
93759 l_adr_flex_value_set_id := NULL;
93760 l_adr_value_type_code := NULL;
93761 l_adr_value_combination_id := NULL;
93762 l_adr_value_segment_code := NULL;
93763
93764 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
93765 l_bflow_class_code := ''; -- 4219869 Business Flow
93766 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
93767 l_budgetary_control_flag := 'N';
93768
93769 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93770 l_bflow_applied_to_amt := NULL; -- 5132302
93771 l_entered_amt_idx := NULL; -- 4262811
93772 l_accted_amt_idx := NULL; -- 4262811
93773 l_acc_rev_flag := NULL; -- 4262811
93774 l_accrual_line_num := NULL; -- 4262811
93775 l_tmp_amt := NULL; -- 4262811
93776 --
93777
93778 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
93779 l_balance_type_code <> 'B' THEN
93780 IF NVL(p_source_24,9E125) = 3
93781 THEN
93782
93783 --
93784 XLA_AE_LINES_PKG.SetNewLine;
93785
93786 p_balance_type_code := l_balance_type_code;
93787 -- set the flag so later we will know whether the gain loss line needs to be created
93788
93789 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
93790 p_actual_flag :='A';
93791 END IF;
93792
93793 --
93794 -- bulk performance
93795 --
93796 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
93797 p_header_num => 0); -- 4262811
93798 --
93799 -- set accounting line options
93800 --
93801 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
93802 p_natural_side_code => 'D'
93803 , p_gain_or_loss_flag => 'N'
93804 , p_gl_transfer_mode_code => 'S'
93805 , p_acct_entry_type_code => 'A'
93806 , p_switch_side_flag => 'Y'
93807 , p_merge_duplicate_code => 'N'
93808 );
93809 --
93810 l_acc_rev_natural_side_code := 'C'; -- 4262811
93811 --
93812 --
93813 -- set accounting line type info
93814 --
93815 xla_ae_lines_pkg.SetAcctLineType
93816 (p_component_type => l_component_type
93817 ,p_event_type_code => l_event_type_code
93818 ,p_line_definition_owner_code => l_line_definition_owner_code
93819 ,p_line_definition_code => l_line_definition_code
93820 ,p_accounting_line_code => l_component_code
93821 ,p_accounting_line_type_code => l_component_type_code
93822 ,p_accounting_line_appl_id => l_component_appl_id
93823 ,p_amb_context_code => l_amb_context_code
93824 ,p_entity_code => l_entity_code
93825 ,p_event_class_code => l_event_class_code);
93826 --
93827 -- set accounting class
93828 --
93829 xla_ae_lines_pkg.SetAcctClass(
93830 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
93831 , p_ae_header_id => l_ae_header_id
93832 );
93833
93834 --
93835 -- set rounding class
93836 --
93837 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
93838 'MATERIAL_OVERHEAD_ABSORPTION';
93839
93840 --
93841 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
93842 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
93843 --
93844 -- bulk performance
93845 --
93846 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
93847
93848 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
93849 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
93850
93851 -- 4955764
93852 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
93853 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
93854
93855 -- 4458381 Public Sector Enh
93856
93857 --
93858 -- set accounting attributes for the line type
93859 --
93860 l_entered_amt_idx := 3;
93861 l_accted_amt_idx := 8;
93862 l_bflow_applied_to_amt_idx := NULL; -- 5132302
93863 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
93864 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
93865 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
93866 l_rec_acct_attrs.array_char_value(2) := p_source_12;
93867 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
93868 l_rec_acct_attrs.array_num_value(3) := p_source_18;
93869 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
93870 l_rec_acct_attrs.array_char_value(4) := p_source_15;
93871 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
93872 l_rec_acct_attrs.array_date_value(5) := p_source_19;
93873 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
93874 l_rec_acct_attrs.array_num_value(6) := p_source_20;
93875 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
93876 l_rec_acct_attrs.array_char_value(7) := p_source_21;
93877 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
93878 l_rec_acct_attrs.array_num_value(8) := p_source_22;
93879
93880 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
93881 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
93882
93883 ---------------------------------------------------------------------------------------------------------------
93884 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
93885 ---------------------------------------------------------------------------------------------------------------
93886 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
93887
93888 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93889 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
93890
93891 IF xla_accounting_cache_pkg.GetValueChar
93892 (p_source_code => 'LEDGER_CATEGORY_CODE'
93893 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
93894 AND l_bflow_method_code = 'PRIOR_ENTRY'
93895 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
93896 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
93897 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
93898 )
93899 THEN
93900 xla_ae_lines_pkg.BflowUpgEntry
93901 (p_business_method_code => l_bflow_method_code
93902 ,p_business_class_code => l_bflow_class_code
93903 ,p_balance_type => l_balance_type_code);
93904 ELSE
93905 NULL;
93906 -- No business flow processing for business flow method of NONE.
93907 END IF;
93908
93909 --
93910 -- call analytical criteria
93911 --
93912
93913 --
93914 -- call description
93915 --
93916 -- No description or it is inherited.
93917 --
93918 -- call ADRs
93919 -- Bug 4922099
93920 --
93921 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
93922 (NVL(l_actual_upg_option, 'N') = 'O') OR
93923 (NVL(l_enc_upg_option, 'N') = 'O')
93924 )
93925 THEN
93926 NULL;
93927 --
93928 --
93929
93930 l_ccid := AcctDerRule_4(
93931 p_application_id => p_application_id
93932 , p_ae_header_id => l_ae_header_id
93933 , p_source_4 => p_source_4
93934 , x_transaction_coa_id => l_adr_transaction_coa_id
93935 , x_accounting_coa_id => l_adr_accounting_coa_id
93936 , x_value_type_code => l_adr_value_type_code
93937 , p_side => 'NA'
93938 );
93939
93940 xla_ae_lines_pkg.set_ccid(
93941 p_code_combination_id => l_ccid
93942 , p_value_type_code => l_adr_value_type_code
93943 , p_transaction_coa_id => l_adr_transaction_coa_id
93944 , p_accounting_coa_id => l_adr_accounting_coa_id
93945 , p_adr_code => 'CST_DEFAULT'
93946 , p_adr_type_code => 'S'
93947 , p_component_type => l_component_type
93948 , p_component_code => l_component_code
93949 , p_component_type_code => l_component_type_code
93950 , p_component_appl_id => l_component_appl_id
93951 , p_amb_context_code => l_amb_context_code
93952 , p_side => 'NA'
93953 );
93954
93955
93956 --
93957 --
93958 END IF;
93959 --
93960 -- Bug 4922099
93961 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
93962 (NVL(l_enc_upg_option, 'N') = 'O')
93963 ) AND
93964 (l_bflow_method_code = 'PRIOR_ENTRY')
93965 )
93966 THEN
93967 IF
93968 --
93969 1 = 2
93970 --
93971 THEN
93972 xla_accounting_err_pkg.build_message
93973 (p_appli_s_name => 'XLA'
93974 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
93975 ,p_token_1 => 'LINE_NUMBER'
93976 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
93977 ,p_token_2 => 'LINE_TYPE_NAME'
93978 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
93979 l_component_type
93980 ,l_component_code
93981 ,l_component_type_code
93982 ,l_component_appl_id
93983 ,l_amb_context_code
93984 ,l_entity_code
93985 ,l_event_class_code
93986 )
93987 ,p_token_3 => 'OWNER'
93988 ,p_value_3 => xla_lookups_pkg.get_meaning(
93989 p_lookup_type => 'XLA_OWNER_TYPE'
93990 ,p_lookup_code => l_component_type_code
93991 )
93992 ,p_token_4 => 'PRODUCT_NAME'
93993 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
93994 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
93995 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
93996 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
93997 ,p_ae_header_id => NULL
93998 );
93999
94000 IF (C_LEVEL_ERROR>= g_log_level) THEN
94001 trace
94002 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94003 ,p_level => C_LEVEL_ERROR
94004 ,p_module => l_log_module);
94005 END IF;
94006 END IF;
94007 END IF;
94008 --
94009 --
94010 ------------------------------------------------------------------------------------------------
94011 -- 4219869 Business Flow
94012 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94013 -- Prior Entry. Currently, the following code is always generated.
94014 ------------------------------------------------------------------------------------------------
94015 XLA_AE_LINES_PKG.ValidateCurrentLine;
94016
94017 ------------------------------------------------------------------------------------
94018 -- 4219869 Business Flow
94019 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94020 ------------------------------------------------------------------------------------
94021 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94022
94023 ----------------------------------------------------------------------------------
94024 -- 4219869 Business Flow
94025 -- Update journal entry status -- Need to generate this within IF <condition>
94026 ----------------------------------------------------------------------------------
94027 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94028 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94029 ,p_balance_type_code => l_balance_type_code
94030 );
94031
94032 -------------------------------------------------------------------------------------------
94033 -- 4262811 - Generate the Accrual Reversal lines
94034 -------------------------------------------------------------------------------------------
94035 BEGIN
94036 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94037 (g_array_event(p_event_id).array_value_num('header_index'));
94038 IF l_acc_rev_flag IS NULL THEN
94039 l_acc_rev_flag := 'N';
94040 END IF;
94041 EXCEPTION
94042 WHEN OTHERS THEN
94043 l_acc_rev_flag := 'N';
94044 END;
94045 --
94046 IF (l_acc_rev_flag = 'Y') THEN
94047
94048 -- 4645092 ------------------------------------------------------------------------------
94049 -- To allow MPA report to determine if it should generate report process
94050 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94051 ------------------------------------------------------------------------------------------
94052
94053 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94054 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94055 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
94056 -- call ADRs
94057 -- Bug 4922099
94058 --
94059 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94060 (NVL(l_actual_upg_option, 'N') = 'O') OR
94061 (NVL(l_enc_upg_option, 'N') = 'O')
94062 )
94063 THEN
94064 NULL;
94065 --
94066 --
94067
94068 l_ccid := AcctDerRule_4(
94069 p_application_id => p_application_id
94070 , p_ae_header_id => l_ae_header_id
94071 , p_source_4 => p_source_4
94072 , x_transaction_coa_id => l_adr_transaction_coa_id
94073 , x_accounting_coa_id => l_adr_accounting_coa_id
94074 , x_value_type_code => l_adr_value_type_code
94075 , p_side => 'NA'
94076 );
94077
94078 xla_ae_lines_pkg.set_ccid(
94079 p_code_combination_id => l_ccid
94080 , p_value_type_code => l_adr_value_type_code
94081 , p_transaction_coa_id => l_adr_transaction_coa_id
94082 , p_accounting_coa_id => l_adr_accounting_coa_id
94083 , p_adr_code => 'CST_DEFAULT'
94084 , p_adr_type_code => 'S'
94085 , p_component_type => l_component_type
94086 , p_component_code => l_component_code
94087 , p_component_type_code => l_component_type_code
94088 , p_component_appl_id => l_component_appl_id
94089 , p_amb_context_code => l_amb_context_code
94090 , p_side => 'NA'
94091 );
94092
94093
94094 --
94095 --
94096 END IF;
94097
94098 --
94099 -- Update the line information that should be overwritten
94100 --
94101 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94102 p_header_num => 1);
94103 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
94104
94105 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94106
94107 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
94108 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94109 END IF;
94110
94111 --
94112 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94113 --
94114 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94115 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
94116 ELSE
94117 ---------------------------------------------------------------------------------------------------
94118 -- 4262811a Switch Sign
94119 ---------------------------------------------------------------------------------------------------
94120 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
94121 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94122 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94123 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94124 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94125 -- 5132302
94126 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94127 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94128
94129 END IF;
94130
94131 -- 4955764
94132 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94133 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94134
94135
94136 XLA_AE_LINES_PKG.ValidateCurrentLine;
94137 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94138
94139 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94140 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94141 ,p_balance_type_code => l_balance_type_code);
94142
94143 END IF;
94144
94145 -----------------------------------------------------------------------------------------
94146 -- 4262811 Multiperiod Accounting
94147 -----------------------------------------------------------------------------------------
94148 -- No MPA option is assigned.
94149
94150
94151 END IF;
94152 END IF;
94153 --
94154
94155 --
94156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94157 trace
94158 (p_msg => 'END of AcctLineType_171'
94159 ,p_level => C_LEVEL_PROCEDURE
94160 ,p_module => l_log_module);
94161 END IF;
94162 --
94163 EXCEPTION
94164 WHEN xla_exceptions_pkg.application_exception THEN
94165 RAISE;
94166 WHEN OTHERS THEN
94167 xla_exceptions_pkg.raise_message
94168 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_171');
94169 END AcctLineType_171;
94170 --
94171
94172 ---------------------------------------
94173 --
94174 -- PRIVATE FUNCTION
94175 -- AcctLineType_172
94176 --
94177 ---------------------------------------
94178 PROCEDURE AcctLineType_172 (
94179 p_application_id IN NUMBER
94180 ,p_event_id IN NUMBER
94181 ,p_calculate_acctd_flag IN VARCHAR2
94182 ,p_calculate_g_l_flag IN VARCHAR2
94183 ,p_actual_flag IN OUT VARCHAR2
94184 ,p_balance_type_code OUT VARCHAR2
94185 ,p_gain_or_loss_ref OUT VARCHAR2
94186
94187 --Cost Management Default Account
94188 , p_source_4 IN NUMBER
94189 --Applied to Application ID
94190 , p_source_6 IN NUMBER
94191 --Applied to Distribution Link Type
94192 , p_source_7 IN VARCHAR2
94193 --Applied to Entity Code
94194 , p_source_8 IN VARCHAR2
94195 --Applied To Purchase Document Identifier
94196 , p_source_10 IN NUMBER
94197 --DISTRIBUTION_IDENTIFIER
94198 , p_source_11 IN NUMBER
94199 --Distribution Type
94200 , p_source_12 IN VARCHAR2
94201 , p_source_12_meaning IN VARCHAR2
94202 --PO Budget Account
94203 , p_source_13 IN NUMBER
94204 --Encumbrance Reversal Amount Entered
94205 , p_source_14 IN NUMBER
94206 --Entered Currency Code
94207 , p_source_15 IN VARCHAR2
94208 --Transaction Encumbrance Reversal Amount
94209 , p_source_16 IN NUMBER
94210 --Entered Amount
94211 , p_source_18 IN NUMBER
94212 --Currency Conversion Date
94213 , p_source_19 IN DATE
94214 --Currency Conversion Rate
94215 , p_source_20 IN NUMBER
94216 --Currency Conversion Type
94217 , p_source_21 IN VARCHAR2
94218 --Accounted Amount
94219 , p_source_22 IN NUMBER
94220 --Purchasing Encumbrance Type Identifier
94221 , p_source_23 IN NUMBER
94222 --Accounting Line Type
94223 , p_source_24 IN NUMBER
94224 --Costing Encumbrance Upgrade Option
94225 , p_source_27 IN VARCHAR2
94226 --TXN_PO_DISTRIBUTION_ID
94227 , p_source_28 IN NUMBER
94228 )
94229 IS
94230
94231 l_component_type VARCHAR2(80);
94232 l_component_code VARCHAR2(30);
94233 l_component_type_code VARCHAR2(1);
94234 l_component_appl_id INTEGER;
94235 l_amb_context_code VARCHAR2(30);
94236 l_entity_code VARCHAR2(30);
94237 l_event_class_code VARCHAR2(30);
94238 l_ae_header_id NUMBER;
94239 l_event_type_code VARCHAR2(30);
94240 l_line_definition_code VARCHAR2(30);
94241 l_line_definition_owner_code VARCHAR2(1);
94242 --
94243 -- adr variables
94244 l_segment VARCHAR2(30);
94245 l_ccid NUMBER;
94246 l_adr_transaction_coa_id NUMBER;
94247 l_adr_accounting_coa_id NUMBER;
94248 l_adr_flexfield_segment_code VARCHAR2(30);
94249 l_adr_flex_value_set_id NUMBER;
94250 l_adr_value_type_code VARCHAR2(30);
94251 l_adr_value_combination_id NUMBER;
94252 l_adr_value_segment_code VARCHAR2(30);
94253
94254 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
94255 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
94256 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
94257 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
94258
94259 -- 4262811 Variables ------------------------------------------------------------------------------------------
94260 l_entered_amt_idx NUMBER;
94261 l_accted_amt_idx NUMBER;
94262 l_acc_rev_flag VARCHAR2(1);
94263 l_accrual_line_num NUMBER;
94264 l_tmp_amt NUMBER;
94265 l_acc_rev_natural_side_code VARCHAR2(1);
94266
94267 l_num_entries NUMBER;
94268 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
94269 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
94270 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
94271 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
94272 l_recog_line_1 NUMBER;
94273 l_recog_line_2 NUMBER;
94274
94275 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
94276 l_bflow_applied_to_amt NUMBER; -- 5132302
94277 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
94278
94279 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94280
94281 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
94282 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
94283
94284 ---------------------------------------------------------------------------------------------------------------
94285
94286
94287 --
94288 -- bulk performance
94289 --
94290 l_balance_type_code VARCHAR2(1);
94291 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
94292 l_log_module VARCHAR2(240);
94293
94294 --
94295 -- Upgrade strategy
94296 --
94297 l_actual_upg_option VARCHAR2(1);
94298 l_enc_upg_option VARCHAR2(1);
94299
94300 --
94301 BEGIN
94302 --
94303 IF g_log_enabled THEN
94304 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_172';
94305 END IF;
94306 --
94307 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94308
94309 trace
94310 (p_msg => 'BEGIN of AcctLineType_172'
94311 ,p_level => C_LEVEL_PROCEDURE
94312 ,p_module => l_log_module);
94313
94314 END IF;
94315 --
94316 l_component_type := 'AMB_JLT';
94317 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
94318 l_component_type_code := 'S';
94319 l_component_appl_id := 707;
94320 l_amb_context_code := 'DEFAULT';
94321 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
94322 l_event_class_code := 'PURCHASE_ORDER';
94323 l_event_type_code := 'PURCHASE_ORDER_ALL';
94324 l_line_definition_owner_code := 'S';
94325 l_line_definition_code := 'PURCHASE_ORDER';
94326 --
94327 l_balance_type_code := 'A';
94328 l_segment := NULL;
94329 l_ccid := NULL;
94330 l_adr_transaction_coa_id := NULL;
94331 l_adr_accounting_coa_id := NULL;
94332 l_adr_flexfield_segment_code := NULL;
94333 l_adr_flex_value_set_id := NULL;
94334 l_adr_value_type_code := NULL;
94335 l_adr_value_combination_id := NULL;
94336 l_adr_value_segment_code := NULL;
94337
94338 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
94339 l_bflow_class_code := ''; -- 4219869 Business Flow
94340 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
94341 l_budgetary_control_flag := 'N';
94342
94343 l_bflow_applied_to_amt_idx := NULL; -- 5132302
94344 l_bflow_applied_to_amt := NULL; -- 5132302
94345 l_entered_amt_idx := NULL; -- 4262811
94346 l_accted_amt_idx := NULL; -- 4262811
94347 l_acc_rev_flag := NULL; -- 4262811
94348 l_accrual_line_num := NULL; -- 4262811
94349 l_tmp_amt := NULL; -- 4262811
94350 --
94351
94352 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94353 l_balance_type_code <> 'B' THEN
94354 IF NVL(p_source_24,9E125) = 3
94355 THEN
94356
94357 --
94358 XLA_AE_LINES_PKG.SetNewLine;
94359
94360 p_balance_type_code := l_balance_type_code;
94361 -- set the flag so later we will know whether the gain loss line needs to be created
94362
94363 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94364 p_actual_flag :='A';
94365 END IF;
94366
94367 --
94368 -- bulk performance
94369 --
94370 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94371 p_header_num => 0); -- 4262811
94372 --
94373 -- set accounting line options
94374 --
94375 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94376 p_natural_side_code => 'D'
94377 , p_gain_or_loss_flag => 'N'
94378 , p_gl_transfer_mode_code => 'S'
94379 , p_acct_entry_type_code => 'A'
94380 , p_switch_side_flag => 'Y'
94381 , p_merge_duplicate_code => 'N'
94382 );
94383 --
94384 l_acc_rev_natural_side_code := 'C'; -- 4262811
94385 --
94386 --
94387 -- set accounting line type info
94388 --
94389 xla_ae_lines_pkg.SetAcctLineType
94390 (p_component_type => l_component_type
94391 ,p_event_type_code => l_event_type_code
94392 ,p_line_definition_owner_code => l_line_definition_owner_code
94393 ,p_line_definition_code => l_line_definition_code
94394 ,p_accounting_line_code => l_component_code
94395 ,p_accounting_line_type_code => l_component_type_code
94396 ,p_accounting_line_appl_id => l_component_appl_id
94397 ,p_amb_context_code => l_amb_context_code
94398 ,p_entity_code => l_entity_code
94399 ,p_event_class_code => l_event_class_code);
94400 --
94401 -- set accounting class
94402 --
94403 xla_ae_lines_pkg.SetAcctClass(
94404 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
94405 , p_ae_header_id => l_ae_header_id
94406 );
94407
94408 --
94409 -- set rounding class
94410 --
94411 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94412 'MATERIAL_OVERHEAD_ABSORPTION';
94413
94414 --
94415 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
94416 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
94417 --
94418 -- bulk performance
94419 --
94420 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
94421
94422 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
94423 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
94424
94425 -- 4955764
94426 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94427 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
94428
94429 -- 4458381 Public Sector Enh
94430
94431 --
94432 -- set accounting attributes for the line type
94433 --
94434 l_entered_amt_idx := 17;
94435 l_accted_amt_idx := 22;
94436 l_bflow_applied_to_amt_idx := NULL; -- 5132302
94437 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
94438 l_rec_acct_attrs.array_num_value(1) := p_source_6;
94439 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
94440 l_rec_acct_attrs.array_char_value(2) := p_source_7;
94441 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
94442 l_rec_acct_attrs.array_char_value(3) := p_source_8;
94443 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
94444 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
94445 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
94446 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
94447 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
94448 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
94449 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
94450 l_rec_acct_attrs.array_char_value(7) := p_source_12;
94451 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
94452 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
94453 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
94454 l_rec_acct_attrs.array_num_value(9) := p_source_14;
94455 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
94456 l_rec_acct_attrs.array_char_value(10) := p_source_15;
94457 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
94458 l_rec_acct_attrs.array_num_value(11) := p_source_16;
94459 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
94460 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
94461 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
94462 l_rec_acct_attrs.array_num_value(13) := p_source_14;
94463 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
94464 l_rec_acct_attrs.array_char_value(14) := p_source_15;
94465 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
94466 l_rec_acct_attrs.array_num_value(15) := p_source_16;
94467 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
94468 l_rec_acct_attrs.array_char_value(16) := p_source_27;
94469 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
94470 l_rec_acct_attrs.array_num_value(17) := p_source_18;
94471 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
94472 l_rec_acct_attrs.array_char_value(18) := p_source_15;
94473 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
94474 l_rec_acct_attrs.array_date_value(19) := p_source_19;
94475 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
94476 l_rec_acct_attrs.array_num_value(20) := p_source_20;
94477 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
94478 l_rec_acct_attrs.array_char_value(21) := p_source_21;
94479 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
94480 l_rec_acct_attrs.array_num_value(22) := p_source_22;
94481 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
94482 l_rec_acct_attrs.array_num_value(23) := p_source_23;
94483 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
94484 l_rec_acct_attrs.array_num_value(24) := p_source_23;
94485
94486 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
94487 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
94488
94489 ---------------------------------------------------------------------------------------------------------------
94490 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
94491 ---------------------------------------------------------------------------------------------------------------
94492 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
94493
94494 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94495 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
94496
94497 IF xla_accounting_cache_pkg.GetValueChar
94498 (p_source_code => 'LEDGER_CATEGORY_CODE'
94499 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
94500 AND l_bflow_method_code = 'PRIOR_ENTRY'
94501 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
94502 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
94503 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
94504 )
94505 THEN
94506 xla_ae_lines_pkg.BflowUpgEntry
94507 (p_business_method_code => l_bflow_method_code
94508 ,p_business_class_code => l_bflow_class_code
94509 ,p_balance_type => l_balance_type_code);
94510 ELSE
94511 NULL;
94512 -- No business flow processing for business flow method of NONE.
94513 END IF;
94514
94515 --
94516 -- call analytical criteria
94517 --
94518
94519 --
94520 -- call description
94521 --
94522 -- No description or it is inherited.
94523 --
94524 -- call ADRs
94525 -- Bug 4922099
94526 --
94527 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94528 (NVL(l_actual_upg_option, 'N') = 'O') OR
94529 (NVL(l_enc_upg_option, 'N') = 'O')
94530 )
94531 THEN
94532 NULL;
94533 --
94534 --
94535
94536 l_ccid := AcctDerRule_4(
94537 p_application_id => p_application_id
94538 , p_ae_header_id => l_ae_header_id
94539 , p_source_4 => p_source_4
94540 , x_transaction_coa_id => l_adr_transaction_coa_id
94541 , x_accounting_coa_id => l_adr_accounting_coa_id
94542 , x_value_type_code => l_adr_value_type_code
94543 , p_side => 'NA'
94544 );
94545
94546 xla_ae_lines_pkg.set_ccid(
94547 p_code_combination_id => l_ccid
94548 , p_value_type_code => l_adr_value_type_code
94549 , p_transaction_coa_id => l_adr_transaction_coa_id
94550 , p_accounting_coa_id => l_adr_accounting_coa_id
94551 , p_adr_code => 'CST_DEFAULT'
94552 , p_adr_type_code => 'S'
94553 , p_component_type => l_component_type
94554 , p_component_code => l_component_code
94555 , p_component_type_code => l_component_type_code
94556 , p_component_appl_id => l_component_appl_id
94557 , p_amb_context_code => l_amb_context_code
94558 , p_side => 'NA'
94559 );
94560
94561
94562 --
94563 --
94564 END IF;
94565 --
94566 -- Bug 4922099
94567 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
94568 (NVL(l_enc_upg_option, 'N') = 'O')
94569 ) AND
94570 (l_bflow_method_code = 'PRIOR_ENTRY')
94571 )
94572 THEN
94573 IF
94574 --
94575 1 = 2
94576 --
94577 THEN
94578 xla_accounting_err_pkg.build_message
94579 (p_appli_s_name => 'XLA'
94580 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94581 ,p_token_1 => 'LINE_NUMBER'
94582 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
94583 ,p_token_2 => 'LINE_TYPE_NAME'
94584 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
94585 l_component_type
94586 ,l_component_code
94587 ,l_component_type_code
94588 ,l_component_appl_id
94589 ,l_amb_context_code
94590 ,l_entity_code
94591 ,l_event_class_code
94592 )
94593 ,p_token_3 => 'OWNER'
94594 ,p_value_3 => xla_lookups_pkg.get_meaning(
94595 p_lookup_type => 'XLA_OWNER_TYPE'
94596 ,p_lookup_code => l_component_type_code
94597 )
94598 ,p_token_4 => 'PRODUCT_NAME'
94599 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
94600 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
94601 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
94602 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
94603 ,p_ae_header_id => NULL
94604 );
94605
94606 IF (C_LEVEL_ERROR>= g_log_level) THEN
94607 trace
94608 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
94609 ,p_level => C_LEVEL_ERROR
94610 ,p_module => l_log_module);
94611 END IF;
94612 END IF;
94613 END IF;
94614 --
94615 --
94616 ------------------------------------------------------------------------------------------------
94617 -- 4219869 Business Flow
94618 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
94619 -- Prior Entry. Currently, the following code is always generated.
94620 ------------------------------------------------------------------------------------------------
94621 XLA_AE_LINES_PKG.ValidateCurrentLine;
94622
94623 ------------------------------------------------------------------------------------
94624 -- 4219869 Business Flow
94625 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
94626 ------------------------------------------------------------------------------------
94627 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94628
94629 ----------------------------------------------------------------------------------
94630 -- 4219869 Business Flow
94631 -- Update journal entry status -- Need to generate this within IF <condition>
94632 ----------------------------------------------------------------------------------
94633 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94634 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
94635 ,p_balance_type_code => l_balance_type_code
94636 );
94637
94638 -------------------------------------------------------------------------------------------
94639 -- 4262811 - Generate the Accrual Reversal lines
94640 -------------------------------------------------------------------------------------------
94641 BEGIN
94642 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
94643 (g_array_event(p_event_id).array_value_num('header_index'));
94644 IF l_acc_rev_flag IS NULL THEN
94645 l_acc_rev_flag := 'N';
94646 END IF;
94647 EXCEPTION
94648 WHEN OTHERS THEN
94649 l_acc_rev_flag := 'N';
94650 END;
94651 --
94652 IF (l_acc_rev_flag = 'Y') THEN
94653
94654 -- 4645092 ------------------------------------------------------------------------------
94655 -- To allow MPA report to determine if it should generate report process
94656 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
94657 ------------------------------------------------------------------------------------------
94658
94659 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
94660 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
94661 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
94662 -- call ADRs
94663 -- Bug 4922099
94664 --
94665 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
94666 (NVL(l_actual_upg_option, 'N') = 'O') OR
94667 (NVL(l_enc_upg_option, 'N') = 'O')
94668 )
94669 THEN
94670 NULL;
94671 --
94672 --
94673
94674 l_ccid := AcctDerRule_4(
94675 p_application_id => p_application_id
94676 , p_ae_header_id => l_ae_header_id
94677 , p_source_4 => p_source_4
94678 , x_transaction_coa_id => l_adr_transaction_coa_id
94679 , x_accounting_coa_id => l_adr_accounting_coa_id
94680 , x_value_type_code => l_adr_value_type_code
94681 , p_side => 'NA'
94682 );
94683
94684 xla_ae_lines_pkg.set_ccid(
94685 p_code_combination_id => l_ccid
94686 , p_value_type_code => l_adr_value_type_code
94687 , p_transaction_coa_id => l_adr_transaction_coa_id
94688 , p_accounting_coa_id => l_adr_accounting_coa_id
94689 , p_adr_code => 'CST_DEFAULT'
94690 , p_adr_type_code => 'S'
94691 , p_component_type => l_component_type
94692 , p_component_code => l_component_code
94693 , p_component_type_code => l_component_type_code
94694 , p_component_appl_id => l_component_appl_id
94695 , p_amb_context_code => l_amb_context_code
94696 , p_side => 'NA'
94697 );
94698
94699
94700 --
94701 --
94702 END IF;
94703
94704 --
94705 -- Update the line information that should be overwritten
94706 --
94707 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
94708 p_header_num => 1);
94709 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
94710
94711 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
94712
94713 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
94714 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
94715 END IF;
94716
94717 --
94718 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
94719 --
94720 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
94721 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
94722 ELSE
94723 ---------------------------------------------------------------------------------------------------
94724 -- 4262811a Switch Sign
94725 ---------------------------------------------------------------------------------------------------
94726 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
94727 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94728 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94729 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
94730 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94731 -- 5132302
94732 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
94733 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
94734
94735 END IF;
94736
94737 -- 4955764
94738 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
94739 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
94740
94741
94742 XLA_AE_LINES_PKG.ValidateCurrentLine;
94743 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
94744
94745 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
94746 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
94747 ,p_balance_type_code => l_balance_type_code);
94748
94749 END IF;
94750
94751 -----------------------------------------------------------------------------------------
94752 -- 4262811 Multiperiod Accounting
94753 -----------------------------------------------------------------------------------------
94754 -- No MPA option is assigned.
94755
94756
94757 END IF;
94758 END IF;
94759 --
94760
94761 --
94762 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94763 trace
94764 (p_msg => 'END of AcctLineType_172'
94765 ,p_level => C_LEVEL_PROCEDURE
94766 ,p_module => l_log_module);
94767 END IF;
94768 --
94769 EXCEPTION
94770 WHEN xla_exceptions_pkg.application_exception THEN
94771 RAISE;
94772 WHEN OTHERS THEN
94773 xla_exceptions_pkg.raise_message
94774 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_172');
94775 END AcctLineType_172;
94776 --
94777
94778 ---------------------------------------
94779 --
94780 -- PRIVATE FUNCTION
94781 -- AcctLineType_173
94782 --
94783 ---------------------------------------
94784 PROCEDURE AcctLineType_173 (
94785 p_application_id IN NUMBER
94786 ,p_event_id IN NUMBER
94787 ,p_calculate_acctd_flag IN VARCHAR2
94788 ,p_calculate_g_l_flag IN VARCHAR2
94789 ,p_actual_flag IN OUT VARCHAR2
94790 ,p_balance_type_code OUT VARCHAR2
94791 ,p_gain_or_loss_ref OUT VARCHAR2
94792
94793 --Cost Management Default Account
94794 , p_source_4 IN NUMBER
94795 --DISTRIBUTION_IDENTIFIER
94796 , p_source_11 IN NUMBER
94797 --Distribution Type
94798 , p_source_12 IN VARCHAR2
94799 , p_source_12_meaning IN VARCHAR2
94800 --Entered Currency Code
94801 , p_source_15 IN VARCHAR2
94802 --Entered Amount
94803 , p_source_18 IN NUMBER
94804 --Currency Conversion Date
94805 , p_source_19 IN DATE
94806 --Currency Conversion Rate
94807 , p_source_20 IN NUMBER
94808 --Currency Conversion Type
94809 , p_source_21 IN VARCHAR2
94810 --Accounted Amount
94811 , p_source_22 IN NUMBER
94812 --Accounting Line Type
94813 , p_source_24 IN NUMBER
94814 )
94815 IS
94816
94817 l_component_type VARCHAR2(80);
94818 l_component_code VARCHAR2(30);
94819 l_component_type_code VARCHAR2(1);
94820 l_component_appl_id INTEGER;
94821 l_amb_context_code VARCHAR2(30);
94822 l_entity_code VARCHAR2(30);
94823 l_event_class_code VARCHAR2(30);
94824 l_ae_header_id NUMBER;
94825 l_event_type_code VARCHAR2(30);
94826 l_line_definition_code VARCHAR2(30);
94827 l_line_definition_owner_code VARCHAR2(1);
94828 --
94829 -- adr variables
94830 l_segment VARCHAR2(30);
94831 l_ccid NUMBER;
94832 l_adr_transaction_coa_id NUMBER;
94833 l_adr_accounting_coa_id NUMBER;
94834 l_adr_flexfield_segment_code VARCHAR2(30);
94835 l_adr_flex_value_set_id NUMBER;
94836 l_adr_value_type_code VARCHAR2(30);
94837 l_adr_value_combination_id NUMBER;
94838 l_adr_value_segment_code VARCHAR2(30);
94839
94840 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
94841 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
94842 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
94843 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
94844
94845 -- 4262811 Variables ------------------------------------------------------------------------------------------
94846 l_entered_amt_idx NUMBER;
94847 l_accted_amt_idx NUMBER;
94848 l_acc_rev_flag VARCHAR2(1);
94849 l_accrual_line_num NUMBER;
94850 l_tmp_amt NUMBER;
94851 l_acc_rev_natural_side_code VARCHAR2(1);
94852
94853 l_num_entries NUMBER;
94854 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
94855 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
94856 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
94857 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
94858 l_recog_line_1 NUMBER;
94859 l_recog_line_2 NUMBER;
94860
94861 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
94862 l_bflow_applied_to_amt NUMBER; -- 5132302
94863 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
94864
94865 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
94866
94867 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
94868 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
94869
94870 ---------------------------------------------------------------------------------------------------------------
94871
94872
94873 --
94874 -- bulk performance
94875 --
94876 l_balance_type_code VARCHAR2(1);
94877 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
94878 l_log_module VARCHAR2(240);
94879
94880 --
94881 -- Upgrade strategy
94882 --
94883 l_actual_upg_option VARCHAR2(1);
94884 l_enc_upg_option VARCHAR2(1);
94885
94886 --
94887 BEGIN
94888 --
94889 IF g_log_enabled THEN
94890 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_173';
94891 END IF;
94892 --
94893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94894
94895 trace
94896 (p_msg => 'BEGIN of AcctLineType_173'
94897 ,p_level => C_LEVEL_PROCEDURE
94898 ,p_module => l_log_module);
94899
94900 END IF;
94901 --
94902 l_component_type := 'AMB_JLT';
94903 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
94904 l_component_type_code := 'S';
94905 l_component_appl_id := 707;
94906 l_amb_context_code := 'DEFAULT';
94907 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
94908 l_event_class_code := 'USER_DEFINE';
94909 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
94910 l_line_definition_owner_code := 'S';
94911 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
94912 --
94913 l_balance_type_code := 'A';
94914 l_segment := NULL;
94915 l_ccid := NULL;
94916 l_adr_transaction_coa_id := NULL;
94917 l_adr_accounting_coa_id := NULL;
94918 l_adr_flexfield_segment_code := NULL;
94919 l_adr_flex_value_set_id := NULL;
94920 l_adr_value_type_code := NULL;
94921 l_adr_value_combination_id := NULL;
94922 l_adr_value_segment_code := NULL;
94923
94924 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
94925 l_bflow_class_code := ''; -- 4219869 Business Flow
94926 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
94927 l_budgetary_control_flag := 'N';
94928
94929 l_bflow_applied_to_amt_idx := NULL; -- 5132302
94930 l_bflow_applied_to_amt := NULL; -- 5132302
94931 l_entered_amt_idx := NULL; -- 4262811
94932 l_accted_amt_idx := NULL; -- 4262811
94933 l_acc_rev_flag := NULL; -- 4262811
94934 l_accrual_line_num := NULL; -- 4262811
94935 l_tmp_amt := NULL; -- 4262811
94936 --
94937
94938 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
94939 l_balance_type_code <> 'B' THEN
94940 IF NVL(p_source_24,9E125) = 3
94941 THEN
94942
94943 --
94944 XLA_AE_LINES_PKG.SetNewLine;
94945
94946 p_balance_type_code := l_balance_type_code;
94947 -- set the flag so later we will know whether the gain loss line needs to be created
94948
94949 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
94950 p_actual_flag :='A';
94951 END IF;
94952
94953 --
94954 -- bulk performance
94955 --
94956 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
94957 p_header_num => 0); -- 4262811
94958 --
94959 -- set accounting line options
94960 --
94961 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
94962 p_natural_side_code => 'D'
94963 , p_gain_or_loss_flag => 'N'
94964 , p_gl_transfer_mode_code => 'S'
94965 , p_acct_entry_type_code => 'A'
94966 , p_switch_side_flag => 'Y'
94967 , p_merge_duplicate_code => 'N'
94968 );
94969 --
94970 l_acc_rev_natural_side_code := 'C'; -- 4262811
94971 --
94972 --
94973 -- set accounting line type info
94974 --
94975 xla_ae_lines_pkg.SetAcctLineType
94976 (p_component_type => l_component_type
94977 ,p_event_type_code => l_event_type_code
94978 ,p_line_definition_owner_code => l_line_definition_owner_code
94979 ,p_line_definition_code => l_line_definition_code
94980 ,p_accounting_line_code => l_component_code
94981 ,p_accounting_line_type_code => l_component_type_code
94982 ,p_accounting_line_appl_id => l_component_appl_id
94983 ,p_amb_context_code => l_amb_context_code
94984 ,p_entity_code => l_entity_code
94985 ,p_event_class_code => l_event_class_code);
94986 --
94987 -- set accounting class
94988 --
94989 xla_ae_lines_pkg.SetAcctClass(
94990 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
94991 , p_ae_header_id => l_ae_header_id
94992 );
94993
94994 --
94995 -- set rounding class
94996 --
94997 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
94998 'MATERIAL_OVERHEAD_ABSORPTION';
94999
95000 --
95001 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95002 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95003 --
95004 -- bulk performance
95005 --
95006 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95007
95008 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95009 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95010
95011 -- 4955764
95012 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95013 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95014
95015 -- 4458381 Public Sector Enh
95016
95017 --
95018 -- set accounting attributes for the line type
95019 --
95020 l_entered_amt_idx := 3;
95021 l_accted_amt_idx := 8;
95022 l_bflow_applied_to_amt_idx := NULL; -- 5132302
95023 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95024 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
95025 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95026 l_rec_acct_attrs.array_char_value(2) := p_source_12;
95027 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95028 l_rec_acct_attrs.array_num_value(3) := p_source_18;
95029 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95030 l_rec_acct_attrs.array_char_value(4) := p_source_15;
95031 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95032 l_rec_acct_attrs.array_date_value(5) := p_source_19;
95033 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95034 l_rec_acct_attrs.array_num_value(6) := p_source_20;
95035 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95036 l_rec_acct_attrs.array_char_value(7) := p_source_21;
95037 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95038 l_rec_acct_attrs.array_num_value(8) := p_source_22;
95039
95040 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95041 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95042
95043 ---------------------------------------------------------------------------------------------------------------
95044 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95045 ---------------------------------------------------------------------------------------------------------------
95046 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95047
95048 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95049 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95050
95051 IF xla_accounting_cache_pkg.GetValueChar
95052 (p_source_code => 'LEDGER_CATEGORY_CODE'
95053 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95054 AND l_bflow_method_code = 'PRIOR_ENTRY'
95055 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95056 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95057 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95058 )
95059 THEN
95060 xla_ae_lines_pkg.BflowUpgEntry
95061 (p_business_method_code => l_bflow_method_code
95062 ,p_business_class_code => l_bflow_class_code
95063 ,p_balance_type => l_balance_type_code);
95064 ELSE
95065 NULL;
95066 -- No business flow processing for business flow method of NONE.
95067 END IF;
95068
95069 --
95070 -- call analytical criteria
95071 --
95072
95073 --
95074 -- call description
95075 --
95076 -- No description or it is inherited.
95077 --
95078 -- call ADRs
95079 -- Bug 4922099
95080 --
95081 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95082 (NVL(l_actual_upg_option, 'N') = 'O') OR
95083 (NVL(l_enc_upg_option, 'N') = 'O')
95084 )
95085 THEN
95086 NULL;
95087 --
95088 --
95089
95090 l_ccid := AcctDerRule_4(
95091 p_application_id => p_application_id
95092 , p_ae_header_id => l_ae_header_id
95093 , p_source_4 => p_source_4
95094 , x_transaction_coa_id => l_adr_transaction_coa_id
95095 , x_accounting_coa_id => l_adr_accounting_coa_id
95096 , x_value_type_code => l_adr_value_type_code
95097 , p_side => 'NA'
95098 );
95099
95100 xla_ae_lines_pkg.set_ccid(
95101 p_code_combination_id => l_ccid
95102 , p_value_type_code => l_adr_value_type_code
95103 , p_transaction_coa_id => l_adr_transaction_coa_id
95104 , p_accounting_coa_id => l_adr_accounting_coa_id
95105 , p_adr_code => 'CST_DEFAULT'
95106 , p_adr_type_code => 'S'
95107 , p_component_type => l_component_type
95108 , p_component_code => l_component_code
95109 , p_component_type_code => l_component_type_code
95110 , p_component_appl_id => l_component_appl_id
95111 , p_amb_context_code => l_amb_context_code
95112 , p_side => 'NA'
95113 );
95114
95115
95116 --
95117 --
95118 END IF;
95119 --
95120 -- Bug 4922099
95121 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95122 (NVL(l_enc_upg_option, 'N') = 'O')
95123 ) AND
95124 (l_bflow_method_code = 'PRIOR_ENTRY')
95125 )
95126 THEN
95127 IF
95128 --
95129 1 = 2
95130 --
95131 THEN
95132 xla_accounting_err_pkg.build_message
95133 (p_appli_s_name => 'XLA'
95134 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95135 ,p_token_1 => 'LINE_NUMBER'
95136 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
95137 ,p_token_2 => 'LINE_TYPE_NAME'
95138 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
95139 l_component_type
95140 ,l_component_code
95141 ,l_component_type_code
95142 ,l_component_appl_id
95143 ,l_amb_context_code
95144 ,l_entity_code
95145 ,l_event_class_code
95146 )
95147 ,p_token_3 => 'OWNER'
95148 ,p_value_3 => xla_lookups_pkg.get_meaning(
95149 p_lookup_type => 'XLA_OWNER_TYPE'
95150 ,p_lookup_code => l_component_type_code
95151 )
95152 ,p_token_4 => 'PRODUCT_NAME'
95153 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95154 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95155 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95156 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95157 ,p_ae_header_id => NULL
95158 );
95159
95160 IF (C_LEVEL_ERROR>= g_log_level) THEN
95161 trace
95162 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95163 ,p_level => C_LEVEL_ERROR
95164 ,p_module => l_log_module);
95165 END IF;
95166 END IF;
95167 END IF;
95168 --
95169 --
95170 ------------------------------------------------------------------------------------------------
95171 -- 4219869 Business Flow
95172 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95173 -- Prior Entry. Currently, the following code is always generated.
95174 ------------------------------------------------------------------------------------------------
95175 XLA_AE_LINES_PKG.ValidateCurrentLine;
95176
95177 ------------------------------------------------------------------------------------
95178 -- 4219869 Business Flow
95179 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95180 ------------------------------------------------------------------------------------
95181 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95182
95183 ----------------------------------------------------------------------------------
95184 -- 4219869 Business Flow
95185 -- Update journal entry status -- Need to generate this within IF <condition>
95186 ----------------------------------------------------------------------------------
95187 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95188 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95189 ,p_balance_type_code => l_balance_type_code
95190 );
95191
95192 -------------------------------------------------------------------------------------------
95193 -- 4262811 - Generate the Accrual Reversal lines
95194 -------------------------------------------------------------------------------------------
95195 BEGIN
95196 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95197 (g_array_event(p_event_id).array_value_num('header_index'));
95198 IF l_acc_rev_flag IS NULL THEN
95199 l_acc_rev_flag := 'N';
95200 END IF;
95201 EXCEPTION
95202 WHEN OTHERS THEN
95203 l_acc_rev_flag := 'N';
95204 END;
95205 --
95206 IF (l_acc_rev_flag = 'Y') THEN
95207
95208 -- 4645092 ------------------------------------------------------------------------------
95209 -- To allow MPA report to determine if it should generate report process
95210 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95211 ------------------------------------------------------------------------------------------
95212
95213 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95214 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95215 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
95216 -- call ADRs
95217 -- Bug 4922099
95218 --
95219 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95220 (NVL(l_actual_upg_option, 'N') = 'O') OR
95221 (NVL(l_enc_upg_option, 'N') = 'O')
95222 )
95223 THEN
95224 NULL;
95225 --
95226 --
95227
95228 l_ccid := AcctDerRule_4(
95229 p_application_id => p_application_id
95230 , p_ae_header_id => l_ae_header_id
95231 , p_source_4 => p_source_4
95232 , x_transaction_coa_id => l_adr_transaction_coa_id
95233 , x_accounting_coa_id => l_adr_accounting_coa_id
95234 , x_value_type_code => l_adr_value_type_code
95235 , p_side => 'NA'
95236 );
95237
95238 xla_ae_lines_pkg.set_ccid(
95239 p_code_combination_id => l_ccid
95240 , p_value_type_code => l_adr_value_type_code
95241 , p_transaction_coa_id => l_adr_transaction_coa_id
95242 , p_accounting_coa_id => l_adr_accounting_coa_id
95243 , p_adr_code => 'CST_DEFAULT'
95244 , p_adr_type_code => 'S'
95245 , p_component_type => l_component_type
95246 , p_component_code => l_component_code
95247 , p_component_type_code => l_component_type_code
95248 , p_component_appl_id => l_component_appl_id
95249 , p_amb_context_code => l_amb_context_code
95250 , p_side => 'NA'
95251 );
95252
95253
95254 --
95255 --
95256 END IF;
95257
95258 --
95259 -- Update the line information that should be overwritten
95260 --
95261 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95262 p_header_num => 1);
95263 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
95264
95265 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95266
95267 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
95268 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95269 END IF;
95270
95271 --
95272 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95273 --
95274 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95275 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
95276 ELSE
95277 ---------------------------------------------------------------------------------------------------
95278 -- 4262811a Switch Sign
95279 ---------------------------------------------------------------------------------------------------
95280 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
95281 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95282 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95283 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95284 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95285 -- 5132302
95286 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95287 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95288
95289 END IF;
95290
95291 -- 4955764
95292 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95293 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95294
95295
95296 XLA_AE_LINES_PKG.ValidateCurrentLine;
95297 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95298
95299 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95300 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95301 ,p_balance_type_code => l_balance_type_code);
95302
95303 END IF;
95304
95305 -----------------------------------------------------------------------------------------
95306 -- 4262811 Multiperiod Accounting
95307 -----------------------------------------------------------------------------------------
95308 -- No MPA option is assigned.
95309
95310
95311 END IF;
95312 END IF;
95313 --
95314
95315 --
95316 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95317 trace
95318 (p_msg => 'END of AcctLineType_173'
95319 ,p_level => C_LEVEL_PROCEDURE
95320 ,p_module => l_log_module);
95321 END IF;
95322 --
95323 EXCEPTION
95324 WHEN xla_exceptions_pkg.application_exception THEN
95325 RAISE;
95326 WHEN OTHERS THEN
95327 xla_exceptions_pkg.raise_message
95328 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_173');
95329 END AcctLineType_173;
95330 --
95331
95332 ---------------------------------------
95333 --
95334 -- PRIVATE FUNCTION
95335 -- AcctLineType_174
95336 --
95337 ---------------------------------------
95338 PROCEDURE AcctLineType_174 (
95339 p_application_id IN NUMBER
95340 ,p_event_id IN NUMBER
95341 ,p_calculate_acctd_flag IN VARCHAR2
95342 ,p_calculate_g_l_flag IN VARCHAR2
95343 ,p_actual_flag IN OUT VARCHAR2
95344 ,p_balance_type_code OUT VARCHAR2
95345 ,p_gain_or_loss_ref OUT VARCHAR2
95346
95347 --Cost Management Default Account
95348 , p_source_4 IN NUMBER
95349 --DISTRIBUTION_IDENTIFIER
95350 , p_source_11 IN NUMBER
95351 --Distribution Type
95352 , p_source_12 IN VARCHAR2
95353 , p_source_12_meaning IN VARCHAR2
95354 --Entered Currency Code
95355 , p_source_15 IN VARCHAR2
95356 --Entered Amount
95357 , p_source_18 IN NUMBER
95358 --Currency Conversion Date
95359 , p_source_19 IN DATE
95360 --Currency Conversion Rate
95361 , p_source_20 IN NUMBER
95362 --Currency Conversion Type
95363 , p_source_21 IN VARCHAR2
95364 --Accounted Amount
95365 , p_source_22 IN NUMBER
95366 --Accounting Line Type
95367 , p_source_24 IN NUMBER
95368 )
95369 IS
95370
95371 l_component_type VARCHAR2(80);
95372 l_component_code VARCHAR2(30);
95373 l_component_type_code VARCHAR2(1);
95374 l_component_appl_id INTEGER;
95375 l_amb_context_code VARCHAR2(30);
95376 l_entity_code VARCHAR2(30);
95377 l_event_class_code VARCHAR2(30);
95378 l_ae_header_id NUMBER;
95379 l_event_type_code VARCHAR2(30);
95380 l_line_definition_code VARCHAR2(30);
95381 l_line_definition_owner_code VARCHAR2(1);
95382 --
95383 -- adr variables
95384 l_segment VARCHAR2(30);
95385 l_ccid NUMBER;
95386 l_adr_transaction_coa_id NUMBER;
95387 l_adr_accounting_coa_id NUMBER;
95388 l_adr_flexfield_segment_code VARCHAR2(30);
95389 l_adr_flex_value_set_id NUMBER;
95390 l_adr_value_type_code VARCHAR2(30);
95391 l_adr_value_combination_id NUMBER;
95392 l_adr_value_segment_code VARCHAR2(30);
95393
95394 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
95395 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
95396 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
95397 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
95398
95399 -- 4262811 Variables ------------------------------------------------------------------------------------------
95400 l_entered_amt_idx NUMBER;
95401 l_accted_amt_idx NUMBER;
95402 l_acc_rev_flag VARCHAR2(1);
95403 l_accrual_line_num NUMBER;
95404 l_tmp_amt NUMBER;
95405 l_acc_rev_natural_side_code VARCHAR2(1);
95406
95407 l_num_entries NUMBER;
95408 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
95409 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
95410 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
95411 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
95412 l_recog_line_1 NUMBER;
95413 l_recog_line_2 NUMBER;
95414
95415 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
95416 l_bflow_applied_to_amt NUMBER; -- 5132302
95417 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
95418
95419 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95420
95421 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
95422 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
95423
95424 ---------------------------------------------------------------------------------------------------------------
95425
95426
95427 --
95428 -- bulk performance
95429 --
95430 l_balance_type_code VARCHAR2(1);
95431 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
95432 l_log_module VARCHAR2(240);
95433
95434 --
95435 -- Upgrade strategy
95436 --
95437 l_actual_upg_option VARCHAR2(1);
95438 l_enc_upg_option VARCHAR2(1);
95439
95440 --
95441 BEGIN
95442 --
95443 IF g_log_enabled THEN
95444 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_174';
95445 END IF;
95446 --
95447 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95448
95449 trace
95450 (p_msg => 'BEGIN of AcctLineType_174'
95451 ,p_level => C_LEVEL_PROCEDURE
95452 ,p_module => l_log_module);
95453
95454 END IF;
95455 --
95456 l_component_type := 'AMB_JLT';
95457 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
95458 l_component_type_code := 'S';
95459 l_component_appl_id := 707;
95460 l_amb_context_code := 'DEFAULT';
95461 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
95462 l_event_class_code := 'USER_DEFINE';
95463 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
95464 l_line_definition_owner_code := 'S';
95465 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
95466 --
95467 l_balance_type_code := 'A';
95468 l_segment := NULL;
95469 l_ccid := NULL;
95470 l_adr_transaction_coa_id := NULL;
95471 l_adr_accounting_coa_id := NULL;
95472 l_adr_flexfield_segment_code := NULL;
95473 l_adr_flex_value_set_id := NULL;
95474 l_adr_value_type_code := NULL;
95475 l_adr_value_combination_id := NULL;
95476 l_adr_value_segment_code := NULL;
95477
95478 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
95479 l_bflow_class_code := ''; -- 4219869 Business Flow
95480 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
95481 l_budgetary_control_flag := 'N';
95482
95483 l_bflow_applied_to_amt_idx := NULL; -- 5132302
95484 l_bflow_applied_to_amt := NULL; -- 5132302
95485 l_entered_amt_idx := NULL; -- 4262811
95486 l_accted_amt_idx := NULL; -- 4262811
95487 l_acc_rev_flag := NULL; -- 4262811
95488 l_accrual_line_num := NULL; -- 4262811
95489 l_tmp_amt := NULL; -- 4262811
95490 --
95491
95492 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
95493 l_balance_type_code <> 'B' THEN
95494 IF NVL(p_source_24,9E125) = 3
95495 THEN
95496
95497 --
95498 XLA_AE_LINES_PKG.SetNewLine;
95499
95500 p_balance_type_code := l_balance_type_code;
95501 -- set the flag so later we will know whether the gain loss line needs to be created
95502
95503 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
95504 p_actual_flag :='A';
95505 END IF;
95506
95507 --
95508 -- bulk performance
95509 --
95510 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
95511 p_header_num => 0); -- 4262811
95512 --
95513 -- set accounting line options
95514 --
95515 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
95516 p_natural_side_code => 'D'
95517 , p_gain_or_loss_flag => 'N'
95518 , p_gl_transfer_mode_code => 'S'
95519 , p_acct_entry_type_code => 'A'
95520 , p_switch_side_flag => 'Y'
95521 , p_merge_duplicate_code => 'N'
95522 );
95523 --
95524 l_acc_rev_natural_side_code := 'C'; -- 4262811
95525 --
95526 --
95527 -- set accounting line type info
95528 --
95529 xla_ae_lines_pkg.SetAcctLineType
95530 (p_component_type => l_component_type
95531 ,p_event_type_code => l_event_type_code
95532 ,p_line_definition_owner_code => l_line_definition_owner_code
95533 ,p_line_definition_code => l_line_definition_code
95534 ,p_accounting_line_code => l_component_code
95535 ,p_accounting_line_type_code => l_component_type_code
95536 ,p_accounting_line_appl_id => l_component_appl_id
95537 ,p_amb_context_code => l_amb_context_code
95538 ,p_entity_code => l_entity_code
95539 ,p_event_class_code => l_event_class_code);
95540 --
95541 -- set accounting class
95542 --
95543 xla_ae_lines_pkg.SetAcctClass(
95544 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
95545 , p_ae_header_id => l_ae_header_id
95546 );
95547
95548 --
95549 -- set rounding class
95550 --
95551 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
95552 'MATERIAL_OVERHEAD_ABSORPTION';
95553
95554 --
95555 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
95556 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
95557 --
95558 -- bulk performance
95559 --
95560 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
95561
95562 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
95563 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
95564
95565 -- 4955764
95566 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95567 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
95568
95569 -- 4458381 Public Sector Enh
95570
95571 --
95572 -- set accounting attributes for the line type
95573 --
95574 l_entered_amt_idx := 3;
95575 l_accted_amt_idx := 8;
95576 l_bflow_applied_to_amt_idx := NULL; -- 5132302
95577 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
95578 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
95579 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
95580 l_rec_acct_attrs.array_char_value(2) := p_source_12;
95581 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
95582 l_rec_acct_attrs.array_num_value(3) := p_source_18;
95583 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
95584 l_rec_acct_attrs.array_char_value(4) := p_source_15;
95585 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
95586 l_rec_acct_attrs.array_date_value(5) := p_source_19;
95587 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
95588 l_rec_acct_attrs.array_num_value(6) := p_source_20;
95589 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
95590 l_rec_acct_attrs.array_char_value(7) := p_source_21;
95591 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
95592 l_rec_acct_attrs.array_num_value(8) := p_source_22;
95593
95594 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
95595 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
95596
95597 ---------------------------------------------------------------------------------------------------------------
95598 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
95599 ---------------------------------------------------------------------------------------------------------------
95600 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
95601
95602 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95603 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
95604
95605 IF xla_accounting_cache_pkg.GetValueChar
95606 (p_source_code => 'LEDGER_CATEGORY_CODE'
95607 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
95608 AND l_bflow_method_code = 'PRIOR_ENTRY'
95609 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
95610 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
95611 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
95612 )
95613 THEN
95614 xla_ae_lines_pkg.BflowUpgEntry
95615 (p_business_method_code => l_bflow_method_code
95616 ,p_business_class_code => l_bflow_class_code
95617 ,p_balance_type => l_balance_type_code);
95618 ELSE
95619 NULL;
95620 -- No business flow processing for business flow method of NONE.
95621 END IF;
95622
95623 --
95624 -- call analytical criteria
95625 --
95626
95627 --
95628 -- call description
95629 --
95630 -- No description or it is inherited.
95631 --
95632 -- call ADRs
95633 -- Bug 4922099
95634 --
95635 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95636 (NVL(l_actual_upg_option, 'N') = 'O') OR
95637 (NVL(l_enc_upg_option, 'N') = 'O')
95638 )
95639 THEN
95640 NULL;
95641 --
95642 --
95643
95644 l_ccid := AcctDerRule_4(
95645 p_application_id => p_application_id
95646 , p_ae_header_id => l_ae_header_id
95647 , p_source_4 => p_source_4
95648 , x_transaction_coa_id => l_adr_transaction_coa_id
95649 , x_accounting_coa_id => l_adr_accounting_coa_id
95650 , x_value_type_code => l_adr_value_type_code
95651 , p_side => 'NA'
95652 );
95653
95654 xla_ae_lines_pkg.set_ccid(
95655 p_code_combination_id => l_ccid
95656 , p_value_type_code => l_adr_value_type_code
95657 , p_transaction_coa_id => l_adr_transaction_coa_id
95658 , p_accounting_coa_id => l_adr_accounting_coa_id
95659 , p_adr_code => 'CST_DEFAULT'
95660 , p_adr_type_code => 'S'
95661 , p_component_type => l_component_type
95662 , p_component_code => l_component_code
95663 , p_component_type_code => l_component_type_code
95664 , p_component_appl_id => l_component_appl_id
95665 , p_amb_context_code => l_amb_context_code
95666 , p_side => 'NA'
95667 );
95668
95669
95670 --
95671 --
95672 END IF;
95673 --
95674 -- Bug 4922099
95675 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
95676 (NVL(l_enc_upg_option, 'N') = 'O')
95677 ) AND
95678 (l_bflow_method_code = 'PRIOR_ENTRY')
95679 )
95680 THEN
95681 IF
95682 --
95683 1 = 2
95684 --
95685 THEN
95686 xla_accounting_err_pkg.build_message
95687 (p_appli_s_name => 'XLA'
95688 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95689 ,p_token_1 => 'LINE_NUMBER'
95690 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
95691 ,p_token_2 => 'LINE_TYPE_NAME'
95692 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
95693 l_component_type
95694 ,l_component_code
95695 ,l_component_type_code
95696 ,l_component_appl_id
95697 ,l_amb_context_code
95698 ,l_entity_code
95699 ,l_event_class_code
95700 )
95701 ,p_token_3 => 'OWNER'
95702 ,p_value_3 => xla_lookups_pkg.get_meaning(
95703 p_lookup_type => 'XLA_OWNER_TYPE'
95704 ,p_lookup_code => l_component_type_code
95705 )
95706 ,p_token_4 => 'PRODUCT_NAME'
95707 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
95708 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
95709 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
95710 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
95711 ,p_ae_header_id => NULL
95712 );
95713
95714 IF (C_LEVEL_ERROR>= g_log_level) THEN
95715 trace
95716 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
95717 ,p_level => C_LEVEL_ERROR
95718 ,p_module => l_log_module);
95719 END IF;
95720 END IF;
95721 END IF;
95722 --
95723 --
95724 ------------------------------------------------------------------------------------------------
95725 -- 4219869 Business Flow
95726 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
95727 -- Prior Entry. Currently, the following code is always generated.
95728 ------------------------------------------------------------------------------------------------
95729 XLA_AE_LINES_PKG.ValidateCurrentLine;
95730
95731 ------------------------------------------------------------------------------------
95732 -- 4219869 Business Flow
95733 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
95734 ------------------------------------------------------------------------------------
95735 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95736
95737 ----------------------------------------------------------------------------------
95738 -- 4219869 Business Flow
95739 -- Update journal entry status -- Need to generate this within IF <condition>
95740 ----------------------------------------------------------------------------------
95741 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95742 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
95743 ,p_balance_type_code => l_balance_type_code
95744 );
95745
95746 -------------------------------------------------------------------------------------------
95747 -- 4262811 - Generate the Accrual Reversal lines
95748 -------------------------------------------------------------------------------------------
95749 BEGIN
95750 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
95751 (g_array_event(p_event_id).array_value_num('header_index'));
95752 IF l_acc_rev_flag IS NULL THEN
95753 l_acc_rev_flag := 'N';
95754 END IF;
95755 EXCEPTION
95756 WHEN OTHERS THEN
95757 l_acc_rev_flag := 'N';
95758 END;
95759 --
95760 IF (l_acc_rev_flag = 'Y') THEN
95761
95762 -- 4645092 ------------------------------------------------------------------------------
95763 -- To allow MPA report to determine if it should generate report process
95764 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
95765 ------------------------------------------------------------------------------------------
95766
95767 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
95768 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
95769 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
95770 -- call ADRs
95771 -- Bug 4922099
95772 --
95773 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
95774 (NVL(l_actual_upg_option, 'N') = 'O') OR
95775 (NVL(l_enc_upg_option, 'N') = 'O')
95776 )
95777 THEN
95778 NULL;
95779 --
95780 --
95781
95782 l_ccid := AcctDerRule_4(
95783 p_application_id => p_application_id
95784 , p_ae_header_id => l_ae_header_id
95785 , p_source_4 => p_source_4
95786 , x_transaction_coa_id => l_adr_transaction_coa_id
95787 , x_accounting_coa_id => l_adr_accounting_coa_id
95788 , x_value_type_code => l_adr_value_type_code
95789 , p_side => 'NA'
95790 );
95791
95792 xla_ae_lines_pkg.set_ccid(
95793 p_code_combination_id => l_ccid
95794 , p_value_type_code => l_adr_value_type_code
95795 , p_transaction_coa_id => l_adr_transaction_coa_id
95796 , p_accounting_coa_id => l_adr_accounting_coa_id
95797 , p_adr_code => 'CST_DEFAULT'
95798 , p_adr_type_code => 'S'
95799 , p_component_type => l_component_type
95800 , p_component_code => l_component_code
95801 , p_component_type_code => l_component_type_code
95802 , p_component_appl_id => l_component_appl_id
95803 , p_amb_context_code => l_amb_context_code
95804 , p_side => 'NA'
95805 );
95806
95807
95808 --
95809 --
95810 END IF;
95811
95812 --
95813 -- Update the line information that should be overwritten
95814 --
95815 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
95816 p_header_num => 1);
95817 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
95818
95819 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
95820
95821 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
95822 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
95823 END IF;
95824
95825 --
95826 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
95827 --
95828 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
95829 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
95830 ELSE
95831 ---------------------------------------------------------------------------------------------------
95832 -- 4262811a Switch Sign
95833 ---------------------------------------------------------------------------------------------------
95834 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
95835 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95836 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95837 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
95838 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95839 -- 5132302
95840 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
95841 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
95842
95843 END IF;
95844
95845 -- 4955764
95846 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
95847 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
95848
95849
95850 XLA_AE_LINES_PKG.ValidateCurrentLine;
95851 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
95852
95853 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
95854 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
95855 ,p_balance_type_code => l_balance_type_code);
95856
95857 END IF;
95858
95859 -----------------------------------------------------------------------------------------
95860 -- 4262811 Multiperiod Accounting
95861 -----------------------------------------------------------------------------------------
95862 -- No MPA option is assigned.
95863
95864
95865 END IF;
95866 END IF;
95867 --
95868
95869 --
95870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95871 trace
95872 (p_msg => 'END of AcctLineType_174'
95873 ,p_level => C_LEVEL_PROCEDURE
95874 ,p_module => l_log_module);
95875 END IF;
95876 --
95877 EXCEPTION
95878 WHEN xla_exceptions_pkg.application_exception THEN
95879 RAISE;
95880 WHEN OTHERS THEN
95881 xla_exceptions_pkg.raise_message
95882 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_174');
95883 END AcctLineType_174;
95884 --
95885
95886 ---------------------------------------
95887 --
95888 -- PRIVATE FUNCTION
95889 -- AcctLineType_175
95890 --
95891 ---------------------------------------
95892 PROCEDURE AcctLineType_175 (
95893 p_application_id IN NUMBER
95894 ,p_event_id IN NUMBER
95895 ,p_calculate_acctd_flag IN VARCHAR2
95896 ,p_calculate_g_l_flag IN VARCHAR2
95897 ,p_actual_flag IN OUT VARCHAR2
95898 ,p_balance_type_code OUT VARCHAR2
95899 ,p_gain_or_loss_ref OUT VARCHAR2
95900
95901 --Cost Management Default Account
95902 , p_source_4 IN NUMBER
95903 --DISTRIBUTION_IDENTIFIER
95904 , p_source_11 IN NUMBER
95905 --Distribution Type
95906 , p_source_12 IN VARCHAR2
95907 , p_source_12_meaning IN VARCHAR2
95908 --Entered Currency Code
95909 , p_source_15 IN VARCHAR2
95910 --Entered Amount
95911 , p_source_18 IN NUMBER
95912 --Currency Conversion Date
95913 , p_source_19 IN DATE
95914 --Currency Conversion Rate
95915 , p_source_20 IN NUMBER
95916 --Currency Conversion Type
95917 , p_source_21 IN VARCHAR2
95918 --Accounted Amount
95919 , p_source_22 IN NUMBER
95920 --Accounting Line Type
95921 , p_source_24 IN NUMBER
95922 )
95923 IS
95924
95925 l_component_type VARCHAR2(80);
95926 l_component_code VARCHAR2(30);
95927 l_component_type_code VARCHAR2(1);
95928 l_component_appl_id INTEGER;
95929 l_amb_context_code VARCHAR2(30);
95930 l_entity_code VARCHAR2(30);
95931 l_event_class_code VARCHAR2(30);
95932 l_ae_header_id NUMBER;
95933 l_event_type_code VARCHAR2(30);
95934 l_line_definition_code VARCHAR2(30);
95935 l_line_definition_owner_code VARCHAR2(1);
95936 --
95937 -- adr variables
95938 l_segment VARCHAR2(30);
95939 l_ccid NUMBER;
95940 l_adr_transaction_coa_id NUMBER;
95941 l_adr_accounting_coa_id NUMBER;
95942 l_adr_flexfield_segment_code VARCHAR2(30);
95943 l_adr_flex_value_set_id NUMBER;
95944 l_adr_value_type_code VARCHAR2(30);
95945 l_adr_value_combination_id NUMBER;
95946 l_adr_value_segment_code VARCHAR2(30);
95947
95948 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
95949 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
95950 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
95951 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
95952
95953 -- 4262811 Variables ------------------------------------------------------------------------------------------
95954 l_entered_amt_idx NUMBER;
95955 l_accted_amt_idx NUMBER;
95956 l_acc_rev_flag VARCHAR2(1);
95957 l_accrual_line_num NUMBER;
95958 l_tmp_amt NUMBER;
95959 l_acc_rev_natural_side_code VARCHAR2(1);
95960
95961 l_num_entries NUMBER;
95962 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
95963 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
95964 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
95965 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
95966 l_recog_line_1 NUMBER;
95967 l_recog_line_2 NUMBER;
95968
95969 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
95970 l_bflow_applied_to_amt NUMBER; -- 5132302
95971 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
95972
95973 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
95974
95975 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
95976 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
95977
95978 ---------------------------------------------------------------------------------------------------------------
95979
95980
95981 --
95982 -- bulk performance
95983 --
95984 l_balance_type_code VARCHAR2(1);
95985 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
95986 l_log_module VARCHAR2(240);
95987
95988 --
95989 -- Upgrade strategy
95990 --
95991 l_actual_upg_option VARCHAR2(1);
95992 l_enc_upg_option VARCHAR2(1);
95993
95994 --
95995 BEGIN
95996 --
95997 IF g_log_enabled THEN
95998 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_175';
95999 END IF;
96000 --
96001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96002
96003 trace
96004 (p_msg => 'BEGIN of AcctLineType_175'
96005 ,p_level => C_LEVEL_PROCEDURE
96006 ,p_module => l_log_module);
96007
96008 END IF;
96009 --
96010 l_component_type := 'AMB_JLT';
96011 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
96012 l_component_type_code := 'S';
96013 l_component_appl_id := 707;
96014 l_amb_context_code := 'DEFAULT';
96015 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
96016 l_event_class_code := 'USER_DEFINE';
96017 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
96018 l_line_definition_owner_code := 'S';
96019 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
96020 --
96021 l_balance_type_code := 'A';
96022 l_segment := NULL;
96023 l_ccid := NULL;
96024 l_adr_transaction_coa_id := NULL;
96025 l_adr_accounting_coa_id := NULL;
96026 l_adr_flexfield_segment_code := NULL;
96027 l_adr_flex_value_set_id := NULL;
96028 l_adr_value_type_code := NULL;
96029 l_adr_value_combination_id := NULL;
96030 l_adr_value_segment_code := NULL;
96031
96032 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
96033 l_bflow_class_code := ''; -- 4219869 Business Flow
96034 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
96035 l_budgetary_control_flag := 'N';
96036
96037 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96038 l_bflow_applied_to_amt := NULL; -- 5132302
96039 l_entered_amt_idx := NULL; -- 4262811
96040 l_accted_amt_idx := NULL; -- 4262811
96041 l_acc_rev_flag := NULL; -- 4262811
96042 l_accrual_line_num := NULL; -- 4262811
96043 l_tmp_amt := NULL; -- 4262811
96044 --
96045
96046 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96047 l_balance_type_code <> 'B' THEN
96048 IF NVL(p_source_24,9E125) = 3
96049 THEN
96050
96051 --
96052 XLA_AE_LINES_PKG.SetNewLine;
96053
96054 p_balance_type_code := l_balance_type_code;
96055 -- set the flag so later we will know whether the gain loss line needs to be created
96056
96057 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96058 p_actual_flag :='A';
96059 END IF;
96060
96061 --
96062 -- bulk performance
96063 --
96064 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96065 p_header_num => 0); -- 4262811
96066 --
96067 -- set accounting line options
96068 --
96069 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96070 p_natural_side_code => 'D'
96071 , p_gain_or_loss_flag => 'N'
96072 , p_gl_transfer_mode_code => 'S'
96073 , p_acct_entry_type_code => 'A'
96074 , p_switch_side_flag => 'Y'
96075 , p_merge_duplicate_code => 'N'
96076 );
96077 --
96078 l_acc_rev_natural_side_code := 'C'; -- 4262811
96079 --
96080 --
96081 -- set accounting line type info
96082 --
96083 xla_ae_lines_pkg.SetAcctLineType
96084 (p_component_type => l_component_type
96085 ,p_event_type_code => l_event_type_code
96086 ,p_line_definition_owner_code => l_line_definition_owner_code
96087 ,p_line_definition_code => l_line_definition_code
96088 ,p_accounting_line_code => l_component_code
96089 ,p_accounting_line_type_code => l_component_type_code
96090 ,p_accounting_line_appl_id => l_component_appl_id
96091 ,p_amb_context_code => l_amb_context_code
96092 ,p_entity_code => l_entity_code
96093 ,p_event_class_code => l_event_class_code);
96094 --
96095 -- set accounting class
96096 --
96097 xla_ae_lines_pkg.SetAcctClass(
96098 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
96099 , p_ae_header_id => l_ae_header_id
96100 );
96101
96102 --
96103 -- set rounding class
96104 --
96105 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96106 'MATERIAL_OVERHEAD_ABSORPTION';
96107
96108 --
96109 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96110 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96111 --
96112 -- bulk performance
96113 --
96114 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96115
96116 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96117 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96118
96119 -- 4955764
96120 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96121 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96122
96123 -- 4458381 Public Sector Enh
96124
96125 --
96126 -- set accounting attributes for the line type
96127 --
96128 l_entered_amt_idx := 3;
96129 l_accted_amt_idx := 8;
96130 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96131 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96132 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
96133 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96134 l_rec_acct_attrs.array_char_value(2) := p_source_12;
96135 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96136 l_rec_acct_attrs.array_num_value(3) := p_source_18;
96137 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96138 l_rec_acct_attrs.array_char_value(4) := p_source_15;
96139 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96140 l_rec_acct_attrs.array_date_value(5) := p_source_19;
96141 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96142 l_rec_acct_attrs.array_num_value(6) := p_source_20;
96143 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96144 l_rec_acct_attrs.array_char_value(7) := p_source_21;
96145 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96146 l_rec_acct_attrs.array_num_value(8) := p_source_22;
96147
96148 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96149 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96150
96151 ---------------------------------------------------------------------------------------------------------------
96152 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96153 ---------------------------------------------------------------------------------------------------------------
96154 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96155
96156 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96157 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96158
96159 IF xla_accounting_cache_pkg.GetValueChar
96160 (p_source_code => 'LEDGER_CATEGORY_CODE'
96161 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96162 AND l_bflow_method_code = 'PRIOR_ENTRY'
96163 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96164 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96165 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96166 )
96167 THEN
96168 xla_ae_lines_pkg.BflowUpgEntry
96169 (p_business_method_code => l_bflow_method_code
96170 ,p_business_class_code => l_bflow_class_code
96171 ,p_balance_type => l_balance_type_code);
96172 ELSE
96173 NULL;
96174 -- No business flow processing for business flow method of NONE.
96175 END IF;
96176
96177 --
96178 -- call analytical criteria
96179 --
96180
96181 --
96182 -- call description
96183 --
96184 -- No description or it is inherited.
96185 --
96186 -- call ADRs
96187 -- Bug 4922099
96188 --
96189 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96190 (NVL(l_actual_upg_option, 'N') = 'O') OR
96191 (NVL(l_enc_upg_option, 'N') = 'O')
96192 )
96193 THEN
96194 NULL;
96195 --
96196 --
96197
96198 l_ccid := AcctDerRule_4(
96199 p_application_id => p_application_id
96200 , p_ae_header_id => l_ae_header_id
96201 , p_source_4 => p_source_4
96202 , x_transaction_coa_id => l_adr_transaction_coa_id
96203 , x_accounting_coa_id => l_adr_accounting_coa_id
96204 , x_value_type_code => l_adr_value_type_code
96205 , p_side => 'NA'
96206 );
96207
96208 xla_ae_lines_pkg.set_ccid(
96209 p_code_combination_id => l_ccid
96210 , p_value_type_code => l_adr_value_type_code
96211 , p_transaction_coa_id => l_adr_transaction_coa_id
96212 , p_accounting_coa_id => l_adr_accounting_coa_id
96213 , p_adr_code => 'CST_DEFAULT'
96214 , p_adr_type_code => 'S'
96215 , p_component_type => l_component_type
96216 , p_component_code => l_component_code
96217 , p_component_type_code => l_component_type_code
96218 , p_component_appl_id => l_component_appl_id
96219 , p_amb_context_code => l_amb_context_code
96220 , p_side => 'NA'
96221 );
96222
96223
96224 --
96225 --
96226 END IF;
96227 --
96228 -- Bug 4922099
96229 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96230 (NVL(l_enc_upg_option, 'N') = 'O')
96231 ) AND
96232 (l_bflow_method_code = 'PRIOR_ENTRY')
96233 )
96234 THEN
96235 IF
96236 --
96237 1 = 2
96238 --
96239 THEN
96240 xla_accounting_err_pkg.build_message
96241 (p_appli_s_name => 'XLA'
96242 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96243 ,p_token_1 => 'LINE_NUMBER'
96244 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
96245 ,p_token_2 => 'LINE_TYPE_NAME'
96246 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
96247 l_component_type
96248 ,l_component_code
96249 ,l_component_type_code
96250 ,l_component_appl_id
96251 ,l_amb_context_code
96252 ,l_entity_code
96253 ,l_event_class_code
96254 )
96255 ,p_token_3 => 'OWNER'
96256 ,p_value_3 => xla_lookups_pkg.get_meaning(
96257 p_lookup_type => 'XLA_OWNER_TYPE'
96258 ,p_lookup_code => l_component_type_code
96259 )
96260 ,p_token_4 => 'PRODUCT_NAME'
96261 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96262 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96263 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96264 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96265 ,p_ae_header_id => NULL
96266 );
96267
96268 IF (C_LEVEL_ERROR>= g_log_level) THEN
96269 trace
96270 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96271 ,p_level => C_LEVEL_ERROR
96272 ,p_module => l_log_module);
96273 END IF;
96274 END IF;
96275 END IF;
96276 --
96277 --
96278 ------------------------------------------------------------------------------------------------
96279 -- 4219869 Business Flow
96280 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96281 -- Prior Entry. Currently, the following code is always generated.
96282 ------------------------------------------------------------------------------------------------
96283 XLA_AE_LINES_PKG.ValidateCurrentLine;
96284
96285 ------------------------------------------------------------------------------------
96286 -- 4219869 Business Flow
96287 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96288 ------------------------------------------------------------------------------------
96289 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96290
96291 ----------------------------------------------------------------------------------
96292 -- 4219869 Business Flow
96293 -- Update journal entry status -- Need to generate this within IF <condition>
96294 ----------------------------------------------------------------------------------
96295 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96296 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96297 ,p_balance_type_code => l_balance_type_code
96298 );
96299
96300 -------------------------------------------------------------------------------------------
96301 -- 4262811 - Generate the Accrual Reversal lines
96302 -------------------------------------------------------------------------------------------
96303 BEGIN
96304 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96305 (g_array_event(p_event_id).array_value_num('header_index'));
96306 IF l_acc_rev_flag IS NULL THEN
96307 l_acc_rev_flag := 'N';
96308 END IF;
96309 EXCEPTION
96310 WHEN OTHERS THEN
96311 l_acc_rev_flag := 'N';
96312 END;
96313 --
96314 IF (l_acc_rev_flag = 'Y') THEN
96315
96316 -- 4645092 ------------------------------------------------------------------------------
96317 -- To allow MPA report to determine if it should generate report process
96318 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96319 ------------------------------------------------------------------------------------------
96320
96321 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96322 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96323 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
96324 -- call ADRs
96325 -- Bug 4922099
96326 --
96327 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96328 (NVL(l_actual_upg_option, 'N') = 'O') OR
96329 (NVL(l_enc_upg_option, 'N') = 'O')
96330 )
96331 THEN
96332 NULL;
96333 --
96334 --
96335
96336 l_ccid := AcctDerRule_4(
96337 p_application_id => p_application_id
96338 , p_ae_header_id => l_ae_header_id
96339 , p_source_4 => p_source_4
96340 , x_transaction_coa_id => l_adr_transaction_coa_id
96341 , x_accounting_coa_id => l_adr_accounting_coa_id
96342 , x_value_type_code => l_adr_value_type_code
96343 , p_side => 'NA'
96344 );
96345
96346 xla_ae_lines_pkg.set_ccid(
96347 p_code_combination_id => l_ccid
96348 , p_value_type_code => l_adr_value_type_code
96349 , p_transaction_coa_id => l_adr_transaction_coa_id
96350 , p_accounting_coa_id => l_adr_accounting_coa_id
96351 , p_adr_code => 'CST_DEFAULT'
96352 , p_adr_type_code => 'S'
96353 , p_component_type => l_component_type
96354 , p_component_code => l_component_code
96355 , p_component_type_code => l_component_type_code
96356 , p_component_appl_id => l_component_appl_id
96357 , p_amb_context_code => l_amb_context_code
96358 , p_side => 'NA'
96359 );
96360
96361
96362 --
96363 --
96364 END IF;
96365
96366 --
96367 -- Update the line information that should be overwritten
96368 --
96369 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96370 p_header_num => 1);
96371 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
96372
96373 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96374
96375 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
96376 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96377 END IF;
96378
96379 --
96380 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96381 --
96382 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96383 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
96384 ELSE
96385 ---------------------------------------------------------------------------------------------------
96386 -- 4262811a Switch Sign
96387 ---------------------------------------------------------------------------------------------------
96388 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
96389 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96390 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96391 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96392 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96393 -- 5132302
96394 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96395 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96396
96397 END IF;
96398
96399 -- 4955764
96400 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96401 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96402
96403
96404 XLA_AE_LINES_PKG.ValidateCurrentLine;
96405 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96406
96407 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96408 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96409 ,p_balance_type_code => l_balance_type_code);
96410
96411 END IF;
96412
96413 -----------------------------------------------------------------------------------------
96414 -- 4262811 Multiperiod Accounting
96415 -----------------------------------------------------------------------------------------
96416 -- No MPA option is assigned.
96417
96418
96419 END IF;
96420 END IF;
96421 --
96422
96423 --
96424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96425 trace
96426 (p_msg => 'END of AcctLineType_175'
96427 ,p_level => C_LEVEL_PROCEDURE
96428 ,p_module => l_log_module);
96429 END IF;
96430 --
96431 EXCEPTION
96432 WHEN xla_exceptions_pkg.application_exception THEN
96433 RAISE;
96434 WHEN OTHERS THEN
96435 xla_exceptions_pkg.raise_message
96436 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_175');
96437 END AcctLineType_175;
96438 --
96439
96440 ---------------------------------------
96441 --
96442 -- PRIVATE FUNCTION
96443 -- AcctLineType_176
96444 --
96445 ---------------------------------------
96446 PROCEDURE AcctLineType_176 (
96447 p_application_id IN NUMBER
96448 ,p_event_id IN NUMBER
96449 ,p_calculate_acctd_flag IN VARCHAR2
96450 ,p_calculate_g_l_flag IN VARCHAR2
96451 ,p_actual_flag IN OUT VARCHAR2
96452 ,p_balance_type_code OUT VARCHAR2
96453 ,p_gain_or_loss_ref OUT VARCHAR2
96454
96455 --Cost Management Default Account
96456 , p_source_4 IN NUMBER
96457 --DISTRIBUTION_IDENTIFIER
96458 , p_source_11 IN NUMBER
96459 --Distribution Type
96460 , p_source_12 IN VARCHAR2
96461 , p_source_12_meaning IN VARCHAR2
96462 --Entered Currency Code
96463 , p_source_15 IN VARCHAR2
96464 --Entered Amount
96465 , p_source_18 IN NUMBER
96466 --Currency Conversion Date
96467 , p_source_19 IN DATE
96468 --Currency Conversion Rate
96469 , p_source_20 IN NUMBER
96470 --Currency Conversion Type
96471 , p_source_21 IN VARCHAR2
96472 --Accounted Amount
96473 , p_source_22 IN NUMBER
96474 --Accounting Line Type
96475 , p_source_24 IN NUMBER
96476 )
96477 IS
96478
96479 l_component_type VARCHAR2(80);
96480 l_component_code VARCHAR2(30);
96481 l_component_type_code VARCHAR2(1);
96482 l_component_appl_id INTEGER;
96483 l_amb_context_code VARCHAR2(30);
96484 l_entity_code VARCHAR2(30);
96485 l_event_class_code VARCHAR2(30);
96486 l_ae_header_id NUMBER;
96487 l_event_type_code VARCHAR2(30);
96488 l_line_definition_code VARCHAR2(30);
96489 l_line_definition_owner_code VARCHAR2(1);
96490 --
96491 -- adr variables
96492 l_segment VARCHAR2(30);
96493 l_ccid NUMBER;
96494 l_adr_transaction_coa_id NUMBER;
96495 l_adr_accounting_coa_id NUMBER;
96496 l_adr_flexfield_segment_code VARCHAR2(30);
96497 l_adr_flex_value_set_id NUMBER;
96498 l_adr_value_type_code VARCHAR2(30);
96499 l_adr_value_combination_id NUMBER;
96500 l_adr_value_segment_code VARCHAR2(30);
96501
96502 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
96503 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
96504 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
96505 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
96506
96507 -- 4262811 Variables ------------------------------------------------------------------------------------------
96508 l_entered_amt_idx NUMBER;
96509 l_accted_amt_idx NUMBER;
96510 l_acc_rev_flag VARCHAR2(1);
96511 l_accrual_line_num NUMBER;
96512 l_tmp_amt NUMBER;
96513 l_acc_rev_natural_side_code VARCHAR2(1);
96514
96515 l_num_entries NUMBER;
96516 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
96517 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
96518 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
96519 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
96520 l_recog_line_1 NUMBER;
96521 l_recog_line_2 NUMBER;
96522
96523 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
96524 l_bflow_applied_to_amt NUMBER; -- 5132302
96525 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
96526
96527 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
96528
96529 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
96530 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
96531
96532 ---------------------------------------------------------------------------------------------------------------
96533
96534
96535 --
96536 -- bulk performance
96537 --
96538 l_balance_type_code VARCHAR2(1);
96539 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
96540 l_log_module VARCHAR2(240);
96541
96542 --
96543 -- Upgrade strategy
96544 --
96545 l_actual_upg_option VARCHAR2(1);
96546 l_enc_upg_option VARCHAR2(1);
96547
96548 --
96549 BEGIN
96550 --
96551 IF g_log_enabled THEN
96552 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_176';
96553 END IF;
96554 --
96555 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96556
96557 trace
96558 (p_msg => 'BEGIN of AcctLineType_176'
96559 ,p_level => C_LEVEL_PROCEDURE
96560 ,p_module => l_log_module);
96561
96562 END IF;
96563 --
96564 l_component_type := 'AMB_JLT';
96565 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
96566 l_component_type_code := 'S';
96567 l_component_appl_id := 707;
96568 l_amb_context_code := 'DEFAULT';
96569 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
96570 l_event_class_code := 'USER_DEFINE';
96571 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
96572 l_line_definition_owner_code := 'S';
96573 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
96574 --
96575 l_balance_type_code := 'A';
96576 l_segment := NULL;
96577 l_ccid := NULL;
96578 l_adr_transaction_coa_id := NULL;
96579 l_adr_accounting_coa_id := NULL;
96580 l_adr_flexfield_segment_code := NULL;
96581 l_adr_flex_value_set_id := NULL;
96582 l_adr_value_type_code := NULL;
96583 l_adr_value_combination_id := NULL;
96584 l_adr_value_segment_code := NULL;
96585
96586 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
96587 l_bflow_class_code := ''; -- 4219869 Business Flow
96588 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
96589 l_budgetary_control_flag := 'N';
96590
96591 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96592 l_bflow_applied_to_amt := NULL; -- 5132302
96593 l_entered_amt_idx := NULL; -- 4262811
96594 l_accted_amt_idx := NULL; -- 4262811
96595 l_acc_rev_flag := NULL; -- 4262811
96596 l_accrual_line_num := NULL; -- 4262811
96597 l_tmp_amt := NULL; -- 4262811
96598 --
96599
96600 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
96601 l_balance_type_code <> 'B' THEN
96602 IF NVL(p_source_24,9E125) = 3
96603 THEN
96604
96605 --
96606 XLA_AE_LINES_PKG.SetNewLine;
96607
96608 p_balance_type_code := l_balance_type_code;
96609 -- set the flag so later we will know whether the gain loss line needs to be created
96610
96611 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
96612 p_actual_flag :='A';
96613 END IF;
96614
96615 --
96616 -- bulk performance
96617 --
96618 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
96619 p_header_num => 0); -- 4262811
96620 --
96621 -- set accounting line options
96622 --
96623 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
96624 p_natural_side_code => 'D'
96625 , p_gain_or_loss_flag => 'N'
96626 , p_gl_transfer_mode_code => 'S'
96627 , p_acct_entry_type_code => 'A'
96628 , p_switch_side_flag => 'Y'
96629 , p_merge_duplicate_code => 'N'
96630 );
96631 --
96632 l_acc_rev_natural_side_code := 'C'; -- 4262811
96633 --
96634 --
96635 -- set accounting line type info
96636 --
96637 xla_ae_lines_pkg.SetAcctLineType
96638 (p_component_type => l_component_type
96639 ,p_event_type_code => l_event_type_code
96640 ,p_line_definition_owner_code => l_line_definition_owner_code
96641 ,p_line_definition_code => l_line_definition_code
96642 ,p_accounting_line_code => l_component_code
96643 ,p_accounting_line_type_code => l_component_type_code
96644 ,p_accounting_line_appl_id => l_component_appl_id
96645 ,p_amb_context_code => l_amb_context_code
96646 ,p_entity_code => l_entity_code
96647 ,p_event_class_code => l_event_class_code);
96648 --
96649 -- set accounting class
96650 --
96651 xla_ae_lines_pkg.SetAcctClass(
96652 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
96653 , p_ae_header_id => l_ae_header_id
96654 );
96655
96656 --
96657 -- set rounding class
96658 --
96659 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
96660 'MATERIAL_OVERHEAD_ABSORPTION';
96661
96662 --
96663 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
96664 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
96665 --
96666 -- bulk performance
96667 --
96668 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
96669
96670 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
96671 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
96672
96673 -- 4955764
96674 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96675 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
96676
96677 -- 4458381 Public Sector Enh
96678
96679 --
96680 -- set accounting attributes for the line type
96681 --
96682 l_entered_amt_idx := 3;
96683 l_accted_amt_idx := 8;
96684 l_bflow_applied_to_amt_idx := NULL; -- 5132302
96685 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
96686 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
96687 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
96688 l_rec_acct_attrs.array_char_value(2) := p_source_12;
96689 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
96690 l_rec_acct_attrs.array_num_value(3) := p_source_18;
96691 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
96692 l_rec_acct_attrs.array_char_value(4) := p_source_15;
96693 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
96694 l_rec_acct_attrs.array_date_value(5) := p_source_19;
96695 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
96696 l_rec_acct_attrs.array_num_value(6) := p_source_20;
96697 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
96698 l_rec_acct_attrs.array_char_value(7) := p_source_21;
96699 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
96700 l_rec_acct_attrs.array_num_value(8) := p_source_22;
96701
96702 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
96703 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
96704
96705 ---------------------------------------------------------------------------------------------------------------
96706 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
96707 ---------------------------------------------------------------------------------------------------------------
96708 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
96709
96710 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96711 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
96712
96713 IF xla_accounting_cache_pkg.GetValueChar
96714 (p_source_code => 'LEDGER_CATEGORY_CODE'
96715 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
96716 AND l_bflow_method_code = 'PRIOR_ENTRY'
96717 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
96718 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
96719 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
96720 )
96721 THEN
96722 xla_ae_lines_pkg.BflowUpgEntry
96723 (p_business_method_code => l_bflow_method_code
96724 ,p_business_class_code => l_bflow_class_code
96725 ,p_balance_type => l_balance_type_code);
96726 ELSE
96727 NULL;
96728 -- No business flow processing for business flow method of NONE.
96729 END IF;
96730
96731 --
96732 -- call analytical criteria
96733 --
96734
96735 --
96736 -- call description
96737 --
96738 -- No description or it is inherited.
96739 --
96740 -- call ADRs
96741 -- Bug 4922099
96742 --
96743 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96744 (NVL(l_actual_upg_option, 'N') = 'O') OR
96745 (NVL(l_enc_upg_option, 'N') = 'O')
96746 )
96747 THEN
96748 NULL;
96749 --
96750 --
96751
96752 l_ccid := AcctDerRule_4(
96753 p_application_id => p_application_id
96754 , p_ae_header_id => l_ae_header_id
96755 , p_source_4 => p_source_4
96756 , x_transaction_coa_id => l_adr_transaction_coa_id
96757 , x_accounting_coa_id => l_adr_accounting_coa_id
96758 , x_value_type_code => l_adr_value_type_code
96759 , p_side => 'NA'
96760 );
96761
96762 xla_ae_lines_pkg.set_ccid(
96763 p_code_combination_id => l_ccid
96764 , p_value_type_code => l_adr_value_type_code
96765 , p_transaction_coa_id => l_adr_transaction_coa_id
96766 , p_accounting_coa_id => l_adr_accounting_coa_id
96767 , p_adr_code => 'CST_DEFAULT'
96768 , p_adr_type_code => 'S'
96769 , p_component_type => l_component_type
96770 , p_component_code => l_component_code
96771 , p_component_type_code => l_component_type_code
96772 , p_component_appl_id => l_component_appl_id
96773 , p_amb_context_code => l_amb_context_code
96774 , p_side => 'NA'
96775 );
96776
96777
96778 --
96779 --
96780 END IF;
96781 --
96782 -- Bug 4922099
96783 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
96784 (NVL(l_enc_upg_option, 'N') = 'O')
96785 ) AND
96786 (l_bflow_method_code = 'PRIOR_ENTRY')
96787 )
96788 THEN
96789 IF
96790 --
96791 1 = 2
96792 --
96793 THEN
96794 xla_accounting_err_pkg.build_message
96795 (p_appli_s_name => 'XLA'
96796 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96797 ,p_token_1 => 'LINE_NUMBER'
96798 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
96799 ,p_token_2 => 'LINE_TYPE_NAME'
96800 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
96801 l_component_type
96802 ,l_component_code
96803 ,l_component_type_code
96804 ,l_component_appl_id
96805 ,l_amb_context_code
96806 ,l_entity_code
96807 ,l_event_class_code
96808 )
96809 ,p_token_3 => 'OWNER'
96810 ,p_value_3 => xla_lookups_pkg.get_meaning(
96811 p_lookup_type => 'XLA_OWNER_TYPE'
96812 ,p_lookup_code => l_component_type_code
96813 )
96814 ,p_token_4 => 'PRODUCT_NAME'
96815 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
96816 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
96817 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
96818 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
96819 ,p_ae_header_id => NULL
96820 );
96821
96822 IF (C_LEVEL_ERROR>= g_log_level) THEN
96823 trace
96824 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
96825 ,p_level => C_LEVEL_ERROR
96826 ,p_module => l_log_module);
96827 END IF;
96828 END IF;
96829 END IF;
96830 --
96831 --
96832 ------------------------------------------------------------------------------------------------
96833 -- 4219869 Business Flow
96834 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
96835 -- Prior Entry. Currently, the following code is always generated.
96836 ------------------------------------------------------------------------------------------------
96837 XLA_AE_LINES_PKG.ValidateCurrentLine;
96838
96839 ------------------------------------------------------------------------------------
96840 -- 4219869 Business Flow
96841 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
96842 ------------------------------------------------------------------------------------
96843 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96844
96845 ----------------------------------------------------------------------------------
96846 -- 4219869 Business Flow
96847 -- Update journal entry status -- Need to generate this within IF <condition>
96848 ----------------------------------------------------------------------------------
96849 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96850 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
96851 ,p_balance_type_code => l_balance_type_code
96852 );
96853
96854 -------------------------------------------------------------------------------------------
96855 -- 4262811 - Generate the Accrual Reversal lines
96856 -------------------------------------------------------------------------------------------
96857 BEGIN
96858 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
96859 (g_array_event(p_event_id).array_value_num('header_index'));
96860 IF l_acc_rev_flag IS NULL THEN
96861 l_acc_rev_flag := 'N';
96862 END IF;
96863 EXCEPTION
96864 WHEN OTHERS THEN
96865 l_acc_rev_flag := 'N';
96866 END;
96867 --
96868 IF (l_acc_rev_flag = 'Y') THEN
96869
96870 -- 4645092 ------------------------------------------------------------------------------
96871 -- To allow MPA report to determine if it should generate report process
96872 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
96873 ------------------------------------------------------------------------------------------
96874
96875 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
96876 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
96877 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
96878 -- call ADRs
96879 -- Bug 4922099
96880 --
96881 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
96882 (NVL(l_actual_upg_option, 'N') = 'O') OR
96883 (NVL(l_enc_upg_option, 'N') = 'O')
96884 )
96885 THEN
96886 NULL;
96887 --
96888 --
96889
96890 l_ccid := AcctDerRule_4(
96891 p_application_id => p_application_id
96892 , p_ae_header_id => l_ae_header_id
96893 , p_source_4 => p_source_4
96894 , x_transaction_coa_id => l_adr_transaction_coa_id
96895 , x_accounting_coa_id => l_adr_accounting_coa_id
96896 , x_value_type_code => l_adr_value_type_code
96897 , p_side => 'NA'
96898 );
96899
96900 xla_ae_lines_pkg.set_ccid(
96901 p_code_combination_id => l_ccid
96902 , p_value_type_code => l_adr_value_type_code
96903 , p_transaction_coa_id => l_adr_transaction_coa_id
96904 , p_accounting_coa_id => l_adr_accounting_coa_id
96905 , p_adr_code => 'CST_DEFAULT'
96906 , p_adr_type_code => 'S'
96907 , p_component_type => l_component_type
96908 , p_component_code => l_component_code
96909 , p_component_type_code => l_component_type_code
96910 , p_component_appl_id => l_component_appl_id
96911 , p_amb_context_code => l_amb_context_code
96912 , p_side => 'NA'
96913 );
96914
96915
96916 --
96917 --
96918 END IF;
96919
96920 --
96921 -- Update the line information that should be overwritten
96922 --
96923 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
96924 p_header_num => 1);
96925 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
96926
96927 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
96928
96929 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
96930 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
96931 END IF;
96932
96933 --
96934 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
96935 --
96936 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
96937 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
96938 ELSE
96939 ---------------------------------------------------------------------------------------------------
96940 -- 4262811a Switch Sign
96941 ---------------------------------------------------------------------------------------------------
96942 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
96943 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96944 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96945 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
96946 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96947 -- 5132302
96948 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
96949 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
96950
96951 END IF;
96952
96953 -- 4955764
96954 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
96955 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
96956
96957
96958 XLA_AE_LINES_PKG.ValidateCurrentLine;
96959 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
96960
96961 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
96962 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
96963 ,p_balance_type_code => l_balance_type_code);
96964
96965 END IF;
96966
96967 -----------------------------------------------------------------------------------------
96968 -- 4262811 Multiperiod Accounting
96969 -----------------------------------------------------------------------------------------
96970 -- No MPA option is assigned.
96971
96972
96973 END IF;
96974 END IF;
96975 --
96976
96977 --
96978 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96979 trace
96980 (p_msg => 'END of AcctLineType_176'
96981 ,p_level => C_LEVEL_PROCEDURE
96982 ,p_module => l_log_module);
96983 END IF;
96984 --
96985 EXCEPTION
96986 WHEN xla_exceptions_pkg.application_exception THEN
96987 RAISE;
96988 WHEN OTHERS THEN
96989 xla_exceptions_pkg.raise_message
96990 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_176');
96991 END AcctLineType_176;
96992 --
96993
96994 ---------------------------------------
96995 --
96996 -- PRIVATE FUNCTION
96997 -- AcctLineType_177
96998 --
96999 ---------------------------------------
97000 PROCEDURE AcctLineType_177 (
97001 p_application_id IN NUMBER
97002 ,p_event_id IN NUMBER
97003 ,p_calculate_acctd_flag IN VARCHAR2
97004 ,p_calculate_g_l_flag IN VARCHAR2
97005 ,p_actual_flag IN OUT VARCHAR2
97006 ,p_balance_type_code OUT VARCHAR2
97007 ,p_gain_or_loss_ref OUT VARCHAR2
97008
97009 --Cost Management Default Account
97010 , p_source_4 IN NUMBER
97011 --Applied to Application ID
97012 , p_source_6 IN NUMBER
97013 --Applied to Distribution Link Type
97014 , p_source_7 IN VARCHAR2
97015 --Applied to Entity Code
97016 , p_source_8 IN VARCHAR2
97017 --DISTRIBUTION_IDENTIFIER
97018 , p_source_11 IN NUMBER
97019 --Distribution Type
97020 , p_source_12 IN VARCHAR2
97021 , p_source_12_meaning IN VARCHAR2
97022 --Encumbrance Reversal Amount Entered
97023 , p_source_14 IN NUMBER
97024 --Entered Currency Code
97025 , p_source_15 IN VARCHAR2
97026 --Transaction Encumbrance Reversal Amount
97027 , p_source_16 IN NUMBER
97028 --Entered Amount
97029 , p_source_18 IN NUMBER
97030 --Currency Conversion Date
97031 , p_source_19 IN DATE
97032 --Currency Conversion Rate
97033 , p_source_20 IN NUMBER
97034 --Currency Conversion Type
97035 , p_source_21 IN VARCHAR2
97036 --Accounted Amount
97037 , p_source_22 IN NUMBER
97038 --Accounting Line Type
97039 , p_source_24 IN NUMBER
97040 --Costing Encumbrance Upgrade Option
97041 , p_source_27 IN VARCHAR2
97042 --TXN_PO_DISTRIBUTION_ID
97043 , p_source_28 IN NUMBER
97044 --TXN_PO_HEADER_ID
97045 , p_source_29 IN NUMBER
97046 --Requisition Budget Account
97047 , p_source_30 IN NUMBER
97048 --Requisition Encumbrance Type Identifier
97049 , p_source_31 IN NUMBER
97050 )
97051 IS
97052
97053 l_component_type VARCHAR2(80);
97054 l_component_code VARCHAR2(30);
97055 l_component_type_code VARCHAR2(1);
97056 l_component_appl_id INTEGER;
97057 l_amb_context_code VARCHAR2(30);
97058 l_entity_code VARCHAR2(30);
97059 l_event_class_code VARCHAR2(30);
97060 l_ae_header_id NUMBER;
97061 l_event_type_code VARCHAR2(30);
97062 l_line_definition_code VARCHAR2(30);
97063 l_line_definition_owner_code VARCHAR2(1);
97064 --
97065 -- adr variables
97066 l_segment VARCHAR2(30);
97067 l_ccid NUMBER;
97068 l_adr_transaction_coa_id NUMBER;
97069 l_adr_accounting_coa_id NUMBER;
97070 l_adr_flexfield_segment_code VARCHAR2(30);
97071 l_adr_flex_value_set_id NUMBER;
97072 l_adr_value_type_code VARCHAR2(30);
97073 l_adr_value_combination_id NUMBER;
97074 l_adr_value_segment_code VARCHAR2(30);
97075
97076 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
97077 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
97078 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
97079 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
97080
97081 -- 4262811 Variables ------------------------------------------------------------------------------------------
97082 l_entered_amt_idx NUMBER;
97083 l_accted_amt_idx NUMBER;
97084 l_acc_rev_flag VARCHAR2(1);
97085 l_accrual_line_num NUMBER;
97086 l_tmp_amt NUMBER;
97087 l_acc_rev_natural_side_code VARCHAR2(1);
97088
97089 l_num_entries NUMBER;
97090 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
97091 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
97092 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
97093 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
97094 l_recog_line_1 NUMBER;
97095 l_recog_line_2 NUMBER;
97096
97097 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
97098 l_bflow_applied_to_amt NUMBER; -- 5132302
97099 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
97100
97101 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97102
97103 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
97104 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
97105
97106 ---------------------------------------------------------------------------------------------------------------
97107
97108
97109 --
97110 -- bulk performance
97111 --
97112 l_balance_type_code VARCHAR2(1);
97113 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
97114 l_log_module VARCHAR2(240);
97115
97116 --
97117 -- Upgrade strategy
97118 --
97119 l_actual_upg_option VARCHAR2(1);
97120 l_enc_upg_option VARCHAR2(1);
97121
97122 --
97123 BEGIN
97124 --
97125 IF g_log_enabled THEN
97126 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_177';
97127 END IF;
97128 --
97129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97130
97131 trace
97132 (p_msg => 'BEGIN of AcctLineType_177'
97133 ,p_level => C_LEVEL_PROCEDURE
97134 ,p_module => l_log_module);
97135
97136 END IF;
97137 --
97138 l_component_type := 'AMB_JLT';
97139 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
97140 l_component_type_code := 'S';
97141 l_component_appl_id := 707;
97142 l_amb_context_code := 'DEFAULT';
97143 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
97144 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
97145 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
97146 l_line_definition_owner_code := 'S';
97147 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
97148 --
97149 l_balance_type_code := 'A';
97150 l_segment := NULL;
97151 l_ccid := NULL;
97152 l_adr_transaction_coa_id := NULL;
97153 l_adr_accounting_coa_id := NULL;
97154 l_adr_flexfield_segment_code := NULL;
97155 l_adr_flex_value_set_id := NULL;
97156 l_adr_value_type_code := NULL;
97157 l_adr_value_combination_id := NULL;
97158 l_adr_value_segment_code := NULL;
97159
97160 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
97161 l_bflow_class_code := ''; -- 4219869 Business Flow
97162 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
97163 l_budgetary_control_flag := 'N';
97164
97165 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97166 l_bflow_applied_to_amt := NULL; -- 5132302
97167 l_entered_amt_idx := NULL; -- 4262811
97168 l_accted_amt_idx := NULL; -- 4262811
97169 l_acc_rev_flag := NULL; -- 4262811
97170 l_accrual_line_num := NULL; -- 4262811
97171 l_tmp_amt := NULL; -- 4262811
97172 --
97173
97174 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97175 l_balance_type_code <> 'B' THEN
97176 IF NVL(p_source_24,9E125) = 3
97177 THEN
97178
97179 --
97180 XLA_AE_LINES_PKG.SetNewLine;
97181
97182 p_balance_type_code := l_balance_type_code;
97183 -- set the flag so later we will know whether the gain loss line needs to be created
97184
97185 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97186 p_actual_flag :='A';
97187 END IF;
97188
97189 --
97190 -- bulk performance
97191 --
97192 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97193 p_header_num => 0); -- 4262811
97194 --
97195 -- set accounting line options
97196 --
97197 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97198 p_natural_side_code => 'D'
97199 , p_gain_or_loss_flag => 'N'
97200 , p_gl_transfer_mode_code => 'S'
97201 , p_acct_entry_type_code => 'A'
97202 , p_switch_side_flag => 'Y'
97203 , p_merge_duplicate_code => 'N'
97204 );
97205 --
97206 l_acc_rev_natural_side_code := 'C'; -- 4262811
97207 --
97208 --
97209 -- set accounting line type info
97210 --
97211 xla_ae_lines_pkg.SetAcctLineType
97212 (p_component_type => l_component_type
97213 ,p_event_type_code => l_event_type_code
97214 ,p_line_definition_owner_code => l_line_definition_owner_code
97215 ,p_line_definition_code => l_line_definition_code
97216 ,p_accounting_line_code => l_component_code
97217 ,p_accounting_line_type_code => l_component_type_code
97218 ,p_accounting_line_appl_id => l_component_appl_id
97219 ,p_amb_context_code => l_amb_context_code
97220 ,p_entity_code => l_entity_code
97221 ,p_event_class_code => l_event_class_code);
97222 --
97223 -- set accounting class
97224 --
97225 xla_ae_lines_pkg.SetAcctClass(
97226 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
97227 , p_ae_header_id => l_ae_header_id
97228 );
97229
97230 --
97231 -- set rounding class
97232 --
97233 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97234 'MATERIAL_OVERHEAD_ABSORPTION';
97235
97236 --
97237 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97238 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97239 --
97240 -- bulk performance
97241 --
97242 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97243
97244 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97245 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97246
97247 -- 4955764
97248 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97249 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97250
97251 -- 4458381 Public Sector Enh
97252
97253 --
97254 -- set accounting attributes for the line type
97255 --
97256 l_entered_amt_idx := 17;
97257 l_accted_amt_idx := 22;
97258 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97259 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
97260 l_rec_acct_attrs.array_num_value(1) := p_source_6;
97261 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
97262 l_rec_acct_attrs.array_char_value(2) := p_source_7;
97263 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
97264 l_rec_acct_attrs.array_char_value(3) := p_source_8;
97265 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
97266 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
97267 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
97268 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
97269 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
97270 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
97271 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
97272 l_rec_acct_attrs.array_char_value(7) := p_source_12;
97273 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
97274 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
97275 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
97276 l_rec_acct_attrs.array_num_value(9) := p_source_14;
97277 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
97278 l_rec_acct_attrs.array_char_value(10) := p_source_15;
97279 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
97280 l_rec_acct_attrs.array_num_value(11) := p_source_16;
97281 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
97282 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
97283 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
97284 l_rec_acct_attrs.array_num_value(13) := p_source_14;
97285 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
97286 l_rec_acct_attrs.array_char_value(14) := p_source_15;
97287 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
97288 l_rec_acct_attrs.array_num_value(15) := p_source_16;
97289 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
97290 l_rec_acct_attrs.array_char_value(16) := p_source_27;
97291 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
97292 l_rec_acct_attrs.array_num_value(17) := p_source_18;
97293 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
97294 l_rec_acct_attrs.array_char_value(18) := p_source_15;
97295 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
97296 l_rec_acct_attrs.array_date_value(19) := p_source_19;
97297 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
97298 l_rec_acct_attrs.array_num_value(20) := p_source_20;
97299 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
97300 l_rec_acct_attrs.array_char_value(21) := p_source_21;
97301 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
97302 l_rec_acct_attrs.array_num_value(22) := p_source_22;
97303 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
97304 l_rec_acct_attrs.array_num_value(23) := p_source_31;
97305 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
97306 l_rec_acct_attrs.array_num_value(24) := p_source_31;
97307
97308 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97309 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97310
97311 ---------------------------------------------------------------------------------------------------------------
97312 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97313 ---------------------------------------------------------------------------------------------------------------
97314 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97315
97316 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97317 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97318
97319 IF xla_accounting_cache_pkg.GetValueChar
97320 (p_source_code => 'LEDGER_CATEGORY_CODE'
97321 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97322 AND l_bflow_method_code = 'PRIOR_ENTRY'
97323 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97324 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97325 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97326 )
97327 THEN
97328 xla_ae_lines_pkg.BflowUpgEntry
97329 (p_business_method_code => l_bflow_method_code
97330 ,p_business_class_code => l_bflow_class_code
97331 ,p_balance_type => l_balance_type_code);
97332 ELSE
97333 NULL;
97334 -- No business flow processing for business flow method of NONE.
97335 END IF;
97336
97337 --
97338 -- call analytical criteria
97339 --
97340
97341 --
97342 -- call description
97343 --
97344 -- No description or it is inherited.
97345 --
97346 -- call ADRs
97347 -- Bug 4922099
97348 --
97349 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97350 (NVL(l_actual_upg_option, 'N') = 'O') OR
97351 (NVL(l_enc_upg_option, 'N') = 'O')
97352 )
97353 THEN
97354 NULL;
97355 --
97356 --
97357
97358 l_ccid := AcctDerRule_4(
97359 p_application_id => p_application_id
97360 , p_ae_header_id => l_ae_header_id
97361 , p_source_4 => p_source_4
97362 , x_transaction_coa_id => l_adr_transaction_coa_id
97363 , x_accounting_coa_id => l_adr_accounting_coa_id
97364 , x_value_type_code => l_adr_value_type_code
97365 , p_side => 'NA'
97366 );
97367
97368 xla_ae_lines_pkg.set_ccid(
97369 p_code_combination_id => l_ccid
97370 , p_value_type_code => l_adr_value_type_code
97371 , p_transaction_coa_id => l_adr_transaction_coa_id
97372 , p_accounting_coa_id => l_adr_accounting_coa_id
97373 , p_adr_code => 'CST_DEFAULT'
97374 , p_adr_type_code => 'S'
97375 , p_component_type => l_component_type
97376 , p_component_code => l_component_code
97377 , p_component_type_code => l_component_type_code
97378 , p_component_appl_id => l_component_appl_id
97379 , p_amb_context_code => l_amb_context_code
97380 , p_side => 'NA'
97381 );
97382
97383
97384 --
97385 --
97386 END IF;
97387 --
97388 -- Bug 4922099
97389 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97390 (NVL(l_enc_upg_option, 'N') = 'O')
97391 ) AND
97392 (l_bflow_method_code = 'PRIOR_ENTRY')
97393 )
97394 THEN
97395 IF
97396 --
97397 1 = 2
97398 --
97399 THEN
97400 xla_accounting_err_pkg.build_message
97401 (p_appli_s_name => 'XLA'
97402 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97403 ,p_token_1 => 'LINE_NUMBER'
97404 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
97405 ,p_token_2 => 'LINE_TYPE_NAME'
97406 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
97407 l_component_type
97408 ,l_component_code
97409 ,l_component_type_code
97410 ,l_component_appl_id
97411 ,l_amb_context_code
97412 ,l_entity_code
97413 ,l_event_class_code
97414 )
97415 ,p_token_3 => 'OWNER'
97416 ,p_value_3 => xla_lookups_pkg.get_meaning(
97417 p_lookup_type => 'XLA_OWNER_TYPE'
97418 ,p_lookup_code => l_component_type_code
97419 )
97420 ,p_token_4 => 'PRODUCT_NAME'
97421 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97422 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97423 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97424 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97425 ,p_ae_header_id => NULL
97426 );
97427
97428 IF (C_LEVEL_ERROR>= g_log_level) THEN
97429 trace
97430 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97431 ,p_level => C_LEVEL_ERROR
97432 ,p_module => l_log_module);
97433 END IF;
97434 END IF;
97435 END IF;
97436 --
97437 --
97438 ------------------------------------------------------------------------------------------------
97439 -- 4219869 Business Flow
97440 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97441 -- Prior Entry. Currently, the following code is always generated.
97442 ------------------------------------------------------------------------------------------------
97443 XLA_AE_LINES_PKG.ValidateCurrentLine;
97444
97445 ------------------------------------------------------------------------------------
97446 -- 4219869 Business Flow
97447 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
97448 ------------------------------------------------------------------------------------
97449 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97450
97451 ----------------------------------------------------------------------------------
97452 -- 4219869 Business Flow
97453 -- Update journal entry status -- Need to generate this within IF <condition>
97454 ----------------------------------------------------------------------------------
97455 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97456 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
97457 ,p_balance_type_code => l_balance_type_code
97458 );
97459
97460 -------------------------------------------------------------------------------------------
97461 -- 4262811 - Generate the Accrual Reversal lines
97462 -------------------------------------------------------------------------------------------
97463 BEGIN
97464 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
97465 (g_array_event(p_event_id).array_value_num('header_index'));
97466 IF l_acc_rev_flag IS NULL THEN
97467 l_acc_rev_flag := 'N';
97468 END IF;
97469 EXCEPTION
97470 WHEN OTHERS THEN
97471 l_acc_rev_flag := 'N';
97472 END;
97473 --
97474 IF (l_acc_rev_flag = 'Y') THEN
97475
97476 -- 4645092 ------------------------------------------------------------------------------
97477 -- To allow MPA report to determine if it should generate report process
97478 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
97479 ------------------------------------------------------------------------------------------
97480
97481 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
97482 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
97483 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
97484 -- call ADRs
97485 -- Bug 4922099
97486 --
97487 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97488 (NVL(l_actual_upg_option, 'N') = 'O') OR
97489 (NVL(l_enc_upg_option, 'N') = 'O')
97490 )
97491 THEN
97492 NULL;
97493 --
97494 --
97495
97496 l_ccid := AcctDerRule_4(
97497 p_application_id => p_application_id
97498 , p_ae_header_id => l_ae_header_id
97499 , p_source_4 => p_source_4
97500 , x_transaction_coa_id => l_adr_transaction_coa_id
97501 , x_accounting_coa_id => l_adr_accounting_coa_id
97502 , x_value_type_code => l_adr_value_type_code
97503 , p_side => 'NA'
97504 );
97505
97506 xla_ae_lines_pkg.set_ccid(
97507 p_code_combination_id => l_ccid
97508 , p_value_type_code => l_adr_value_type_code
97509 , p_transaction_coa_id => l_adr_transaction_coa_id
97510 , p_accounting_coa_id => l_adr_accounting_coa_id
97511 , p_adr_code => 'CST_DEFAULT'
97512 , p_adr_type_code => 'S'
97513 , p_component_type => l_component_type
97514 , p_component_code => l_component_code
97515 , p_component_type_code => l_component_type_code
97516 , p_component_appl_id => l_component_appl_id
97517 , p_amb_context_code => l_amb_context_code
97518 , p_side => 'NA'
97519 );
97520
97521
97522 --
97523 --
97524 END IF;
97525
97526 --
97527 -- Update the line information that should be overwritten
97528 --
97529 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
97530 p_header_num => 1);
97531 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
97532
97533 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
97534
97535 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
97536 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
97537 END IF;
97538
97539 --
97540 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
97541 --
97542 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
97543 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
97544 ELSE
97545 ---------------------------------------------------------------------------------------------------
97546 -- 4262811a Switch Sign
97547 ---------------------------------------------------------------------------------------------------
97548 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
97549 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97550 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97551 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
97552 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97553 -- 5132302
97554 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
97555 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
97556
97557 END IF;
97558
97559 -- 4955764
97560 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97561 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
97562
97563
97564 XLA_AE_LINES_PKG.ValidateCurrentLine;
97565 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
97566
97567 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
97568 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
97569 ,p_balance_type_code => l_balance_type_code);
97570
97571 END IF;
97572
97573 -----------------------------------------------------------------------------------------
97574 -- 4262811 Multiperiod Accounting
97575 -----------------------------------------------------------------------------------------
97576 -- No MPA option is assigned.
97577
97578
97579 END IF;
97580 END IF;
97581 --
97582
97583 --
97584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97585 trace
97586 (p_msg => 'END of AcctLineType_177'
97587 ,p_level => C_LEVEL_PROCEDURE
97588 ,p_module => l_log_module);
97589 END IF;
97590 --
97591 EXCEPTION
97592 WHEN xla_exceptions_pkg.application_exception THEN
97593 RAISE;
97594 WHEN OTHERS THEN
97595 xla_exceptions_pkg.raise_message
97596 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_177');
97597 END AcctLineType_177;
97598 --
97599
97600 ---------------------------------------
97601 --
97602 -- PRIVATE FUNCTION
97603 -- AcctLineType_178
97604 --
97605 ---------------------------------------
97606 PROCEDURE AcctLineType_178 (
97607 p_application_id IN NUMBER
97608 ,p_event_id IN NUMBER
97609 ,p_calculate_acctd_flag IN VARCHAR2
97610 ,p_calculate_g_l_flag IN VARCHAR2
97611 ,p_actual_flag IN OUT VARCHAR2
97612 ,p_balance_type_code OUT VARCHAR2
97613 ,p_gain_or_loss_ref OUT VARCHAR2
97614
97615 --Cost Management Default Account
97616 , p_source_4 IN NUMBER
97617 --DISTRIBUTION_IDENTIFIER
97618 , p_source_11 IN NUMBER
97619 --Distribution Type
97620 , p_source_12 IN VARCHAR2
97621 , p_source_12_meaning IN VARCHAR2
97622 --Entered Currency Code
97623 , p_source_15 IN VARCHAR2
97624 --Entered Amount
97625 , p_source_18 IN NUMBER
97626 --Currency Conversion Date
97627 , p_source_19 IN DATE
97628 --Currency Conversion Rate
97629 , p_source_20 IN NUMBER
97630 --Currency Conversion Type
97631 , p_source_21 IN VARCHAR2
97632 --Accounted Amount
97633 , p_source_22 IN NUMBER
97634 --Accounting Line Type
97635 , p_source_24 IN NUMBER
97636 )
97637 IS
97638
97639 l_component_type VARCHAR2(80);
97640 l_component_code VARCHAR2(30);
97641 l_component_type_code VARCHAR2(1);
97642 l_component_appl_id INTEGER;
97643 l_amb_context_code VARCHAR2(30);
97644 l_entity_code VARCHAR2(30);
97645 l_event_class_code VARCHAR2(30);
97646 l_ae_header_id NUMBER;
97647 l_event_type_code VARCHAR2(30);
97648 l_line_definition_code VARCHAR2(30);
97649 l_line_definition_owner_code VARCHAR2(1);
97650 --
97651 -- adr variables
97652 l_segment VARCHAR2(30);
97653 l_ccid NUMBER;
97654 l_adr_transaction_coa_id NUMBER;
97655 l_adr_accounting_coa_id NUMBER;
97656 l_adr_flexfield_segment_code VARCHAR2(30);
97657 l_adr_flex_value_set_id NUMBER;
97658 l_adr_value_type_code VARCHAR2(30);
97659 l_adr_value_combination_id NUMBER;
97660 l_adr_value_segment_code VARCHAR2(30);
97661
97662 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
97663 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
97664 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
97665 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
97666
97667 -- 4262811 Variables ------------------------------------------------------------------------------------------
97668 l_entered_amt_idx NUMBER;
97669 l_accted_amt_idx NUMBER;
97670 l_acc_rev_flag VARCHAR2(1);
97671 l_accrual_line_num NUMBER;
97672 l_tmp_amt NUMBER;
97673 l_acc_rev_natural_side_code VARCHAR2(1);
97674
97675 l_num_entries NUMBER;
97676 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
97677 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
97678 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
97679 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
97680 l_recog_line_1 NUMBER;
97681 l_recog_line_2 NUMBER;
97682
97683 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
97684 l_bflow_applied_to_amt NUMBER; -- 5132302
97685 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
97686
97687 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
97688
97689 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
97690 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
97691
97692 ---------------------------------------------------------------------------------------------------------------
97693
97694
97695 --
97696 -- bulk performance
97697 --
97698 l_balance_type_code VARCHAR2(1);
97699 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
97700 l_log_module VARCHAR2(240);
97701
97702 --
97703 -- Upgrade strategy
97704 --
97705 l_actual_upg_option VARCHAR2(1);
97706 l_enc_upg_option VARCHAR2(1);
97707
97708 --
97709 BEGIN
97710 --
97711 IF g_log_enabled THEN
97712 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_178';
97713 END IF;
97714 --
97715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97716
97717 trace
97718 (p_msg => 'BEGIN of AcctLineType_178'
97719 ,p_level => C_LEVEL_PROCEDURE
97720 ,p_module => l_log_module);
97721
97722 END IF;
97723 --
97724 l_component_type := 'AMB_JLT';
97725 l_component_code := 'MATERIAL_OVERHEAD_ABSORPTION';
97726 l_component_type_code := 'S';
97727 l_component_appl_id := 707;
97728 l_amb_context_code := 'DEFAULT';
97729 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
97730 l_event_class_code := 'USER_DEFINE';
97731 l_event_type_code := 'UDIR_INTERORG_SHIP';
97732 l_line_definition_owner_code := 'S';
97733 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
97734 --
97735 l_balance_type_code := 'A';
97736 l_segment := NULL;
97737 l_ccid := NULL;
97738 l_adr_transaction_coa_id := NULL;
97739 l_adr_accounting_coa_id := NULL;
97740 l_adr_flexfield_segment_code := NULL;
97741 l_adr_flex_value_set_id := NULL;
97742 l_adr_value_type_code := NULL;
97743 l_adr_value_combination_id := NULL;
97744 l_adr_value_segment_code := NULL;
97745
97746 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
97747 l_bflow_class_code := ''; -- 4219869 Business Flow
97748 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
97749 l_budgetary_control_flag := 'N';
97750
97751 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97752 l_bflow_applied_to_amt := NULL; -- 5132302
97753 l_entered_amt_idx := NULL; -- 4262811
97754 l_accted_amt_idx := NULL; -- 4262811
97755 l_acc_rev_flag := NULL; -- 4262811
97756 l_accrual_line_num := NULL; -- 4262811
97757 l_tmp_amt := NULL; -- 4262811
97758 --
97759
97760 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
97761 l_balance_type_code <> 'B' THEN
97762 IF NVL(p_source_24,9E125) = 3
97763 THEN
97764
97765 --
97766 XLA_AE_LINES_PKG.SetNewLine;
97767
97768 p_balance_type_code := l_balance_type_code;
97769 -- set the flag so later we will know whether the gain loss line needs to be created
97770
97771 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
97772 p_actual_flag :='A';
97773 END IF;
97774
97775 --
97776 -- bulk performance
97777 --
97778 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
97779 p_header_num => 0); -- 4262811
97780 --
97781 -- set accounting line options
97782 --
97783 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
97784 p_natural_side_code => 'D'
97785 , p_gain_or_loss_flag => 'N'
97786 , p_gl_transfer_mode_code => 'S'
97787 , p_acct_entry_type_code => 'A'
97788 , p_switch_side_flag => 'Y'
97789 , p_merge_duplicate_code => 'N'
97790 );
97791 --
97792 l_acc_rev_natural_side_code := 'C'; -- 4262811
97793 --
97794 --
97795 -- set accounting line type info
97796 --
97797 xla_ae_lines_pkg.SetAcctLineType
97798 (p_component_type => l_component_type
97799 ,p_event_type_code => l_event_type_code
97800 ,p_line_definition_owner_code => l_line_definition_owner_code
97801 ,p_line_definition_code => l_line_definition_code
97802 ,p_accounting_line_code => l_component_code
97803 ,p_accounting_line_type_code => l_component_type_code
97804 ,p_accounting_line_appl_id => l_component_appl_id
97805 ,p_amb_context_code => l_amb_context_code
97806 ,p_entity_code => l_entity_code
97807 ,p_event_class_code => l_event_class_code);
97808 --
97809 -- set accounting class
97810 --
97811 xla_ae_lines_pkg.SetAcctClass(
97812 p_accounting_class_code => 'MATERIAL_OVERHEAD_ABSORPTION'
97813 , p_ae_header_id => l_ae_header_id
97814 );
97815
97816 --
97817 -- set rounding class
97818 --
97819 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
97820 'MATERIAL_OVERHEAD_ABSORPTION';
97821
97822 --
97823 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
97824 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
97825 --
97826 -- bulk performance
97827 --
97828 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
97829
97830 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
97831 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
97832
97833 -- 4955764
97834 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
97835 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
97836
97837 -- 4458381 Public Sector Enh
97838
97839 --
97840 -- set accounting attributes for the line type
97841 --
97842 l_entered_amt_idx := 3;
97843 l_accted_amt_idx := 8;
97844 l_bflow_applied_to_amt_idx := NULL; -- 5132302
97845 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
97846 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
97847 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
97848 l_rec_acct_attrs.array_char_value(2) := p_source_12;
97849 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
97850 l_rec_acct_attrs.array_num_value(3) := p_source_18;
97851 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
97852 l_rec_acct_attrs.array_char_value(4) := p_source_15;
97853 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
97854 l_rec_acct_attrs.array_date_value(5) := p_source_19;
97855 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
97856 l_rec_acct_attrs.array_num_value(6) := p_source_20;
97857 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
97858 l_rec_acct_attrs.array_char_value(7) := p_source_21;
97859 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
97860 l_rec_acct_attrs.array_num_value(8) := p_source_22;
97861
97862 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
97863 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
97864
97865 ---------------------------------------------------------------------------------------------------------------
97866 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
97867 ---------------------------------------------------------------------------------------------------------------
97868 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
97869
97870 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97871 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
97872
97873 IF xla_accounting_cache_pkg.GetValueChar
97874 (p_source_code => 'LEDGER_CATEGORY_CODE'
97875 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
97876 AND l_bflow_method_code = 'PRIOR_ENTRY'
97877 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
97878 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
97879 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
97880 )
97881 THEN
97882 xla_ae_lines_pkg.BflowUpgEntry
97883 (p_business_method_code => l_bflow_method_code
97884 ,p_business_class_code => l_bflow_class_code
97885 ,p_balance_type => l_balance_type_code);
97886 ELSE
97887 NULL;
97888 -- No business flow processing for business flow method of NONE.
97889 END IF;
97890
97891 --
97892 -- call analytical criteria
97893 --
97894
97895 --
97896 -- call description
97897 --
97898 -- No description or it is inherited.
97899 --
97900 -- call ADRs
97901 -- Bug 4922099
97902 --
97903 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
97904 (NVL(l_actual_upg_option, 'N') = 'O') OR
97905 (NVL(l_enc_upg_option, 'N') = 'O')
97906 )
97907 THEN
97908 NULL;
97909 --
97910 --
97911
97912 l_ccid := AcctDerRule_4(
97913 p_application_id => p_application_id
97914 , p_ae_header_id => l_ae_header_id
97915 , p_source_4 => p_source_4
97916 , x_transaction_coa_id => l_adr_transaction_coa_id
97917 , x_accounting_coa_id => l_adr_accounting_coa_id
97918 , x_value_type_code => l_adr_value_type_code
97919 , p_side => 'NA'
97920 );
97921
97922 xla_ae_lines_pkg.set_ccid(
97923 p_code_combination_id => l_ccid
97924 , p_value_type_code => l_adr_value_type_code
97925 , p_transaction_coa_id => l_adr_transaction_coa_id
97926 , p_accounting_coa_id => l_adr_accounting_coa_id
97927 , p_adr_code => 'CST_DEFAULT'
97928 , p_adr_type_code => 'S'
97929 , p_component_type => l_component_type
97930 , p_component_code => l_component_code
97931 , p_component_type_code => l_component_type_code
97932 , p_component_appl_id => l_component_appl_id
97933 , p_amb_context_code => l_amb_context_code
97934 , p_side => 'NA'
97935 );
97936
97937
97938 --
97939 --
97940 END IF;
97941 --
97942 -- Bug 4922099
97943 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
97944 (NVL(l_enc_upg_option, 'N') = 'O')
97945 ) AND
97946 (l_bflow_method_code = 'PRIOR_ENTRY')
97947 )
97948 THEN
97949 IF
97950 --
97951 1 = 2
97952 --
97953 THEN
97954 xla_accounting_err_pkg.build_message
97955 (p_appli_s_name => 'XLA'
97956 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97957 ,p_token_1 => 'LINE_NUMBER'
97958 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
97959 ,p_token_2 => 'LINE_TYPE_NAME'
97960 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
97961 l_component_type
97962 ,l_component_code
97963 ,l_component_type_code
97964 ,l_component_appl_id
97965 ,l_amb_context_code
97966 ,l_entity_code
97967 ,l_event_class_code
97968 )
97969 ,p_token_3 => 'OWNER'
97970 ,p_value_3 => xla_lookups_pkg.get_meaning(
97971 p_lookup_type => 'XLA_OWNER_TYPE'
97972 ,p_lookup_code => l_component_type_code
97973 )
97974 ,p_token_4 => 'PRODUCT_NAME'
97975 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
97976 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
97977 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
97978 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
97979 ,p_ae_header_id => NULL
97980 );
97981
97982 IF (C_LEVEL_ERROR>= g_log_level) THEN
97983 trace
97984 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
97985 ,p_level => C_LEVEL_ERROR
97986 ,p_module => l_log_module);
97987 END IF;
97988 END IF;
97989 END IF;
97990 --
97991 --
97992 ------------------------------------------------------------------------------------------------
97993 -- 4219869 Business Flow
97994 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
97995 -- Prior Entry. Currently, the following code is always generated.
97996 ------------------------------------------------------------------------------------------------
97997 XLA_AE_LINES_PKG.ValidateCurrentLine;
97998
97999 ------------------------------------------------------------------------------------
98000 -- 4219869 Business Flow
98001 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98002 ------------------------------------------------------------------------------------
98003 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98004
98005 ----------------------------------------------------------------------------------
98006 -- 4219869 Business Flow
98007 -- Update journal entry status -- Need to generate this within IF <condition>
98008 ----------------------------------------------------------------------------------
98009 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98010 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98011 ,p_balance_type_code => l_balance_type_code
98012 );
98013
98014 -------------------------------------------------------------------------------------------
98015 -- 4262811 - Generate the Accrual Reversal lines
98016 -------------------------------------------------------------------------------------------
98017 BEGIN
98018 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98019 (g_array_event(p_event_id).array_value_num('header_index'));
98020 IF l_acc_rev_flag IS NULL THEN
98021 l_acc_rev_flag := 'N';
98022 END IF;
98023 EXCEPTION
98024 WHEN OTHERS THEN
98025 l_acc_rev_flag := 'N';
98026 END;
98027 --
98028 IF (l_acc_rev_flag = 'Y') THEN
98029
98030 -- 4645092 ------------------------------------------------------------------------------
98031 -- To allow MPA report to determine if it should generate report process
98032 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98033 ------------------------------------------------------------------------------------------
98034
98035 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98036 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98037 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
98038 -- call ADRs
98039 -- Bug 4922099
98040 --
98041 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98042 (NVL(l_actual_upg_option, 'N') = 'O') OR
98043 (NVL(l_enc_upg_option, 'N') = 'O')
98044 )
98045 THEN
98046 NULL;
98047 --
98048 --
98049
98050 l_ccid := AcctDerRule_4(
98051 p_application_id => p_application_id
98052 , p_ae_header_id => l_ae_header_id
98053 , p_source_4 => p_source_4
98054 , x_transaction_coa_id => l_adr_transaction_coa_id
98055 , x_accounting_coa_id => l_adr_accounting_coa_id
98056 , x_value_type_code => l_adr_value_type_code
98057 , p_side => 'NA'
98058 );
98059
98060 xla_ae_lines_pkg.set_ccid(
98061 p_code_combination_id => l_ccid
98062 , p_value_type_code => l_adr_value_type_code
98063 , p_transaction_coa_id => l_adr_transaction_coa_id
98064 , p_accounting_coa_id => l_adr_accounting_coa_id
98065 , p_adr_code => 'CST_DEFAULT'
98066 , p_adr_type_code => 'S'
98067 , p_component_type => l_component_type
98068 , p_component_code => l_component_code
98069 , p_component_type_code => l_component_type_code
98070 , p_component_appl_id => l_component_appl_id
98071 , p_amb_context_code => l_amb_context_code
98072 , p_side => 'NA'
98073 );
98074
98075
98076 --
98077 --
98078 END IF;
98079
98080 --
98081 -- Update the line information that should be overwritten
98082 --
98083 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98084 p_header_num => 1);
98085 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
98086
98087 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98088
98089 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
98090 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98091 END IF;
98092
98093 --
98094 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98095 --
98096 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98097 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
98098 ELSE
98099 ---------------------------------------------------------------------------------------------------
98100 -- 4262811a Switch Sign
98101 ---------------------------------------------------------------------------------------------------
98102 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
98103 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98104 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98105 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98106 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98107 -- 5132302
98108 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98109 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98110
98111 END IF;
98112
98113 -- 4955764
98114 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98115 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98116
98117
98118 XLA_AE_LINES_PKG.ValidateCurrentLine;
98119 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98120
98121 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98122 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98123 ,p_balance_type_code => l_balance_type_code);
98124
98125 END IF;
98126
98127 -----------------------------------------------------------------------------------------
98128 -- 4262811 Multiperiod Accounting
98129 -----------------------------------------------------------------------------------------
98130 -- No MPA option is assigned.
98131
98132
98133 END IF;
98134 END IF;
98135 --
98136
98137 --
98138 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98139 trace
98140 (p_msg => 'END of AcctLineType_178'
98141 ,p_level => C_LEVEL_PROCEDURE
98142 ,p_module => l_log_module);
98143 END IF;
98144 --
98145 EXCEPTION
98146 WHEN xla_exceptions_pkg.application_exception THEN
98147 RAISE;
98148 WHEN OTHERS THEN
98149 xla_exceptions_pkg.raise_message
98150 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_178');
98151 END AcctLineType_178;
98152 --
98153
98154 ---------------------------------------
98155 --
98156 -- PRIVATE FUNCTION
98157 -- AcctLineType_179
98158 --
98159 ---------------------------------------
98160 PROCEDURE AcctLineType_179 (
98161 p_application_id IN NUMBER
98162 ,p_event_id IN NUMBER
98163 ,p_calculate_acctd_flag IN VARCHAR2
98164 ,p_calculate_g_l_flag IN VARCHAR2
98165 ,p_actual_flag IN OUT VARCHAR2
98166 ,p_balance_type_code OUT VARCHAR2
98167 ,p_gain_or_loss_ref OUT VARCHAR2
98168
98169 --Cost Management Default Account
98170 , p_source_4 IN NUMBER
98171 --DISTRIBUTION_IDENTIFIER
98172 , p_source_11 IN NUMBER
98173 --Distribution Type
98174 , p_source_12 IN VARCHAR2
98175 , p_source_12_meaning IN VARCHAR2
98176 --Entered Currency Code
98177 , p_source_15 IN VARCHAR2
98178 --Entered Amount
98179 , p_source_18 IN NUMBER
98180 --Currency Conversion Date
98181 , p_source_19 IN DATE
98182 --Currency Conversion Rate
98183 , p_source_20 IN NUMBER
98184 --Currency Conversion Type
98185 , p_source_21 IN VARCHAR2
98186 --Accounted Amount
98187 , p_source_22 IN NUMBER
98188 --Accounting Line Type
98189 , p_source_24 IN NUMBER
98190 )
98191 IS
98192
98193 l_component_type VARCHAR2(80);
98194 l_component_code VARCHAR2(30);
98195 l_component_type_code VARCHAR2(1);
98196 l_component_appl_id INTEGER;
98197 l_amb_context_code VARCHAR2(30);
98198 l_entity_code VARCHAR2(30);
98199 l_event_class_code VARCHAR2(30);
98200 l_ae_header_id NUMBER;
98201 l_event_type_code VARCHAR2(30);
98202 l_line_definition_code VARCHAR2(30);
98203 l_line_definition_owner_code VARCHAR2(1);
98204 --
98205 -- adr variables
98206 l_segment VARCHAR2(30);
98207 l_ccid NUMBER;
98208 l_adr_transaction_coa_id NUMBER;
98209 l_adr_accounting_coa_id NUMBER;
98210 l_adr_flexfield_segment_code VARCHAR2(30);
98211 l_adr_flex_value_set_id NUMBER;
98212 l_adr_value_type_code VARCHAR2(30);
98213 l_adr_value_combination_id NUMBER;
98214 l_adr_value_segment_code VARCHAR2(30);
98215
98216 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
98217 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
98218 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
98219 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
98220
98221 -- 4262811 Variables ------------------------------------------------------------------------------------------
98222 l_entered_amt_idx NUMBER;
98223 l_accted_amt_idx NUMBER;
98224 l_acc_rev_flag VARCHAR2(1);
98225 l_accrual_line_num NUMBER;
98226 l_tmp_amt NUMBER;
98227 l_acc_rev_natural_side_code VARCHAR2(1);
98228
98229 l_num_entries NUMBER;
98230 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
98231 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
98232 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
98233 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
98234 l_recog_line_1 NUMBER;
98235 l_recog_line_2 NUMBER;
98236
98237 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
98238 l_bflow_applied_to_amt NUMBER; -- 5132302
98239 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
98240
98241 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98242
98243 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
98244 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
98245
98246 ---------------------------------------------------------------------------------------------------------------
98247
98248
98249 --
98250 -- bulk performance
98251 --
98252 l_balance_type_code VARCHAR2(1);
98253 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
98254 l_log_module VARCHAR2(240);
98255
98256 --
98257 -- Upgrade strategy
98258 --
98259 l_actual_upg_option VARCHAR2(1);
98260 l_enc_upg_option VARCHAR2(1);
98261
98262 --
98263 BEGIN
98264 --
98265 IF g_log_enabled THEN
98266 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_179';
98267 END IF;
98268 --
98269 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98270
98271 trace
98272 (p_msg => 'BEGIN of AcctLineType_179'
98273 ,p_level => C_LEVEL_PROCEDURE
98274 ,p_module => l_log_module);
98275
98276 END IF;
98277 --
98278 l_component_type := 'AMB_JLT';
98279 l_component_code := 'OFFSET';
98280 l_component_type_code := 'S';
98281 l_component_appl_id := 707;
98282 l_amb_context_code := 'DEFAULT';
98283 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
98284 l_event_class_code := 'USER_DEFINE';
98285 l_event_type_code := 'UCG_TXFR';
98286 l_line_definition_owner_code := 'S';
98287 l_line_definition_code := 'USER_CG_TXFR';
98288 --
98289 l_balance_type_code := 'A';
98290 l_segment := NULL;
98291 l_ccid := NULL;
98292 l_adr_transaction_coa_id := NULL;
98293 l_adr_accounting_coa_id := NULL;
98294 l_adr_flexfield_segment_code := NULL;
98295 l_adr_flex_value_set_id := NULL;
98296 l_adr_value_type_code := NULL;
98297 l_adr_value_combination_id := NULL;
98298 l_adr_value_segment_code := NULL;
98299
98300 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
98301 l_bflow_class_code := ''; -- 4219869 Business Flow
98302 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
98303 l_budgetary_control_flag := 'N';
98304
98305 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98306 l_bflow_applied_to_amt := NULL; -- 5132302
98307 l_entered_amt_idx := NULL; -- 4262811
98308 l_accted_amt_idx := NULL; -- 4262811
98309 l_acc_rev_flag := NULL; -- 4262811
98310 l_accrual_line_num := NULL; -- 4262811
98311 l_tmp_amt := NULL; -- 4262811
98312 --
98313
98314 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98315 l_balance_type_code <> 'B' THEN
98316 IF NVL(p_source_24,9E125) = 2
98317 THEN
98318
98319 --
98320 XLA_AE_LINES_PKG.SetNewLine;
98321
98322 p_balance_type_code := l_balance_type_code;
98323 -- set the flag so later we will know whether the gain loss line needs to be created
98324
98325 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98326 p_actual_flag :='A';
98327 END IF;
98328
98329 --
98330 -- bulk performance
98331 --
98332 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98333 p_header_num => 0); -- 4262811
98334 --
98335 -- set accounting line options
98336 --
98337 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98338 p_natural_side_code => 'D'
98339 , p_gain_or_loss_flag => 'N'
98340 , p_gl_transfer_mode_code => 'S'
98341 , p_acct_entry_type_code => 'A'
98342 , p_switch_side_flag => 'Y'
98343 , p_merge_duplicate_code => 'N'
98344 );
98345 --
98346 l_acc_rev_natural_side_code := 'C'; -- 4262811
98347 --
98348 --
98349 -- set accounting line type info
98350 --
98351 xla_ae_lines_pkg.SetAcctLineType
98352 (p_component_type => l_component_type
98353 ,p_event_type_code => l_event_type_code
98354 ,p_line_definition_owner_code => l_line_definition_owner_code
98355 ,p_line_definition_code => l_line_definition_code
98356 ,p_accounting_line_code => l_component_code
98357 ,p_accounting_line_type_code => l_component_type_code
98358 ,p_accounting_line_appl_id => l_component_appl_id
98359 ,p_amb_context_code => l_amb_context_code
98360 ,p_entity_code => l_entity_code
98361 ,p_event_class_code => l_event_class_code);
98362 --
98363 -- set accounting class
98364 --
98365 xla_ae_lines_pkg.SetAcctClass(
98366 p_accounting_class_code => 'OFFSET'
98367 , p_ae_header_id => l_ae_header_id
98368 );
98369
98370 --
98371 -- set rounding class
98372 --
98373 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98374 'OFFSET';
98375
98376 --
98377 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98378 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98379 --
98380 -- bulk performance
98381 --
98382 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98383
98384 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98385 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98386
98387 -- 4955764
98388 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98389 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98390
98391 -- 4458381 Public Sector Enh
98392
98393 --
98394 -- set accounting attributes for the line type
98395 --
98396 l_entered_amt_idx := 3;
98397 l_accted_amt_idx := 8;
98398 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98399 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98400 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
98401 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98402 l_rec_acct_attrs.array_char_value(2) := p_source_12;
98403 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98404 l_rec_acct_attrs.array_num_value(3) := p_source_18;
98405 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98406 l_rec_acct_attrs.array_char_value(4) := p_source_15;
98407 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98408 l_rec_acct_attrs.array_date_value(5) := p_source_19;
98409 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98410 l_rec_acct_attrs.array_num_value(6) := p_source_20;
98411 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98412 l_rec_acct_attrs.array_char_value(7) := p_source_21;
98413 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98414 l_rec_acct_attrs.array_num_value(8) := p_source_22;
98415
98416 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98417 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98418
98419 ---------------------------------------------------------------------------------------------------------------
98420 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98421 ---------------------------------------------------------------------------------------------------------------
98422 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98423
98424 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98425 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98426
98427 IF xla_accounting_cache_pkg.GetValueChar
98428 (p_source_code => 'LEDGER_CATEGORY_CODE'
98429 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98430 AND l_bflow_method_code = 'PRIOR_ENTRY'
98431 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98432 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98433 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98434 )
98435 THEN
98436 xla_ae_lines_pkg.BflowUpgEntry
98437 (p_business_method_code => l_bflow_method_code
98438 ,p_business_class_code => l_bflow_class_code
98439 ,p_balance_type => l_balance_type_code);
98440 ELSE
98441 NULL;
98442 -- No business flow processing for business flow method of NONE.
98443 END IF;
98444
98445 --
98446 -- call analytical criteria
98447 --
98448
98449 --
98450 -- call description
98451 --
98452 -- No description or it is inherited.
98453 --
98454 -- call ADRs
98455 -- Bug 4922099
98456 --
98457 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98458 (NVL(l_actual_upg_option, 'N') = 'O') OR
98459 (NVL(l_enc_upg_option, 'N') = 'O')
98460 )
98461 THEN
98462 NULL;
98463 --
98464 --
98465
98466 l_ccid := AcctDerRule_4(
98467 p_application_id => p_application_id
98468 , p_ae_header_id => l_ae_header_id
98469 , p_source_4 => p_source_4
98470 , x_transaction_coa_id => l_adr_transaction_coa_id
98471 , x_accounting_coa_id => l_adr_accounting_coa_id
98472 , x_value_type_code => l_adr_value_type_code
98473 , p_side => 'NA'
98474 );
98475
98476 xla_ae_lines_pkg.set_ccid(
98477 p_code_combination_id => l_ccid
98478 , p_value_type_code => l_adr_value_type_code
98479 , p_transaction_coa_id => l_adr_transaction_coa_id
98480 , p_accounting_coa_id => l_adr_accounting_coa_id
98481 , p_adr_code => 'CST_DEFAULT'
98482 , p_adr_type_code => 'S'
98483 , p_component_type => l_component_type
98484 , p_component_code => l_component_code
98485 , p_component_type_code => l_component_type_code
98486 , p_component_appl_id => l_component_appl_id
98487 , p_amb_context_code => l_amb_context_code
98488 , p_side => 'NA'
98489 );
98490
98491
98492 --
98493 --
98494 END IF;
98495 --
98496 -- Bug 4922099
98497 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
98498 (NVL(l_enc_upg_option, 'N') = 'O')
98499 ) AND
98500 (l_bflow_method_code = 'PRIOR_ENTRY')
98501 )
98502 THEN
98503 IF
98504 --
98505 1 = 2
98506 --
98507 THEN
98508 xla_accounting_err_pkg.build_message
98509 (p_appli_s_name => 'XLA'
98510 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98511 ,p_token_1 => 'LINE_NUMBER'
98512 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
98513 ,p_token_2 => 'LINE_TYPE_NAME'
98514 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
98515 l_component_type
98516 ,l_component_code
98517 ,l_component_type_code
98518 ,l_component_appl_id
98519 ,l_amb_context_code
98520 ,l_entity_code
98521 ,l_event_class_code
98522 )
98523 ,p_token_3 => 'OWNER'
98524 ,p_value_3 => xla_lookups_pkg.get_meaning(
98525 p_lookup_type => 'XLA_OWNER_TYPE'
98526 ,p_lookup_code => l_component_type_code
98527 )
98528 ,p_token_4 => 'PRODUCT_NAME'
98529 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
98530 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
98531 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
98532 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
98533 ,p_ae_header_id => NULL
98534 );
98535
98536 IF (C_LEVEL_ERROR>= g_log_level) THEN
98537 trace
98538 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
98539 ,p_level => C_LEVEL_ERROR
98540 ,p_module => l_log_module);
98541 END IF;
98542 END IF;
98543 END IF;
98544 --
98545 --
98546 ------------------------------------------------------------------------------------------------
98547 -- 4219869 Business Flow
98548 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
98549 -- Prior Entry. Currently, the following code is always generated.
98550 ------------------------------------------------------------------------------------------------
98551 XLA_AE_LINES_PKG.ValidateCurrentLine;
98552
98553 ------------------------------------------------------------------------------------
98554 -- 4219869 Business Flow
98555 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
98556 ------------------------------------------------------------------------------------
98557 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98558
98559 ----------------------------------------------------------------------------------
98560 -- 4219869 Business Flow
98561 -- Update journal entry status -- Need to generate this within IF <condition>
98562 ----------------------------------------------------------------------------------
98563 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98564 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
98565 ,p_balance_type_code => l_balance_type_code
98566 );
98567
98568 -------------------------------------------------------------------------------------------
98569 -- 4262811 - Generate the Accrual Reversal lines
98570 -------------------------------------------------------------------------------------------
98571 BEGIN
98572 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
98573 (g_array_event(p_event_id).array_value_num('header_index'));
98574 IF l_acc_rev_flag IS NULL THEN
98575 l_acc_rev_flag := 'N';
98576 END IF;
98577 EXCEPTION
98578 WHEN OTHERS THEN
98579 l_acc_rev_flag := 'N';
98580 END;
98581 --
98582 IF (l_acc_rev_flag = 'Y') THEN
98583
98584 -- 4645092 ------------------------------------------------------------------------------
98585 -- To allow MPA report to determine if it should generate report process
98586 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
98587 ------------------------------------------------------------------------------------------
98588
98589 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
98590 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
98591 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
98592 -- call ADRs
98593 -- Bug 4922099
98594 --
98595 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
98596 (NVL(l_actual_upg_option, 'N') = 'O') OR
98597 (NVL(l_enc_upg_option, 'N') = 'O')
98598 )
98599 THEN
98600 NULL;
98601 --
98602 --
98603
98604 l_ccid := AcctDerRule_4(
98605 p_application_id => p_application_id
98606 , p_ae_header_id => l_ae_header_id
98607 , p_source_4 => p_source_4
98608 , x_transaction_coa_id => l_adr_transaction_coa_id
98609 , x_accounting_coa_id => l_adr_accounting_coa_id
98610 , x_value_type_code => l_adr_value_type_code
98611 , p_side => 'NA'
98612 );
98613
98614 xla_ae_lines_pkg.set_ccid(
98615 p_code_combination_id => l_ccid
98616 , p_value_type_code => l_adr_value_type_code
98617 , p_transaction_coa_id => l_adr_transaction_coa_id
98618 , p_accounting_coa_id => l_adr_accounting_coa_id
98619 , p_adr_code => 'CST_DEFAULT'
98620 , p_adr_type_code => 'S'
98621 , p_component_type => l_component_type
98622 , p_component_code => l_component_code
98623 , p_component_type_code => l_component_type_code
98624 , p_component_appl_id => l_component_appl_id
98625 , p_amb_context_code => l_amb_context_code
98626 , p_side => 'NA'
98627 );
98628
98629
98630 --
98631 --
98632 END IF;
98633
98634 --
98635 -- Update the line information that should be overwritten
98636 --
98637 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
98638 p_header_num => 1);
98639 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
98640
98641 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
98642
98643 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
98644 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
98645 END IF;
98646
98647 --
98648 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
98649 --
98650 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
98651 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
98652 ELSE
98653 ---------------------------------------------------------------------------------------------------
98654 -- 4262811a Switch Sign
98655 ---------------------------------------------------------------------------------------------------
98656 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
98657 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98658 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98659 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
98660 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98661 -- 5132302
98662 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
98663 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
98664
98665 END IF;
98666
98667 -- 4955764
98668 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98669 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
98670
98671
98672 XLA_AE_LINES_PKG.ValidateCurrentLine;
98673 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
98674
98675 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
98676 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
98677 ,p_balance_type_code => l_balance_type_code);
98678
98679 END IF;
98680
98681 -----------------------------------------------------------------------------------------
98682 -- 4262811 Multiperiod Accounting
98683 -----------------------------------------------------------------------------------------
98684 -- No MPA option is assigned.
98685
98686
98687 END IF;
98688 END IF;
98689 --
98690
98691 --
98692 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98693 trace
98694 (p_msg => 'END of AcctLineType_179'
98695 ,p_level => C_LEVEL_PROCEDURE
98696 ,p_module => l_log_module);
98697 END IF;
98698 --
98699 EXCEPTION
98700 WHEN xla_exceptions_pkg.application_exception THEN
98701 RAISE;
98702 WHEN OTHERS THEN
98703 xla_exceptions_pkg.raise_message
98704 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_179');
98705 END AcctLineType_179;
98706 --
98707
98708 ---------------------------------------
98709 --
98710 -- PRIVATE FUNCTION
98711 -- AcctLineType_180
98712 --
98713 ---------------------------------------
98714 PROCEDURE AcctLineType_180 (
98715 p_application_id IN NUMBER
98716 ,p_event_id IN NUMBER
98717 ,p_calculate_acctd_flag IN VARCHAR2
98718 ,p_calculate_g_l_flag IN VARCHAR2
98719 ,p_actual_flag IN OUT VARCHAR2
98720 ,p_balance_type_code OUT VARCHAR2
98721 ,p_gain_or_loss_ref OUT VARCHAR2
98722
98723 --Cost Management Default Account
98724 , p_source_4 IN NUMBER
98725 --DISTRIBUTION_IDENTIFIER
98726 , p_source_11 IN NUMBER
98727 --Distribution Type
98728 , p_source_12 IN VARCHAR2
98729 , p_source_12_meaning IN VARCHAR2
98730 --Entered Currency Code
98731 , p_source_15 IN VARCHAR2
98732 --Entered Amount
98733 , p_source_18 IN NUMBER
98734 --Currency Conversion Date
98735 , p_source_19 IN DATE
98736 --Currency Conversion Rate
98737 , p_source_20 IN NUMBER
98738 --Currency Conversion Type
98739 , p_source_21 IN VARCHAR2
98740 --Accounted Amount
98741 , p_source_22 IN NUMBER
98742 --Accounting Line Type
98743 , p_source_24 IN NUMBER
98744 )
98745 IS
98746
98747 l_component_type VARCHAR2(80);
98748 l_component_code VARCHAR2(30);
98749 l_component_type_code VARCHAR2(1);
98750 l_component_appl_id INTEGER;
98751 l_amb_context_code VARCHAR2(30);
98752 l_entity_code VARCHAR2(30);
98753 l_event_class_code VARCHAR2(30);
98754 l_ae_header_id NUMBER;
98755 l_event_type_code VARCHAR2(30);
98756 l_line_definition_code VARCHAR2(30);
98757 l_line_definition_owner_code VARCHAR2(1);
98758 --
98759 -- adr variables
98760 l_segment VARCHAR2(30);
98761 l_ccid NUMBER;
98762 l_adr_transaction_coa_id NUMBER;
98763 l_adr_accounting_coa_id NUMBER;
98764 l_adr_flexfield_segment_code VARCHAR2(30);
98765 l_adr_flex_value_set_id NUMBER;
98766 l_adr_value_type_code VARCHAR2(30);
98767 l_adr_value_combination_id NUMBER;
98768 l_adr_value_segment_code VARCHAR2(30);
98769
98770 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
98771 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
98772 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
98773 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
98774
98775 -- 4262811 Variables ------------------------------------------------------------------------------------------
98776 l_entered_amt_idx NUMBER;
98777 l_accted_amt_idx NUMBER;
98778 l_acc_rev_flag VARCHAR2(1);
98779 l_accrual_line_num NUMBER;
98780 l_tmp_amt NUMBER;
98781 l_acc_rev_natural_side_code VARCHAR2(1);
98782
98783 l_num_entries NUMBER;
98784 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
98785 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
98786 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
98787 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
98788 l_recog_line_1 NUMBER;
98789 l_recog_line_2 NUMBER;
98790
98791 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
98792 l_bflow_applied_to_amt NUMBER; -- 5132302
98793 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
98794
98795 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
98796
98797 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
98798 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
98799
98800 ---------------------------------------------------------------------------------------------------------------
98801
98802
98803 --
98804 -- bulk performance
98805 --
98806 l_balance_type_code VARCHAR2(1);
98807 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
98808 l_log_module VARCHAR2(240);
98809
98810 --
98811 -- Upgrade strategy
98812 --
98813 l_actual_upg_option VARCHAR2(1);
98814 l_enc_upg_option VARCHAR2(1);
98815
98816 --
98817 BEGIN
98818 --
98819 IF g_log_enabled THEN
98820 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_180';
98821 END IF;
98822 --
98823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98824
98825 trace
98826 (p_msg => 'BEGIN of AcctLineType_180'
98827 ,p_level => C_LEVEL_PROCEDURE
98828 ,p_module => l_log_module);
98829
98830 END IF;
98831 --
98832 l_component_type := 'AMB_JLT';
98833 l_component_code := 'OFFSET';
98834 l_component_type_code := 'S';
98835 l_component_appl_id := 707;
98836 l_amb_context_code := 'DEFAULT';
98837 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
98838 l_event_class_code := 'USER_DEFINE';
98839 l_event_type_code := 'UMISC_ISSUE';
98840 l_line_definition_owner_code := 'S';
98841 l_line_definition_code := 'USER_ISSUE';
98842 --
98843 l_balance_type_code := 'A';
98844 l_segment := NULL;
98845 l_ccid := NULL;
98846 l_adr_transaction_coa_id := NULL;
98847 l_adr_accounting_coa_id := NULL;
98848 l_adr_flexfield_segment_code := NULL;
98849 l_adr_flex_value_set_id := NULL;
98850 l_adr_value_type_code := NULL;
98851 l_adr_value_combination_id := NULL;
98852 l_adr_value_segment_code := NULL;
98853
98854 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
98855 l_bflow_class_code := ''; -- 4219869 Business Flow
98856 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
98857 l_budgetary_control_flag := 'N';
98858
98859 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98860 l_bflow_applied_to_amt := NULL; -- 5132302
98861 l_entered_amt_idx := NULL; -- 4262811
98862 l_accted_amt_idx := NULL; -- 4262811
98863 l_acc_rev_flag := NULL; -- 4262811
98864 l_accrual_line_num := NULL; -- 4262811
98865 l_tmp_amt := NULL; -- 4262811
98866 --
98867
98868 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
98869 l_balance_type_code <> 'B' THEN
98870 IF NVL(p_source_24,9E125) = 2
98871 THEN
98872
98873 --
98874 XLA_AE_LINES_PKG.SetNewLine;
98875
98876 p_balance_type_code := l_balance_type_code;
98877 -- set the flag so later we will know whether the gain loss line needs to be created
98878
98879 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
98880 p_actual_flag :='A';
98881 END IF;
98882
98883 --
98884 -- bulk performance
98885 --
98886 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
98887 p_header_num => 0); -- 4262811
98888 --
98889 -- set accounting line options
98890 --
98891 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
98892 p_natural_side_code => 'D'
98893 , p_gain_or_loss_flag => 'N'
98894 , p_gl_transfer_mode_code => 'S'
98895 , p_acct_entry_type_code => 'A'
98896 , p_switch_side_flag => 'Y'
98897 , p_merge_duplicate_code => 'N'
98898 );
98899 --
98900 l_acc_rev_natural_side_code := 'C'; -- 4262811
98901 --
98902 --
98903 -- set accounting line type info
98904 --
98905 xla_ae_lines_pkg.SetAcctLineType
98906 (p_component_type => l_component_type
98907 ,p_event_type_code => l_event_type_code
98908 ,p_line_definition_owner_code => l_line_definition_owner_code
98909 ,p_line_definition_code => l_line_definition_code
98910 ,p_accounting_line_code => l_component_code
98911 ,p_accounting_line_type_code => l_component_type_code
98912 ,p_accounting_line_appl_id => l_component_appl_id
98913 ,p_amb_context_code => l_amb_context_code
98914 ,p_entity_code => l_entity_code
98915 ,p_event_class_code => l_event_class_code);
98916 --
98917 -- set accounting class
98918 --
98919 xla_ae_lines_pkg.SetAcctClass(
98920 p_accounting_class_code => 'OFFSET'
98921 , p_ae_header_id => l_ae_header_id
98922 );
98923
98924 --
98925 -- set rounding class
98926 --
98927 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
98928 'OFFSET';
98929
98930 --
98931 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
98932 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
98933 --
98934 -- bulk performance
98935 --
98936 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
98937
98938 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
98939 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
98940
98941 -- 4955764
98942 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
98943 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
98944
98945 -- 4458381 Public Sector Enh
98946
98947 --
98948 -- set accounting attributes for the line type
98949 --
98950 l_entered_amt_idx := 3;
98951 l_accted_amt_idx := 8;
98952 l_bflow_applied_to_amt_idx := NULL; -- 5132302
98953 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
98954 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
98955 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
98956 l_rec_acct_attrs.array_char_value(2) := p_source_12;
98957 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
98958 l_rec_acct_attrs.array_num_value(3) := p_source_18;
98959 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
98960 l_rec_acct_attrs.array_char_value(4) := p_source_15;
98961 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
98962 l_rec_acct_attrs.array_date_value(5) := p_source_19;
98963 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
98964 l_rec_acct_attrs.array_num_value(6) := p_source_20;
98965 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
98966 l_rec_acct_attrs.array_char_value(7) := p_source_21;
98967 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
98968 l_rec_acct_attrs.array_num_value(8) := p_source_22;
98969
98970 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
98971 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
98972
98973 ---------------------------------------------------------------------------------------------------------------
98974 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
98975 ---------------------------------------------------------------------------------------------------------------
98976 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
98977
98978 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98979 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
98980
98981 IF xla_accounting_cache_pkg.GetValueChar
98982 (p_source_code => 'LEDGER_CATEGORY_CODE'
98983 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
98984 AND l_bflow_method_code = 'PRIOR_ENTRY'
98985 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
98986 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
98987 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
98988 )
98989 THEN
98990 xla_ae_lines_pkg.BflowUpgEntry
98991 (p_business_method_code => l_bflow_method_code
98992 ,p_business_class_code => l_bflow_class_code
98993 ,p_balance_type => l_balance_type_code);
98994 ELSE
98995 NULL;
98996 -- No business flow processing for business flow method of NONE.
98997 END IF;
98998
98999 --
99000 -- call analytical criteria
99001 --
99002
99003 --
99004 -- call description
99005 --
99006 -- No description or it is inherited.
99007 --
99008 -- call ADRs
99009 -- Bug 4922099
99010 --
99011 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99012 (NVL(l_actual_upg_option, 'N') = 'O') OR
99013 (NVL(l_enc_upg_option, 'N') = 'O')
99014 )
99015 THEN
99016 NULL;
99017 --
99018 --
99019
99020 l_ccid := AcctDerRule_4(
99021 p_application_id => p_application_id
99022 , p_ae_header_id => l_ae_header_id
99023 , p_source_4 => p_source_4
99024 , x_transaction_coa_id => l_adr_transaction_coa_id
99025 , x_accounting_coa_id => l_adr_accounting_coa_id
99026 , x_value_type_code => l_adr_value_type_code
99027 , p_side => 'NA'
99028 );
99029
99030 xla_ae_lines_pkg.set_ccid(
99031 p_code_combination_id => l_ccid
99032 , p_value_type_code => l_adr_value_type_code
99033 , p_transaction_coa_id => l_adr_transaction_coa_id
99034 , p_accounting_coa_id => l_adr_accounting_coa_id
99035 , p_adr_code => 'CST_DEFAULT'
99036 , p_adr_type_code => 'S'
99037 , p_component_type => l_component_type
99038 , p_component_code => l_component_code
99039 , p_component_type_code => l_component_type_code
99040 , p_component_appl_id => l_component_appl_id
99041 , p_amb_context_code => l_amb_context_code
99042 , p_side => 'NA'
99043 );
99044
99045
99046 --
99047 --
99048 END IF;
99049 --
99050 -- Bug 4922099
99051 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99052 (NVL(l_enc_upg_option, 'N') = 'O')
99053 ) AND
99054 (l_bflow_method_code = 'PRIOR_ENTRY')
99055 )
99056 THEN
99057 IF
99058 --
99059 1 = 2
99060 --
99061 THEN
99062 xla_accounting_err_pkg.build_message
99063 (p_appli_s_name => 'XLA'
99064 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99065 ,p_token_1 => 'LINE_NUMBER'
99066 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
99067 ,p_token_2 => 'LINE_TYPE_NAME'
99068 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
99069 l_component_type
99070 ,l_component_code
99071 ,l_component_type_code
99072 ,l_component_appl_id
99073 ,l_amb_context_code
99074 ,l_entity_code
99075 ,l_event_class_code
99076 )
99077 ,p_token_3 => 'OWNER'
99078 ,p_value_3 => xla_lookups_pkg.get_meaning(
99079 p_lookup_type => 'XLA_OWNER_TYPE'
99080 ,p_lookup_code => l_component_type_code
99081 )
99082 ,p_token_4 => 'PRODUCT_NAME'
99083 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99084 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99085 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99086 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99087 ,p_ae_header_id => NULL
99088 );
99089
99090 IF (C_LEVEL_ERROR>= g_log_level) THEN
99091 trace
99092 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99093 ,p_level => C_LEVEL_ERROR
99094 ,p_module => l_log_module);
99095 END IF;
99096 END IF;
99097 END IF;
99098 --
99099 --
99100 ------------------------------------------------------------------------------------------------
99101 -- 4219869 Business Flow
99102 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99103 -- Prior Entry. Currently, the following code is always generated.
99104 ------------------------------------------------------------------------------------------------
99105 XLA_AE_LINES_PKG.ValidateCurrentLine;
99106
99107 ------------------------------------------------------------------------------------
99108 -- 4219869 Business Flow
99109 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99110 ------------------------------------------------------------------------------------
99111 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99112
99113 ----------------------------------------------------------------------------------
99114 -- 4219869 Business Flow
99115 -- Update journal entry status -- Need to generate this within IF <condition>
99116 ----------------------------------------------------------------------------------
99117 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99118 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99119 ,p_balance_type_code => l_balance_type_code
99120 );
99121
99122 -------------------------------------------------------------------------------------------
99123 -- 4262811 - Generate the Accrual Reversal lines
99124 -------------------------------------------------------------------------------------------
99125 BEGIN
99126 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99127 (g_array_event(p_event_id).array_value_num('header_index'));
99128 IF l_acc_rev_flag IS NULL THEN
99129 l_acc_rev_flag := 'N';
99130 END IF;
99131 EXCEPTION
99132 WHEN OTHERS THEN
99133 l_acc_rev_flag := 'N';
99134 END;
99135 --
99136 IF (l_acc_rev_flag = 'Y') THEN
99137
99138 -- 4645092 ------------------------------------------------------------------------------
99139 -- To allow MPA report to determine if it should generate report process
99140 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99141 ------------------------------------------------------------------------------------------
99142
99143 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99144 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99145 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
99146 -- call ADRs
99147 -- Bug 4922099
99148 --
99149 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99150 (NVL(l_actual_upg_option, 'N') = 'O') OR
99151 (NVL(l_enc_upg_option, 'N') = 'O')
99152 )
99153 THEN
99154 NULL;
99155 --
99156 --
99157
99158 l_ccid := AcctDerRule_4(
99159 p_application_id => p_application_id
99160 , p_ae_header_id => l_ae_header_id
99161 , p_source_4 => p_source_4
99162 , x_transaction_coa_id => l_adr_transaction_coa_id
99163 , x_accounting_coa_id => l_adr_accounting_coa_id
99164 , x_value_type_code => l_adr_value_type_code
99165 , p_side => 'NA'
99166 );
99167
99168 xla_ae_lines_pkg.set_ccid(
99169 p_code_combination_id => l_ccid
99170 , p_value_type_code => l_adr_value_type_code
99171 , p_transaction_coa_id => l_adr_transaction_coa_id
99172 , p_accounting_coa_id => l_adr_accounting_coa_id
99173 , p_adr_code => 'CST_DEFAULT'
99174 , p_adr_type_code => 'S'
99175 , p_component_type => l_component_type
99176 , p_component_code => l_component_code
99177 , p_component_type_code => l_component_type_code
99178 , p_component_appl_id => l_component_appl_id
99179 , p_amb_context_code => l_amb_context_code
99180 , p_side => 'NA'
99181 );
99182
99183
99184 --
99185 --
99186 END IF;
99187
99188 --
99189 -- Update the line information that should be overwritten
99190 --
99191 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99192 p_header_num => 1);
99193 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
99194
99195 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99196
99197 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
99198 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99199 END IF;
99200
99201 --
99202 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99203 --
99204 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99205 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
99206 ELSE
99207 ---------------------------------------------------------------------------------------------------
99208 -- 4262811a Switch Sign
99209 ---------------------------------------------------------------------------------------------------
99210 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
99211 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99212 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99213 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99214 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99215 -- 5132302
99216 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99217 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99218
99219 END IF;
99220
99221 -- 4955764
99222 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99223 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99224
99225
99226 XLA_AE_LINES_PKG.ValidateCurrentLine;
99227 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99228
99229 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99230 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99231 ,p_balance_type_code => l_balance_type_code);
99232
99233 END IF;
99234
99235 -----------------------------------------------------------------------------------------
99236 -- 4262811 Multiperiod Accounting
99237 -----------------------------------------------------------------------------------------
99238 -- No MPA option is assigned.
99239
99240
99241 END IF;
99242 END IF;
99243 --
99244
99245 --
99246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99247 trace
99248 (p_msg => 'END of AcctLineType_180'
99249 ,p_level => C_LEVEL_PROCEDURE
99250 ,p_module => l_log_module);
99251 END IF;
99252 --
99253 EXCEPTION
99254 WHEN xla_exceptions_pkg.application_exception THEN
99255 RAISE;
99256 WHEN OTHERS THEN
99257 xla_exceptions_pkg.raise_message
99258 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_180');
99259 END AcctLineType_180;
99260 --
99261
99262 ---------------------------------------
99263 --
99264 -- PRIVATE FUNCTION
99265 -- AcctLineType_181
99266 --
99267 ---------------------------------------
99268 PROCEDURE AcctLineType_181 (
99269 p_application_id IN NUMBER
99270 ,p_event_id IN NUMBER
99271 ,p_calculate_acctd_flag IN VARCHAR2
99272 ,p_calculate_g_l_flag IN VARCHAR2
99273 ,p_actual_flag IN OUT VARCHAR2
99274 ,p_balance_type_code OUT VARCHAR2
99275 ,p_gain_or_loss_ref OUT VARCHAR2
99276
99277 --Cost Management Default Account
99278 , p_source_4 IN NUMBER
99279 --DISTRIBUTION_IDENTIFIER
99280 , p_source_11 IN NUMBER
99281 --Distribution Type
99282 , p_source_12 IN VARCHAR2
99283 , p_source_12_meaning IN VARCHAR2
99284 --Entered Currency Code
99285 , p_source_15 IN VARCHAR2
99286 --Entered Amount
99287 , p_source_18 IN NUMBER
99288 --Currency Conversion Date
99289 , p_source_19 IN DATE
99290 --Currency Conversion Rate
99291 , p_source_20 IN NUMBER
99292 --Currency Conversion Type
99293 , p_source_21 IN VARCHAR2
99294 --Accounted Amount
99295 , p_source_22 IN NUMBER
99296 --Accounting Line Type
99297 , p_source_24 IN NUMBER
99298 )
99299 IS
99300
99301 l_component_type VARCHAR2(80);
99302 l_component_code VARCHAR2(30);
99303 l_component_type_code VARCHAR2(1);
99304 l_component_appl_id INTEGER;
99305 l_amb_context_code VARCHAR2(30);
99306 l_entity_code VARCHAR2(30);
99307 l_event_class_code VARCHAR2(30);
99308 l_ae_header_id NUMBER;
99309 l_event_type_code VARCHAR2(30);
99310 l_line_definition_code VARCHAR2(30);
99311 l_line_definition_owner_code VARCHAR2(1);
99312 --
99313 -- adr variables
99314 l_segment VARCHAR2(30);
99315 l_ccid NUMBER;
99316 l_adr_transaction_coa_id NUMBER;
99317 l_adr_accounting_coa_id NUMBER;
99318 l_adr_flexfield_segment_code VARCHAR2(30);
99319 l_adr_flex_value_set_id NUMBER;
99320 l_adr_value_type_code VARCHAR2(30);
99321 l_adr_value_combination_id NUMBER;
99322 l_adr_value_segment_code VARCHAR2(30);
99323
99324 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
99325 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
99326 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
99327 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
99328
99329 -- 4262811 Variables ------------------------------------------------------------------------------------------
99330 l_entered_amt_idx NUMBER;
99331 l_accted_amt_idx NUMBER;
99332 l_acc_rev_flag VARCHAR2(1);
99333 l_accrual_line_num NUMBER;
99334 l_tmp_amt NUMBER;
99335 l_acc_rev_natural_side_code VARCHAR2(1);
99336
99337 l_num_entries NUMBER;
99338 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
99339 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
99340 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
99341 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
99342 l_recog_line_1 NUMBER;
99343 l_recog_line_2 NUMBER;
99344
99345 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
99346 l_bflow_applied_to_amt NUMBER; -- 5132302
99347 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
99348
99349 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99350
99351 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
99352 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
99353
99354 ---------------------------------------------------------------------------------------------------------------
99355
99356
99357 --
99358 -- bulk performance
99359 --
99360 l_balance_type_code VARCHAR2(1);
99361 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
99362 l_log_module VARCHAR2(240);
99363
99364 --
99365 -- Upgrade strategy
99366 --
99367 l_actual_upg_option VARCHAR2(1);
99368 l_enc_upg_option VARCHAR2(1);
99369
99370 --
99371 BEGIN
99372 --
99373 IF g_log_enabled THEN
99374 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_181';
99375 END IF;
99376 --
99377 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99378
99379 trace
99380 (p_msg => 'BEGIN of AcctLineType_181'
99381 ,p_level => C_LEVEL_PROCEDURE
99382 ,p_module => l_log_module);
99383
99384 END IF;
99385 --
99386 l_component_type := 'AMB_JLT';
99387 l_component_code := 'OFFSET';
99388 l_component_type_code := 'S';
99389 l_component_appl_id := 707;
99390 l_amb_context_code := 'DEFAULT';
99391 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
99392 l_event_class_code := 'USER_DEFINE';
99393 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
99394 l_line_definition_owner_code := 'S';
99395 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
99396 --
99397 l_balance_type_code := 'A';
99398 l_segment := NULL;
99399 l_ccid := NULL;
99400 l_adr_transaction_coa_id := NULL;
99401 l_adr_accounting_coa_id := NULL;
99402 l_adr_flexfield_segment_code := NULL;
99403 l_adr_flex_value_set_id := NULL;
99404 l_adr_value_type_code := NULL;
99405 l_adr_value_combination_id := NULL;
99406 l_adr_value_segment_code := NULL;
99407
99408 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
99409 l_bflow_class_code := ''; -- 4219869 Business Flow
99410 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
99411 l_budgetary_control_flag := 'N';
99412
99413 l_bflow_applied_to_amt_idx := NULL; -- 5132302
99414 l_bflow_applied_to_amt := NULL; -- 5132302
99415 l_entered_amt_idx := NULL; -- 4262811
99416 l_accted_amt_idx := NULL; -- 4262811
99417 l_acc_rev_flag := NULL; -- 4262811
99418 l_accrual_line_num := NULL; -- 4262811
99419 l_tmp_amt := NULL; -- 4262811
99420 --
99421
99422 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99423 l_balance_type_code <> 'B' THEN
99424 IF NVL(p_source_24,9E125) = 2
99425 THEN
99426
99427 --
99428 XLA_AE_LINES_PKG.SetNewLine;
99429
99430 p_balance_type_code := l_balance_type_code;
99431 -- set the flag so later we will know whether the gain loss line needs to be created
99432
99433 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99434 p_actual_flag :='A';
99435 END IF;
99436
99437 --
99438 -- bulk performance
99439 --
99440 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99441 p_header_num => 0); -- 4262811
99442 --
99443 -- set accounting line options
99444 --
99445 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
99446 p_natural_side_code => 'D'
99447 , p_gain_or_loss_flag => 'N'
99448 , p_gl_transfer_mode_code => 'S'
99449 , p_acct_entry_type_code => 'A'
99450 , p_switch_side_flag => 'Y'
99451 , p_merge_duplicate_code => 'N'
99452 );
99453 --
99454 l_acc_rev_natural_side_code := 'C'; -- 4262811
99455 --
99456 --
99457 -- set accounting line type info
99458 --
99459 xla_ae_lines_pkg.SetAcctLineType
99460 (p_component_type => l_component_type
99461 ,p_event_type_code => l_event_type_code
99462 ,p_line_definition_owner_code => l_line_definition_owner_code
99463 ,p_line_definition_code => l_line_definition_code
99464 ,p_accounting_line_code => l_component_code
99465 ,p_accounting_line_type_code => l_component_type_code
99466 ,p_accounting_line_appl_id => l_component_appl_id
99467 ,p_amb_context_code => l_amb_context_code
99468 ,p_entity_code => l_entity_code
99469 ,p_event_class_code => l_event_class_code);
99470 --
99471 -- set accounting class
99472 --
99473 xla_ae_lines_pkg.SetAcctClass(
99474 p_accounting_class_code => 'OFFSET'
99475 , p_ae_header_id => l_ae_header_id
99476 );
99477
99478 --
99479 -- set rounding class
99480 --
99481 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
99482 'OFFSET';
99483
99484 --
99485 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
99486 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
99487 --
99488 -- bulk performance
99489 --
99490 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
99491
99492 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
99493 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
99494
99495 -- 4955764
99496 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99497 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
99498
99499 -- 4458381 Public Sector Enh
99500
99501 --
99502 -- set accounting attributes for the line type
99503 --
99504 l_entered_amt_idx := 3;
99505 l_accted_amt_idx := 8;
99506 l_bflow_applied_to_amt_idx := NULL; -- 5132302
99507 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
99508 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
99509 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
99510 l_rec_acct_attrs.array_char_value(2) := p_source_12;
99511 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
99512 l_rec_acct_attrs.array_num_value(3) := p_source_18;
99513 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
99514 l_rec_acct_attrs.array_char_value(4) := p_source_15;
99515 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
99516 l_rec_acct_attrs.array_date_value(5) := p_source_19;
99517 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
99518 l_rec_acct_attrs.array_num_value(6) := p_source_20;
99519 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
99520 l_rec_acct_attrs.array_char_value(7) := p_source_21;
99521 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
99522 l_rec_acct_attrs.array_num_value(8) := p_source_22;
99523
99524 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
99525 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
99526
99527 ---------------------------------------------------------------------------------------------------------------
99528 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
99529 ---------------------------------------------------------------------------------------------------------------
99530 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
99531
99532 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99533 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
99534
99535 IF xla_accounting_cache_pkg.GetValueChar
99536 (p_source_code => 'LEDGER_CATEGORY_CODE'
99537 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
99538 AND l_bflow_method_code = 'PRIOR_ENTRY'
99539 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
99540 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
99541 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
99542 )
99543 THEN
99544 xla_ae_lines_pkg.BflowUpgEntry
99545 (p_business_method_code => l_bflow_method_code
99546 ,p_business_class_code => l_bflow_class_code
99547 ,p_balance_type => l_balance_type_code);
99548 ELSE
99549 NULL;
99550 -- No business flow processing for business flow method of NONE.
99551 END IF;
99552
99553 --
99554 -- call analytical criteria
99555 --
99556
99557 --
99558 -- call description
99559 --
99560 -- No description or it is inherited.
99561 --
99562 -- call ADRs
99563 -- Bug 4922099
99564 --
99565 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99566 (NVL(l_actual_upg_option, 'N') = 'O') OR
99567 (NVL(l_enc_upg_option, 'N') = 'O')
99568 )
99569 THEN
99570 NULL;
99571 --
99572 --
99573
99574 l_ccid := AcctDerRule_4(
99575 p_application_id => p_application_id
99576 , p_ae_header_id => l_ae_header_id
99577 , p_source_4 => p_source_4
99578 , x_transaction_coa_id => l_adr_transaction_coa_id
99579 , x_accounting_coa_id => l_adr_accounting_coa_id
99580 , x_value_type_code => l_adr_value_type_code
99581 , p_side => 'NA'
99582 );
99583
99584 xla_ae_lines_pkg.set_ccid(
99585 p_code_combination_id => l_ccid
99586 , p_value_type_code => l_adr_value_type_code
99587 , p_transaction_coa_id => l_adr_transaction_coa_id
99588 , p_accounting_coa_id => l_adr_accounting_coa_id
99589 , p_adr_code => 'CST_DEFAULT'
99590 , p_adr_type_code => 'S'
99591 , p_component_type => l_component_type
99592 , p_component_code => l_component_code
99593 , p_component_type_code => l_component_type_code
99594 , p_component_appl_id => l_component_appl_id
99595 , p_amb_context_code => l_amb_context_code
99596 , p_side => 'NA'
99597 );
99598
99599
99600 --
99601 --
99602 END IF;
99603 --
99604 -- Bug 4922099
99605 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
99606 (NVL(l_enc_upg_option, 'N') = 'O')
99607 ) AND
99608 (l_bflow_method_code = 'PRIOR_ENTRY')
99609 )
99610 THEN
99611 IF
99612 --
99613 1 = 2
99614 --
99615 THEN
99616 xla_accounting_err_pkg.build_message
99617 (p_appli_s_name => 'XLA'
99618 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99619 ,p_token_1 => 'LINE_NUMBER'
99620 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
99621 ,p_token_2 => 'LINE_TYPE_NAME'
99622 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
99623 l_component_type
99624 ,l_component_code
99625 ,l_component_type_code
99626 ,l_component_appl_id
99627 ,l_amb_context_code
99628 ,l_entity_code
99629 ,l_event_class_code
99630 )
99631 ,p_token_3 => 'OWNER'
99632 ,p_value_3 => xla_lookups_pkg.get_meaning(
99633 p_lookup_type => 'XLA_OWNER_TYPE'
99634 ,p_lookup_code => l_component_type_code
99635 )
99636 ,p_token_4 => 'PRODUCT_NAME'
99637 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
99638 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
99639 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
99640 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
99641 ,p_ae_header_id => NULL
99642 );
99643
99644 IF (C_LEVEL_ERROR>= g_log_level) THEN
99645 trace
99646 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
99647 ,p_level => C_LEVEL_ERROR
99648 ,p_module => l_log_module);
99649 END IF;
99650 END IF;
99651 END IF;
99652 --
99653 --
99654 ------------------------------------------------------------------------------------------------
99655 -- 4219869 Business Flow
99656 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
99657 -- Prior Entry. Currently, the following code is always generated.
99658 ------------------------------------------------------------------------------------------------
99659 XLA_AE_LINES_PKG.ValidateCurrentLine;
99660
99661 ------------------------------------------------------------------------------------
99662 -- 4219869 Business Flow
99663 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
99664 ------------------------------------------------------------------------------------
99665 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99666
99667 ----------------------------------------------------------------------------------
99668 -- 4219869 Business Flow
99669 -- Update journal entry status -- Need to generate this within IF <condition>
99670 ----------------------------------------------------------------------------------
99671 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99672 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
99673 ,p_balance_type_code => l_balance_type_code
99674 );
99675
99676 -------------------------------------------------------------------------------------------
99677 -- 4262811 - Generate the Accrual Reversal lines
99678 -------------------------------------------------------------------------------------------
99679 BEGIN
99680 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
99681 (g_array_event(p_event_id).array_value_num('header_index'));
99682 IF l_acc_rev_flag IS NULL THEN
99683 l_acc_rev_flag := 'N';
99684 END IF;
99685 EXCEPTION
99686 WHEN OTHERS THEN
99687 l_acc_rev_flag := 'N';
99688 END;
99689 --
99690 IF (l_acc_rev_flag = 'Y') THEN
99691
99692 -- 4645092 ------------------------------------------------------------------------------
99693 -- To allow MPA report to determine if it should generate report process
99694 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
99695 ------------------------------------------------------------------------------------------
99696
99697 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
99698 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
99699 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
99700 -- call ADRs
99701 -- Bug 4922099
99702 --
99703 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
99704 (NVL(l_actual_upg_option, 'N') = 'O') OR
99705 (NVL(l_enc_upg_option, 'N') = 'O')
99706 )
99707 THEN
99708 NULL;
99709 --
99710 --
99711
99712 l_ccid := AcctDerRule_4(
99713 p_application_id => p_application_id
99714 , p_ae_header_id => l_ae_header_id
99715 , p_source_4 => p_source_4
99716 , x_transaction_coa_id => l_adr_transaction_coa_id
99717 , x_accounting_coa_id => l_adr_accounting_coa_id
99718 , x_value_type_code => l_adr_value_type_code
99719 , p_side => 'NA'
99720 );
99721
99722 xla_ae_lines_pkg.set_ccid(
99723 p_code_combination_id => l_ccid
99724 , p_value_type_code => l_adr_value_type_code
99725 , p_transaction_coa_id => l_adr_transaction_coa_id
99726 , p_accounting_coa_id => l_adr_accounting_coa_id
99727 , p_adr_code => 'CST_DEFAULT'
99728 , p_adr_type_code => 'S'
99729 , p_component_type => l_component_type
99730 , p_component_code => l_component_code
99731 , p_component_type_code => l_component_type_code
99732 , p_component_appl_id => l_component_appl_id
99733 , p_amb_context_code => l_amb_context_code
99734 , p_side => 'NA'
99735 );
99736
99737
99738 --
99739 --
99740 END IF;
99741
99742 --
99743 -- Update the line information that should be overwritten
99744 --
99745 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
99746 p_header_num => 1);
99747 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
99748
99749 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
99750
99751 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
99752 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
99753 END IF;
99754
99755 --
99756 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
99757 --
99758 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
99759 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
99760 ELSE
99761 ---------------------------------------------------------------------------------------------------
99762 -- 4262811a Switch Sign
99763 ---------------------------------------------------------------------------------------------------
99764 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
99765 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99766 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99767 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
99768 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99769 -- 5132302
99770 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
99771 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
99772
99773 END IF;
99774
99775 -- 4955764
99776 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
99777 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
99778
99779
99780 XLA_AE_LINES_PKG.ValidateCurrentLine;
99781 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
99782
99783 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
99784 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
99785 ,p_balance_type_code => l_balance_type_code);
99786
99787 END IF;
99788
99789 -----------------------------------------------------------------------------------------
99790 -- 4262811 Multiperiod Accounting
99791 -----------------------------------------------------------------------------------------
99792 -- No MPA option is assigned.
99793
99794
99795 END IF;
99796 END IF;
99797 --
99798
99799 --
99800 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99801 trace
99802 (p_msg => 'END of AcctLineType_181'
99803 ,p_level => C_LEVEL_PROCEDURE
99804 ,p_module => l_log_module);
99805 END IF;
99806 --
99807 EXCEPTION
99808 WHEN xla_exceptions_pkg.application_exception THEN
99809 RAISE;
99810 WHEN OTHERS THEN
99811 xla_exceptions_pkg.raise_message
99812 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_181');
99813 END AcctLineType_181;
99814 --
99815
99816 ---------------------------------------
99817 --
99818 -- PRIVATE FUNCTION
99819 -- AcctLineType_182
99820 --
99821 ---------------------------------------
99822 PROCEDURE AcctLineType_182 (
99823 p_application_id IN NUMBER
99824 ,p_event_id IN NUMBER
99825 ,p_calculate_acctd_flag IN VARCHAR2
99826 ,p_calculate_g_l_flag IN VARCHAR2
99827 ,p_actual_flag IN OUT VARCHAR2
99828 ,p_balance_type_code OUT VARCHAR2
99829 ,p_gain_or_loss_ref OUT VARCHAR2
99830
99831 --Cost Management Default Account
99832 , p_source_4 IN NUMBER
99833 --DISTRIBUTION_IDENTIFIER
99834 , p_source_11 IN NUMBER
99835 --Distribution Type
99836 , p_source_12 IN VARCHAR2
99837 , p_source_12_meaning IN VARCHAR2
99838 --Entered Currency Code
99839 , p_source_15 IN VARCHAR2
99840 --Entered Amount
99841 , p_source_18 IN NUMBER
99842 --Currency Conversion Date
99843 , p_source_19 IN DATE
99844 --Currency Conversion Rate
99845 , p_source_20 IN NUMBER
99846 --Currency Conversion Type
99847 , p_source_21 IN VARCHAR2
99848 --Accounted Amount
99849 , p_source_22 IN NUMBER
99850 --Accounting Line Type
99851 , p_source_24 IN NUMBER
99852 )
99853 IS
99854
99855 l_component_type VARCHAR2(80);
99856 l_component_code VARCHAR2(30);
99857 l_component_type_code VARCHAR2(1);
99858 l_component_appl_id INTEGER;
99859 l_amb_context_code VARCHAR2(30);
99860 l_entity_code VARCHAR2(30);
99861 l_event_class_code VARCHAR2(30);
99862 l_ae_header_id NUMBER;
99863 l_event_type_code VARCHAR2(30);
99864 l_line_definition_code VARCHAR2(30);
99865 l_line_definition_owner_code VARCHAR2(1);
99866 --
99867 -- adr variables
99868 l_segment VARCHAR2(30);
99869 l_ccid NUMBER;
99870 l_adr_transaction_coa_id NUMBER;
99871 l_adr_accounting_coa_id NUMBER;
99872 l_adr_flexfield_segment_code VARCHAR2(30);
99873 l_adr_flex_value_set_id NUMBER;
99874 l_adr_value_type_code VARCHAR2(30);
99875 l_adr_value_combination_id NUMBER;
99876 l_adr_value_segment_code VARCHAR2(30);
99877
99878 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
99879 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
99880 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
99881 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
99882
99883 -- 4262811 Variables ------------------------------------------------------------------------------------------
99884 l_entered_amt_idx NUMBER;
99885 l_accted_amt_idx NUMBER;
99886 l_acc_rev_flag VARCHAR2(1);
99887 l_accrual_line_num NUMBER;
99888 l_tmp_amt NUMBER;
99889 l_acc_rev_natural_side_code VARCHAR2(1);
99890
99891 l_num_entries NUMBER;
99892 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
99893 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
99894 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
99895 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
99896 l_recog_line_1 NUMBER;
99897 l_recog_line_2 NUMBER;
99898
99899 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
99900 l_bflow_applied_to_amt NUMBER; -- 5132302
99901 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
99902
99903 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
99904
99905 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
99906 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
99907
99908 ---------------------------------------------------------------------------------------------------------------
99909
99910
99911 --
99912 -- bulk performance
99913 --
99914 l_balance_type_code VARCHAR2(1);
99915 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
99916 l_log_module VARCHAR2(240);
99917
99918 --
99919 -- Upgrade strategy
99920 --
99921 l_actual_upg_option VARCHAR2(1);
99922 l_enc_upg_option VARCHAR2(1);
99923
99924 --
99925 BEGIN
99926 --
99927 IF g_log_enabled THEN
99928 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_182';
99929 END IF;
99930 --
99931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99932
99933 trace
99934 (p_msg => 'BEGIN of AcctLineType_182'
99935 ,p_level => C_LEVEL_PROCEDURE
99936 ,p_module => l_log_module);
99937
99938 END IF;
99939 --
99940 l_component_type := 'AMB_JLT';
99941 l_component_code := 'OFFSET';
99942 l_component_type_code := 'S';
99943 l_component_appl_id := 707;
99944 l_amb_context_code := 'DEFAULT';
99945 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
99946 l_event_class_code := 'USER_DEFINE';
99947 l_event_type_code := 'USUB_TXFR';
99948 l_line_definition_owner_code := 'S';
99949 l_line_definition_code := 'USER_SUB_TXFR';
99950 --
99951 l_balance_type_code := 'A';
99952 l_segment := NULL;
99953 l_ccid := NULL;
99954 l_adr_transaction_coa_id := NULL;
99955 l_adr_accounting_coa_id := NULL;
99956 l_adr_flexfield_segment_code := NULL;
99957 l_adr_flex_value_set_id := NULL;
99958 l_adr_value_type_code := NULL;
99959 l_adr_value_combination_id := NULL;
99960 l_adr_value_segment_code := NULL;
99961
99962 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
99963 l_bflow_class_code := ''; -- 4219869 Business Flow
99964 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
99965 l_budgetary_control_flag := 'N';
99966
99967 l_bflow_applied_to_amt_idx := NULL; -- 5132302
99968 l_bflow_applied_to_amt := NULL; -- 5132302
99969 l_entered_amt_idx := NULL; -- 4262811
99970 l_accted_amt_idx := NULL; -- 4262811
99971 l_acc_rev_flag := NULL; -- 4262811
99972 l_accrual_line_num := NULL; -- 4262811
99973 l_tmp_amt := NULL; -- 4262811
99974 --
99975
99976 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
99977 l_balance_type_code <> 'B' THEN
99978 IF NVL(p_source_24,9E125) = 2
99979 THEN
99980
99981 --
99982 XLA_AE_LINES_PKG.SetNewLine;
99983
99984 p_balance_type_code := l_balance_type_code;
99985 -- set the flag so later we will know whether the gain loss line needs to be created
99986
99987 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
99988 p_actual_flag :='A';
99989 END IF;
99990
99991 --
99992 -- bulk performance
99993 --
99994 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
99995 p_header_num => 0); -- 4262811
99996 --
99997 -- set accounting line options
99998 --
99999 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100000 p_natural_side_code => 'D'
100001 , p_gain_or_loss_flag => 'N'
100002 , p_gl_transfer_mode_code => 'S'
100003 , p_acct_entry_type_code => 'A'
100004 , p_switch_side_flag => 'Y'
100005 , p_merge_duplicate_code => 'N'
100006 );
100007 --
100008 l_acc_rev_natural_side_code := 'C'; -- 4262811
100009 --
100010 --
100011 -- set accounting line type info
100012 --
100013 xla_ae_lines_pkg.SetAcctLineType
100014 (p_component_type => l_component_type
100015 ,p_event_type_code => l_event_type_code
100016 ,p_line_definition_owner_code => l_line_definition_owner_code
100017 ,p_line_definition_code => l_line_definition_code
100018 ,p_accounting_line_code => l_component_code
100019 ,p_accounting_line_type_code => l_component_type_code
100020 ,p_accounting_line_appl_id => l_component_appl_id
100021 ,p_amb_context_code => l_amb_context_code
100022 ,p_entity_code => l_entity_code
100023 ,p_event_class_code => l_event_class_code);
100024 --
100025 -- set accounting class
100026 --
100027 xla_ae_lines_pkg.SetAcctClass(
100028 p_accounting_class_code => 'OFFSET'
100029 , p_ae_header_id => l_ae_header_id
100030 );
100031
100032 --
100033 -- set rounding class
100034 --
100035 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100036 'OFFSET';
100037
100038 --
100039 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100040 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100041 --
100042 -- bulk performance
100043 --
100044 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100045
100046 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100047 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100048
100049 -- 4955764
100050 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100051 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100052
100053 -- 4458381 Public Sector Enh
100054
100055 --
100056 -- set accounting attributes for the line type
100057 --
100058 l_entered_amt_idx := 3;
100059 l_accted_amt_idx := 8;
100060 l_bflow_applied_to_amt_idx := NULL; -- 5132302
100061 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100062 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
100063 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100064 l_rec_acct_attrs.array_char_value(2) := p_source_12;
100065 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100066 l_rec_acct_attrs.array_num_value(3) := p_source_18;
100067 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100068 l_rec_acct_attrs.array_char_value(4) := p_source_15;
100069 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100070 l_rec_acct_attrs.array_date_value(5) := p_source_19;
100071 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100072 l_rec_acct_attrs.array_num_value(6) := p_source_20;
100073 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100074 l_rec_acct_attrs.array_char_value(7) := p_source_21;
100075 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100076 l_rec_acct_attrs.array_num_value(8) := p_source_22;
100077
100078 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100079 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100080
100081 ---------------------------------------------------------------------------------------------------------------
100082 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100083 ---------------------------------------------------------------------------------------------------------------
100084 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100085
100086 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100087 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100088
100089 IF xla_accounting_cache_pkg.GetValueChar
100090 (p_source_code => 'LEDGER_CATEGORY_CODE'
100091 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100092 AND l_bflow_method_code = 'PRIOR_ENTRY'
100093 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100094 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100095 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100096 )
100097 THEN
100098 xla_ae_lines_pkg.BflowUpgEntry
100099 (p_business_method_code => l_bflow_method_code
100100 ,p_business_class_code => l_bflow_class_code
100101 ,p_balance_type => l_balance_type_code);
100102 ELSE
100103 NULL;
100104 -- No business flow processing for business flow method of NONE.
100105 END IF;
100106
100107 --
100108 -- call analytical criteria
100109 --
100110
100111 --
100112 -- call description
100113 --
100114 -- No description or it is inherited.
100115 --
100116 -- call ADRs
100117 -- Bug 4922099
100118 --
100119 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100120 (NVL(l_actual_upg_option, 'N') = 'O') OR
100121 (NVL(l_enc_upg_option, 'N') = 'O')
100122 )
100123 THEN
100124 NULL;
100125 --
100126 --
100127
100128 l_ccid := AcctDerRule_4(
100129 p_application_id => p_application_id
100130 , p_ae_header_id => l_ae_header_id
100131 , p_source_4 => p_source_4
100132 , x_transaction_coa_id => l_adr_transaction_coa_id
100133 , x_accounting_coa_id => l_adr_accounting_coa_id
100134 , x_value_type_code => l_adr_value_type_code
100135 , p_side => 'NA'
100136 );
100137
100138 xla_ae_lines_pkg.set_ccid(
100139 p_code_combination_id => l_ccid
100140 , p_value_type_code => l_adr_value_type_code
100141 , p_transaction_coa_id => l_adr_transaction_coa_id
100142 , p_accounting_coa_id => l_adr_accounting_coa_id
100143 , p_adr_code => 'CST_DEFAULT'
100144 , p_adr_type_code => 'S'
100145 , p_component_type => l_component_type
100146 , p_component_code => l_component_code
100147 , p_component_type_code => l_component_type_code
100148 , p_component_appl_id => l_component_appl_id
100149 , p_amb_context_code => l_amb_context_code
100150 , p_side => 'NA'
100151 );
100152
100153
100154 --
100155 --
100156 END IF;
100157 --
100158 -- Bug 4922099
100159 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100160 (NVL(l_enc_upg_option, 'N') = 'O')
100161 ) AND
100162 (l_bflow_method_code = 'PRIOR_ENTRY')
100163 )
100164 THEN
100165 IF
100166 --
100167 1 = 2
100168 --
100169 THEN
100170 xla_accounting_err_pkg.build_message
100171 (p_appli_s_name => 'XLA'
100172 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100173 ,p_token_1 => 'LINE_NUMBER'
100174 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
100175 ,p_token_2 => 'LINE_TYPE_NAME'
100176 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
100177 l_component_type
100178 ,l_component_code
100179 ,l_component_type_code
100180 ,l_component_appl_id
100181 ,l_amb_context_code
100182 ,l_entity_code
100183 ,l_event_class_code
100184 )
100185 ,p_token_3 => 'OWNER'
100186 ,p_value_3 => xla_lookups_pkg.get_meaning(
100187 p_lookup_type => 'XLA_OWNER_TYPE'
100188 ,p_lookup_code => l_component_type_code
100189 )
100190 ,p_token_4 => 'PRODUCT_NAME'
100191 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100192 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100193 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100194 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100195 ,p_ae_header_id => NULL
100196 );
100197
100198 IF (C_LEVEL_ERROR>= g_log_level) THEN
100199 trace
100200 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100201 ,p_level => C_LEVEL_ERROR
100202 ,p_module => l_log_module);
100203 END IF;
100204 END IF;
100205 END IF;
100206 --
100207 --
100208 ------------------------------------------------------------------------------------------------
100209 -- 4219869 Business Flow
100210 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100211 -- Prior Entry. Currently, the following code is always generated.
100212 ------------------------------------------------------------------------------------------------
100213 XLA_AE_LINES_PKG.ValidateCurrentLine;
100214
100215 ------------------------------------------------------------------------------------
100216 -- 4219869 Business Flow
100217 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100218 ------------------------------------------------------------------------------------
100219 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100220
100221 ----------------------------------------------------------------------------------
100222 -- 4219869 Business Flow
100223 -- Update journal entry status -- Need to generate this within IF <condition>
100224 ----------------------------------------------------------------------------------
100225 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100226 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100227 ,p_balance_type_code => l_balance_type_code
100228 );
100229
100230 -------------------------------------------------------------------------------------------
100231 -- 4262811 - Generate the Accrual Reversal lines
100232 -------------------------------------------------------------------------------------------
100233 BEGIN
100234 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100235 (g_array_event(p_event_id).array_value_num('header_index'));
100236 IF l_acc_rev_flag IS NULL THEN
100237 l_acc_rev_flag := 'N';
100238 END IF;
100239 EXCEPTION
100240 WHEN OTHERS THEN
100241 l_acc_rev_flag := 'N';
100242 END;
100243 --
100244 IF (l_acc_rev_flag = 'Y') THEN
100245
100246 -- 4645092 ------------------------------------------------------------------------------
100247 -- To allow MPA report to determine if it should generate report process
100248 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100249 ------------------------------------------------------------------------------------------
100250
100251 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100252 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100253 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
100254 -- call ADRs
100255 -- Bug 4922099
100256 --
100257 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100258 (NVL(l_actual_upg_option, 'N') = 'O') OR
100259 (NVL(l_enc_upg_option, 'N') = 'O')
100260 )
100261 THEN
100262 NULL;
100263 --
100264 --
100265
100266 l_ccid := AcctDerRule_4(
100267 p_application_id => p_application_id
100268 , p_ae_header_id => l_ae_header_id
100269 , p_source_4 => p_source_4
100270 , x_transaction_coa_id => l_adr_transaction_coa_id
100271 , x_accounting_coa_id => l_adr_accounting_coa_id
100272 , x_value_type_code => l_adr_value_type_code
100273 , p_side => 'NA'
100274 );
100275
100276 xla_ae_lines_pkg.set_ccid(
100277 p_code_combination_id => l_ccid
100278 , p_value_type_code => l_adr_value_type_code
100279 , p_transaction_coa_id => l_adr_transaction_coa_id
100280 , p_accounting_coa_id => l_adr_accounting_coa_id
100281 , p_adr_code => 'CST_DEFAULT'
100282 , p_adr_type_code => 'S'
100283 , p_component_type => l_component_type
100284 , p_component_code => l_component_code
100285 , p_component_type_code => l_component_type_code
100286 , p_component_appl_id => l_component_appl_id
100287 , p_amb_context_code => l_amb_context_code
100288 , p_side => 'NA'
100289 );
100290
100291
100292 --
100293 --
100294 END IF;
100295
100296 --
100297 -- Update the line information that should be overwritten
100298 --
100299 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100300 p_header_num => 1);
100301 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
100302
100303 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100304
100305 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
100306 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100307 END IF;
100308
100309 --
100310 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100311 --
100312 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100313 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
100314 ELSE
100315 ---------------------------------------------------------------------------------------------------
100316 -- 4262811a Switch Sign
100317 ---------------------------------------------------------------------------------------------------
100318 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
100319 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100320 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100321 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100322 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100323 -- 5132302
100324 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100325 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100326
100327 END IF;
100328
100329 -- 4955764
100330 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100331 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100332
100333
100334 XLA_AE_LINES_PKG.ValidateCurrentLine;
100335 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100336
100337 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100338 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100339 ,p_balance_type_code => l_balance_type_code);
100340
100341 END IF;
100342
100343 -----------------------------------------------------------------------------------------
100344 -- 4262811 Multiperiod Accounting
100345 -----------------------------------------------------------------------------------------
100346 -- No MPA option is assigned.
100347
100348
100349 END IF;
100350 END IF;
100351 --
100352
100353 --
100354 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100355 trace
100356 (p_msg => 'END of AcctLineType_182'
100357 ,p_level => C_LEVEL_PROCEDURE
100358 ,p_module => l_log_module);
100359 END IF;
100360 --
100361 EXCEPTION
100362 WHEN xla_exceptions_pkg.application_exception THEN
100363 RAISE;
100364 WHEN OTHERS THEN
100365 xla_exceptions_pkg.raise_message
100366 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_182');
100367 END AcctLineType_182;
100368 --
100369
100370 ---------------------------------------
100371 --
100372 -- PRIVATE FUNCTION
100373 -- AcctLineType_183
100374 --
100375 ---------------------------------------
100376 PROCEDURE AcctLineType_183 (
100377 p_application_id IN NUMBER
100378 ,p_event_id IN NUMBER
100379 ,p_calculate_acctd_flag IN VARCHAR2
100380 ,p_calculate_g_l_flag IN VARCHAR2
100381 ,p_actual_flag IN OUT VARCHAR2
100382 ,p_balance_type_code OUT VARCHAR2
100383 ,p_gain_or_loss_ref OUT VARCHAR2
100384
100385 --Cost Management Default Account
100386 , p_source_4 IN NUMBER
100387 --DISTRIBUTION_IDENTIFIER
100388 , p_source_11 IN NUMBER
100389 --Distribution Type
100390 , p_source_12 IN VARCHAR2
100391 , p_source_12_meaning IN VARCHAR2
100392 --Entered Currency Code
100393 , p_source_15 IN VARCHAR2
100394 --Entered Amount
100395 , p_source_18 IN NUMBER
100396 --Currency Conversion Date
100397 , p_source_19 IN DATE
100398 --Currency Conversion Rate
100399 , p_source_20 IN NUMBER
100400 --Currency Conversion Type
100401 , p_source_21 IN VARCHAR2
100402 --Accounted Amount
100403 , p_source_22 IN NUMBER
100404 --Accounting Line Type
100405 , p_source_24 IN NUMBER
100406 )
100407 IS
100408
100409 l_component_type VARCHAR2(80);
100410 l_component_code VARCHAR2(30);
100411 l_component_type_code VARCHAR2(1);
100412 l_component_appl_id INTEGER;
100413 l_amb_context_code VARCHAR2(30);
100414 l_entity_code VARCHAR2(30);
100415 l_event_class_code VARCHAR2(30);
100416 l_ae_header_id NUMBER;
100417 l_event_type_code VARCHAR2(30);
100418 l_line_definition_code VARCHAR2(30);
100419 l_line_definition_owner_code VARCHAR2(1);
100420 --
100421 -- adr variables
100422 l_segment VARCHAR2(30);
100423 l_ccid NUMBER;
100424 l_adr_transaction_coa_id NUMBER;
100425 l_adr_accounting_coa_id NUMBER;
100426 l_adr_flexfield_segment_code VARCHAR2(30);
100427 l_adr_flex_value_set_id NUMBER;
100428 l_adr_value_type_code VARCHAR2(30);
100429 l_adr_value_combination_id NUMBER;
100430 l_adr_value_segment_code VARCHAR2(30);
100431
100432 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
100433 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
100434 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
100435 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
100436
100437 -- 4262811 Variables ------------------------------------------------------------------------------------------
100438 l_entered_amt_idx NUMBER;
100439 l_accted_amt_idx NUMBER;
100440 l_acc_rev_flag VARCHAR2(1);
100441 l_accrual_line_num NUMBER;
100442 l_tmp_amt NUMBER;
100443 l_acc_rev_natural_side_code VARCHAR2(1);
100444
100445 l_num_entries NUMBER;
100446 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
100447 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
100448 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
100449 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
100450 l_recog_line_1 NUMBER;
100451 l_recog_line_2 NUMBER;
100452
100453 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
100454 l_bflow_applied_to_amt NUMBER; -- 5132302
100455 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
100456
100457 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
100458
100459 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
100460 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
100461
100462 ---------------------------------------------------------------------------------------------------------------
100463
100464
100465 --
100466 -- bulk performance
100467 --
100468 l_balance_type_code VARCHAR2(1);
100469 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
100470 l_log_module VARCHAR2(240);
100471
100472 --
100473 -- Upgrade strategy
100474 --
100475 l_actual_upg_option VARCHAR2(1);
100476 l_enc_upg_option VARCHAR2(1);
100477
100478 --
100479 BEGIN
100480 --
100481 IF g_log_enabled THEN
100482 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_183';
100483 END IF;
100484 --
100485 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100486
100487 trace
100488 (p_msg => 'BEGIN of AcctLineType_183'
100489 ,p_level => C_LEVEL_PROCEDURE
100490 ,p_module => l_log_module);
100491
100492 END IF;
100493 --
100494 l_component_type := 'AMB_JLT';
100495 l_component_code := 'OFFSET';
100496 l_component_type_code := 'S';
100497 l_component_appl_id := 707;
100498 l_amb_context_code := 'DEFAULT';
100499 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
100500 l_event_class_code := 'WIP_LOT';
100501 l_event_type_code := 'WIP_LOT_ALL';
100502 l_line_definition_owner_code := 'S';
100503 l_line_definition_code := 'WIP_LOT';
100504 --
100505 l_balance_type_code := 'A';
100506 l_segment := NULL;
100507 l_ccid := NULL;
100508 l_adr_transaction_coa_id := NULL;
100509 l_adr_accounting_coa_id := NULL;
100510 l_adr_flexfield_segment_code := NULL;
100511 l_adr_flex_value_set_id := NULL;
100512 l_adr_value_type_code := NULL;
100513 l_adr_value_combination_id := NULL;
100514 l_adr_value_segment_code := NULL;
100515
100516 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
100517 l_bflow_class_code := ''; -- 4219869 Business Flow
100518 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
100519 l_budgetary_control_flag := 'N';
100520
100521 l_bflow_applied_to_amt_idx := NULL; -- 5132302
100522 l_bflow_applied_to_amt := NULL; -- 5132302
100523 l_entered_amt_idx := NULL; -- 4262811
100524 l_accted_amt_idx := NULL; -- 4262811
100525 l_acc_rev_flag := NULL; -- 4262811
100526 l_accrual_line_num := NULL; -- 4262811
100527 l_tmp_amt := NULL; -- 4262811
100528 --
100529
100530 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
100531 l_balance_type_code <> 'B' THEN
100532 IF NVL(p_source_24,9E125) = 25 OR
100533 NVL(p_source_24,9E125) = 27
100534 THEN
100535
100536 --
100537 XLA_AE_LINES_PKG.SetNewLine;
100538
100539 p_balance_type_code := l_balance_type_code;
100540 -- set the flag so later we will know whether the gain loss line needs to be created
100541
100542 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
100543 p_actual_flag :='A';
100544 END IF;
100545
100546 --
100547 -- bulk performance
100548 --
100549 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
100550 p_header_num => 0); -- 4262811
100551 --
100552 -- set accounting line options
100553 --
100554 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
100555 p_natural_side_code => 'D'
100556 , p_gain_or_loss_flag => 'N'
100557 , p_gl_transfer_mode_code => 'S'
100558 , p_acct_entry_type_code => 'A'
100559 , p_switch_side_flag => 'Y'
100560 , p_merge_duplicate_code => 'N'
100561 );
100562 --
100563 l_acc_rev_natural_side_code := 'C'; -- 4262811
100564 --
100565 --
100566 -- set accounting line type info
100567 --
100568 xla_ae_lines_pkg.SetAcctLineType
100569 (p_component_type => l_component_type
100570 ,p_event_type_code => l_event_type_code
100571 ,p_line_definition_owner_code => l_line_definition_owner_code
100572 ,p_line_definition_code => l_line_definition_code
100573 ,p_accounting_line_code => l_component_code
100574 ,p_accounting_line_type_code => l_component_type_code
100575 ,p_accounting_line_appl_id => l_component_appl_id
100576 ,p_amb_context_code => l_amb_context_code
100577 ,p_entity_code => l_entity_code
100578 ,p_event_class_code => l_event_class_code);
100579 --
100580 -- set accounting class
100581 --
100582 xla_ae_lines_pkg.SetAcctClass(
100583 p_accounting_class_code => 'OFFSET'
100584 , p_ae_header_id => l_ae_header_id
100585 );
100586
100587 --
100588 -- set rounding class
100589 --
100590 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
100591 'OFFSET';
100592
100593 --
100594 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
100595 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
100596 --
100597 -- bulk performance
100598 --
100599 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
100600
100601 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
100602 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
100603
100604 -- 4955764
100605 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100606 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
100607
100608 -- 4458381 Public Sector Enh
100609
100610 --
100611 -- set accounting attributes for the line type
100612 --
100613 l_entered_amt_idx := 3;
100614 l_accted_amt_idx := 8;
100615 l_bflow_applied_to_amt_idx := NULL; -- 5132302
100616 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
100617 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
100618 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
100619 l_rec_acct_attrs.array_char_value(2) := p_source_12;
100620 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
100621 l_rec_acct_attrs.array_num_value(3) := p_source_18;
100622 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
100623 l_rec_acct_attrs.array_char_value(4) := p_source_15;
100624 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
100625 l_rec_acct_attrs.array_date_value(5) := p_source_19;
100626 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
100627 l_rec_acct_attrs.array_num_value(6) := p_source_20;
100628 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
100629 l_rec_acct_attrs.array_char_value(7) := p_source_21;
100630 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
100631 l_rec_acct_attrs.array_num_value(8) := p_source_22;
100632
100633 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
100634 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
100635
100636 ---------------------------------------------------------------------------------------------------------------
100637 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
100638 ---------------------------------------------------------------------------------------------------------------
100639 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
100640
100641 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100642 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
100643
100644 IF xla_accounting_cache_pkg.GetValueChar
100645 (p_source_code => 'LEDGER_CATEGORY_CODE'
100646 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
100647 AND l_bflow_method_code = 'PRIOR_ENTRY'
100648 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
100649 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
100650 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
100651 )
100652 THEN
100653 xla_ae_lines_pkg.BflowUpgEntry
100654 (p_business_method_code => l_bflow_method_code
100655 ,p_business_class_code => l_bflow_class_code
100656 ,p_balance_type => l_balance_type_code);
100657 ELSE
100658 NULL;
100659 -- No business flow processing for business flow method of NONE.
100660 END IF;
100661
100662 --
100663 -- call analytical criteria
100664 --
100665
100666 --
100667 -- call description
100668 --
100669 -- No description or it is inherited.
100670 --
100671 -- call ADRs
100672 -- Bug 4922099
100673 --
100674 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100675 (NVL(l_actual_upg_option, 'N') = 'O') OR
100676 (NVL(l_enc_upg_option, 'N') = 'O')
100677 )
100678 THEN
100679 NULL;
100680 --
100681 --
100682
100683 l_ccid := AcctDerRule_4(
100684 p_application_id => p_application_id
100685 , p_ae_header_id => l_ae_header_id
100686 , p_source_4 => p_source_4
100687 , x_transaction_coa_id => l_adr_transaction_coa_id
100688 , x_accounting_coa_id => l_adr_accounting_coa_id
100689 , x_value_type_code => l_adr_value_type_code
100690 , p_side => 'NA'
100691 );
100692
100693 xla_ae_lines_pkg.set_ccid(
100694 p_code_combination_id => l_ccid
100695 , p_value_type_code => l_adr_value_type_code
100696 , p_transaction_coa_id => l_adr_transaction_coa_id
100697 , p_accounting_coa_id => l_adr_accounting_coa_id
100698 , p_adr_code => 'CST_DEFAULT'
100699 , p_adr_type_code => 'S'
100700 , p_component_type => l_component_type
100701 , p_component_code => l_component_code
100702 , p_component_type_code => l_component_type_code
100703 , p_component_appl_id => l_component_appl_id
100704 , p_amb_context_code => l_amb_context_code
100705 , p_side => 'NA'
100706 );
100707
100708
100709 --
100710 --
100711 END IF;
100712 --
100713 -- Bug 4922099
100714 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
100715 (NVL(l_enc_upg_option, 'N') = 'O')
100716 ) AND
100717 (l_bflow_method_code = 'PRIOR_ENTRY')
100718 )
100719 THEN
100720 IF
100721 --
100722 1 = 2
100723 --
100724 THEN
100725 xla_accounting_err_pkg.build_message
100726 (p_appli_s_name => 'XLA'
100727 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100728 ,p_token_1 => 'LINE_NUMBER'
100729 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
100730 ,p_token_2 => 'LINE_TYPE_NAME'
100731 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
100732 l_component_type
100733 ,l_component_code
100734 ,l_component_type_code
100735 ,l_component_appl_id
100736 ,l_amb_context_code
100737 ,l_entity_code
100738 ,l_event_class_code
100739 )
100740 ,p_token_3 => 'OWNER'
100741 ,p_value_3 => xla_lookups_pkg.get_meaning(
100742 p_lookup_type => 'XLA_OWNER_TYPE'
100743 ,p_lookup_code => l_component_type_code
100744 )
100745 ,p_token_4 => 'PRODUCT_NAME'
100746 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
100747 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
100748 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
100749 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
100750 ,p_ae_header_id => NULL
100751 );
100752
100753 IF (C_LEVEL_ERROR>= g_log_level) THEN
100754 trace
100755 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
100756 ,p_level => C_LEVEL_ERROR
100757 ,p_module => l_log_module);
100758 END IF;
100759 END IF;
100760 END IF;
100761 --
100762 --
100763 ------------------------------------------------------------------------------------------------
100764 -- 4219869 Business Flow
100765 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
100766 -- Prior Entry. Currently, the following code is always generated.
100767 ------------------------------------------------------------------------------------------------
100768 XLA_AE_LINES_PKG.ValidateCurrentLine;
100769
100770 ------------------------------------------------------------------------------------
100771 -- 4219869 Business Flow
100772 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
100773 ------------------------------------------------------------------------------------
100774 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100775
100776 ----------------------------------------------------------------------------------
100777 -- 4219869 Business Flow
100778 -- Update journal entry status -- Need to generate this within IF <condition>
100779 ----------------------------------------------------------------------------------
100780 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100781 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
100782 ,p_balance_type_code => l_balance_type_code
100783 );
100784
100785 -------------------------------------------------------------------------------------------
100786 -- 4262811 - Generate the Accrual Reversal lines
100787 -------------------------------------------------------------------------------------------
100788 BEGIN
100789 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
100790 (g_array_event(p_event_id).array_value_num('header_index'));
100791 IF l_acc_rev_flag IS NULL THEN
100792 l_acc_rev_flag := 'N';
100793 END IF;
100794 EXCEPTION
100795 WHEN OTHERS THEN
100796 l_acc_rev_flag := 'N';
100797 END;
100798 --
100799 IF (l_acc_rev_flag = 'Y') THEN
100800
100801 -- 4645092 ------------------------------------------------------------------------------
100802 -- To allow MPA report to determine if it should generate report process
100803 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
100804 ------------------------------------------------------------------------------------------
100805
100806 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
100807 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
100808 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
100809 -- call ADRs
100810 -- Bug 4922099
100811 --
100812 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
100813 (NVL(l_actual_upg_option, 'N') = 'O') OR
100814 (NVL(l_enc_upg_option, 'N') = 'O')
100815 )
100816 THEN
100817 NULL;
100818 --
100819 --
100820
100821 l_ccid := AcctDerRule_4(
100822 p_application_id => p_application_id
100823 , p_ae_header_id => l_ae_header_id
100824 , p_source_4 => p_source_4
100825 , x_transaction_coa_id => l_adr_transaction_coa_id
100826 , x_accounting_coa_id => l_adr_accounting_coa_id
100827 , x_value_type_code => l_adr_value_type_code
100828 , p_side => 'NA'
100829 );
100830
100831 xla_ae_lines_pkg.set_ccid(
100832 p_code_combination_id => l_ccid
100833 , p_value_type_code => l_adr_value_type_code
100834 , p_transaction_coa_id => l_adr_transaction_coa_id
100835 , p_accounting_coa_id => l_adr_accounting_coa_id
100836 , p_adr_code => 'CST_DEFAULT'
100837 , p_adr_type_code => 'S'
100838 , p_component_type => l_component_type
100839 , p_component_code => l_component_code
100840 , p_component_type_code => l_component_type_code
100841 , p_component_appl_id => l_component_appl_id
100842 , p_amb_context_code => l_amb_context_code
100843 , p_side => 'NA'
100844 );
100845
100846
100847 --
100848 --
100849 END IF;
100850
100851 --
100852 -- Update the line information that should be overwritten
100853 --
100854 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
100855 p_header_num => 1);
100856 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
100857
100858 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
100859
100860 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
100861 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
100862 END IF;
100863
100864 --
100865 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
100866 --
100867 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
100868 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
100869 ELSE
100870 ---------------------------------------------------------------------------------------------------
100871 -- 4262811a Switch Sign
100872 ---------------------------------------------------------------------------------------------------
100873 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
100874 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100875 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100876 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
100877 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100878 -- 5132302
100879 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
100880 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
100881
100882 END IF;
100883
100884 -- 4955764
100885 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
100886 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
100887
100888
100889 XLA_AE_LINES_PKG.ValidateCurrentLine;
100890 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
100891
100892 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
100893 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
100894 ,p_balance_type_code => l_balance_type_code);
100895
100896 END IF;
100897
100898 -----------------------------------------------------------------------------------------
100899 -- 4262811 Multiperiod Accounting
100900 -----------------------------------------------------------------------------------------
100901 -- No MPA option is assigned.
100902
100903
100904 END IF;
100905 END IF;
100906 --
100907
100908 --
100909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100910 trace
100911 (p_msg => 'END of AcctLineType_183'
100912 ,p_level => C_LEVEL_PROCEDURE
100913 ,p_module => l_log_module);
100914 END IF;
100915 --
100916 EXCEPTION
100917 WHEN xla_exceptions_pkg.application_exception THEN
100918 RAISE;
100919 WHEN OTHERS THEN
100920 xla_exceptions_pkg.raise_message
100921 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_183');
100922 END AcctLineType_183;
100923 --
100924
100925 ---------------------------------------
100926 --
100927 -- PRIVATE FUNCTION
100928 -- AcctLineType_184
100929 --
100930 ---------------------------------------
100931 PROCEDURE AcctLineType_184 (
100932 p_application_id IN NUMBER
100933 ,p_event_id IN NUMBER
100934 ,p_calculate_acctd_flag IN VARCHAR2
100935 ,p_calculate_g_l_flag IN VARCHAR2
100936 ,p_actual_flag IN OUT VARCHAR2
100937 ,p_balance_type_code OUT VARCHAR2
100938 ,p_gain_or_loss_ref OUT VARCHAR2
100939
100940 --Cost Management Default Account
100941 , p_source_4 IN NUMBER
100942 --DISTRIBUTION_IDENTIFIER
100943 , p_source_11 IN NUMBER
100944 --Distribution Type
100945 , p_source_12 IN VARCHAR2
100946 , p_source_12_meaning IN VARCHAR2
100947 --Entered Currency Code
100948 , p_source_15 IN VARCHAR2
100949 --Entered Amount
100950 , p_source_18 IN NUMBER
100951 --Currency Conversion Date
100952 , p_source_19 IN DATE
100953 --Currency Conversion Rate
100954 , p_source_20 IN NUMBER
100955 --Currency Conversion Type
100956 , p_source_21 IN VARCHAR2
100957 --Accounted Amount
100958 , p_source_22 IN NUMBER
100959 --Accounting Line Type
100960 , p_source_24 IN NUMBER
100961 )
100962 IS
100963
100964 l_component_type VARCHAR2(80);
100965 l_component_code VARCHAR2(30);
100966 l_component_type_code VARCHAR2(1);
100967 l_component_appl_id INTEGER;
100968 l_amb_context_code VARCHAR2(30);
100969 l_entity_code VARCHAR2(30);
100970 l_event_class_code VARCHAR2(30);
100971 l_ae_header_id NUMBER;
100972 l_event_type_code VARCHAR2(30);
100973 l_line_definition_code VARCHAR2(30);
100974 l_line_definition_owner_code VARCHAR2(1);
100975 --
100976 -- adr variables
100977 l_segment VARCHAR2(30);
100978 l_ccid NUMBER;
100979 l_adr_transaction_coa_id NUMBER;
100980 l_adr_accounting_coa_id NUMBER;
100981 l_adr_flexfield_segment_code VARCHAR2(30);
100982 l_adr_flex_value_set_id NUMBER;
100983 l_adr_value_type_code VARCHAR2(30);
100984 l_adr_value_combination_id NUMBER;
100985 l_adr_value_segment_code VARCHAR2(30);
100986
100987 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
100988 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
100989 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
100990 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
100991
100992 -- 4262811 Variables ------------------------------------------------------------------------------------------
100993 l_entered_amt_idx NUMBER;
100994 l_accted_amt_idx NUMBER;
100995 l_acc_rev_flag VARCHAR2(1);
100996 l_accrual_line_num NUMBER;
100997 l_tmp_amt NUMBER;
100998 l_acc_rev_natural_side_code VARCHAR2(1);
100999
101000 l_num_entries NUMBER;
101001 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
101002 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
101003 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
101004 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
101005 l_recog_line_1 NUMBER;
101006 l_recog_line_2 NUMBER;
101007
101008 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
101009 l_bflow_applied_to_amt NUMBER; -- 5132302
101010 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
101011
101012 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101013
101014 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
101015 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
101016
101017 ---------------------------------------------------------------------------------------------------------------
101018
101019
101020 --
101021 -- bulk performance
101022 --
101023 l_balance_type_code VARCHAR2(1);
101024 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
101025 l_log_module VARCHAR2(240);
101026
101027 --
101028 -- Upgrade strategy
101029 --
101030 l_actual_upg_option VARCHAR2(1);
101031 l_enc_upg_option VARCHAR2(1);
101032
101033 --
101034 BEGIN
101035 --
101036 IF g_log_enabled THEN
101037 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_184';
101038 END IF;
101039 --
101040 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101041
101042 trace
101043 (p_msg => 'BEGIN of AcctLineType_184'
101044 ,p_level => C_LEVEL_PROCEDURE
101045 ,p_module => l_log_module);
101046
101047 END IF;
101048 --
101049 l_component_type := 'AMB_JLT';
101050 l_component_code := 'OFFSET';
101051 l_component_type_code := 'S';
101052 l_component_appl_id := 707;
101053 l_amb_context_code := 'DEFAULT';
101054 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
101055 l_event_class_code := 'DIR_INTERORG_SHIP';
101056 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
101057 l_line_definition_owner_code := 'S';
101058 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
101059 --
101060 l_balance_type_code := 'A';
101061 l_segment := NULL;
101062 l_ccid := NULL;
101063 l_adr_transaction_coa_id := NULL;
101064 l_adr_accounting_coa_id := NULL;
101065 l_adr_flexfield_segment_code := NULL;
101066 l_adr_flex_value_set_id := NULL;
101067 l_adr_value_type_code := NULL;
101068 l_adr_value_combination_id := NULL;
101069 l_adr_value_segment_code := NULL;
101070
101071 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
101072 l_bflow_class_code := ''; -- 4219869 Business Flow
101073 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
101074 l_budgetary_control_flag := 'N';
101075
101076 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101077 l_bflow_applied_to_amt := NULL; -- 5132302
101078 l_entered_amt_idx := NULL; -- 4262811
101079 l_accted_amt_idx := NULL; -- 4262811
101080 l_acc_rev_flag := NULL; -- 4262811
101081 l_accrual_line_num := NULL; -- 4262811
101082 l_tmp_amt := NULL; -- 4262811
101083 --
101084
101085 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101086 l_balance_type_code <> 'B' THEN
101087 IF NVL(p_source_24,9E125) = 2
101088 THEN
101089
101090 --
101091 XLA_AE_LINES_PKG.SetNewLine;
101092
101093 p_balance_type_code := l_balance_type_code;
101094 -- set the flag so later we will know whether the gain loss line needs to be created
101095
101096 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101097 p_actual_flag :='A';
101098 END IF;
101099
101100 --
101101 -- bulk performance
101102 --
101103 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101104 p_header_num => 0); -- 4262811
101105 --
101106 -- set accounting line options
101107 --
101108 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101109 p_natural_side_code => 'D'
101110 , p_gain_or_loss_flag => 'N'
101111 , p_gl_transfer_mode_code => 'S'
101112 , p_acct_entry_type_code => 'A'
101113 , p_switch_side_flag => 'Y'
101114 , p_merge_duplicate_code => 'N'
101115 );
101116 --
101117 l_acc_rev_natural_side_code := 'C'; -- 4262811
101118 --
101119 --
101120 -- set accounting line type info
101121 --
101122 xla_ae_lines_pkg.SetAcctLineType
101123 (p_component_type => l_component_type
101124 ,p_event_type_code => l_event_type_code
101125 ,p_line_definition_owner_code => l_line_definition_owner_code
101126 ,p_line_definition_code => l_line_definition_code
101127 ,p_accounting_line_code => l_component_code
101128 ,p_accounting_line_type_code => l_component_type_code
101129 ,p_accounting_line_appl_id => l_component_appl_id
101130 ,p_amb_context_code => l_amb_context_code
101131 ,p_entity_code => l_entity_code
101132 ,p_event_class_code => l_event_class_code);
101133 --
101134 -- set accounting class
101135 --
101136 xla_ae_lines_pkg.SetAcctClass(
101137 p_accounting_class_code => 'OFFSET'
101138 , p_ae_header_id => l_ae_header_id
101139 );
101140
101141 --
101142 -- set rounding class
101143 --
101144 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101145 'OFFSET';
101146
101147 --
101148 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101149 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101150 --
101151 -- bulk performance
101152 --
101153 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101154
101155 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101156 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101157
101158 -- 4955764
101159 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101160 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101161
101162 -- 4458381 Public Sector Enh
101163
101164 --
101165 -- set accounting attributes for the line type
101166 --
101167 l_entered_amt_idx := 3;
101168 l_accted_amt_idx := 8;
101169 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101170 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
101171 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
101172 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
101173 l_rec_acct_attrs.array_char_value(2) := p_source_12;
101174 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
101175 l_rec_acct_attrs.array_num_value(3) := p_source_18;
101176 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
101177 l_rec_acct_attrs.array_char_value(4) := p_source_15;
101178 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
101179 l_rec_acct_attrs.array_date_value(5) := p_source_19;
101180 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
101181 l_rec_acct_attrs.array_num_value(6) := p_source_20;
101182 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
101183 l_rec_acct_attrs.array_char_value(7) := p_source_21;
101184 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
101185 l_rec_acct_attrs.array_num_value(8) := p_source_22;
101186
101187 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101188 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101189
101190 ---------------------------------------------------------------------------------------------------------------
101191 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101192 ---------------------------------------------------------------------------------------------------------------
101193 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101194
101195 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101196 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101197
101198 IF xla_accounting_cache_pkg.GetValueChar
101199 (p_source_code => 'LEDGER_CATEGORY_CODE'
101200 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101201 AND l_bflow_method_code = 'PRIOR_ENTRY'
101202 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101203 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101204 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101205 )
101206 THEN
101207 xla_ae_lines_pkg.BflowUpgEntry
101208 (p_business_method_code => l_bflow_method_code
101209 ,p_business_class_code => l_bflow_class_code
101210 ,p_balance_type => l_balance_type_code);
101211 ELSE
101212 NULL;
101213 -- No business flow processing for business flow method of NONE.
101214 END IF;
101215
101216 --
101217 -- call analytical criteria
101218 --
101219
101220 --
101221 -- call description
101222 --
101223 -- No description or it is inherited.
101224 --
101225 -- call ADRs
101226 -- Bug 4922099
101227 --
101228 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101229 (NVL(l_actual_upg_option, 'N') = 'O') OR
101230 (NVL(l_enc_upg_option, 'N') = 'O')
101231 )
101232 THEN
101233 NULL;
101234 --
101235 --
101236
101237 l_ccid := AcctDerRule_4(
101238 p_application_id => p_application_id
101239 , p_ae_header_id => l_ae_header_id
101240 , p_source_4 => p_source_4
101241 , x_transaction_coa_id => l_adr_transaction_coa_id
101242 , x_accounting_coa_id => l_adr_accounting_coa_id
101243 , x_value_type_code => l_adr_value_type_code
101244 , p_side => 'NA'
101245 );
101246
101247 xla_ae_lines_pkg.set_ccid(
101248 p_code_combination_id => l_ccid
101249 , p_value_type_code => l_adr_value_type_code
101250 , p_transaction_coa_id => l_adr_transaction_coa_id
101251 , p_accounting_coa_id => l_adr_accounting_coa_id
101252 , p_adr_code => 'CST_DEFAULT'
101253 , p_adr_type_code => 'S'
101254 , p_component_type => l_component_type
101255 , p_component_code => l_component_code
101256 , p_component_type_code => l_component_type_code
101257 , p_component_appl_id => l_component_appl_id
101258 , p_amb_context_code => l_amb_context_code
101259 , p_side => 'NA'
101260 );
101261
101262
101263 --
101264 --
101265 END IF;
101266 --
101267 -- Bug 4922099
101268 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101269 (NVL(l_enc_upg_option, 'N') = 'O')
101270 ) AND
101271 (l_bflow_method_code = 'PRIOR_ENTRY')
101272 )
101273 THEN
101274 IF
101275 --
101276 1 = 2
101277 --
101278 THEN
101279 xla_accounting_err_pkg.build_message
101280 (p_appli_s_name => 'XLA'
101281 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101282 ,p_token_1 => 'LINE_NUMBER'
101283 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
101284 ,p_token_2 => 'LINE_TYPE_NAME'
101285 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
101286 l_component_type
101287 ,l_component_code
101288 ,l_component_type_code
101289 ,l_component_appl_id
101290 ,l_amb_context_code
101291 ,l_entity_code
101292 ,l_event_class_code
101293 )
101294 ,p_token_3 => 'OWNER'
101295 ,p_value_3 => xla_lookups_pkg.get_meaning(
101296 p_lookup_type => 'XLA_OWNER_TYPE'
101297 ,p_lookup_code => l_component_type_code
101298 )
101299 ,p_token_4 => 'PRODUCT_NAME'
101300 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101301 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101302 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101303 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101304 ,p_ae_header_id => NULL
101305 );
101306
101307 IF (C_LEVEL_ERROR>= g_log_level) THEN
101308 trace
101309 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101310 ,p_level => C_LEVEL_ERROR
101311 ,p_module => l_log_module);
101312 END IF;
101313 END IF;
101314 END IF;
101315 --
101316 --
101317 ------------------------------------------------------------------------------------------------
101318 -- 4219869 Business Flow
101319 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101320 -- Prior Entry. Currently, the following code is always generated.
101321 ------------------------------------------------------------------------------------------------
101322 XLA_AE_LINES_PKG.ValidateCurrentLine;
101323
101324 ------------------------------------------------------------------------------------
101325 -- 4219869 Business Flow
101326 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101327 ------------------------------------------------------------------------------------
101328 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101329
101330 ----------------------------------------------------------------------------------
101331 -- 4219869 Business Flow
101332 -- Update journal entry status -- Need to generate this within IF <condition>
101333 ----------------------------------------------------------------------------------
101334 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101335 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
101336 ,p_balance_type_code => l_balance_type_code
101337 );
101338
101339 -------------------------------------------------------------------------------------------
101340 -- 4262811 - Generate the Accrual Reversal lines
101341 -------------------------------------------------------------------------------------------
101342 BEGIN
101343 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
101344 (g_array_event(p_event_id).array_value_num('header_index'));
101345 IF l_acc_rev_flag IS NULL THEN
101346 l_acc_rev_flag := 'N';
101347 END IF;
101348 EXCEPTION
101349 WHEN OTHERS THEN
101350 l_acc_rev_flag := 'N';
101351 END;
101352 --
101353 IF (l_acc_rev_flag = 'Y') THEN
101354
101355 -- 4645092 ------------------------------------------------------------------------------
101356 -- To allow MPA report to determine if it should generate report process
101357 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
101358 ------------------------------------------------------------------------------------------
101359
101360 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
101361 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
101362 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
101363 -- call ADRs
101364 -- Bug 4922099
101365 --
101366 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101367 (NVL(l_actual_upg_option, 'N') = 'O') OR
101368 (NVL(l_enc_upg_option, 'N') = 'O')
101369 )
101370 THEN
101371 NULL;
101372 --
101373 --
101374
101375 l_ccid := AcctDerRule_4(
101376 p_application_id => p_application_id
101377 , p_ae_header_id => l_ae_header_id
101378 , p_source_4 => p_source_4
101379 , x_transaction_coa_id => l_adr_transaction_coa_id
101380 , x_accounting_coa_id => l_adr_accounting_coa_id
101381 , x_value_type_code => l_adr_value_type_code
101382 , p_side => 'NA'
101383 );
101384
101385 xla_ae_lines_pkg.set_ccid(
101386 p_code_combination_id => l_ccid
101387 , p_value_type_code => l_adr_value_type_code
101388 , p_transaction_coa_id => l_adr_transaction_coa_id
101389 , p_accounting_coa_id => l_adr_accounting_coa_id
101390 , p_adr_code => 'CST_DEFAULT'
101391 , p_adr_type_code => 'S'
101392 , p_component_type => l_component_type
101393 , p_component_code => l_component_code
101394 , p_component_type_code => l_component_type_code
101395 , p_component_appl_id => l_component_appl_id
101396 , p_amb_context_code => l_amb_context_code
101397 , p_side => 'NA'
101398 );
101399
101400
101401 --
101402 --
101403 END IF;
101404
101405 --
101406 -- Update the line information that should be overwritten
101407 --
101408 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101409 p_header_num => 1);
101410 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
101411
101412 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101413
101414 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
101415 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101416 END IF;
101417
101418 --
101419 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101420 --
101421 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101422 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
101423 ELSE
101424 ---------------------------------------------------------------------------------------------------
101425 -- 4262811a Switch Sign
101426 ---------------------------------------------------------------------------------------------------
101427 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
101428 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101429 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101430 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101431 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101432 -- 5132302
101433 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101434 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101435
101436 END IF;
101437
101438 -- 4955764
101439 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101440 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101441
101442
101443 XLA_AE_LINES_PKG.ValidateCurrentLine;
101444 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101445
101446 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101447 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
101448 ,p_balance_type_code => l_balance_type_code);
101449
101450 END IF;
101451
101452 -----------------------------------------------------------------------------------------
101453 -- 4262811 Multiperiod Accounting
101454 -----------------------------------------------------------------------------------------
101455 -- No MPA option is assigned.
101456
101457
101458 END IF;
101459 END IF;
101460 --
101461
101462 --
101463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101464 trace
101465 (p_msg => 'END of AcctLineType_184'
101466 ,p_level => C_LEVEL_PROCEDURE
101467 ,p_module => l_log_module);
101468 END IF;
101469 --
101470 EXCEPTION
101471 WHEN xla_exceptions_pkg.application_exception THEN
101472 RAISE;
101473 WHEN OTHERS THEN
101474 xla_exceptions_pkg.raise_message
101475 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_184');
101476 END AcctLineType_184;
101477 --
101478
101479 ---------------------------------------
101480 --
101481 -- PRIVATE FUNCTION
101482 -- AcctLineType_185
101483 --
101484 ---------------------------------------
101485 PROCEDURE AcctLineType_185 (
101486 p_application_id IN NUMBER
101487 ,p_event_id IN NUMBER
101488 ,p_calculate_acctd_flag IN VARCHAR2
101489 ,p_calculate_g_l_flag IN VARCHAR2
101490 ,p_actual_flag IN OUT VARCHAR2
101491 ,p_balance_type_code OUT VARCHAR2
101492 ,p_gain_or_loss_ref OUT VARCHAR2
101493
101494 --Cost Management Default Account
101495 , p_source_4 IN NUMBER
101496 --DISTRIBUTION_IDENTIFIER
101497 , p_source_11 IN NUMBER
101498 --Distribution Type
101499 , p_source_12 IN VARCHAR2
101500 , p_source_12_meaning IN VARCHAR2
101501 --Entered Currency Code
101502 , p_source_15 IN VARCHAR2
101503 --Entered Amount
101504 , p_source_18 IN NUMBER
101505 --Currency Conversion Date
101506 , p_source_19 IN DATE
101507 --Currency Conversion Rate
101508 , p_source_20 IN NUMBER
101509 --Currency Conversion Type
101510 , p_source_21 IN VARCHAR2
101511 --Accounted Amount
101512 , p_source_22 IN NUMBER
101513 --Accounting Line Type
101514 , p_source_24 IN NUMBER
101515 )
101516 IS
101517
101518 l_component_type VARCHAR2(80);
101519 l_component_code VARCHAR2(30);
101520 l_component_type_code VARCHAR2(1);
101521 l_component_appl_id INTEGER;
101522 l_amb_context_code VARCHAR2(30);
101523 l_entity_code VARCHAR2(30);
101524 l_event_class_code VARCHAR2(30);
101525 l_ae_header_id NUMBER;
101526 l_event_type_code VARCHAR2(30);
101527 l_line_definition_code VARCHAR2(30);
101528 l_line_definition_owner_code VARCHAR2(1);
101529 --
101530 -- adr variables
101531 l_segment VARCHAR2(30);
101532 l_ccid NUMBER;
101533 l_adr_transaction_coa_id NUMBER;
101534 l_adr_accounting_coa_id NUMBER;
101535 l_adr_flexfield_segment_code VARCHAR2(30);
101536 l_adr_flex_value_set_id NUMBER;
101537 l_adr_value_type_code VARCHAR2(30);
101538 l_adr_value_combination_id NUMBER;
101539 l_adr_value_segment_code VARCHAR2(30);
101540
101541 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
101542 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
101543 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
101544 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
101545
101546 -- 4262811 Variables ------------------------------------------------------------------------------------------
101547 l_entered_amt_idx NUMBER;
101548 l_accted_amt_idx NUMBER;
101549 l_acc_rev_flag VARCHAR2(1);
101550 l_accrual_line_num NUMBER;
101551 l_tmp_amt NUMBER;
101552 l_acc_rev_natural_side_code VARCHAR2(1);
101553
101554 l_num_entries NUMBER;
101555 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
101556 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
101557 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
101558 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
101559 l_recog_line_1 NUMBER;
101560 l_recog_line_2 NUMBER;
101561
101562 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
101563 l_bflow_applied_to_amt NUMBER; -- 5132302
101564 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
101565
101566 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
101567
101568 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
101569 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
101570
101571 ---------------------------------------------------------------------------------------------------------------
101572
101573
101574 --
101575 -- bulk performance
101576 --
101577 l_balance_type_code VARCHAR2(1);
101578 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
101579 l_log_module VARCHAR2(240);
101580
101581 --
101582 -- Upgrade strategy
101583 --
101584 l_actual_upg_option VARCHAR2(1);
101585 l_enc_upg_option VARCHAR2(1);
101586
101587 --
101588 BEGIN
101589 --
101590 IF g_log_enabled THEN
101591 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_185';
101592 END IF;
101593 --
101594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101595
101596 trace
101597 (p_msg => 'BEGIN of AcctLineType_185'
101598 ,p_level => C_LEVEL_PROCEDURE
101599 ,p_module => l_log_module);
101600
101601 END IF;
101602 --
101603 l_component_type := 'AMB_JLT';
101604 l_component_code := 'OFFSET';
101605 l_component_type_code := 'S';
101606 l_component_appl_id := 707;
101607 l_amb_context_code := 'DEFAULT';
101608 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
101609 l_event_class_code := 'FOB_SHIP_SENDER_SHIP';
101610 l_event_type_code := 'FOB_SHIP_SENDER_SHIP_ALL';
101611 l_line_definition_owner_code := 'S';
101612 l_line_definition_code := 'FOB_SHIP_SENDER_SHIP';
101613 --
101614 l_balance_type_code := 'A';
101615 l_segment := NULL;
101616 l_ccid := NULL;
101617 l_adr_transaction_coa_id := NULL;
101618 l_adr_accounting_coa_id := NULL;
101619 l_adr_flexfield_segment_code := NULL;
101620 l_adr_flex_value_set_id := NULL;
101621 l_adr_value_type_code := NULL;
101622 l_adr_value_combination_id := NULL;
101623 l_adr_value_segment_code := NULL;
101624
101625 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
101626 l_bflow_class_code := ''; -- 4219869 Business Flow
101627 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
101628 l_budgetary_control_flag := 'N';
101629
101630 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101631 l_bflow_applied_to_amt := NULL; -- 5132302
101632 l_entered_amt_idx := NULL; -- 4262811
101633 l_accted_amt_idx := NULL; -- 4262811
101634 l_acc_rev_flag := NULL; -- 4262811
101635 l_accrual_line_num := NULL; -- 4262811
101636 l_tmp_amt := NULL; -- 4262811
101637 --
101638
101639 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
101640 l_balance_type_code <> 'B' THEN
101641 IF NVL(p_source_24,9E125) = 2 AND
101642 p_source_22 <= 0
101643 THEN
101644
101645 --
101646 XLA_AE_LINES_PKG.SetNewLine;
101647
101648 p_balance_type_code := l_balance_type_code;
101649 -- set the flag so later we will know whether the gain loss line needs to be created
101650
101651 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
101652 p_actual_flag :='A';
101653 END IF;
101654
101655 --
101656 -- bulk performance
101657 --
101658 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
101659 p_header_num => 0); -- 4262811
101660 --
101661 -- set accounting line options
101662 --
101663 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
101664 p_natural_side_code => 'D'
101665 , p_gain_or_loss_flag => 'N'
101666 , p_gl_transfer_mode_code => 'S'
101667 , p_acct_entry_type_code => 'A'
101668 , p_switch_side_flag => 'Y'
101669 , p_merge_duplicate_code => 'N'
101670 );
101671 --
101672 l_acc_rev_natural_side_code := 'C'; -- 4262811
101673 --
101674 --
101675 -- set accounting line type info
101676 --
101677 xla_ae_lines_pkg.SetAcctLineType
101678 (p_component_type => l_component_type
101679 ,p_event_type_code => l_event_type_code
101680 ,p_line_definition_owner_code => l_line_definition_owner_code
101681 ,p_line_definition_code => l_line_definition_code
101682 ,p_accounting_line_code => l_component_code
101683 ,p_accounting_line_type_code => l_component_type_code
101684 ,p_accounting_line_appl_id => l_component_appl_id
101685 ,p_amb_context_code => l_amb_context_code
101686 ,p_entity_code => l_entity_code
101687 ,p_event_class_code => l_event_class_code);
101688 --
101689 -- set accounting class
101690 --
101691 xla_ae_lines_pkg.SetAcctClass(
101692 p_accounting_class_code => 'OFFSET'
101693 , p_ae_header_id => l_ae_header_id
101694 );
101695
101696 --
101697 -- set rounding class
101698 --
101699 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
101700 'OFFSET';
101701
101702 --
101703 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
101704 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
101705 --
101706 -- bulk performance
101707 --
101708 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
101709
101710 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
101711 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
101712
101713 -- 4955764
101714 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101715 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
101716
101717 -- 4458381 Public Sector Enh
101718
101719 --
101720 -- set accounting attributes for the line type
101721 --
101722 l_entered_amt_idx := 3;
101723 l_accted_amt_idx := 8;
101724 l_bflow_applied_to_amt_idx := NULL; -- 5132302
101725 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
101726 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
101727 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
101728 l_rec_acct_attrs.array_char_value(2) := p_source_12;
101729 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
101730 l_rec_acct_attrs.array_num_value(3) := p_source_18;
101731 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
101732 l_rec_acct_attrs.array_char_value(4) := p_source_15;
101733 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
101734 l_rec_acct_attrs.array_date_value(5) := p_source_19;
101735 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
101736 l_rec_acct_attrs.array_num_value(6) := p_source_20;
101737 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
101738 l_rec_acct_attrs.array_char_value(7) := p_source_21;
101739 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
101740 l_rec_acct_attrs.array_num_value(8) := p_source_22;
101741
101742 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
101743 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
101744
101745 ---------------------------------------------------------------------------------------------------------------
101746 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
101747 ---------------------------------------------------------------------------------------------------------------
101748 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
101749
101750 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101751 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
101752
101753 IF xla_accounting_cache_pkg.GetValueChar
101754 (p_source_code => 'LEDGER_CATEGORY_CODE'
101755 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
101756 AND l_bflow_method_code = 'PRIOR_ENTRY'
101757 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
101758 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
101759 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
101760 )
101761 THEN
101762 xla_ae_lines_pkg.BflowUpgEntry
101763 (p_business_method_code => l_bflow_method_code
101764 ,p_business_class_code => l_bflow_class_code
101765 ,p_balance_type => l_balance_type_code);
101766 ELSE
101767 NULL;
101768 -- No business flow processing for business flow method of NONE.
101769 END IF;
101770
101771 --
101772 -- call analytical criteria
101773 --
101774
101775 --
101776 -- call description
101777 --
101778 -- No description or it is inherited.
101779 --
101780 -- call ADRs
101781 -- Bug 4922099
101782 --
101783 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101784 (NVL(l_actual_upg_option, 'N') = 'O') OR
101785 (NVL(l_enc_upg_option, 'N') = 'O')
101786 )
101787 THEN
101788 NULL;
101789 --
101790 --
101791
101792 l_ccid := AcctDerRule_4(
101793 p_application_id => p_application_id
101794 , p_ae_header_id => l_ae_header_id
101795 , p_source_4 => p_source_4
101796 , x_transaction_coa_id => l_adr_transaction_coa_id
101797 , x_accounting_coa_id => l_adr_accounting_coa_id
101798 , x_value_type_code => l_adr_value_type_code
101799 , p_side => 'NA'
101800 );
101801
101802 xla_ae_lines_pkg.set_ccid(
101803 p_code_combination_id => l_ccid
101804 , p_value_type_code => l_adr_value_type_code
101805 , p_transaction_coa_id => l_adr_transaction_coa_id
101806 , p_accounting_coa_id => l_adr_accounting_coa_id
101807 , p_adr_code => 'CST_DEFAULT'
101808 , p_adr_type_code => 'S'
101809 , p_component_type => l_component_type
101810 , p_component_code => l_component_code
101811 , p_component_type_code => l_component_type_code
101812 , p_component_appl_id => l_component_appl_id
101813 , p_amb_context_code => l_amb_context_code
101814 , p_side => 'NA'
101815 );
101816
101817
101818 --
101819 --
101820 END IF;
101821 --
101822 -- Bug 4922099
101823 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
101824 (NVL(l_enc_upg_option, 'N') = 'O')
101825 ) AND
101826 (l_bflow_method_code = 'PRIOR_ENTRY')
101827 )
101828 THEN
101829 IF
101830 --
101831 1 = 2
101832 --
101833 THEN
101834 xla_accounting_err_pkg.build_message
101835 (p_appli_s_name => 'XLA'
101836 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101837 ,p_token_1 => 'LINE_NUMBER'
101838 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
101839 ,p_token_2 => 'LINE_TYPE_NAME'
101840 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
101841 l_component_type
101842 ,l_component_code
101843 ,l_component_type_code
101844 ,l_component_appl_id
101845 ,l_amb_context_code
101846 ,l_entity_code
101847 ,l_event_class_code
101848 )
101849 ,p_token_3 => 'OWNER'
101850 ,p_value_3 => xla_lookups_pkg.get_meaning(
101851 p_lookup_type => 'XLA_OWNER_TYPE'
101852 ,p_lookup_code => l_component_type_code
101853 )
101854 ,p_token_4 => 'PRODUCT_NAME'
101855 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
101856 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
101857 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
101858 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
101859 ,p_ae_header_id => NULL
101860 );
101861
101862 IF (C_LEVEL_ERROR>= g_log_level) THEN
101863 trace
101864 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
101865 ,p_level => C_LEVEL_ERROR
101866 ,p_module => l_log_module);
101867 END IF;
101868 END IF;
101869 END IF;
101870 --
101871 --
101872 ------------------------------------------------------------------------------------------------
101873 -- 4219869 Business Flow
101874 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
101875 -- Prior Entry. Currently, the following code is always generated.
101876 ------------------------------------------------------------------------------------------------
101877 XLA_AE_LINES_PKG.ValidateCurrentLine;
101878
101879 ------------------------------------------------------------------------------------
101880 -- 4219869 Business Flow
101881 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
101882 ------------------------------------------------------------------------------------
101883 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
101884
101885 ----------------------------------------------------------------------------------
101886 -- 4219869 Business Flow
101887 -- Update journal entry status -- Need to generate this within IF <condition>
101888 ----------------------------------------------------------------------------------
101889 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
101890 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
101891 ,p_balance_type_code => l_balance_type_code
101892 );
101893
101894 -------------------------------------------------------------------------------------------
101895 -- 4262811 - Generate the Accrual Reversal lines
101896 -------------------------------------------------------------------------------------------
101897 BEGIN
101898 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
101899 (g_array_event(p_event_id).array_value_num('header_index'));
101900 IF l_acc_rev_flag IS NULL THEN
101901 l_acc_rev_flag := 'N';
101902 END IF;
101903 EXCEPTION
101904 WHEN OTHERS THEN
101905 l_acc_rev_flag := 'N';
101906 END;
101907 --
101908 IF (l_acc_rev_flag = 'Y') THEN
101909
101910 -- 4645092 ------------------------------------------------------------------------------
101911 -- To allow MPA report to determine if it should generate report process
101912 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
101913 ------------------------------------------------------------------------------------------
101914
101915 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
101916 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
101917 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
101918 -- call ADRs
101919 -- Bug 4922099
101920 --
101921 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
101922 (NVL(l_actual_upg_option, 'N') = 'O') OR
101923 (NVL(l_enc_upg_option, 'N') = 'O')
101924 )
101925 THEN
101926 NULL;
101927 --
101928 --
101929
101930 l_ccid := AcctDerRule_4(
101931 p_application_id => p_application_id
101932 , p_ae_header_id => l_ae_header_id
101933 , p_source_4 => p_source_4
101934 , x_transaction_coa_id => l_adr_transaction_coa_id
101935 , x_accounting_coa_id => l_adr_accounting_coa_id
101936 , x_value_type_code => l_adr_value_type_code
101937 , p_side => 'NA'
101938 );
101939
101940 xla_ae_lines_pkg.set_ccid(
101941 p_code_combination_id => l_ccid
101942 , p_value_type_code => l_adr_value_type_code
101943 , p_transaction_coa_id => l_adr_transaction_coa_id
101944 , p_accounting_coa_id => l_adr_accounting_coa_id
101945 , p_adr_code => 'CST_DEFAULT'
101946 , p_adr_type_code => 'S'
101947 , p_component_type => l_component_type
101948 , p_component_code => l_component_code
101949 , p_component_type_code => l_component_type_code
101950 , p_component_appl_id => l_component_appl_id
101951 , p_amb_context_code => l_amb_context_code
101952 , p_side => 'NA'
101953 );
101954
101955
101956 --
101957 --
101958 END IF;
101959
101960 --
101961 -- Update the line information that should be overwritten
101962 --
101963 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
101964 p_header_num => 1);
101965 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
101966
101967 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
101968
101969 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
101970 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
101971 END IF;
101972
101973 --
101974 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
101975 --
101976 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
101977 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
101978 ELSE
101979 ---------------------------------------------------------------------------------------------------
101980 -- 4262811a Switch Sign
101981 ---------------------------------------------------------------------------------------------------
101982 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
101983 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101984 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101985 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
101986 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101987 -- 5132302
101988 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
101989 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
101990
101991 END IF;
101992
101993 -- 4955764
101994 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
101995 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
101996
101997
101998 XLA_AE_LINES_PKG.ValidateCurrentLine;
101999 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102000
102001 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102002 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102003 ,p_balance_type_code => l_balance_type_code);
102004
102005 END IF;
102006
102007 -----------------------------------------------------------------------------------------
102008 -- 4262811 Multiperiod Accounting
102009 -----------------------------------------------------------------------------------------
102010 -- No MPA option is assigned.
102011
102012
102013 END IF;
102014 END IF;
102015 --
102016
102017 --
102018 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102019 trace
102020 (p_msg => 'END of AcctLineType_185'
102021 ,p_level => C_LEVEL_PROCEDURE
102022 ,p_module => l_log_module);
102023 END IF;
102024 --
102025 EXCEPTION
102026 WHEN xla_exceptions_pkg.application_exception THEN
102027 RAISE;
102028 WHEN OTHERS THEN
102029 xla_exceptions_pkg.raise_message
102030 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_185');
102031 END AcctLineType_185;
102032 --
102033
102034 ---------------------------------------
102035 --
102036 -- PRIVATE FUNCTION
102037 -- AcctLineType_186
102038 --
102039 ---------------------------------------
102040 PROCEDURE AcctLineType_186 (
102041 p_application_id IN NUMBER
102042 ,p_event_id IN NUMBER
102043 ,p_calculate_acctd_flag IN VARCHAR2
102044 ,p_calculate_g_l_flag IN VARCHAR2
102045 ,p_actual_flag IN OUT VARCHAR2
102046 ,p_balance_type_code OUT VARCHAR2
102047 ,p_gain_or_loss_ref OUT VARCHAR2
102048
102049 --Cost Management Default Account
102050 , p_source_4 IN NUMBER
102051 --DISTRIBUTION_IDENTIFIER
102052 , p_source_11 IN NUMBER
102053 --Distribution Type
102054 , p_source_12 IN VARCHAR2
102055 , p_source_12_meaning IN VARCHAR2
102056 --Entered Currency Code
102057 , p_source_15 IN VARCHAR2
102058 --Entered Amount
102059 , p_source_18 IN NUMBER
102060 --Currency Conversion Date
102061 , p_source_19 IN DATE
102062 --Currency Conversion Rate
102063 , p_source_20 IN NUMBER
102064 --Currency Conversion Type
102065 , p_source_21 IN VARCHAR2
102066 --Accounted Amount
102067 , p_source_22 IN NUMBER
102068 --Accounting Line Type
102069 , p_source_24 IN NUMBER
102070 --Transaction Action Name
102071 , p_source_35 IN NUMBER
102072 , p_source_35_meaning IN VARCHAR2
102073 )
102074 IS
102075
102076 l_component_type VARCHAR2(80);
102077 l_component_code VARCHAR2(30);
102078 l_component_type_code VARCHAR2(1);
102079 l_component_appl_id INTEGER;
102080 l_amb_context_code VARCHAR2(30);
102081 l_entity_code VARCHAR2(30);
102082 l_event_class_code VARCHAR2(30);
102083 l_ae_header_id NUMBER;
102084 l_event_type_code VARCHAR2(30);
102085 l_line_definition_code VARCHAR2(30);
102086 l_line_definition_owner_code VARCHAR2(1);
102087 --
102088 -- adr variables
102089 l_segment VARCHAR2(30);
102090 l_ccid NUMBER;
102091 l_adr_transaction_coa_id NUMBER;
102092 l_adr_accounting_coa_id NUMBER;
102093 l_adr_flexfield_segment_code VARCHAR2(30);
102094 l_adr_flex_value_set_id NUMBER;
102095 l_adr_value_type_code VARCHAR2(30);
102096 l_adr_value_combination_id NUMBER;
102097 l_adr_value_segment_code VARCHAR2(30);
102098
102099 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
102100 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
102101 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
102102 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
102103
102104 -- 4262811 Variables ------------------------------------------------------------------------------------------
102105 l_entered_amt_idx NUMBER;
102106 l_accted_amt_idx NUMBER;
102107 l_acc_rev_flag VARCHAR2(1);
102108 l_accrual_line_num NUMBER;
102109 l_tmp_amt NUMBER;
102110 l_acc_rev_natural_side_code VARCHAR2(1);
102111
102112 l_num_entries NUMBER;
102113 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
102114 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
102115 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
102116 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
102117 l_recog_line_1 NUMBER;
102118 l_recog_line_2 NUMBER;
102119
102120 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
102121 l_bflow_applied_to_amt NUMBER; -- 5132302
102122 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
102123
102124 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102125
102126 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
102127 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
102128
102129 ---------------------------------------------------------------------------------------------------------------
102130
102131
102132 --
102133 -- bulk performance
102134 --
102135 l_balance_type_code VARCHAR2(1);
102136 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
102137 l_log_module VARCHAR2(240);
102138
102139 --
102140 -- Upgrade strategy
102141 --
102142 l_actual_upg_option VARCHAR2(1);
102143 l_enc_upg_option VARCHAR2(1);
102144
102145 --
102146 BEGIN
102147 --
102148 IF g_log_enabled THEN
102149 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_186';
102150 END IF;
102151 --
102152 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102153
102154 trace
102155 (p_msg => 'BEGIN of AcctLineType_186'
102156 ,p_level => C_LEVEL_PROCEDURE
102157 ,p_module => l_log_module);
102158
102159 END IF;
102160 --
102161 l_component_type := 'AMB_JLT';
102162 l_component_code := 'OFFSET';
102163 l_component_type_code := 'S';
102164 l_component_appl_id := 707;
102165 l_amb_context_code := 'DEFAULT';
102166 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
102167 l_event_class_code := 'LOG_INTERCOMPANY';
102168 l_event_type_code := 'LOG_INTERCOMPANY_ALL';
102169 l_line_definition_owner_code := 'S';
102170 l_line_definition_code := 'LOG_INTERCOMPANY';
102171 --
102172 l_balance_type_code := 'A';
102173 l_segment := NULL;
102174 l_ccid := NULL;
102175 l_adr_transaction_coa_id := NULL;
102176 l_adr_accounting_coa_id := NULL;
102177 l_adr_flexfield_segment_code := NULL;
102178 l_adr_flex_value_set_id := NULL;
102179 l_adr_value_type_code := NULL;
102180 l_adr_value_combination_id := NULL;
102181 l_adr_value_segment_code := NULL;
102182
102183 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
102184 l_bflow_class_code := ''; -- 4219869 Business Flow
102185 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
102186 l_budgetary_control_flag := 'N';
102187
102188 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102189 l_bflow_applied_to_amt := NULL; -- 5132302
102190 l_entered_amt_idx := NULL; -- 4262811
102191 l_accted_amt_idx := NULL; -- 4262811
102192 l_acc_rev_flag := NULL; -- 4262811
102193 l_accrual_line_num := NULL; -- 4262811
102194 l_tmp_amt := NULL; -- 4262811
102195 --
102196
102197 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102198 l_balance_type_code <> 'B' THEN
102199 IF NVL(p_source_24,9E125) = 2 AND
102200 ((p_source_22 <= 0 AND
102201 NVL(p_source_35,9E125) = 13) OR
102202 (p_source_22 <= 0 AND
102203 NVL(p_source_35,9E125) = 9) OR
102204 (p_source_22 >= 0 AND
102205 NVL(p_source_35,9E125) = 10) OR
102206 NVL(p_source_35,9E125) = 10 OR
102207 NVL(p_source_35,9E125) = 13)
102208 THEN
102209
102210 --
102211 XLA_AE_LINES_PKG.SetNewLine;
102212
102213 p_balance_type_code := l_balance_type_code;
102214 -- set the flag so later we will know whether the gain loss line needs to be created
102215
102216 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102217 p_actual_flag :='A';
102218 END IF;
102219
102220 --
102221 -- bulk performance
102222 --
102223 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102224 p_header_num => 0); -- 4262811
102225 --
102226 -- set accounting line options
102227 --
102228 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102229 p_natural_side_code => 'D'
102230 , p_gain_or_loss_flag => 'N'
102231 , p_gl_transfer_mode_code => 'S'
102232 , p_acct_entry_type_code => 'A'
102233 , p_switch_side_flag => 'Y'
102234 , p_merge_duplicate_code => 'N'
102235 );
102236 --
102237 l_acc_rev_natural_side_code := 'C'; -- 4262811
102238 --
102239 --
102240 -- set accounting line type info
102241 --
102242 xla_ae_lines_pkg.SetAcctLineType
102243 (p_component_type => l_component_type
102244 ,p_event_type_code => l_event_type_code
102245 ,p_line_definition_owner_code => l_line_definition_owner_code
102246 ,p_line_definition_code => l_line_definition_code
102247 ,p_accounting_line_code => l_component_code
102248 ,p_accounting_line_type_code => l_component_type_code
102249 ,p_accounting_line_appl_id => l_component_appl_id
102250 ,p_amb_context_code => l_amb_context_code
102251 ,p_entity_code => l_entity_code
102252 ,p_event_class_code => l_event_class_code);
102253 --
102254 -- set accounting class
102255 --
102256 xla_ae_lines_pkg.SetAcctClass(
102257 p_accounting_class_code => 'OFFSET'
102258 , p_ae_header_id => l_ae_header_id
102259 );
102260
102261 --
102262 -- set rounding class
102263 --
102264 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102265 'OFFSET';
102266
102267 --
102268 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102269 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102270 --
102271 -- bulk performance
102272 --
102273 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102274
102275 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102276 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102277
102278 -- 4955764
102279 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102280 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102281
102282 -- 4458381 Public Sector Enh
102283
102284 --
102285 -- set accounting attributes for the line type
102286 --
102287 l_entered_amt_idx := 3;
102288 l_accted_amt_idx := 8;
102289 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102290 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102291 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
102292 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102293 l_rec_acct_attrs.array_char_value(2) := p_source_12;
102294 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102295 l_rec_acct_attrs.array_num_value(3) := p_source_18;
102296 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102297 l_rec_acct_attrs.array_char_value(4) := p_source_15;
102298 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102299 l_rec_acct_attrs.array_date_value(5) := p_source_19;
102300 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102301 l_rec_acct_attrs.array_num_value(6) := p_source_20;
102302 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102303 l_rec_acct_attrs.array_char_value(7) := p_source_21;
102304 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102305 l_rec_acct_attrs.array_num_value(8) := p_source_22;
102306
102307 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102308 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102309
102310 ---------------------------------------------------------------------------------------------------------------
102311 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102312 ---------------------------------------------------------------------------------------------------------------
102313 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102314
102315 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102316 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102317
102318 IF xla_accounting_cache_pkg.GetValueChar
102319 (p_source_code => 'LEDGER_CATEGORY_CODE'
102320 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102321 AND l_bflow_method_code = 'PRIOR_ENTRY'
102322 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102323 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102324 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102325 )
102326 THEN
102327 xla_ae_lines_pkg.BflowUpgEntry
102328 (p_business_method_code => l_bflow_method_code
102329 ,p_business_class_code => l_bflow_class_code
102330 ,p_balance_type => l_balance_type_code);
102331 ELSE
102332 NULL;
102333 -- No business flow processing for business flow method of NONE.
102334 END IF;
102335
102336 --
102337 -- call analytical criteria
102338 --
102339
102340 --
102341 -- call description
102342 --
102343 -- No description or it is inherited.
102344 --
102345 -- call ADRs
102346 -- Bug 4922099
102347 --
102348 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102349 (NVL(l_actual_upg_option, 'N') = 'O') OR
102350 (NVL(l_enc_upg_option, 'N') = 'O')
102351 )
102352 THEN
102353 NULL;
102354 --
102355 --
102356
102357 l_ccid := AcctDerRule_4(
102358 p_application_id => p_application_id
102359 , p_ae_header_id => l_ae_header_id
102360 , p_source_4 => p_source_4
102361 , x_transaction_coa_id => l_adr_transaction_coa_id
102362 , x_accounting_coa_id => l_adr_accounting_coa_id
102363 , x_value_type_code => l_adr_value_type_code
102364 , p_side => 'NA'
102365 );
102366
102367 xla_ae_lines_pkg.set_ccid(
102368 p_code_combination_id => l_ccid
102369 , p_value_type_code => l_adr_value_type_code
102370 , p_transaction_coa_id => l_adr_transaction_coa_id
102371 , p_accounting_coa_id => l_adr_accounting_coa_id
102372 , p_adr_code => 'CST_DEFAULT'
102373 , p_adr_type_code => 'S'
102374 , p_component_type => l_component_type
102375 , p_component_code => l_component_code
102376 , p_component_type_code => l_component_type_code
102377 , p_component_appl_id => l_component_appl_id
102378 , p_amb_context_code => l_amb_context_code
102379 , p_side => 'NA'
102380 );
102381
102382
102383 --
102384 --
102385 END IF;
102386 --
102387 -- Bug 4922099
102388 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102389 (NVL(l_enc_upg_option, 'N') = 'O')
102390 ) AND
102391 (l_bflow_method_code = 'PRIOR_ENTRY')
102392 )
102393 THEN
102394 IF
102395 --
102396 1 = 2
102397 --
102398 THEN
102399 xla_accounting_err_pkg.build_message
102400 (p_appli_s_name => 'XLA'
102401 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102402 ,p_token_1 => 'LINE_NUMBER'
102403 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
102404 ,p_token_2 => 'LINE_TYPE_NAME'
102405 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
102406 l_component_type
102407 ,l_component_code
102408 ,l_component_type_code
102409 ,l_component_appl_id
102410 ,l_amb_context_code
102411 ,l_entity_code
102412 ,l_event_class_code
102413 )
102414 ,p_token_3 => 'OWNER'
102415 ,p_value_3 => xla_lookups_pkg.get_meaning(
102416 p_lookup_type => 'XLA_OWNER_TYPE'
102417 ,p_lookup_code => l_component_type_code
102418 )
102419 ,p_token_4 => 'PRODUCT_NAME'
102420 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102421 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102422 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102423 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102424 ,p_ae_header_id => NULL
102425 );
102426
102427 IF (C_LEVEL_ERROR>= g_log_level) THEN
102428 trace
102429 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102430 ,p_level => C_LEVEL_ERROR
102431 ,p_module => l_log_module);
102432 END IF;
102433 END IF;
102434 END IF;
102435 --
102436 --
102437 ------------------------------------------------------------------------------------------------
102438 -- 4219869 Business Flow
102439 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102440 -- Prior Entry. Currently, the following code is always generated.
102441 ------------------------------------------------------------------------------------------------
102442 XLA_AE_LINES_PKG.ValidateCurrentLine;
102443
102444 ------------------------------------------------------------------------------------
102445 -- 4219869 Business Flow
102446 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
102447 ------------------------------------------------------------------------------------
102448 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102449
102450 ----------------------------------------------------------------------------------
102451 -- 4219869 Business Flow
102452 -- Update journal entry status -- Need to generate this within IF <condition>
102453 ----------------------------------------------------------------------------------
102454 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102455 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
102456 ,p_balance_type_code => l_balance_type_code
102457 );
102458
102459 -------------------------------------------------------------------------------------------
102460 -- 4262811 - Generate the Accrual Reversal lines
102461 -------------------------------------------------------------------------------------------
102462 BEGIN
102463 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
102464 (g_array_event(p_event_id).array_value_num('header_index'));
102465 IF l_acc_rev_flag IS NULL THEN
102466 l_acc_rev_flag := 'N';
102467 END IF;
102468 EXCEPTION
102469 WHEN OTHERS THEN
102470 l_acc_rev_flag := 'N';
102471 END;
102472 --
102473 IF (l_acc_rev_flag = 'Y') THEN
102474
102475 -- 4645092 ------------------------------------------------------------------------------
102476 -- To allow MPA report to determine if it should generate report process
102477 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
102478 ------------------------------------------------------------------------------------------
102479
102480 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
102481 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
102482 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
102483 -- call ADRs
102484 -- Bug 4922099
102485 --
102486 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102487 (NVL(l_actual_upg_option, 'N') = 'O') OR
102488 (NVL(l_enc_upg_option, 'N') = 'O')
102489 )
102490 THEN
102491 NULL;
102492 --
102493 --
102494
102495 l_ccid := AcctDerRule_4(
102496 p_application_id => p_application_id
102497 , p_ae_header_id => l_ae_header_id
102498 , p_source_4 => p_source_4
102499 , x_transaction_coa_id => l_adr_transaction_coa_id
102500 , x_accounting_coa_id => l_adr_accounting_coa_id
102501 , x_value_type_code => l_adr_value_type_code
102502 , p_side => 'NA'
102503 );
102504
102505 xla_ae_lines_pkg.set_ccid(
102506 p_code_combination_id => l_ccid
102507 , p_value_type_code => l_adr_value_type_code
102508 , p_transaction_coa_id => l_adr_transaction_coa_id
102509 , p_accounting_coa_id => l_adr_accounting_coa_id
102510 , p_adr_code => 'CST_DEFAULT'
102511 , p_adr_type_code => 'S'
102512 , p_component_type => l_component_type
102513 , p_component_code => l_component_code
102514 , p_component_type_code => l_component_type_code
102515 , p_component_appl_id => l_component_appl_id
102516 , p_amb_context_code => l_amb_context_code
102517 , p_side => 'NA'
102518 );
102519
102520
102521 --
102522 --
102523 END IF;
102524
102525 --
102526 -- Update the line information that should be overwritten
102527 --
102528 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
102529 p_header_num => 1);
102530 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
102531
102532 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
102533
102534 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
102535 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
102536 END IF;
102537
102538 --
102539 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
102540 --
102541 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
102542 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
102543 ELSE
102544 ---------------------------------------------------------------------------------------------------
102545 -- 4262811a Switch Sign
102546 ---------------------------------------------------------------------------------------------------
102547 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
102548 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102549 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102550 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
102551 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102552 -- 5132302
102553 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
102554 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
102555
102556 END IF;
102557
102558 -- 4955764
102559 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102560 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
102561
102562
102563 XLA_AE_LINES_PKG.ValidateCurrentLine;
102564 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
102565
102566 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
102567 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
102568 ,p_balance_type_code => l_balance_type_code);
102569
102570 END IF;
102571
102572 -----------------------------------------------------------------------------------------
102573 -- 4262811 Multiperiod Accounting
102574 -----------------------------------------------------------------------------------------
102575 -- No MPA option is assigned.
102576
102577
102578 END IF;
102579 END IF;
102580 --
102581
102582 --
102583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102584 trace
102585 (p_msg => 'END of AcctLineType_186'
102586 ,p_level => C_LEVEL_PROCEDURE
102587 ,p_module => l_log_module);
102588 END IF;
102589 --
102590 EXCEPTION
102591 WHEN xla_exceptions_pkg.application_exception THEN
102592 RAISE;
102593 WHEN OTHERS THEN
102594 xla_exceptions_pkg.raise_message
102595 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_186');
102596 END AcctLineType_186;
102597 --
102598
102599 ---------------------------------------
102600 --
102601 -- PRIVATE FUNCTION
102602 -- AcctLineType_187
102603 --
102604 ---------------------------------------
102605 PROCEDURE AcctLineType_187 (
102606 p_application_id IN NUMBER
102607 ,p_event_id IN NUMBER
102608 ,p_calculate_acctd_flag IN VARCHAR2
102609 ,p_calculate_g_l_flag IN VARCHAR2
102610 ,p_actual_flag IN OUT VARCHAR2
102611 ,p_balance_type_code OUT VARCHAR2
102612 ,p_gain_or_loss_ref OUT VARCHAR2
102613
102614 --Cost Management Default Account
102615 , p_source_4 IN NUMBER
102616 --DISTRIBUTION_IDENTIFIER
102617 , p_source_11 IN NUMBER
102618 --Distribution Type
102619 , p_source_12 IN VARCHAR2
102620 , p_source_12_meaning IN VARCHAR2
102621 --Entered Currency Code
102622 , p_source_15 IN VARCHAR2
102623 --Entered Amount
102624 , p_source_18 IN NUMBER
102625 --Currency Conversion Date
102626 , p_source_19 IN DATE
102627 --Currency Conversion Rate
102628 , p_source_20 IN NUMBER
102629 --Currency Conversion Type
102630 , p_source_21 IN VARCHAR2
102631 --Accounted Amount
102632 , p_source_22 IN NUMBER
102633 --Accounting Line Type
102634 , p_source_24 IN NUMBER
102635 )
102636 IS
102637
102638 l_component_type VARCHAR2(80);
102639 l_component_code VARCHAR2(30);
102640 l_component_type_code VARCHAR2(1);
102641 l_component_appl_id INTEGER;
102642 l_amb_context_code VARCHAR2(30);
102643 l_entity_code VARCHAR2(30);
102644 l_event_class_code VARCHAR2(30);
102645 l_ae_header_id NUMBER;
102646 l_event_type_code VARCHAR2(30);
102647 l_line_definition_code VARCHAR2(30);
102648 l_line_definition_owner_code VARCHAR2(1);
102649 --
102650 -- adr variables
102651 l_segment VARCHAR2(30);
102652 l_ccid NUMBER;
102653 l_adr_transaction_coa_id NUMBER;
102654 l_adr_accounting_coa_id NUMBER;
102655 l_adr_flexfield_segment_code VARCHAR2(30);
102656 l_adr_flex_value_set_id NUMBER;
102657 l_adr_value_type_code VARCHAR2(30);
102658 l_adr_value_combination_id NUMBER;
102659 l_adr_value_segment_code VARCHAR2(30);
102660
102661 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
102662 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
102663 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
102664 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
102665
102666 -- 4262811 Variables ------------------------------------------------------------------------------------------
102667 l_entered_amt_idx NUMBER;
102668 l_accted_amt_idx NUMBER;
102669 l_acc_rev_flag VARCHAR2(1);
102670 l_accrual_line_num NUMBER;
102671 l_tmp_amt NUMBER;
102672 l_acc_rev_natural_side_code VARCHAR2(1);
102673
102674 l_num_entries NUMBER;
102675 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
102676 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
102677 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
102678 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
102679 l_recog_line_1 NUMBER;
102680 l_recog_line_2 NUMBER;
102681
102682 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
102683 l_bflow_applied_to_amt NUMBER; -- 5132302
102684 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
102685
102686 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
102687
102688 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
102689 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
102690
102691 ---------------------------------------------------------------------------------------------------------------
102692
102693
102694 --
102695 -- bulk performance
102696 --
102697 l_balance_type_code VARCHAR2(1);
102698 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
102699 l_log_module VARCHAR2(240);
102700
102701 --
102702 -- Upgrade strategy
102703 --
102704 l_actual_upg_option VARCHAR2(1);
102705 l_enc_upg_option VARCHAR2(1);
102706
102707 --
102708 BEGIN
102709 --
102710 IF g_log_enabled THEN
102711 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_187';
102712 END IF;
102713 --
102714 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102715
102716 trace
102717 (p_msg => 'BEGIN of AcctLineType_187'
102718 ,p_level => C_LEVEL_PROCEDURE
102719 ,p_module => l_log_module);
102720
102721 END IF;
102722 --
102723 l_component_type := 'AMB_JLT';
102724 l_component_code := 'OFFSET';
102725 l_component_type_code := 'S';
102726 l_component_appl_id := 707;
102727 l_amb_context_code := 'DEFAULT';
102728 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
102729 l_event_class_code := 'USER_DEFINE';
102730 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
102731 l_line_definition_owner_code := 'S';
102732 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
102733 --
102734 l_balance_type_code := 'A';
102735 l_segment := NULL;
102736 l_ccid := NULL;
102737 l_adr_transaction_coa_id := NULL;
102738 l_adr_accounting_coa_id := NULL;
102739 l_adr_flexfield_segment_code := NULL;
102740 l_adr_flex_value_set_id := NULL;
102741 l_adr_value_type_code := NULL;
102742 l_adr_value_combination_id := NULL;
102743 l_adr_value_segment_code := NULL;
102744
102745 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
102746 l_bflow_class_code := ''; -- 4219869 Business Flow
102747 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
102748 l_budgetary_control_flag := 'N';
102749
102750 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102751 l_bflow_applied_to_amt := NULL; -- 5132302
102752 l_entered_amt_idx := NULL; -- 4262811
102753 l_accted_amt_idx := NULL; -- 4262811
102754 l_acc_rev_flag := NULL; -- 4262811
102755 l_accrual_line_num := NULL; -- 4262811
102756 l_tmp_amt := NULL; -- 4262811
102757 --
102758
102759 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
102760 l_balance_type_code <> 'B' THEN
102761 IF NVL(p_source_24,9E125) = 2
102762 THEN
102763
102764 --
102765 XLA_AE_LINES_PKG.SetNewLine;
102766
102767 p_balance_type_code := l_balance_type_code;
102768 -- set the flag so later we will know whether the gain loss line needs to be created
102769
102770 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
102771 p_actual_flag :='A';
102772 END IF;
102773
102774 --
102775 -- bulk performance
102776 --
102777 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
102778 p_header_num => 0); -- 4262811
102779 --
102780 -- set accounting line options
102781 --
102782 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
102783 p_natural_side_code => 'D'
102784 , p_gain_or_loss_flag => 'N'
102785 , p_gl_transfer_mode_code => 'S'
102786 , p_acct_entry_type_code => 'A'
102787 , p_switch_side_flag => 'Y'
102788 , p_merge_duplicate_code => 'N'
102789 );
102790 --
102791 l_acc_rev_natural_side_code := 'C'; -- 4262811
102792 --
102793 --
102794 -- set accounting line type info
102795 --
102796 xla_ae_lines_pkg.SetAcctLineType
102797 (p_component_type => l_component_type
102798 ,p_event_type_code => l_event_type_code
102799 ,p_line_definition_owner_code => l_line_definition_owner_code
102800 ,p_line_definition_code => l_line_definition_code
102801 ,p_accounting_line_code => l_component_code
102802 ,p_accounting_line_type_code => l_component_type_code
102803 ,p_accounting_line_appl_id => l_component_appl_id
102804 ,p_amb_context_code => l_amb_context_code
102805 ,p_entity_code => l_entity_code
102806 ,p_event_class_code => l_event_class_code);
102807 --
102808 -- set accounting class
102809 --
102810 xla_ae_lines_pkg.SetAcctClass(
102811 p_accounting_class_code => 'OFFSET'
102812 , p_ae_header_id => l_ae_header_id
102813 );
102814
102815 --
102816 -- set rounding class
102817 --
102818 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
102819 'OFFSET';
102820
102821 --
102822 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
102823 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
102824 --
102825 -- bulk performance
102826 --
102827 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
102828
102829 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
102830 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
102831
102832 -- 4955764
102833 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
102834 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
102835
102836 -- 4458381 Public Sector Enh
102837
102838 --
102839 -- set accounting attributes for the line type
102840 --
102841 l_entered_amt_idx := 3;
102842 l_accted_amt_idx := 8;
102843 l_bflow_applied_to_amt_idx := NULL; -- 5132302
102844 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
102845 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
102846 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
102847 l_rec_acct_attrs.array_char_value(2) := p_source_12;
102848 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
102849 l_rec_acct_attrs.array_num_value(3) := p_source_18;
102850 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
102851 l_rec_acct_attrs.array_char_value(4) := p_source_15;
102852 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
102853 l_rec_acct_attrs.array_date_value(5) := p_source_19;
102854 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
102855 l_rec_acct_attrs.array_num_value(6) := p_source_20;
102856 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
102857 l_rec_acct_attrs.array_char_value(7) := p_source_21;
102858 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
102859 l_rec_acct_attrs.array_num_value(8) := p_source_22;
102860
102861 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
102862 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
102863
102864 ---------------------------------------------------------------------------------------------------------------
102865 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
102866 ---------------------------------------------------------------------------------------------------------------
102867 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
102868
102869 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102870 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
102871
102872 IF xla_accounting_cache_pkg.GetValueChar
102873 (p_source_code => 'LEDGER_CATEGORY_CODE'
102874 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
102875 AND l_bflow_method_code = 'PRIOR_ENTRY'
102876 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
102877 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
102878 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
102879 )
102880 THEN
102881 xla_ae_lines_pkg.BflowUpgEntry
102882 (p_business_method_code => l_bflow_method_code
102883 ,p_business_class_code => l_bflow_class_code
102884 ,p_balance_type => l_balance_type_code);
102885 ELSE
102886 NULL;
102887 -- No business flow processing for business flow method of NONE.
102888 END IF;
102889
102890 --
102891 -- call analytical criteria
102892 --
102893
102894 --
102895 -- call description
102896 --
102897 -- No description or it is inherited.
102898 --
102899 -- call ADRs
102900 -- Bug 4922099
102901 --
102902 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
102903 (NVL(l_actual_upg_option, 'N') = 'O') OR
102904 (NVL(l_enc_upg_option, 'N') = 'O')
102905 )
102906 THEN
102907 NULL;
102908 --
102909 --
102910
102911 l_ccid := AcctDerRule_4(
102912 p_application_id => p_application_id
102913 , p_ae_header_id => l_ae_header_id
102914 , p_source_4 => p_source_4
102915 , x_transaction_coa_id => l_adr_transaction_coa_id
102916 , x_accounting_coa_id => l_adr_accounting_coa_id
102917 , x_value_type_code => l_adr_value_type_code
102918 , p_side => 'NA'
102919 );
102920
102921 xla_ae_lines_pkg.set_ccid(
102922 p_code_combination_id => l_ccid
102923 , p_value_type_code => l_adr_value_type_code
102924 , p_transaction_coa_id => l_adr_transaction_coa_id
102925 , p_accounting_coa_id => l_adr_accounting_coa_id
102926 , p_adr_code => 'CST_DEFAULT'
102927 , p_adr_type_code => 'S'
102928 , p_component_type => l_component_type
102929 , p_component_code => l_component_code
102930 , p_component_type_code => l_component_type_code
102931 , p_component_appl_id => l_component_appl_id
102932 , p_amb_context_code => l_amb_context_code
102933 , p_side => 'NA'
102934 );
102935
102936
102937 --
102938 --
102939 END IF;
102940 --
102941 -- Bug 4922099
102942 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
102943 (NVL(l_enc_upg_option, 'N') = 'O')
102944 ) AND
102945 (l_bflow_method_code = 'PRIOR_ENTRY')
102946 )
102947 THEN
102948 IF
102949 --
102950 1 = 2
102951 --
102952 THEN
102953 xla_accounting_err_pkg.build_message
102954 (p_appli_s_name => 'XLA'
102955 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102956 ,p_token_1 => 'LINE_NUMBER'
102957 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
102958 ,p_token_2 => 'LINE_TYPE_NAME'
102959 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
102960 l_component_type
102961 ,l_component_code
102962 ,l_component_type_code
102963 ,l_component_appl_id
102964 ,l_amb_context_code
102965 ,l_entity_code
102966 ,l_event_class_code
102967 )
102968 ,p_token_3 => 'OWNER'
102969 ,p_value_3 => xla_lookups_pkg.get_meaning(
102970 p_lookup_type => 'XLA_OWNER_TYPE'
102971 ,p_lookup_code => l_component_type_code
102972 )
102973 ,p_token_4 => 'PRODUCT_NAME'
102974 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
102975 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
102976 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
102977 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
102978 ,p_ae_header_id => NULL
102979 );
102980
102981 IF (C_LEVEL_ERROR>= g_log_level) THEN
102982 trace
102983 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
102984 ,p_level => C_LEVEL_ERROR
102985 ,p_module => l_log_module);
102986 END IF;
102987 END IF;
102988 END IF;
102989 --
102990 --
102991 ------------------------------------------------------------------------------------------------
102992 -- 4219869 Business Flow
102993 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
102994 -- Prior Entry. Currently, the following code is always generated.
102995 ------------------------------------------------------------------------------------------------
102996 XLA_AE_LINES_PKG.ValidateCurrentLine;
102997
102998 ------------------------------------------------------------------------------------
102999 -- 4219869 Business Flow
103000 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103001 ------------------------------------------------------------------------------------
103002 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103003
103004 ----------------------------------------------------------------------------------
103005 -- 4219869 Business Flow
103006 -- Update journal entry status -- Need to generate this within IF <condition>
103007 ----------------------------------------------------------------------------------
103008 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103009 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103010 ,p_balance_type_code => l_balance_type_code
103011 );
103012
103013 -------------------------------------------------------------------------------------------
103014 -- 4262811 - Generate the Accrual Reversal lines
103015 -------------------------------------------------------------------------------------------
103016 BEGIN
103017 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103018 (g_array_event(p_event_id).array_value_num('header_index'));
103019 IF l_acc_rev_flag IS NULL THEN
103020 l_acc_rev_flag := 'N';
103021 END IF;
103022 EXCEPTION
103023 WHEN OTHERS THEN
103024 l_acc_rev_flag := 'N';
103025 END;
103026 --
103027 IF (l_acc_rev_flag = 'Y') THEN
103028
103029 -- 4645092 ------------------------------------------------------------------------------
103030 -- To allow MPA report to determine if it should generate report process
103031 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103032 ------------------------------------------------------------------------------------------
103033
103034 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103035 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103036 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
103037 -- call ADRs
103038 -- Bug 4922099
103039 --
103040 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103041 (NVL(l_actual_upg_option, 'N') = 'O') OR
103042 (NVL(l_enc_upg_option, 'N') = 'O')
103043 )
103044 THEN
103045 NULL;
103046 --
103047 --
103048
103049 l_ccid := AcctDerRule_4(
103050 p_application_id => p_application_id
103051 , p_ae_header_id => l_ae_header_id
103052 , p_source_4 => p_source_4
103053 , x_transaction_coa_id => l_adr_transaction_coa_id
103054 , x_accounting_coa_id => l_adr_accounting_coa_id
103055 , x_value_type_code => l_adr_value_type_code
103056 , p_side => 'NA'
103057 );
103058
103059 xla_ae_lines_pkg.set_ccid(
103060 p_code_combination_id => l_ccid
103061 , p_value_type_code => l_adr_value_type_code
103062 , p_transaction_coa_id => l_adr_transaction_coa_id
103063 , p_accounting_coa_id => l_adr_accounting_coa_id
103064 , p_adr_code => 'CST_DEFAULT'
103065 , p_adr_type_code => 'S'
103066 , p_component_type => l_component_type
103067 , p_component_code => l_component_code
103068 , p_component_type_code => l_component_type_code
103069 , p_component_appl_id => l_component_appl_id
103070 , p_amb_context_code => l_amb_context_code
103071 , p_side => 'NA'
103072 );
103073
103074
103075 --
103076 --
103077 END IF;
103078
103079 --
103080 -- Update the line information that should be overwritten
103081 --
103082 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103083 p_header_num => 1);
103084 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
103085
103086 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103087
103088 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
103089 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103090 END IF;
103091
103092 --
103093 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103094 --
103095 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103096 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
103097 ELSE
103098 ---------------------------------------------------------------------------------------------------
103099 -- 4262811a Switch Sign
103100 ---------------------------------------------------------------------------------------------------
103101 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
103102 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103103 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103104 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103105 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103106 -- 5132302
103107 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103108 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103109
103110 END IF;
103111
103112 -- 4955764
103113 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103114 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103115
103116
103117 XLA_AE_LINES_PKG.ValidateCurrentLine;
103118 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103119
103120 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103121 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103122 ,p_balance_type_code => l_balance_type_code);
103123
103124 END IF;
103125
103126 -----------------------------------------------------------------------------------------
103127 -- 4262811 Multiperiod Accounting
103128 -----------------------------------------------------------------------------------------
103129 -- No MPA option is assigned.
103130
103131
103132 END IF;
103133 END IF;
103134 --
103135
103136 --
103137 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103138 trace
103139 (p_msg => 'END of AcctLineType_187'
103140 ,p_level => C_LEVEL_PROCEDURE
103141 ,p_module => l_log_module);
103142 END IF;
103143 --
103144 EXCEPTION
103145 WHEN xla_exceptions_pkg.application_exception THEN
103146 RAISE;
103147 WHEN OTHERS THEN
103148 xla_exceptions_pkg.raise_message
103149 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_187');
103150 END AcctLineType_187;
103151 --
103152
103153 ---------------------------------------
103154 --
103155 -- PRIVATE FUNCTION
103156 -- AcctLineType_188
103157 --
103158 ---------------------------------------
103159 PROCEDURE AcctLineType_188 (
103160 p_application_id IN NUMBER
103161 ,p_event_id IN NUMBER
103162 ,p_calculate_acctd_flag IN VARCHAR2
103163 ,p_calculate_g_l_flag IN VARCHAR2
103164 ,p_actual_flag IN OUT VARCHAR2
103165 ,p_balance_type_code OUT VARCHAR2
103166 ,p_gain_or_loss_ref OUT VARCHAR2
103167
103168 --Cost Management Default Account
103169 , p_source_4 IN NUMBER
103170 --DISTRIBUTION_IDENTIFIER
103171 , p_source_11 IN NUMBER
103172 --Distribution Type
103173 , p_source_12 IN VARCHAR2
103174 , p_source_12_meaning IN VARCHAR2
103175 --Entered Currency Code
103176 , p_source_15 IN VARCHAR2
103177 --Entered Amount
103178 , p_source_18 IN NUMBER
103179 --Currency Conversion Date
103180 , p_source_19 IN DATE
103181 --Currency Conversion Rate
103182 , p_source_20 IN NUMBER
103183 --Currency Conversion Type
103184 , p_source_21 IN VARCHAR2
103185 --Accounted Amount
103186 , p_source_22 IN NUMBER
103187 --Accounting Line Type
103188 , p_source_24 IN NUMBER
103189 )
103190 IS
103191
103192 l_component_type VARCHAR2(80);
103193 l_component_code VARCHAR2(30);
103194 l_component_type_code VARCHAR2(1);
103195 l_component_appl_id INTEGER;
103196 l_amb_context_code VARCHAR2(30);
103197 l_entity_code VARCHAR2(30);
103198 l_event_class_code VARCHAR2(30);
103199 l_ae_header_id NUMBER;
103200 l_event_type_code VARCHAR2(30);
103201 l_line_definition_code VARCHAR2(30);
103202 l_line_definition_owner_code VARCHAR2(1);
103203 --
103204 -- adr variables
103205 l_segment VARCHAR2(30);
103206 l_ccid NUMBER;
103207 l_adr_transaction_coa_id NUMBER;
103208 l_adr_accounting_coa_id NUMBER;
103209 l_adr_flexfield_segment_code VARCHAR2(30);
103210 l_adr_flex_value_set_id NUMBER;
103211 l_adr_value_type_code VARCHAR2(30);
103212 l_adr_value_combination_id NUMBER;
103213 l_adr_value_segment_code VARCHAR2(30);
103214
103215 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
103216 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
103217 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
103218 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
103219
103220 -- 4262811 Variables ------------------------------------------------------------------------------------------
103221 l_entered_amt_idx NUMBER;
103222 l_accted_amt_idx NUMBER;
103223 l_acc_rev_flag VARCHAR2(1);
103224 l_accrual_line_num NUMBER;
103225 l_tmp_amt NUMBER;
103226 l_acc_rev_natural_side_code VARCHAR2(1);
103227
103228 l_num_entries NUMBER;
103229 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
103230 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
103231 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
103232 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
103233 l_recog_line_1 NUMBER;
103234 l_recog_line_2 NUMBER;
103235
103236 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
103237 l_bflow_applied_to_amt NUMBER; -- 5132302
103238 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
103239
103240 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103241
103242 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
103243 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
103244
103245 ---------------------------------------------------------------------------------------------------------------
103246
103247
103248 --
103249 -- bulk performance
103250 --
103251 l_balance_type_code VARCHAR2(1);
103252 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
103253 l_log_module VARCHAR2(240);
103254
103255 --
103256 -- Upgrade strategy
103257 --
103258 l_actual_upg_option VARCHAR2(1);
103259 l_enc_upg_option VARCHAR2(1);
103260
103261 --
103262 BEGIN
103263 --
103264 IF g_log_enabled THEN
103265 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_188';
103266 END IF;
103267 --
103268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103269
103270 trace
103271 (p_msg => 'BEGIN of AcctLineType_188'
103272 ,p_level => C_LEVEL_PROCEDURE
103273 ,p_module => l_log_module);
103274
103275 END IF;
103276 --
103277 l_component_type := 'AMB_JLT';
103278 l_component_code := 'OFFSET';
103279 l_component_type_code := 'S';
103280 l_component_appl_id := 707;
103281 l_amb_context_code := 'DEFAULT';
103282 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
103283 l_event_class_code := 'USER_DEFINE';
103284 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
103285 l_line_definition_owner_code := 'S';
103286 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
103287 --
103288 l_balance_type_code := 'A';
103289 l_segment := NULL;
103290 l_ccid := NULL;
103291 l_adr_transaction_coa_id := NULL;
103292 l_adr_accounting_coa_id := NULL;
103293 l_adr_flexfield_segment_code := NULL;
103294 l_adr_flex_value_set_id := NULL;
103295 l_adr_value_type_code := NULL;
103296 l_adr_value_combination_id := NULL;
103297 l_adr_value_segment_code := NULL;
103298
103299 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
103300 l_bflow_class_code := ''; -- 4219869 Business Flow
103301 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
103302 l_budgetary_control_flag := 'N';
103303
103304 l_bflow_applied_to_amt_idx := NULL; -- 5132302
103305 l_bflow_applied_to_amt := NULL; -- 5132302
103306 l_entered_amt_idx := NULL; -- 4262811
103307 l_accted_amt_idx := NULL; -- 4262811
103308 l_acc_rev_flag := NULL; -- 4262811
103309 l_accrual_line_num := NULL; -- 4262811
103310 l_tmp_amt := NULL; -- 4262811
103311 --
103312
103313 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103314 l_balance_type_code <> 'B' THEN
103315 IF NVL(p_source_24,9E125) = 2
103316 THEN
103317
103318 --
103319 XLA_AE_LINES_PKG.SetNewLine;
103320
103321 p_balance_type_code := l_balance_type_code;
103322 -- set the flag so later we will know whether the gain loss line needs to be created
103323
103324 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103325 p_actual_flag :='A';
103326 END IF;
103327
103328 --
103329 -- bulk performance
103330 --
103331 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103332 p_header_num => 0); -- 4262811
103333 --
103334 -- set accounting line options
103335 --
103336 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103337 p_natural_side_code => 'D'
103338 , p_gain_or_loss_flag => 'N'
103339 , p_gl_transfer_mode_code => 'S'
103340 , p_acct_entry_type_code => 'A'
103341 , p_switch_side_flag => 'Y'
103342 , p_merge_duplicate_code => 'N'
103343 );
103344 --
103345 l_acc_rev_natural_side_code := 'C'; -- 4262811
103346 --
103347 --
103348 -- set accounting line type info
103349 --
103350 xla_ae_lines_pkg.SetAcctLineType
103351 (p_component_type => l_component_type
103352 ,p_event_type_code => l_event_type_code
103353 ,p_line_definition_owner_code => l_line_definition_owner_code
103354 ,p_line_definition_code => l_line_definition_code
103355 ,p_accounting_line_code => l_component_code
103356 ,p_accounting_line_type_code => l_component_type_code
103357 ,p_accounting_line_appl_id => l_component_appl_id
103358 ,p_amb_context_code => l_amb_context_code
103359 ,p_entity_code => l_entity_code
103360 ,p_event_class_code => l_event_class_code);
103361 --
103362 -- set accounting class
103363 --
103364 xla_ae_lines_pkg.SetAcctClass(
103365 p_accounting_class_code => 'OFFSET'
103366 , p_ae_header_id => l_ae_header_id
103367 );
103368
103369 --
103370 -- set rounding class
103371 --
103372 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103373 'OFFSET';
103374
103375 --
103376 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103377 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103378 --
103379 -- bulk performance
103380 --
103381 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103382
103383 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103384 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103385
103386 -- 4955764
103387 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103388 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103389
103390 -- 4458381 Public Sector Enh
103391
103392 --
103393 -- set accounting attributes for the line type
103394 --
103395 l_entered_amt_idx := 3;
103396 l_accted_amt_idx := 8;
103397 l_bflow_applied_to_amt_idx := NULL; -- 5132302
103398 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
103399 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
103400 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
103401 l_rec_acct_attrs.array_char_value(2) := p_source_12;
103402 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
103403 l_rec_acct_attrs.array_num_value(3) := p_source_18;
103404 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
103405 l_rec_acct_attrs.array_char_value(4) := p_source_15;
103406 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
103407 l_rec_acct_attrs.array_date_value(5) := p_source_19;
103408 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
103409 l_rec_acct_attrs.array_num_value(6) := p_source_20;
103410 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
103411 l_rec_acct_attrs.array_char_value(7) := p_source_21;
103412 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
103413 l_rec_acct_attrs.array_num_value(8) := p_source_22;
103414
103415 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103416 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103417
103418 ---------------------------------------------------------------------------------------------------------------
103419 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103420 ---------------------------------------------------------------------------------------------------------------
103421 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103422
103423 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103424 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103425
103426 IF xla_accounting_cache_pkg.GetValueChar
103427 (p_source_code => 'LEDGER_CATEGORY_CODE'
103428 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103429 AND l_bflow_method_code = 'PRIOR_ENTRY'
103430 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103431 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103432 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103433 )
103434 THEN
103435 xla_ae_lines_pkg.BflowUpgEntry
103436 (p_business_method_code => l_bflow_method_code
103437 ,p_business_class_code => l_bflow_class_code
103438 ,p_balance_type => l_balance_type_code);
103439 ELSE
103440 NULL;
103441 -- No business flow processing for business flow method of NONE.
103442 END IF;
103443
103444 --
103445 -- call analytical criteria
103446 --
103447
103448 --
103449 -- call description
103450 --
103451 -- No description or it is inherited.
103452 --
103453 -- call ADRs
103454 -- Bug 4922099
103455 --
103456 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103457 (NVL(l_actual_upg_option, 'N') = 'O') OR
103458 (NVL(l_enc_upg_option, 'N') = 'O')
103459 )
103460 THEN
103461 NULL;
103462 --
103463 --
103464
103465 l_ccid := AcctDerRule_4(
103466 p_application_id => p_application_id
103467 , p_ae_header_id => l_ae_header_id
103468 , p_source_4 => p_source_4
103469 , x_transaction_coa_id => l_adr_transaction_coa_id
103470 , x_accounting_coa_id => l_adr_accounting_coa_id
103471 , x_value_type_code => l_adr_value_type_code
103472 , p_side => 'NA'
103473 );
103474
103475 xla_ae_lines_pkg.set_ccid(
103476 p_code_combination_id => l_ccid
103477 , p_value_type_code => l_adr_value_type_code
103478 , p_transaction_coa_id => l_adr_transaction_coa_id
103479 , p_accounting_coa_id => l_adr_accounting_coa_id
103480 , p_adr_code => 'CST_DEFAULT'
103481 , p_adr_type_code => 'S'
103482 , p_component_type => l_component_type
103483 , p_component_code => l_component_code
103484 , p_component_type_code => l_component_type_code
103485 , p_component_appl_id => l_component_appl_id
103486 , p_amb_context_code => l_amb_context_code
103487 , p_side => 'NA'
103488 );
103489
103490
103491 --
103492 --
103493 END IF;
103494 --
103495 -- Bug 4922099
103496 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
103497 (NVL(l_enc_upg_option, 'N') = 'O')
103498 ) AND
103499 (l_bflow_method_code = 'PRIOR_ENTRY')
103500 )
103501 THEN
103502 IF
103503 --
103504 1 = 2
103505 --
103506 THEN
103507 xla_accounting_err_pkg.build_message
103508 (p_appli_s_name => 'XLA'
103509 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103510 ,p_token_1 => 'LINE_NUMBER'
103511 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
103512 ,p_token_2 => 'LINE_TYPE_NAME'
103513 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
103514 l_component_type
103515 ,l_component_code
103516 ,l_component_type_code
103517 ,l_component_appl_id
103518 ,l_amb_context_code
103519 ,l_entity_code
103520 ,l_event_class_code
103521 )
103522 ,p_token_3 => 'OWNER'
103523 ,p_value_3 => xla_lookups_pkg.get_meaning(
103524 p_lookup_type => 'XLA_OWNER_TYPE'
103525 ,p_lookup_code => l_component_type_code
103526 )
103527 ,p_token_4 => 'PRODUCT_NAME'
103528 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
103529 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
103530 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
103531 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
103532 ,p_ae_header_id => NULL
103533 );
103534
103535 IF (C_LEVEL_ERROR>= g_log_level) THEN
103536 trace
103537 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
103538 ,p_level => C_LEVEL_ERROR
103539 ,p_module => l_log_module);
103540 END IF;
103541 END IF;
103542 END IF;
103543 --
103544 --
103545 ------------------------------------------------------------------------------------------------
103546 -- 4219869 Business Flow
103547 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
103548 -- Prior Entry. Currently, the following code is always generated.
103549 ------------------------------------------------------------------------------------------------
103550 XLA_AE_LINES_PKG.ValidateCurrentLine;
103551
103552 ------------------------------------------------------------------------------------
103553 -- 4219869 Business Flow
103554 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
103555 ------------------------------------------------------------------------------------
103556 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103557
103558 ----------------------------------------------------------------------------------
103559 -- 4219869 Business Flow
103560 -- Update journal entry status -- Need to generate this within IF <condition>
103561 ----------------------------------------------------------------------------------
103562 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103563 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
103564 ,p_balance_type_code => l_balance_type_code
103565 );
103566
103567 -------------------------------------------------------------------------------------------
103568 -- 4262811 - Generate the Accrual Reversal lines
103569 -------------------------------------------------------------------------------------------
103570 BEGIN
103571 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
103572 (g_array_event(p_event_id).array_value_num('header_index'));
103573 IF l_acc_rev_flag IS NULL THEN
103574 l_acc_rev_flag := 'N';
103575 END IF;
103576 EXCEPTION
103577 WHEN OTHERS THEN
103578 l_acc_rev_flag := 'N';
103579 END;
103580 --
103581 IF (l_acc_rev_flag = 'Y') THEN
103582
103583 -- 4645092 ------------------------------------------------------------------------------
103584 -- To allow MPA report to determine if it should generate report process
103585 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
103586 ------------------------------------------------------------------------------------------
103587
103588 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
103589 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
103590 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
103591 -- call ADRs
103592 -- Bug 4922099
103593 --
103594 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
103595 (NVL(l_actual_upg_option, 'N') = 'O') OR
103596 (NVL(l_enc_upg_option, 'N') = 'O')
103597 )
103598 THEN
103599 NULL;
103600 --
103601 --
103602
103603 l_ccid := AcctDerRule_4(
103604 p_application_id => p_application_id
103605 , p_ae_header_id => l_ae_header_id
103606 , p_source_4 => p_source_4
103607 , x_transaction_coa_id => l_adr_transaction_coa_id
103608 , x_accounting_coa_id => l_adr_accounting_coa_id
103609 , x_value_type_code => l_adr_value_type_code
103610 , p_side => 'NA'
103611 );
103612
103613 xla_ae_lines_pkg.set_ccid(
103614 p_code_combination_id => l_ccid
103615 , p_value_type_code => l_adr_value_type_code
103616 , p_transaction_coa_id => l_adr_transaction_coa_id
103617 , p_accounting_coa_id => l_adr_accounting_coa_id
103618 , p_adr_code => 'CST_DEFAULT'
103619 , p_adr_type_code => 'S'
103620 , p_component_type => l_component_type
103621 , p_component_code => l_component_code
103622 , p_component_type_code => l_component_type_code
103623 , p_component_appl_id => l_component_appl_id
103624 , p_amb_context_code => l_amb_context_code
103625 , p_side => 'NA'
103626 );
103627
103628
103629 --
103630 --
103631 END IF;
103632
103633 --
103634 -- Update the line information that should be overwritten
103635 --
103636 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
103637 p_header_num => 1);
103638 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
103639
103640 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
103641
103642 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
103643 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
103644 END IF;
103645
103646 --
103647 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
103648 --
103649 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
103650 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
103651 ELSE
103652 ---------------------------------------------------------------------------------------------------
103653 -- 4262811a Switch Sign
103654 ---------------------------------------------------------------------------------------------------
103655 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
103656 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103657 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103658 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
103659 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103660 -- 5132302
103661 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
103662 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
103663
103664 END IF;
103665
103666 -- 4955764
103667 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103668 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
103669
103670
103671 XLA_AE_LINES_PKG.ValidateCurrentLine;
103672 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
103673
103674 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
103675 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
103676 ,p_balance_type_code => l_balance_type_code);
103677
103678 END IF;
103679
103680 -----------------------------------------------------------------------------------------
103681 -- 4262811 Multiperiod Accounting
103682 -----------------------------------------------------------------------------------------
103683 -- No MPA option is assigned.
103684
103685
103686 END IF;
103687 END IF;
103688 --
103689
103690 --
103691 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103692 trace
103693 (p_msg => 'END of AcctLineType_188'
103694 ,p_level => C_LEVEL_PROCEDURE
103695 ,p_module => l_log_module);
103696 END IF;
103697 --
103698 EXCEPTION
103699 WHEN xla_exceptions_pkg.application_exception THEN
103700 RAISE;
103701 WHEN OTHERS THEN
103702 xla_exceptions_pkg.raise_message
103703 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_188');
103704 END AcctLineType_188;
103705 --
103706
103707 ---------------------------------------
103708 --
103709 -- PRIVATE FUNCTION
103710 -- AcctLineType_189
103711 --
103712 ---------------------------------------
103713 PROCEDURE AcctLineType_189 (
103714 p_application_id IN NUMBER
103715 ,p_event_id IN NUMBER
103716 ,p_calculate_acctd_flag IN VARCHAR2
103717 ,p_calculate_g_l_flag IN VARCHAR2
103718 ,p_actual_flag IN OUT VARCHAR2
103719 ,p_balance_type_code OUT VARCHAR2
103720 ,p_gain_or_loss_ref OUT VARCHAR2
103721
103722 --Cost Management Default Account
103723 , p_source_4 IN NUMBER
103724 --DISTRIBUTION_IDENTIFIER
103725 , p_source_11 IN NUMBER
103726 --Distribution Type
103727 , p_source_12 IN VARCHAR2
103728 , p_source_12_meaning IN VARCHAR2
103729 --Entered Currency Code
103730 , p_source_15 IN VARCHAR2
103731 --Entered Amount
103732 , p_source_18 IN NUMBER
103733 --Currency Conversion Date
103734 , p_source_19 IN DATE
103735 --Currency Conversion Rate
103736 , p_source_20 IN NUMBER
103737 --Currency Conversion Type
103738 , p_source_21 IN VARCHAR2
103739 --Accounted Amount
103740 , p_source_22 IN NUMBER
103741 --Accounting Line Type
103742 , p_source_24 IN NUMBER
103743 )
103744 IS
103745
103746 l_component_type VARCHAR2(80);
103747 l_component_code VARCHAR2(30);
103748 l_component_type_code VARCHAR2(1);
103749 l_component_appl_id INTEGER;
103750 l_amb_context_code VARCHAR2(30);
103751 l_entity_code VARCHAR2(30);
103752 l_event_class_code VARCHAR2(30);
103753 l_ae_header_id NUMBER;
103754 l_event_type_code VARCHAR2(30);
103755 l_line_definition_code VARCHAR2(30);
103756 l_line_definition_owner_code VARCHAR2(1);
103757 --
103758 -- adr variables
103759 l_segment VARCHAR2(30);
103760 l_ccid NUMBER;
103761 l_adr_transaction_coa_id NUMBER;
103762 l_adr_accounting_coa_id NUMBER;
103763 l_adr_flexfield_segment_code VARCHAR2(30);
103764 l_adr_flex_value_set_id NUMBER;
103765 l_adr_value_type_code VARCHAR2(30);
103766 l_adr_value_combination_id NUMBER;
103767 l_adr_value_segment_code VARCHAR2(30);
103768
103769 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
103770 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
103771 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
103772 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
103773
103774 -- 4262811 Variables ------------------------------------------------------------------------------------------
103775 l_entered_amt_idx NUMBER;
103776 l_accted_amt_idx NUMBER;
103777 l_acc_rev_flag VARCHAR2(1);
103778 l_accrual_line_num NUMBER;
103779 l_tmp_amt NUMBER;
103780 l_acc_rev_natural_side_code VARCHAR2(1);
103781
103782 l_num_entries NUMBER;
103783 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
103784 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
103785 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
103786 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
103787 l_recog_line_1 NUMBER;
103788 l_recog_line_2 NUMBER;
103789
103790 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
103791 l_bflow_applied_to_amt NUMBER; -- 5132302
103792 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
103793
103794 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
103795
103796 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
103797 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
103798
103799 ---------------------------------------------------------------------------------------------------------------
103800
103801
103802 --
103803 -- bulk performance
103804 --
103805 l_balance_type_code VARCHAR2(1);
103806 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
103807 l_log_module VARCHAR2(240);
103808
103809 --
103810 -- Upgrade strategy
103811 --
103812 l_actual_upg_option VARCHAR2(1);
103813 l_enc_upg_option VARCHAR2(1);
103814
103815 --
103816 BEGIN
103817 --
103818 IF g_log_enabled THEN
103819 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_189';
103820 END IF;
103821 --
103822 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103823
103824 trace
103825 (p_msg => 'BEGIN of AcctLineType_189'
103826 ,p_level => C_LEVEL_PROCEDURE
103827 ,p_module => l_log_module);
103828
103829 END IF;
103830 --
103831 l_component_type := 'AMB_JLT';
103832 l_component_code := 'OFFSET';
103833 l_component_type_code := 'S';
103834 l_component_appl_id := 707;
103835 l_amb_context_code := 'DEFAULT';
103836 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
103837 l_event_class_code := 'USER_DEFINE';
103838 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
103839 l_line_definition_owner_code := 'S';
103840 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_NOTP';
103841 --
103842 l_balance_type_code := 'A';
103843 l_segment := NULL;
103844 l_ccid := NULL;
103845 l_adr_transaction_coa_id := NULL;
103846 l_adr_accounting_coa_id := NULL;
103847 l_adr_flexfield_segment_code := NULL;
103848 l_adr_flex_value_set_id := NULL;
103849 l_adr_value_type_code := NULL;
103850 l_adr_value_combination_id := NULL;
103851 l_adr_value_segment_code := NULL;
103852
103853 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
103854 l_bflow_class_code := ''; -- 4219869 Business Flow
103855 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
103856 l_budgetary_control_flag := 'N';
103857
103858 l_bflow_applied_to_amt_idx := NULL; -- 5132302
103859 l_bflow_applied_to_amt := NULL; -- 5132302
103860 l_entered_amt_idx := NULL; -- 4262811
103861 l_accted_amt_idx := NULL; -- 4262811
103862 l_acc_rev_flag := NULL; -- 4262811
103863 l_accrual_line_num := NULL; -- 4262811
103864 l_tmp_amt := NULL; -- 4262811
103865 --
103866
103867 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
103868 l_balance_type_code <> 'B' THEN
103869 IF NVL(p_source_24,9E125) = 2
103870 THEN
103871
103872 --
103873 XLA_AE_LINES_PKG.SetNewLine;
103874
103875 p_balance_type_code := l_balance_type_code;
103876 -- set the flag so later we will know whether the gain loss line needs to be created
103877
103878 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
103879 p_actual_flag :='A';
103880 END IF;
103881
103882 --
103883 -- bulk performance
103884 --
103885 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
103886 p_header_num => 0); -- 4262811
103887 --
103888 -- set accounting line options
103889 --
103890 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
103891 p_natural_side_code => 'D'
103892 , p_gain_or_loss_flag => 'N'
103893 , p_gl_transfer_mode_code => 'S'
103894 , p_acct_entry_type_code => 'A'
103895 , p_switch_side_flag => 'Y'
103896 , p_merge_duplicate_code => 'N'
103897 );
103898 --
103899 l_acc_rev_natural_side_code := 'C'; -- 4262811
103900 --
103901 --
103902 -- set accounting line type info
103903 --
103904 xla_ae_lines_pkg.SetAcctLineType
103905 (p_component_type => l_component_type
103906 ,p_event_type_code => l_event_type_code
103907 ,p_line_definition_owner_code => l_line_definition_owner_code
103908 ,p_line_definition_code => l_line_definition_code
103909 ,p_accounting_line_code => l_component_code
103910 ,p_accounting_line_type_code => l_component_type_code
103911 ,p_accounting_line_appl_id => l_component_appl_id
103912 ,p_amb_context_code => l_amb_context_code
103913 ,p_entity_code => l_entity_code
103914 ,p_event_class_code => l_event_class_code);
103915 --
103916 -- set accounting class
103917 --
103918 xla_ae_lines_pkg.SetAcctClass(
103919 p_accounting_class_code => 'OFFSET'
103920 , p_ae_header_id => l_ae_header_id
103921 );
103922
103923 --
103924 -- set rounding class
103925 --
103926 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
103927 'OFFSET';
103928
103929 --
103930 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
103931 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
103932 --
103933 -- bulk performance
103934 --
103935 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
103936
103937 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
103938 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
103939
103940 -- 4955764
103941 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
103942 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
103943
103944 -- 4458381 Public Sector Enh
103945
103946 --
103947 -- set accounting attributes for the line type
103948 --
103949 l_entered_amt_idx := 3;
103950 l_accted_amt_idx := 8;
103951 l_bflow_applied_to_amt_idx := NULL; -- 5132302
103952 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
103953 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
103954 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
103955 l_rec_acct_attrs.array_char_value(2) := p_source_12;
103956 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
103957 l_rec_acct_attrs.array_num_value(3) := p_source_18;
103958 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
103959 l_rec_acct_attrs.array_char_value(4) := p_source_15;
103960 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
103961 l_rec_acct_attrs.array_date_value(5) := p_source_19;
103962 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
103963 l_rec_acct_attrs.array_num_value(6) := p_source_20;
103964 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
103965 l_rec_acct_attrs.array_char_value(7) := p_source_21;
103966 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
103967 l_rec_acct_attrs.array_num_value(8) := p_source_22;
103968
103969 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
103970 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
103971
103972 ---------------------------------------------------------------------------------------------------------------
103973 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
103974 ---------------------------------------------------------------------------------------------------------------
103975 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
103976
103977 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103978 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
103979
103980 IF xla_accounting_cache_pkg.GetValueChar
103981 (p_source_code => 'LEDGER_CATEGORY_CODE'
103982 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
103983 AND l_bflow_method_code = 'PRIOR_ENTRY'
103984 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
103985 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
103986 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
103987 )
103988 THEN
103989 xla_ae_lines_pkg.BflowUpgEntry
103990 (p_business_method_code => l_bflow_method_code
103991 ,p_business_class_code => l_bflow_class_code
103992 ,p_balance_type => l_balance_type_code);
103993 ELSE
103994 NULL;
103995 -- No business flow processing for business flow method of NONE.
103996 END IF;
103997
103998 --
103999 -- call analytical criteria
104000 --
104001
104002 --
104003 -- call description
104004 --
104005 -- No description or it is inherited.
104006 --
104007 -- call ADRs
104008 -- Bug 4922099
104009 --
104010 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104011 (NVL(l_actual_upg_option, 'N') = 'O') OR
104012 (NVL(l_enc_upg_option, 'N') = 'O')
104013 )
104014 THEN
104015 NULL;
104016 --
104017 --
104018
104019 l_ccid := AcctDerRule_4(
104020 p_application_id => p_application_id
104021 , p_ae_header_id => l_ae_header_id
104022 , p_source_4 => p_source_4
104023 , x_transaction_coa_id => l_adr_transaction_coa_id
104024 , x_accounting_coa_id => l_adr_accounting_coa_id
104025 , x_value_type_code => l_adr_value_type_code
104026 , p_side => 'NA'
104027 );
104028
104029 xla_ae_lines_pkg.set_ccid(
104030 p_code_combination_id => l_ccid
104031 , p_value_type_code => l_adr_value_type_code
104032 , p_transaction_coa_id => l_adr_transaction_coa_id
104033 , p_accounting_coa_id => l_adr_accounting_coa_id
104034 , p_adr_code => 'CST_DEFAULT'
104035 , p_adr_type_code => 'S'
104036 , p_component_type => l_component_type
104037 , p_component_code => l_component_code
104038 , p_component_type_code => l_component_type_code
104039 , p_component_appl_id => l_component_appl_id
104040 , p_amb_context_code => l_amb_context_code
104041 , p_side => 'NA'
104042 );
104043
104044
104045 --
104046 --
104047 END IF;
104048 --
104049 -- Bug 4922099
104050 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104051 (NVL(l_enc_upg_option, 'N') = 'O')
104052 ) AND
104053 (l_bflow_method_code = 'PRIOR_ENTRY')
104054 )
104055 THEN
104056 IF
104057 --
104058 1 = 2
104059 --
104060 THEN
104061 xla_accounting_err_pkg.build_message
104062 (p_appli_s_name => 'XLA'
104063 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104064 ,p_token_1 => 'LINE_NUMBER'
104065 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
104066 ,p_token_2 => 'LINE_TYPE_NAME'
104067 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
104068 l_component_type
104069 ,l_component_code
104070 ,l_component_type_code
104071 ,l_component_appl_id
104072 ,l_amb_context_code
104073 ,l_entity_code
104074 ,l_event_class_code
104075 )
104076 ,p_token_3 => 'OWNER'
104077 ,p_value_3 => xla_lookups_pkg.get_meaning(
104078 p_lookup_type => 'XLA_OWNER_TYPE'
104079 ,p_lookup_code => l_component_type_code
104080 )
104081 ,p_token_4 => 'PRODUCT_NAME'
104082 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104083 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104084 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104085 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104086 ,p_ae_header_id => NULL
104087 );
104088
104089 IF (C_LEVEL_ERROR>= g_log_level) THEN
104090 trace
104091 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104092 ,p_level => C_LEVEL_ERROR
104093 ,p_module => l_log_module);
104094 END IF;
104095 END IF;
104096 END IF;
104097 --
104098 --
104099 ------------------------------------------------------------------------------------------------
104100 -- 4219869 Business Flow
104101 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104102 -- Prior Entry. Currently, the following code is always generated.
104103 ------------------------------------------------------------------------------------------------
104104 XLA_AE_LINES_PKG.ValidateCurrentLine;
104105
104106 ------------------------------------------------------------------------------------
104107 -- 4219869 Business Flow
104108 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104109 ------------------------------------------------------------------------------------
104110 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104111
104112 ----------------------------------------------------------------------------------
104113 -- 4219869 Business Flow
104114 -- Update journal entry status -- Need to generate this within IF <condition>
104115 ----------------------------------------------------------------------------------
104116 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104117 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104118 ,p_balance_type_code => l_balance_type_code
104119 );
104120
104121 -------------------------------------------------------------------------------------------
104122 -- 4262811 - Generate the Accrual Reversal lines
104123 -------------------------------------------------------------------------------------------
104124 BEGIN
104125 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104126 (g_array_event(p_event_id).array_value_num('header_index'));
104127 IF l_acc_rev_flag IS NULL THEN
104128 l_acc_rev_flag := 'N';
104129 END IF;
104130 EXCEPTION
104131 WHEN OTHERS THEN
104132 l_acc_rev_flag := 'N';
104133 END;
104134 --
104135 IF (l_acc_rev_flag = 'Y') THEN
104136
104137 -- 4645092 ------------------------------------------------------------------------------
104138 -- To allow MPA report to determine if it should generate report process
104139 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104140 ------------------------------------------------------------------------------------------
104141
104142 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104143 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104144 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
104145 -- call ADRs
104146 -- Bug 4922099
104147 --
104148 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104149 (NVL(l_actual_upg_option, 'N') = 'O') OR
104150 (NVL(l_enc_upg_option, 'N') = 'O')
104151 )
104152 THEN
104153 NULL;
104154 --
104155 --
104156
104157 l_ccid := AcctDerRule_4(
104158 p_application_id => p_application_id
104159 , p_ae_header_id => l_ae_header_id
104160 , p_source_4 => p_source_4
104161 , x_transaction_coa_id => l_adr_transaction_coa_id
104162 , x_accounting_coa_id => l_adr_accounting_coa_id
104163 , x_value_type_code => l_adr_value_type_code
104164 , p_side => 'NA'
104165 );
104166
104167 xla_ae_lines_pkg.set_ccid(
104168 p_code_combination_id => l_ccid
104169 , p_value_type_code => l_adr_value_type_code
104170 , p_transaction_coa_id => l_adr_transaction_coa_id
104171 , p_accounting_coa_id => l_adr_accounting_coa_id
104172 , p_adr_code => 'CST_DEFAULT'
104173 , p_adr_type_code => 'S'
104174 , p_component_type => l_component_type
104175 , p_component_code => l_component_code
104176 , p_component_type_code => l_component_type_code
104177 , p_component_appl_id => l_component_appl_id
104178 , p_amb_context_code => l_amb_context_code
104179 , p_side => 'NA'
104180 );
104181
104182
104183 --
104184 --
104185 END IF;
104186
104187 --
104188 -- Update the line information that should be overwritten
104189 --
104190 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104191 p_header_num => 1);
104192 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
104193
104194 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104195
104196 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
104197 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104198 END IF;
104199
104200 --
104201 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104202 --
104203 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104204 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
104205 ELSE
104206 ---------------------------------------------------------------------------------------------------
104207 -- 4262811a Switch Sign
104208 ---------------------------------------------------------------------------------------------------
104209 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
104210 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104211 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104212 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104213 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104214 -- 5132302
104215 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104216 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104217
104218 END IF;
104219
104220 -- 4955764
104221 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104222 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104223
104224
104225 XLA_AE_LINES_PKG.ValidateCurrentLine;
104226 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104227
104228 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104229 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104230 ,p_balance_type_code => l_balance_type_code);
104231
104232 END IF;
104233
104234 -----------------------------------------------------------------------------------------
104235 -- 4262811 Multiperiod Accounting
104236 -----------------------------------------------------------------------------------------
104237 -- No MPA option is assigned.
104238
104239
104240 END IF;
104241 END IF;
104242 --
104243
104244 --
104245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104246 trace
104247 (p_msg => 'END of AcctLineType_189'
104248 ,p_level => C_LEVEL_PROCEDURE
104249 ,p_module => l_log_module);
104250 END IF;
104251 --
104252 EXCEPTION
104253 WHEN xla_exceptions_pkg.application_exception THEN
104254 RAISE;
104255 WHEN OTHERS THEN
104256 xla_exceptions_pkg.raise_message
104257 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_189');
104258 END AcctLineType_189;
104259 --
104260
104261 ---------------------------------------
104262 --
104263 -- PRIVATE FUNCTION
104264 -- AcctLineType_190
104265 --
104266 ---------------------------------------
104267 PROCEDURE AcctLineType_190 (
104268 p_application_id IN NUMBER
104269 ,p_event_id IN NUMBER
104270 ,p_calculate_acctd_flag IN VARCHAR2
104271 ,p_calculate_g_l_flag IN VARCHAR2
104272 ,p_actual_flag IN OUT VARCHAR2
104273 ,p_balance_type_code OUT VARCHAR2
104274 ,p_gain_or_loss_ref OUT VARCHAR2
104275
104276 --Cost Management Default Account
104277 , p_source_4 IN NUMBER
104278 --Applied to Application ID
104279 , p_source_6 IN NUMBER
104280 --Applied to Distribution Link Type
104281 , p_source_7 IN VARCHAR2
104282 --Applied to Entity Code
104283 , p_source_8 IN VARCHAR2
104284 --DISTRIBUTION_IDENTIFIER
104285 , p_source_11 IN NUMBER
104286 --Distribution Type
104287 , p_source_12 IN VARCHAR2
104288 , p_source_12_meaning IN VARCHAR2
104289 --Encumbrance Reversal Amount Entered
104290 , p_source_14 IN NUMBER
104291 --Entered Currency Code
104292 , p_source_15 IN VARCHAR2
104293 --Transaction Encumbrance Reversal Amount
104294 , p_source_16 IN NUMBER
104295 --Entered Amount
104296 , p_source_18 IN NUMBER
104297 --Currency Conversion Date
104298 , p_source_19 IN DATE
104299 --Currency Conversion Rate
104300 , p_source_20 IN NUMBER
104301 --Currency Conversion Type
104302 , p_source_21 IN VARCHAR2
104303 --Accounted Amount
104304 , p_source_22 IN NUMBER
104305 --Accounting Line Type
104306 , p_source_24 IN NUMBER
104307 --Costing Encumbrance Upgrade Option
104308 , p_source_27 IN VARCHAR2
104309 --TXN_PO_DISTRIBUTION_ID
104310 , p_source_28 IN NUMBER
104311 --TXN_PO_HEADER_ID
104312 , p_source_29 IN NUMBER
104313 --Requisition Budget Account
104314 , p_source_30 IN NUMBER
104315 --Requisition Encumbrance Type Identifier
104316 , p_source_31 IN NUMBER
104317 )
104318 IS
104319
104320 l_component_type VARCHAR2(80);
104321 l_component_code VARCHAR2(30);
104322 l_component_type_code VARCHAR2(1);
104323 l_component_appl_id INTEGER;
104324 l_amb_context_code VARCHAR2(30);
104325 l_entity_code VARCHAR2(30);
104326 l_event_class_code VARCHAR2(30);
104327 l_ae_header_id NUMBER;
104328 l_event_type_code VARCHAR2(30);
104329 l_line_definition_code VARCHAR2(30);
104330 l_line_definition_owner_code VARCHAR2(1);
104331 --
104332 -- adr variables
104333 l_segment VARCHAR2(30);
104334 l_ccid NUMBER;
104335 l_adr_transaction_coa_id NUMBER;
104336 l_adr_accounting_coa_id NUMBER;
104337 l_adr_flexfield_segment_code VARCHAR2(30);
104338 l_adr_flex_value_set_id NUMBER;
104339 l_adr_value_type_code VARCHAR2(30);
104340 l_adr_value_combination_id NUMBER;
104341 l_adr_value_segment_code VARCHAR2(30);
104342
104343 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
104344 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
104345 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
104346 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
104347
104348 -- 4262811 Variables ------------------------------------------------------------------------------------------
104349 l_entered_amt_idx NUMBER;
104350 l_accted_amt_idx NUMBER;
104351 l_acc_rev_flag VARCHAR2(1);
104352 l_accrual_line_num NUMBER;
104353 l_tmp_amt NUMBER;
104354 l_acc_rev_natural_side_code VARCHAR2(1);
104355
104356 l_num_entries NUMBER;
104357 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
104358 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
104359 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
104360 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
104361 l_recog_line_1 NUMBER;
104362 l_recog_line_2 NUMBER;
104363
104364 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
104365 l_bflow_applied_to_amt NUMBER; -- 5132302
104366 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
104367
104368 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
104369
104370 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
104371 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
104372
104373 ---------------------------------------------------------------------------------------------------------------
104374
104375
104376 --
104377 -- bulk performance
104378 --
104379 l_balance_type_code VARCHAR2(1);
104380 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
104381 l_log_module VARCHAR2(240);
104382
104383 --
104384 -- Upgrade strategy
104385 --
104386 l_actual_upg_option VARCHAR2(1);
104387 l_enc_upg_option VARCHAR2(1);
104388
104389 --
104390 BEGIN
104391 --
104392 IF g_log_enabled THEN
104393 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_190';
104394 END IF;
104395 --
104396 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104397
104398 trace
104399 (p_msg => 'BEGIN of AcctLineType_190'
104400 ,p_level => C_LEVEL_PROCEDURE
104401 ,p_module => l_log_module);
104402
104403 END IF;
104404 --
104405 l_component_type := 'AMB_JLT';
104406 l_component_code := 'OFFSET';
104407 l_component_type_code := 'S';
104408 l_component_appl_id := 707;
104409 l_amb_context_code := 'DEFAULT';
104410 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
104411 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
104412 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
104413 l_line_definition_owner_code := 'S';
104414 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
104415 --
104416 l_balance_type_code := 'A';
104417 l_segment := NULL;
104418 l_ccid := NULL;
104419 l_adr_transaction_coa_id := NULL;
104420 l_adr_accounting_coa_id := NULL;
104421 l_adr_flexfield_segment_code := NULL;
104422 l_adr_flex_value_set_id := NULL;
104423 l_adr_value_type_code := NULL;
104424 l_adr_value_combination_id := NULL;
104425 l_adr_value_segment_code := NULL;
104426
104427 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
104428 l_bflow_class_code := ''; -- 4219869 Business Flow
104429 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
104430 l_budgetary_control_flag := 'N';
104431
104432 l_bflow_applied_to_amt_idx := NULL; -- 5132302
104433 l_bflow_applied_to_amt := NULL; -- 5132302
104434 l_entered_amt_idx := NULL; -- 4262811
104435 l_accted_amt_idx := NULL; -- 4262811
104436 l_acc_rev_flag := NULL; -- 4262811
104437 l_accrual_line_num := NULL; -- 4262811
104438 l_tmp_amt := NULL; -- 4262811
104439 --
104440
104441 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
104442 l_balance_type_code <> 'B' THEN
104443 IF NVL(p_source_24,9E125) = 2 AND
104444 p_source_22 >= 0
104445 THEN
104446
104447 --
104448 XLA_AE_LINES_PKG.SetNewLine;
104449
104450 p_balance_type_code := l_balance_type_code;
104451 -- set the flag so later we will know whether the gain loss line needs to be created
104452
104453 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
104454 p_actual_flag :='A';
104455 END IF;
104456
104457 --
104458 -- bulk performance
104459 --
104460 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
104461 p_header_num => 0); -- 4262811
104462 --
104463 -- set accounting line options
104464 --
104465 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
104466 p_natural_side_code => 'D'
104467 , p_gain_or_loss_flag => 'N'
104468 , p_gl_transfer_mode_code => 'S'
104469 , p_acct_entry_type_code => 'A'
104470 , p_switch_side_flag => 'Y'
104471 , p_merge_duplicate_code => 'N'
104472 );
104473 --
104474 l_acc_rev_natural_side_code := 'C'; -- 4262811
104475 --
104476 --
104477 -- set accounting line type info
104478 --
104479 xla_ae_lines_pkg.SetAcctLineType
104480 (p_component_type => l_component_type
104481 ,p_event_type_code => l_event_type_code
104482 ,p_line_definition_owner_code => l_line_definition_owner_code
104483 ,p_line_definition_code => l_line_definition_code
104484 ,p_accounting_line_code => l_component_code
104485 ,p_accounting_line_type_code => l_component_type_code
104486 ,p_accounting_line_appl_id => l_component_appl_id
104487 ,p_amb_context_code => l_amb_context_code
104488 ,p_entity_code => l_entity_code
104489 ,p_event_class_code => l_event_class_code);
104490 --
104491 -- set accounting class
104492 --
104493 xla_ae_lines_pkg.SetAcctClass(
104494 p_accounting_class_code => 'OFFSET'
104495 , p_ae_header_id => l_ae_header_id
104496 );
104497
104498 --
104499 -- set rounding class
104500 --
104501 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
104502 'OFFSET';
104503
104504 --
104505 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
104506 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
104507 --
104508 -- bulk performance
104509 --
104510 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
104511
104512 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
104513 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
104514
104515 -- 4955764
104516 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104517 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
104518
104519 -- 4458381 Public Sector Enh
104520
104521 --
104522 -- set accounting attributes for the line type
104523 --
104524 l_entered_amt_idx := 17;
104525 l_accted_amt_idx := 22;
104526 l_bflow_applied_to_amt_idx := NULL; -- 5132302
104527 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
104528 l_rec_acct_attrs.array_num_value(1) := p_source_6;
104529 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
104530 l_rec_acct_attrs.array_char_value(2) := p_source_7;
104531 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
104532 l_rec_acct_attrs.array_char_value(3) := p_source_8;
104533 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
104534 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
104535 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
104536 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
104537 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
104538 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
104539 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
104540 l_rec_acct_attrs.array_char_value(7) := p_source_12;
104541 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
104542 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
104543 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
104544 l_rec_acct_attrs.array_num_value(9) := p_source_14;
104545 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
104546 l_rec_acct_attrs.array_char_value(10) := p_source_15;
104547 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
104548 l_rec_acct_attrs.array_num_value(11) := p_source_16;
104549 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
104550 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
104551 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
104552 l_rec_acct_attrs.array_num_value(13) := p_source_14;
104553 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
104554 l_rec_acct_attrs.array_char_value(14) := p_source_15;
104555 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
104556 l_rec_acct_attrs.array_num_value(15) := p_source_16;
104557 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
104558 l_rec_acct_attrs.array_char_value(16) := p_source_27;
104559 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
104560 l_rec_acct_attrs.array_num_value(17) := p_source_18;
104561 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
104562 l_rec_acct_attrs.array_char_value(18) := p_source_15;
104563 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
104564 l_rec_acct_attrs.array_date_value(19) := p_source_19;
104565 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
104566 l_rec_acct_attrs.array_num_value(20) := p_source_20;
104567 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
104568 l_rec_acct_attrs.array_char_value(21) := p_source_21;
104569 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
104570 l_rec_acct_attrs.array_num_value(22) := p_source_22;
104571 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
104572 l_rec_acct_attrs.array_num_value(23) := p_source_31;
104573 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
104574 l_rec_acct_attrs.array_num_value(24) := p_source_31;
104575
104576 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
104577 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
104578
104579 ---------------------------------------------------------------------------------------------------------------
104580 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
104581 ---------------------------------------------------------------------------------------------------------------
104582 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
104583
104584 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104585 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
104586
104587 IF xla_accounting_cache_pkg.GetValueChar
104588 (p_source_code => 'LEDGER_CATEGORY_CODE'
104589 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
104590 AND l_bflow_method_code = 'PRIOR_ENTRY'
104591 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
104592 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
104593 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
104594 )
104595 THEN
104596 xla_ae_lines_pkg.BflowUpgEntry
104597 (p_business_method_code => l_bflow_method_code
104598 ,p_business_class_code => l_bflow_class_code
104599 ,p_balance_type => l_balance_type_code);
104600 ELSE
104601 NULL;
104602 -- No business flow processing for business flow method of NONE.
104603 END IF;
104604
104605 --
104606 -- call analytical criteria
104607 --
104608
104609 --
104610 -- call description
104611 --
104612 -- No description or it is inherited.
104613 --
104614 -- call ADRs
104615 -- Bug 4922099
104616 --
104617 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104618 (NVL(l_actual_upg_option, 'N') = 'O') OR
104619 (NVL(l_enc_upg_option, 'N') = 'O')
104620 )
104621 THEN
104622 NULL;
104623 --
104624 --
104625
104626 l_ccid := AcctDerRule_4(
104627 p_application_id => p_application_id
104628 , p_ae_header_id => l_ae_header_id
104629 , p_source_4 => p_source_4
104630 , x_transaction_coa_id => l_adr_transaction_coa_id
104631 , x_accounting_coa_id => l_adr_accounting_coa_id
104632 , x_value_type_code => l_adr_value_type_code
104633 , p_side => 'NA'
104634 );
104635
104636 xla_ae_lines_pkg.set_ccid(
104637 p_code_combination_id => l_ccid
104638 , p_value_type_code => l_adr_value_type_code
104639 , p_transaction_coa_id => l_adr_transaction_coa_id
104640 , p_accounting_coa_id => l_adr_accounting_coa_id
104641 , p_adr_code => 'CST_DEFAULT'
104642 , p_adr_type_code => 'S'
104643 , p_component_type => l_component_type
104644 , p_component_code => l_component_code
104645 , p_component_type_code => l_component_type_code
104646 , p_component_appl_id => l_component_appl_id
104647 , p_amb_context_code => l_amb_context_code
104648 , p_side => 'NA'
104649 );
104650
104651
104652 --
104653 --
104654 END IF;
104655 --
104656 -- Bug 4922099
104657 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
104658 (NVL(l_enc_upg_option, 'N') = 'O')
104659 ) AND
104660 (l_bflow_method_code = 'PRIOR_ENTRY')
104661 )
104662 THEN
104663 IF
104664 --
104665 1 = 2
104666 --
104667 THEN
104668 xla_accounting_err_pkg.build_message
104669 (p_appli_s_name => 'XLA'
104670 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104671 ,p_token_1 => 'LINE_NUMBER'
104672 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
104673 ,p_token_2 => 'LINE_TYPE_NAME'
104674 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
104675 l_component_type
104676 ,l_component_code
104677 ,l_component_type_code
104678 ,l_component_appl_id
104679 ,l_amb_context_code
104680 ,l_entity_code
104681 ,l_event_class_code
104682 )
104683 ,p_token_3 => 'OWNER'
104684 ,p_value_3 => xla_lookups_pkg.get_meaning(
104685 p_lookup_type => 'XLA_OWNER_TYPE'
104686 ,p_lookup_code => l_component_type_code
104687 )
104688 ,p_token_4 => 'PRODUCT_NAME'
104689 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
104690 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
104691 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
104692 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
104693 ,p_ae_header_id => NULL
104694 );
104695
104696 IF (C_LEVEL_ERROR>= g_log_level) THEN
104697 trace
104698 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
104699 ,p_level => C_LEVEL_ERROR
104700 ,p_module => l_log_module);
104701 END IF;
104702 END IF;
104703 END IF;
104704 --
104705 --
104706 ------------------------------------------------------------------------------------------------
104707 -- 4219869 Business Flow
104708 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
104709 -- Prior Entry. Currently, the following code is always generated.
104710 ------------------------------------------------------------------------------------------------
104711 XLA_AE_LINES_PKG.ValidateCurrentLine;
104712
104713 ------------------------------------------------------------------------------------
104714 -- 4219869 Business Flow
104715 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
104716 ------------------------------------------------------------------------------------
104717 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104718
104719 ----------------------------------------------------------------------------------
104720 -- 4219869 Business Flow
104721 -- Update journal entry status -- Need to generate this within IF <condition>
104722 ----------------------------------------------------------------------------------
104723 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104724 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
104725 ,p_balance_type_code => l_balance_type_code
104726 );
104727
104728 -------------------------------------------------------------------------------------------
104729 -- 4262811 - Generate the Accrual Reversal lines
104730 -------------------------------------------------------------------------------------------
104731 BEGIN
104732 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
104733 (g_array_event(p_event_id).array_value_num('header_index'));
104734 IF l_acc_rev_flag IS NULL THEN
104735 l_acc_rev_flag := 'N';
104736 END IF;
104737 EXCEPTION
104738 WHEN OTHERS THEN
104739 l_acc_rev_flag := 'N';
104740 END;
104741 --
104742 IF (l_acc_rev_flag = 'Y') THEN
104743
104744 -- 4645092 ------------------------------------------------------------------------------
104745 -- To allow MPA report to determine if it should generate report process
104746 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
104747 ------------------------------------------------------------------------------------------
104748
104749 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
104750 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
104751 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
104752 -- call ADRs
104753 -- Bug 4922099
104754 --
104755 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
104756 (NVL(l_actual_upg_option, 'N') = 'O') OR
104757 (NVL(l_enc_upg_option, 'N') = 'O')
104758 )
104759 THEN
104760 NULL;
104761 --
104762 --
104763
104764 l_ccid := AcctDerRule_4(
104765 p_application_id => p_application_id
104766 , p_ae_header_id => l_ae_header_id
104767 , p_source_4 => p_source_4
104768 , x_transaction_coa_id => l_adr_transaction_coa_id
104769 , x_accounting_coa_id => l_adr_accounting_coa_id
104770 , x_value_type_code => l_adr_value_type_code
104771 , p_side => 'NA'
104772 );
104773
104774 xla_ae_lines_pkg.set_ccid(
104775 p_code_combination_id => l_ccid
104776 , p_value_type_code => l_adr_value_type_code
104777 , p_transaction_coa_id => l_adr_transaction_coa_id
104778 , p_accounting_coa_id => l_adr_accounting_coa_id
104779 , p_adr_code => 'CST_DEFAULT'
104780 , p_adr_type_code => 'S'
104781 , p_component_type => l_component_type
104782 , p_component_code => l_component_code
104783 , p_component_type_code => l_component_type_code
104784 , p_component_appl_id => l_component_appl_id
104785 , p_amb_context_code => l_amb_context_code
104786 , p_side => 'NA'
104787 );
104788
104789
104790 --
104791 --
104792 END IF;
104793
104794 --
104795 -- Update the line information that should be overwritten
104796 --
104797 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
104798 p_header_num => 1);
104799 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
104800
104801 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
104802
104803 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
104804 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
104805 END IF;
104806
104807 --
104808 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
104809 --
104810 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
104811 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
104812 ELSE
104813 ---------------------------------------------------------------------------------------------------
104814 -- 4262811a Switch Sign
104815 ---------------------------------------------------------------------------------------------------
104816 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
104817 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104818 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104819 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
104820 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104821 -- 5132302
104822 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
104823 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
104824
104825 END IF;
104826
104827 -- 4955764
104828 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
104829 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
104830
104831
104832 XLA_AE_LINES_PKG.ValidateCurrentLine;
104833 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
104834
104835 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
104836 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
104837 ,p_balance_type_code => l_balance_type_code);
104838
104839 END IF;
104840
104841 -----------------------------------------------------------------------------------------
104842 -- 4262811 Multiperiod Accounting
104843 -----------------------------------------------------------------------------------------
104844 -- No MPA option is assigned.
104845
104846
104847 END IF;
104848 END IF;
104849 --
104850
104851 --
104852 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104853 trace
104854 (p_msg => 'END of AcctLineType_190'
104855 ,p_level => C_LEVEL_PROCEDURE
104856 ,p_module => l_log_module);
104857 END IF;
104858 --
104859 EXCEPTION
104860 WHEN xla_exceptions_pkg.application_exception THEN
104861 RAISE;
104862 WHEN OTHERS THEN
104863 xla_exceptions_pkg.raise_message
104864 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_190');
104865 END AcctLineType_190;
104866 --
104867
104868 ---------------------------------------
104869 --
104870 -- PRIVATE FUNCTION
104871 -- AcctLineType_191
104872 --
104873 ---------------------------------------
104874 PROCEDURE AcctLineType_191 (
104875 p_application_id IN NUMBER
104876 ,p_event_id IN NUMBER
104877 ,p_calculate_acctd_flag IN VARCHAR2
104878 ,p_calculate_g_l_flag IN VARCHAR2
104879 ,p_actual_flag IN OUT VARCHAR2
104880 ,p_balance_type_code OUT VARCHAR2
104881 ,p_gain_or_loss_ref OUT VARCHAR2
104882
104883 --Cost Management Default Account
104884 , p_source_4 IN NUMBER
104885 --DISTRIBUTION_IDENTIFIER
104886 , p_source_11 IN NUMBER
104887 --Distribution Type
104888 , p_source_12 IN VARCHAR2
104889 , p_source_12_meaning IN VARCHAR2
104890 --Entered Currency Code
104891 , p_source_15 IN VARCHAR2
104892 --Entered Amount
104893 , p_source_18 IN NUMBER
104894 --Currency Conversion Date
104895 , p_source_19 IN DATE
104896 --Currency Conversion Rate
104897 , p_source_20 IN NUMBER
104898 --Currency Conversion Type
104899 , p_source_21 IN VARCHAR2
104900 --Accounted Amount
104901 , p_source_22 IN NUMBER
104902 --Accounting Line Type
104903 , p_source_24 IN NUMBER
104904 )
104905 IS
104906
104907 l_component_type VARCHAR2(80);
104908 l_component_code VARCHAR2(30);
104909 l_component_type_code VARCHAR2(1);
104910 l_component_appl_id INTEGER;
104911 l_amb_context_code VARCHAR2(30);
104912 l_entity_code VARCHAR2(30);
104913 l_event_class_code VARCHAR2(30);
104914 l_ae_header_id NUMBER;
104915 l_event_type_code VARCHAR2(30);
104916 l_line_definition_code VARCHAR2(30);
104917 l_line_definition_owner_code VARCHAR2(1);
104918 --
104919 -- adr variables
104920 l_segment VARCHAR2(30);
104921 l_ccid NUMBER;
104922 l_adr_transaction_coa_id NUMBER;
104923 l_adr_accounting_coa_id NUMBER;
104924 l_adr_flexfield_segment_code VARCHAR2(30);
104925 l_adr_flex_value_set_id NUMBER;
104926 l_adr_value_type_code VARCHAR2(30);
104927 l_adr_value_combination_id NUMBER;
104928 l_adr_value_segment_code VARCHAR2(30);
104929
104930 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
104931 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
104932 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
104933 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
104934
104935 -- 4262811 Variables ------------------------------------------------------------------------------------------
104936 l_entered_amt_idx NUMBER;
104937 l_accted_amt_idx NUMBER;
104938 l_acc_rev_flag VARCHAR2(1);
104939 l_accrual_line_num NUMBER;
104940 l_tmp_amt NUMBER;
104941 l_acc_rev_natural_side_code VARCHAR2(1);
104942
104943 l_num_entries NUMBER;
104944 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
104945 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
104946 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
104947 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
104948 l_recog_line_1 NUMBER;
104949 l_recog_line_2 NUMBER;
104950
104951 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
104952 l_bflow_applied_to_amt NUMBER; -- 5132302
104953 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
104954
104955 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
104956
104957 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
104958 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
104959
104960 ---------------------------------------------------------------------------------------------------------------
104961
104962
104963 --
104964 -- bulk performance
104965 --
104966 l_balance_type_code VARCHAR2(1);
104967 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
104968 l_log_module VARCHAR2(240);
104969
104970 --
104971 -- Upgrade strategy
104972 --
104973 l_actual_upg_option VARCHAR2(1);
104974 l_enc_upg_option VARCHAR2(1);
104975
104976 --
104977 BEGIN
104978 --
104979 IF g_log_enabled THEN
104980 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_191';
104981 END IF;
104982 --
104983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104984
104985 trace
104986 (p_msg => 'BEGIN of AcctLineType_191'
104987 ,p_level => C_LEVEL_PROCEDURE
104988 ,p_module => l_log_module);
104989
104990 END IF;
104991 --
104992 l_component_type := 'AMB_JLT';
104993 l_component_code := 'OFFSET';
104994 l_component_type_code := 'S';
104995 l_component_appl_id := 707;
104996 l_amb_context_code := 'DEFAULT';
104997 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
104998 l_event_class_code := 'LOT';
104999 l_event_type_code := 'LOT_ALL';
105000 l_line_definition_owner_code := 'S';
105001 l_line_definition_code := 'WIP_MATERIAL_LOT';
105002 --
105003 l_balance_type_code := 'A';
105004 l_segment := NULL;
105005 l_ccid := NULL;
105006 l_adr_transaction_coa_id := NULL;
105007 l_adr_accounting_coa_id := NULL;
105008 l_adr_flexfield_segment_code := NULL;
105009 l_adr_flex_value_set_id := NULL;
105010 l_adr_value_type_code := NULL;
105011 l_adr_value_combination_id := NULL;
105012 l_adr_value_segment_code := NULL;
105013
105014 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
105015 l_bflow_class_code := ''; -- 4219869 Business Flow
105016 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
105017 l_budgetary_control_flag := 'N';
105018
105019 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105020 l_bflow_applied_to_amt := NULL; -- 5132302
105021 l_entered_amt_idx := NULL; -- 4262811
105022 l_accted_amt_idx := NULL; -- 4262811
105023 l_acc_rev_flag := NULL; -- 4262811
105024 l_accrual_line_num := NULL; -- 4262811
105025 l_tmp_amt := NULL; -- 4262811
105026 --
105027
105028 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105029 l_balance_type_code <> 'B' THEN
105030 IF NVL(p_source_24,9E125) = 25 OR
105031 NVL(p_source_24,9E125) = 27
105032 THEN
105033
105034 --
105035 XLA_AE_LINES_PKG.SetNewLine;
105036
105037 p_balance_type_code := l_balance_type_code;
105038 -- set the flag so later we will know whether the gain loss line needs to be created
105039
105040 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105041 p_actual_flag :='A';
105042 END IF;
105043
105044 --
105045 -- bulk performance
105046 --
105047 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105048 p_header_num => 0); -- 4262811
105049 --
105050 -- set accounting line options
105051 --
105052 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105053 p_natural_side_code => 'D'
105054 , p_gain_or_loss_flag => 'N'
105055 , p_gl_transfer_mode_code => 'S'
105056 , p_acct_entry_type_code => 'A'
105057 , p_switch_side_flag => 'Y'
105058 , p_merge_duplicate_code => 'N'
105059 );
105060 --
105061 l_acc_rev_natural_side_code := 'C'; -- 4262811
105062 --
105063 --
105064 -- set accounting line type info
105065 --
105066 xla_ae_lines_pkg.SetAcctLineType
105067 (p_component_type => l_component_type
105068 ,p_event_type_code => l_event_type_code
105069 ,p_line_definition_owner_code => l_line_definition_owner_code
105070 ,p_line_definition_code => l_line_definition_code
105071 ,p_accounting_line_code => l_component_code
105072 ,p_accounting_line_type_code => l_component_type_code
105073 ,p_accounting_line_appl_id => l_component_appl_id
105074 ,p_amb_context_code => l_amb_context_code
105075 ,p_entity_code => l_entity_code
105076 ,p_event_class_code => l_event_class_code);
105077 --
105078 -- set accounting class
105079 --
105080 xla_ae_lines_pkg.SetAcctClass(
105081 p_accounting_class_code => 'OFFSET'
105082 , p_ae_header_id => l_ae_header_id
105083 );
105084
105085 --
105086 -- set rounding class
105087 --
105088 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105089 'OFFSET';
105090
105091 --
105092 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105093 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105094 --
105095 -- bulk performance
105096 --
105097 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105098
105099 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105100 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105101
105102 -- 4955764
105103 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105104 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105105
105106 -- 4458381 Public Sector Enh
105107
105108 --
105109 -- set accounting attributes for the line type
105110 --
105111 l_entered_amt_idx := 3;
105112 l_accted_amt_idx := 8;
105113 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105114 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
105115 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
105116 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
105117 l_rec_acct_attrs.array_char_value(2) := p_source_12;
105118 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
105119 l_rec_acct_attrs.array_num_value(3) := p_source_18;
105120 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
105121 l_rec_acct_attrs.array_char_value(4) := p_source_15;
105122 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
105123 l_rec_acct_attrs.array_date_value(5) := p_source_19;
105124 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
105125 l_rec_acct_attrs.array_num_value(6) := p_source_20;
105126 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
105127 l_rec_acct_attrs.array_char_value(7) := p_source_21;
105128 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
105129 l_rec_acct_attrs.array_num_value(8) := p_source_22;
105130
105131 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105132 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105133
105134 ---------------------------------------------------------------------------------------------------------------
105135 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105136 ---------------------------------------------------------------------------------------------------------------
105137 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105138
105139 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105140 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105141
105142 IF xla_accounting_cache_pkg.GetValueChar
105143 (p_source_code => 'LEDGER_CATEGORY_CODE'
105144 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105145 AND l_bflow_method_code = 'PRIOR_ENTRY'
105146 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105147 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105148 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105149 )
105150 THEN
105151 xla_ae_lines_pkg.BflowUpgEntry
105152 (p_business_method_code => l_bflow_method_code
105153 ,p_business_class_code => l_bflow_class_code
105154 ,p_balance_type => l_balance_type_code);
105155 ELSE
105156 NULL;
105157 -- No business flow processing for business flow method of NONE.
105158 END IF;
105159
105160 --
105161 -- call analytical criteria
105162 --
105163
105164 --
105165 -- call description
105166 --
105167 -- No description or it is inherited.
105168 --
105169 -- call ADRs
105170 -- Bug 4922099
105171 --
105172 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105173 (NVL(l_actual_upg_option, 'N') = 'O') OR
105174 (NVL(l_enc_upg_option, 'N') = 'O')
105175 )
105176 THEN
105177 NULL;
105178 --
105179 --
105180
105181 l_ccid := AcctDerRule_4(
105182 p_application_id => p_application_id
105183 , p_ae_header_id => l_ae_header_id
105184 , p_source_4 => p_source_4
105185 , x_transaction_coa_id => l_adr_transaction_coa_id
105186 , x_accounting_coa_id => l_adr_accounting_coa_id
105187 , x_value_type_code => l_adr_value_type_code
105188 , p_side => 'NA'
105189 );
105190
105191 xla_ae_lines_pkg.set_ccid(
105192 p_code_combination_id => l_ccid
105193 , p_value_type_code => l_adr_value_type_code
105194 , p_transaction_coa_id => l_adr_transaction_coa_id
105195 , p_accounting_coa_id => l_adr_accounting_coa_id
105196 , p_adr_code => 'CST_DEFAULT'
105197 , p_adr_type_code => 'S'
105198 , p_component_type => l_component_type
105199 , p_component_code => l_component_code
105200 , p_component_type_code => l_component_type_code
105201 , p_component_appl_id => l_component_appl_id
105202 , p_amb_context_code => l_amb_context_code
105203 , p_side => 'NA'
105204 );
105205
105206
105207 --
105208 --
105209 END IF;
105210 --
105211 -- Bug 4922099
105212 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105213 (NVL(l_enc_upg_option, 'N') = 'O')
105214 ) AND
105215 (l_bflow_method_code = 'PRIOR_ENTRY')
105216 )
105217 THEN
105218 IF
105219 --
105220 1 = 2
105221 --
105222 THEN
105223 xla_accounting_err_pkg.build_message
105224 (p_appli_s_name => 'XLA'
105225 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105226 ,p_token_1 => 'LINE_NUMBER'
105227 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
105228 ,p_token_2 => 'LINE_TYPE_NAME'
105229 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
105230 l_component_type
105231 ,l_component_code
105232 ,l_component_type_code
105233 ,l_component_appl_id
105234 ,l_amb_context_code
105235 ,l_entity_code
105236 ,l_event_class_code
105237 )
105238 ,p_token_3 => 'OWNER'
105239 ,p_value_3 => xla_lookups_pkg.get_meaning(
105240 p_lookup_type => 'XLA_OWNER_TYPE'
105241 ,p_lookup_code => l_component_type_code
105242 )
105243 ,p_token_4 => 'PRODUCT_NAME'
105244 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105245 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105246 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105247 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105248 ,p_ae_header_id => NULL
105249 );
105250
105251 IF (C_LEVEL_ERROR>= g_log_level) THEN
105252 trace
105253 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105254 ,p_level => C_LEVEL_ERROR
105255 ,p_module => l_log_module);
105256 END IF;
105257 END IF;
105258 END IF;
105259 --
105260 --
105261 ------------------------------------------------------------------------------------------------
105262 -- 4219869 Business Flow
105263 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105264 -- Prior Entry. Currently, the following code is always generated.
105265 ------------------------------------------------------------------------------------------------
105266 XLA_AE_LINES_PKG.ValidateCurrentLine;
105267
105268 ------------------------------------------------------------------------------------
105269 -- 4219869 Business Flow
105270 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105271 ------------------------------------------------------------------------------------
105272 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105273
105274 ----------------------------------------------------------------------------------
105275 -- 4219869 Business Flow
105276 -- Update journal entry status -- Need to generate this within IF <condition>
105277 ----------------------------------------------------------------------------------
105278 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105279 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105280 ,p_balance_type_code => l_balance_type_code
105281 );
105282
105283 -------------------------------------------------------------------------------------------
105284 -- 4262811 - Generate the Accrual Reversal lines
105285 -------------------------------------------------------------------------------------------
105286 BEGIN
105287 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105288 (g_array_event(p_event_id).array_value_num('header_index'));
105289 IF l_acc_rev_flag IS NULL THEN
105290 l_acc_rev_flag := 'N';
105291 END IF;
105292 EXCEPTION
105293 WHEN OTHERS THEN
105294 l_acc_rev_flag := 'N';
105295 END;
105296 --
105297 IF (l_acc_rev_flag = 'Y') THEN
105298
105299 -- 4645092 ------------------------------------------------------------------------------
105300 -- To allow MPA report to determine if it should generate report process
105301 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105302 ------------------------------------------------------------------------------------------
105303
105304 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105305 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105306 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
105307 -- call ADRs
105308 -- Bug 4922099
105309 --
105310 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105311 (NVL(l_actual_upg_option, 'N') = 'O') OR
105312 (NVL(l_enc_upg_option, 'N') = 'O')
105313 )
105314 THEN
105315 NULL;
105316 --
105317 --
105318
105319 l_ccid := AcctDerRule_4(
105320 p_application_id => p_application_id
105321 , p_ae_header_id => l_ae_header_id
105322 , p_source_4 => p_source_4
105323 , x_transaction_coa_id => l_adr_transaction_coa_id
105324 , x_accounting_coa_id => l_adr_accounting_coa_id
105325 , x_value_type_code => l_adr_value_type_code
105326 , p_side => 'NA'
105327 );
105328
105329 xla_ae_lines_pkg.set_ccid(
105330 p_code_combination_id => l_ccid
105331 , p_value_type_code => l_adr_value_type_code
105332 , p_transaction_coa_id => l_adr_transaction_coa_id
105333 , p_accounting_coa_id => l_adr_accounting_coa_id
105334 , p_adr_code => 'CST_DEFAULT'
105335 , p_adr_type_code => 'S'
105336 , p_component_type => l_component_type
105337 , p_component_code => l_component_code
105338 , p_component_type_code => l_component_type_code
105339 , p_component_appl_id => l_component_appl_id
105340 , p_amb_context_code => l_amb_context_code
105341 , p_side => 'NA'
105342 );
105343
105344
105345 --
105346 --
105347 END IF;
105348
105349 --
105350 -- Update the line information that should be overwritten
105351 --
105352 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105353 p_header_num => 1);
105354 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
105355
105356 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105357
105358 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
105359 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105360 END IF;
105361
105362 --
105363 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105364 --
105365 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105366 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
105367 ELSE
105368 ---------------------------------------------------------------------------------------------------
105369 -- 4262811a Switch Sign
105370 ---------------------------------------------------------------------------------------------------
105371 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
105372 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105373 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105374 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105375 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105376 -- 5132302
105377 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105378 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105379
105380 END IF;
105381
105382 -- 4955764
105383 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105384 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105385
105386
105387 XLA_AE_LINES_PKG.ValidateCurrentLine;
105388 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105389
105390 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105391 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105392 ,p_balance_type_code => l_balance_type_code);
105393
105394 END IF;
105395
105396 -----------------------------------------------------------------------------------------
105397 -- 4262811 Multiperiod Accounting
105398 -----------------------------------------------------------------------------------------
105399 -- No MPA option is assigned.
105400
105401
105402 END IF;
105403 END IF;
105404 --
105405
105406 --
105407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105408 trace
105409 (p_msg => 'END of AcctLineType_191'
105410 ,p_level => C_LEVEL_PROCEDURE
105411 ,p_module => l_log_module);
105412 END IF;
105413 --
105414 EXCEPTION
105415 WHEN xla_exceptions_pkg.application_exception THEN
105416 RAISE;
105417 WHEN OTHERS THEN
105418 xla_exceptions_pkg.raise_message
105419 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_191');
105420 END AcctLineType_191;
105421 --
105422
105423 ---------------------------------------
105424 --
105425 -- PRIVATE FUNCTION
105426 -- AcctLineType_192
105427 --
105428 ---------------------------------------
105429 PROCEDURE AcctLineType_192 (
105430 p_application_id IN NUMBER
105431 ,p_event_id IN NUMBER
105432 ,p_calculate_acctd_flag IN VARCHAR2
105433 ,p_calculate_g_l_flag IN VARCHAR2
105434 ,p_actual_flag IN OUT VARCHAR2
105435 ,p_balance_type_code OUT VARCHAR2
105436 ,p_gain_or_loss_ref OUT VARCHAR2
105437
105438 --Cost Management Default Account
105439 , p_source_4 IN NUMBER
105440 --Applied to Application ID
105441 , p_source_6 IN NUMBER
105442 --Applied to Distribution Link Type
105443 , p_source_7 IN VARCHAR2
105444 --Applied to Entity Code
105445 , p_source_8 IN VARCHAR2
105446 --Applied To Purchase Document Identifier
105447 , p_source_10 IN NUMBER
105448 --DISTRIBUTION_IDENTIFIER
105449 , p_source_11 IN NUMBER
105450 --Distribution Type
105451 , p_source_12 IN VARCHAR2
105452 , p_source_12_meaning IN VARCHAR2
105453 --PO Budget Account
105454 , p_source_13 IN NUMBER
105455 --Encumbrance Reversal Amount Entered
105456 , p_source_14 IN NUMBER
105457 --Entered Currency Code
105458 , p_source_15 IN VARCHAR2
105459 --Transaction Encumbrance Reversal Amount
105460 , p_source_16 IN NUMBER
105461 --Entered Amount
105462 , p_source_18 IN NUMBER
105463 --Currency Conversion Date
105464 , p_source_19 IN DATE
105465 --Currency Conversion Rate
105466 , p_source_20 IN NUMBER
105467 --Currency Conversion Type
105468 , p_source_21 IN VARCHAR2
105469 --Accounted Amount
105470 , p_source_22 IN NUMBER
105471 --Purchasing Encumbrance Type Identifier
105472 , p_source_23 IN NUMBER
105473 --Accounting Line Type
105474 , p_source_24 IN NUMBER
105475 --Costing Encumbrance Upgrade Option
105476 , p_source_27 IN VARCHAR2
105477 --TXN_PO_DISTRIBUTION_ID
105478 , p_source_28 IN NUMBER
105479 )
105480 IS
105481
105482 l_component_type VARCHAR2(80);
105483 l_component_code VARCHAR2(30);
105484 l_component_type_code VARCHAR2(1);
105485 l_component_appl_id INTEGER;
105486 l_amb_context_code VARCHAR2(30);
105487 l_entity_code VARCHAR2(30);
105488 l_event_class_code VARCHAR2(30);
105489 l_ae_header_id NUMBER;
105490 l_event_type_code VARCHAR2(30);
105491 l_line_definition_code VARCHAR2(30);
105492 l_line_definition_owner_code VARCHAR2(1);
105493 --
105494 -- adr variables
105495 l_segment VARCHAR2(30);
105496 l_ccid NUMBER;
105497 l_adr_transaction_coa_id NUMBER;
105498 l_adr_accounting_coa_id NUMBER;
105499 l_adr_flexfield_segment_code VARCHAR2(30);
105500 l_adr_flex_value_set_id NUMBER;
105501 l_adr_value_type_code VARCHAR2(30);
105502 l_adr_value_combination_id NUMBER;
105503 l_adr_value_segment_code VARCHAR2(30);
105504
105505 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
105506 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
105507 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
105508 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
105509
105510 -- 4262811 Variables ------------------------------------------------------------------------------------------
105511 l_entered_amt_idx NUMBER;
105512 l_accted_amt_idx NUMBER;
105513 l_acc_rev_flag VARCHAR2(1);
105514 l_accrual_line_num NUMBER;
105515 l_tmp_amt NUMBER;
105516 l_acc_rev_natural_side_code VARCHAR2(1);
105517
105518 l_num_entries NUMBER;
105519 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
105520 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
105521 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
105522 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
105523 l_recog_line_1 NUMBER;
105524 l_recog_line_2 NUMBER;
105525
105526 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
105527 l_bflow_applied_to_amt NUMBER; -- 5132302
105528 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
105529
105530 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
105531
105532 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
105533 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
105534
105535 ---------------------------------------------------------------------------------------------------------------
105536
105537
105538 --
105539 -- bulk performance
105540 --
105541 l_balance_type_code VARCHAR2(1);
105542 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
105543 l_log_module VARCHAR2(240);
105544
105545 --
105546 -- Upgrade strategy
105547 --
105548 l_actual_upg_option VARCHAR2(1);
105549 l_enc_upg_option VARCHAR2(1);
105550
105551 --
105552 BEGIN
105553 --
105554 IF g_log_enabled THEN
105555 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_192';
105556 END IF;
105557 --
105558 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105559
105560 trace
105561 (p_msg => 'BEGIN of AcctLineType_192'
105562 ,p_level => C_LEVEL_PROCEDURE
105563 ,p_module => l_log_module);
105564
105565 END IF;
105566 --
105567 l_component_type := 'AMB_JLT';
105568 l_component_code := 'OFFSET';
105569 l_component_type_code := 'S';
105570 l_component_appl_id := 707;
105571 l_amb_context_code := 'DEFAULT';
105572 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
105573 l_event_class_code := 'PURCHASE_ORDER';
105574 l_event_type_code := 'PURCHASE_ORDER_ALL';
105575 l_line_definition_owner_code := 'S';
105576 l_line_definition_code := 'PURCHASE_ORDER';
105577 --
105578 l_balance_type_code := 'A';
105579 l_segment := NULL;
105580 l_ccid := NULL;
105581 l_adr_transaction_coa_id := NULL;
105582 l_adr_accounting_coa_id := NULL;
105583 l_adr_flexfield_segment_code := NULL;
105584 l_adr_flex_value_set_id := NULL;
105585 l_adr_value_type_code := NULL;
105586 l_adr_value_combination_id := NULL;
105587 l_adr_value_segment_code := NULL;
105588
105589 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
105590 l_bflow_class_code := ''; -- 4219869 Business Flow
105591 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
105592 l_budgetary_control_flag := 'N';
105593
105594 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105595 l_bflow_applied_to_amt := NULL; -- 5132302
105596 l_entered_amt_idx := NULL; -- 4262811
105597 l_accted_amt_idx := NULL; -- 4262811
105598 l_acc_rev_flag := NULL; -- 4262811
105599 l_accrual_line_num := NULL; -- 4262811
105600 l_tmp_amt := NULL; -- 4262811
105601 --
105602
105603 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
105604 l_balance_type_code <> 'B' THEN
105605 IF NVL(p_source_24,9E125) = 2
105606 THEN
105607
105608 --
105609 XLA_AE_LINES_PKG.SetNewLine;
105610
105611 p_balance_type_code := l_balance_type_code;
105612 -- set the flag so later we will know whether the gain loss line needs to be created
105613
105614 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
105615 p_actual_flag :='A';
105616 END IF;
105617
105618 --
105619 -- bulk performance
105620 --
105621 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
105622 p_header_num => 0); -- 4262811
105623 --
105624 -- set accounting line options
105625 --
105626 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
105627 p_natural_side_code => 'D'
105628 , p_gain_or_loss_flag => 'N'
105629 , p_gl_transfer_mode_code => 'S'
105630 , p_acct_entry_type_code => 'A'
105631 , p_switch_side_flag => 'Y'
105632 , p_merge_duplicate_code => 'N'
105633 );
105634 --
105635 l_acc_rev_natural_side_code := 'C'; -- 4262811
105636 --
105637 --
105638 -- set accounting line type info
105639 --
105640 xla_ae_lines_pkg.SetAcctLineType
105641 (p_component_type => l_component_type
105642 ,p_event_type_code => l_event_type_code
105643 ,p_line_definition_owner_code => l_line_definition_owner_code
105644 ,p_line_definition_code => l_line_definition_code
105645 ,p_accounting_line_code => l_component_code
105646 ,p_accounting_line_type_code => l_component_type_code
105647 ,p_accounting_line_appl_id => l_component_appl_id
105648 ,p_amb_context_code => l_amb_context_code
105649 ,p_entity_code => l_entity_code
105650 ,p_event_class_code => l_event_class_code);
105651 --
105652 -- set accounting class
105653 --
105654 xla_ae_lines_pkg.SetAcctClass(
105655 p_accounting_class_code => 'OFFSET'
105656 , p_ae_header_id => l_ae_header_id
105657 );
105658
105659 --
105660 -- set rounding class
105661 --
105662 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
105663 'OFFSET';
105664
105665 --
105666 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
105667 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
105668 --
105669 -- bulk performance
105670 --
105671 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
105672
105673 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
105674 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
105675
105676 -- 4955764
105677 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105678 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
105679
105680 -- 4458381 Public Sector Enh
105681
105682 --
105683 -- set accounting attributes for the line type
105684 --
105685 l_entered_amt_idx := 17;
105686 l_accted_amt_idx := 22;
105687 l_bflow_applied_to_amt_idx := NULL; -- 5132302
105688 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
105689 l_rec_acct_attrs.array_num_value(1) := p_source_6;
105690 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
105691 l_rec_acct_attrs.array_char_value(2) := p_source_7;
105692 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
105693 l_rec_acct_attrs.array_char_value(3) := p_source_8;
105694 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
105695 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
105696 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
105697 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
105698 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
105699 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
105700 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
105701 l_rec_acct_attrs.array_char_value(7) := p_source_12;
105702 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
105703 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
105704 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
105705 l_rec_acct_attrs.array_num_value(9) := p_source_14;
105706 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
105707 l_rec_acct_attrs.array_char_value(10) := p_source_15;
105708 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
105709 l_rec_acct_attrs.array_num_value(11) := p_source_16;
105710 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
105711 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
105712 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
105713 l_rec_acct_attrs.array_num_value(13) := p_source_14;
105714 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
105715 l_rec_acct_attrs.array_char_value(14) := p_source_15;
105716 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
105717 l_rec_acct_attrs.array_num_value(15) := p_source_16;
105718 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
105719 l_rec_acct_attrs.array_char_value(16) := p_source_27;
105720 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
105721 l_rec_acct_attrs.array_num_value(17) := p_source_18;
105722 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
105723 l_rec_acct_attrs.array_char_value(18) := p_source_15;
105724 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
105725 l_rec_acct_attrs.array_date_value(19) := p_source_19;
105726 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
105727 l_rec_acct_attrs.array_num_value(20) := p_source_20;
105728 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
105729 l_rec_acct_attrs.array_char_value(21) := p_source_21;
105730 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
105731 l_rec_acct_attrs.array_num_value(22) := p_source_22;
105732 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
105733 l_rec_acct_attrs.array_num_value(23) := p_source_23;
105734 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
105735 l_rec_acct_attrs.array_num_value(24) := p_source_23;
105736
105737 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
105738 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
105739
105740 ---------------------------------------------------------------------------------------------------------------
105741 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
105742 ---------------------------------------------------------------------------------------------------------------
105743 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
105744
105745 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105746 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
105747
105748 IF xla_accounting_cache_pkg.GetValueChar
105749 (p_source_code => 'LEDGER_CATEGORY_CODE'
105750 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
105751 AND l_bflow_method_code = 'PRIOR_ENTRY'
105752 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
105753 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
105754 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
105755 )
105756 THEN
105757 xla_ae_lines_pkg.BflowUpgEntry
105758 (p_business_method_code => l_bflow_method_code
105759 ,p_business_class_code => l_bflow_class_code
105760 ,p_balance_type => l_balance_type_code);
105761 ELSE
105762 NULL;
105763 -- No business flow processing for business flow method of NONE.
105764 END IF;
105765
105766 --
105767 -- call analytical criteria
105768 --
105769
105770 --
105771 -- call description
105772 --
105773 -- No description or it is inherited.
105774 --
105775 -- call ADRs
105776 -- Bug 4922099
105777 --
105778 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105779 (NVL(l_actual_upg_option, 'N') = 'O') OR
105780 (NVL(l_enc_upg_option, 'N') = 'O')
105781 )
105782 THEN
105783 NULL;
105784 --
105785 --
105786
105787 l_ccid := AcctDerRule_4(
105788 p_application_id => p_application_id
105789 , p_ae_header_id => l_ae_header_id
105790 , p_source_4 => p_source_4
105791 , x_transaction_coa_id => l_adr_transaction_coa_id
105792 , x_accounting_coa_id => l_adr_accounting_coa_id
105793 , x_value_type_code => l_adr_value_type_code
105794 , p_side => 'NA'
105795 );
105796
105797 xla_ae_lines_pkg.set_ccid(
105798 p_code_combination_id => l_ccid
105799 , p_value_type_code => l_adr_value_type_code
105800 , p_transaction_coa_id => l_adr_transaction_coa_id
105801 , p_accounting_coa_id => l_adr_accounting_coa_id
105802 , p_adr_code => 'CST_DEFAULT'
105803 , p_adr_type_code => 'S'
105804 , p_component_type => l_component_type
105805 , p_component_code => l_component_code
105806 , p_component_type_code => l_component_type_code
105807 , p_component_appl_id => l_component_appl_id
105808 , p_amb_context_code => l_amb_context_code
105809 , p_side => 'NA'
105810 );
105811
105812
105813 --
105814 --
105815 END IF;
105816 --
105817 -- Bug 4922099
105818 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
105819 (NVL(l_enc_upg_option, 'N') = 'O')
105820 ) AND
105821 (l_bflow_method_code = 'PRIOR_ENTRY')
105822 )
105823 THEN
105824 IF
105825 --
105826 1 = 2
105827 --
105828 THEN
105829 xla_accounting_err_pkg.build_message
105830 (p_appli_s_name => 'XLA'
105831 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105832 ,p_token_1 => 'LINE_NUMBER'
105833 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
105834 ,p_token_2 => 'LINE_TYPE_NAME'
105835 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
105836 l_component_type
105837 ,l_component_code
105838 ,l_component_type_code
105839 ,l_component_appl_id
105840 ,l_amb_context_code
105841 ,l_entity_code
105842 ,l_event_class_code
105843 )
105844 ,p_token_3 => 'OWNER'
105845 ,p_value_3 => xla_lookups_pkg.get_meaning(
105846 p_lookup_type => 'XLA_OWNER_TYPE'
105847 ,p_lookup_code => l_component_type_code
105848 )
105849 ,p_token_4 => 'PRODUCT_NAME'
105850 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
105851 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
105852 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
105853 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
105854 ,p_ae_header_id => NULL
105855 );
105856
105857 IF (C_LEVEL_ERROR>= g_log_level) THEN
105858 trace
105859 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
105860 ,p_level => C_LEVEL_ERROR
105861 ,p_module => l_log_module);
105862 END IF;
105863 END IF;
105864 END IF;
105865 --
105866 --
105867 ------------------------------------------------------------------------------------------------
105868 -- 4219869 Business Flow
105869 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
105870 -- Prior Entry. Currently, the following code is always generated.
105871 ------------------------------------------------------------------------------------------------
105872 XLA_AE_LINES_PKG.ValidateCurrentLine;
105873
105874 ------------------------------------------------------------------------------------
105875 -- 4219869 Business Flow
105876 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
105877 ------------------------------------------------------------------------------------
105878 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105879
105880 ----------------------------------------------------------------------------------
105881 -- 4219869 Business Flow
105882 -- Update journal entry status -- Need to generate this within IF <condition>
105883 ----------------------------------------------------------------------------------
105884 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105885 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
105886 ,p_balance_type_code => l_balance_type_code
105887 );
105888
105889 -------------------------------------------------------------------------------------------
105890 -- 4262811 - Generate the Accrual Reversal lines
105891 -------------------------------------------------------------------------------------------
105892 BEGIN
105893 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
105894 (g_array_event(p_event_id).array_value_num('header_index'));
105895 IF l_acc_rev_flag IS NULL THEN
105896 l_acc_rev_flag := 'N';
105897 END IF;
105898 EXCEPTION
105899 WHEN OTHERS THEN
105900 l_acc_rev_flag := 'N';
105901 END;
105902 --
105903 IF (l_acc_rev_flag = 'Y') THEN
105904
105905 -- 4645092 ------------------------------------------------------------------------------
105906 -- To allow MPA report to determine if it should generate report process
105907 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
105908 ------------------------------------------------------------------------------------------
105909
105910 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
105911 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
105912 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
105913 -- call ADRs
105914 -- Bug 4922099
105915 --
105916 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
105917 (NVL(l_actual_upg_option, 'N') = 'O') OR
105918 (NVL(l_enc_upg_option, 'N') = 'O')
105919 )
105920 THEN
105921 NULL;
105922 --
105923 --
105924
105925 l_ccid := AcctDerRule_4(
105926 p_application_id => p_application_id
105927 , p_ae_header_id => l_ae_header_id
105928 , p_source_4 => p_source_4
105929 , x_transaction_coa_id => l_adr_transaction_coa_id
105930 , x_accounting_coa_id => l_adr_accounting_coa_id
105931 , x_value_type_code => l_adr_value_type_code
105932 , p_side => 'NA'
105933 );
105934
105935 xla_ae_lines_pkg.set_ccid(
105936 p_code_combination_id => l_ccid
105937 , p_value_type_code => l_adr_value_type_code
105938 , p_transaction_coa_id => l_adr_transaction_coa_id
105939 , p_accounting_coa_id => l_adr_accounting_coa_id
105940 , p_adr_code => 'CST_DEFAULT'
105941 , p_adr_type_code => 'S'
105942 , p_component_type => l_component_type
105943 , p_component_code => l_component_code
105944 , p_component_type_code => l_component_type_code
105945 , p_component_appl_id => l_component_appl_id
105946 , p_amb_context_code => l_amb_context_code
105947 , p_side => 'NA'
105948 );
105949
105950
105951 --
105952 --
105953 END IF;
105954
105955 --
105956 -- Update the line information that should be overwritten
105957 --
105958 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
105959 p_header_num => 1);
105960 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
105961
105962 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
105963
105964 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
105965 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
105966 END IF;
105967
105968 --
105969 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
105970 --
105971 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
105972 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
105973 ELSE
105974 ---------------------------------------------------------------------------------------------------
105975 -- 4262811a Switch Sign
105976 ---------------------------------------------------------------------------------------------------
105977 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
105978 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105979 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105980 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
105981 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105982 -- 5132302
105983 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
105984 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
105985
105986 END IF;
105987
105988 -- 4955764
105989 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
105990 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
105991
105992
105993 XLA_AE_LINES_PKG.ValidateCurrentLine;
105994 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
105995
105996 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
105997 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
105998 ,p_balance_type_code => l_balance_type_code);
105999
106000 END IF;
106001
106002 -----------------------------------------------------------------------------------------
106003 -- 4262811 Multiperiod Accounting
106004 -----------------------------------------------------------------------------------------
106005 -- No MPA option is assigned.
106006
106007
106008 END IF;
106009 END IF;
106010 --
106011
106012 --
106013 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106014 trace
106015 (p_msg => 'END of AcctLineType_192'
106016 ,p_level => C_LEVEL_PROCEDURE
106017 ,p_module => l_log_module);
106018 END IF;
106019 --
106020 EXCEPTION
106021 WHEN xla_exceptions_pkg.application_exception THEN
106022 RAISE;
106023 WHEN OTHERS THEN
106024 xla_exceptions_pkg.raise_message
106025 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_192');
106026 END AcctLineType_192;
106027 --
106028
106029 ---------------------------------------
106030 --
106031 -- PRIVATE FUNCTION
106032 -- AcctLineType_193
106033 --
106034 ---------------------------------------
106035 PROCEDURE AcctLineType_193 (
106036 p_application_id IN NUMBER
106037 ,p_event_id IN NUMBER
106038 ,p_calculate_acctd_flag IN VARCHAR2
106039 ,p_calculate_g_l_flag IN VARCHAR2
106040 ,p_actual_flag IN OUT VARCHAR2
106041 ,p_balance_type_code OUT VARCHAR2
106042 ,p_gain_or_loss_ref OUT VARCHAR2
106043
106044 --Cost Management Default Account
106045 , p_source_4 IN NUMBER
106046 --DISTRIBUTION_IDENTIFIER
106047 , p_source_11 IN NUMBER
106048 --Distribution Type
106049 , p_source_12 IN VARCHAR2
106050 , p_source_12_meaning IN VARCHAR2
106051 --Entered Currency Code
106052 , p_source_15 IN VARCHAR2
106053 --Entered Amount
106054 , p_source_18 IN NUMBER
106055 --Currency Conversion Date
106056 , p_source_19 IN DATE
106057 --Currency Conversion Rate
106058 , p_source_20 IN NUMBER
106059 --Currency Conversion Type
106060 , p_source_21 IN VARCHAR2
106061 --Accounted Amount
106062 , p_source_22 IN NUMBER
106063 --Accounting Line Type
106064 , p_source_24 IN NUMBER
106065 )
106066 IS
106067
106068 l_component_type VARCHAR2(80);
106069 l_component_code VARCHAR2(30);
106070 l_component_type_code VARCHAR2(1);
106071 l_component_appl_id INTEGER;
106072 l_amb_context_code VARCHAR2(30);
106073 l_entity_code VARCHAR2(30);
106074 l_event_class_code VARCHAR2(30);
106075 l_ae_header_id NUMBER;
106076 l_event_type_code VARCHAR2(30);
106077 l_line_definition_code VARCHAR2(30);
106078 l_line_definition_owner_code VARCHAR2(1);
106079 --
106080 -- adr variables
106081 l_segment VARCHAR2(30);
106082 l_ccid NUMBER;
106083 l_adr_transaction_coa_id NUMBER;
106084 l_adr_accounting_coa_id NUMBER;
106085 l_adr_flexfield_segment_code VARCHAR2(30);
106086 l_adr_flex_value_set_id NUMBER;
106087 l_adr_value_type_code VARCHAR2(30);
106088 l_adr_value_combination_id NUMBER;
106089 l_adr_value_segment_code VARCHAR2(30);
106090
106091 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
106092 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
106093 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
106094 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
106095
106096 -- 4262811 Variables ------------------------------------------------------------------------------------------
106097 l_entered_amt_idx NUMBER;
106098 l_accted_amt_idx NUMBER;
106099 l_acc_rev_flag VARCHAR2(1);
106100 l_accrual_line_num NUMBER;
106101 l_tmp_amt NUMBER;
106102 l_acc_rev_natural_side_code VARCHAR2(1);
106103
106104 l_num_entries NUMBER;
106105 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
106106 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
106107 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
106108 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
106109 l_recog_line_1 NUMBER;
106110 l_recog_line_2 NUMBER;
106111
106112 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
106113 l_bflow_applied_to_amt NUMBER; -- 5132302
106114 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
106115
106116 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106117
106118 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
106119 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
106120
106121 ---------------------------------------------------------------------------------------------------------------
106122
106123
106124 --
106125 -- bulk performance
106126 --
106127 l_balance_type_code VARCHAR2(1);
106128 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
106129 l_log_module VARCHAR2(240);
106130
106131 --
106132 -- Upgrade strategy
106133 --
106134 l_actual_upg_option VARCHAR2(1);
106135 l_enc_upg_option VARCHAR2(1);
106136
106137 --
106138 BEGIN
106139 --
106140 IF g_log_enabled THEN
106141 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_193';
106142 END IF;
106143 --
106144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106145
106146 trace
106147 (p_msg => 'BEGIN of AcctLineType_193'
106148 ,p_level => C_LEVEL_PROCEDURE
106149 ,p_module => l_log_module);
106150
106151 END IF;
106152 --
106153 l_component_type := 'AMB_JLT';
106154 l_component_code := 'OFFSET';
106155 l_component_type_code := 'S';
106156 l_component_appl_id := 707;
106157 l_amb_context_code := 'DEFAULT';
106158 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
106159 l_event_class_code := 'USER_DEFINE';
106160 l_event_type_code := 'UDIR_INTERORG_RCPT';
106161 l_line_definition_owner_code := 'S';
106162 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
106163 --
106164 l_balance_type_code := 'A';
106165 l_segment := NULL;
106166 l_ccid := NULL;
106167 l_adr_transaction_coa_id := NULL;
106168 l_adr_accounting_coa_id := NULL;
106169 l_adr_flexfield_segment_code := NULL;
106170 l_adr_flex_value_set_id := NULL;
106171 l_adr_value_type_code := NULL;
106172 l_adr_value_combination_id := NULL;
106173 l_adr_value_segment_code := NULL;
106174
106175 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
106176 l_bflow_class_code := ''; -- 4219869 Business Flow
106177 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
106178 l_budgetary_control_flag := 'N';
106179
106180 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106181 l_bflow_applied_to_amt := NULL; -- 5132302
106182 l_entered_amt_idx := NULL; -- 4262811
106183 l_accted_amt_idx := NULL; -- 4262811
106184 l_acc_rev_flag := NULL; -- 4262811
106185 l_accrual_line_num := NULL; -- 4262811
106186 l_tmp_amt := NULL; -- 4262811
106187 --
106188
106189 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106190 l_balance_type_code <> 'B' THEN
106191 IF NVL(p_source_24,9E125) = 2
106192 THEN
106193
106194 --
106195 XLA_AE_LINES_PKG.SetNewLine;
106196
106197 p_balance_type_code := l_balance_type_code;
106198 -- set the flag so later we will know whether the gain loss line needs to be created
106199
106200 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106201 p_actual_flag :='A';
106202 END IF;
106203
106204 --
106205 -- bulk performance
106206 --
106207 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106208 p_header_num => 0); -- 4262811
106209 --
106210 -- set accounting line options
106211 --
106212 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106213 p_natural_side_code => 'D'
106214 , p_gain_or_loss_flag => 'N'
106215 , p_gl_transfer_mode_code => 'S'
106216 , p_acct_entry_type_code => 'A'
106217 , p_switch_side_flag => 'Y'
106218 , p_merge_duplicate_code => 'N'
106219 );
106220 --
106221 l_acc_rev_natural_side_code := 'C'; -- 4262811
106222 --
106223 --
106224 -- set accounting line type info
106225 --
106226 xla_ae_lines_pkg.SetAcctLineType
106227 (p_component_type => l_component_type
106228 ,p_event_type_code => l_event_type_code
106229 ,p_line_definition_owner_code => l_line_definition_owner_code
106230 ,p_line_definition_code => l_line_definition_code
106231 ,p_accounting_line_code => l_component_code
106232 ,p_accounting_line_type_code => l_component_type_code
106233 ,p_accounting_line_appl_id => l_component_appl_id
106234 ,p_amb_context_code => l_amb_context_code
106235 ,p_entity_code => l_entity_code
106236 ,p_event_class_code => l_event_class_code);
106237 --
106238 -- set accounting class
106239 --
106240 xla_ae_lines_pkg.SetAcctClass(
106241 p_accounting_class_code => 'OFFSET'
106242 , p_ae_header_id => l_ae_header_id
106243 );
106244
106245 --
106246 -- set rounding class
106247 --
106248 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106249 'OFFSET';
106250
106251 --
106252 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106253 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106254 --
106255 -- bulk performance
106256 --
106257 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106258
106259 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106260 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106261
106262 -- 4955764
106263 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106264 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106265
106266 -- 4458381 Public Sector Enh
106267
106268 --
106269 -- set accounting attributes for the line type
106270 --
106271 l_entered_amt_idx := 3;
106272 l_accted_amt_idx := 8;
106273 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106274 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106275 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
106276 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106277 l_rec_acct_attrs.array_char_value(2) := p_source_12;
106278 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106279 l_rec_acct_attrs.array_num_value(3) := p_source_18;
106280 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106281 l_rec_acct_attrs.array_char_value(4) := p_source_15;
106282 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106283 l_rec_acct_attrs.array_date_value(5) := p_source_19;
106284 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106285 l_rec_acct_attrs.array_num_value(6) := p_source_20;
106286 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106287 l_rec_acct_attrs.array_char_value(7) := p_source_21;
106288 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106289 l_rec_acct_attrs.array_num_value(8) := p_source_22;
106290
106291 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106292 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106293
106294 ---------------------------------------------------------------------------------------------------------------
106295 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106296 ---------------------------------------------------------------------------------------------------------------
106297 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106298
106299 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106300 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106301
106302 IF xla_accounting_cache_pkg.GetValueChar
106303 (p_source_code => 'LEDGER_CATEGORY_CODE'
106304 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106305 AND l_bflow_method_code = 'PRIOR_ENTRY'
106306 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106307 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106308 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106309 )
106310 THEN
106311 xla_ae_lines_pkg.BflowUpgEntry
106312 (p_business_method_code => l_bflow_method_code
106313 ,p_business_class_code => l_bflow_class_code
106314 ,p_balance_type => l_balance_type_code);
106315 ELSE
106316 NULL;
106317 -- No business flow processing for business flow method of NONE.
106318 END IF;
106319
106320 --
106321 -- call analytical criteria
106322 --
106323
106324 --
106325 -- call description
106326 --
106327 -- No description or it is inherited.
106328 --
106329 -- call ADRs
106330 -- Bug 4922099
106331 --
106332 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106333 (NVL(l_actual_upg_option, 'N') = 'O') OR
106334 (NVL(l_enc_upg_option, 'N') = 'O')
106335 )
106336 THEN
106337 NULL;
106338 --
106339 --
106340
106341 l_ccid := AcctDerRule_4(
106342 p_application_id => p_application_id
106343 , p_ae_header_id => l_ae_header_id
106344 , p_source_4 => p_source_4
106345 , x_transaction_coa_id => l_adr_transaction_coa_id
106346 , x_accounting_coa_id => l_adr_accounting_coa_id
106347 , x_value_type_code => l_adr_value_type_code
106348 , p_side => 'NA'
106349 );
106350
106351 xla_ae_lines_pkg.set_ccid(
106352 p_code_combination_id => l_ccid
106353 , p_value_type_code => l_adr_value_type_code
106354 , p_transaction_coa_id => l_adr_transaction_coa_id
106355 , p_accounting_coa_id => l_adr_accounting_coa_id
106356 , p_adr_code => 'CST_DEFAULT'
106357 , p_adr_type_code => 'S'
106358 , p_component_type => l_component_type
106359 , p_component_code => l_component_code
106360 , p_component_type_code => l_component_type_code
106361 , p_component_appl_id => l_component_appl_id
106362 , p_amb_context_code => l_amb_context_code
106363 , p_side => 'NA'
106364 );
106365
106366
106367 --
106368 --
106369 END IF;
106370 --
106371 -- Bug 4922099
106372 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106373 (NVL(l_enc_upg_option, 'N') = 'O')
106374 ) AND
106375 (l_bflow_method_code = 'PRIOR_ENTRY')
106376 )
106377 THEN
106378 IF
106379 --
106380 1 = 2
106381 --
106382 THEN
106383 xla_accounting_err_pkg.build_message
106384 (p_appli_s_name => 'XLA'
106385 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106386 ,p_token_1 => 'LINE_NUMBER'
106387 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
106388 ,p_token_2 => 'LINE_TYPE_NAME'
106389 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
106390 l_component_type
106391 ,l_component_code
106392 ,l_component_type_code
106393 ,l_component_appl_id
106394 ,l_amb_context_code
106395 ,l_entity_code
106396 ,l_event_class_code
106397 )
106398 ,p_token_3 => 'OWNER'
106399 ,p_value_3 => xla_lookups_pkg.get_meaning(
106400 p_lookup_type => 'XLA_OWNER_TYPE'
106401 ,p_lookup_code => l_component_type_code
106402 )
106403 ,p_token_4 => 'PRODUCT_NAME'
106404 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106405 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106406 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106407 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106408 ,p_ae_header_id => NULL
106409 );
106410
106411 IF (C_LEVEL_ERROR>= g_log_level) THEN
106412 trace
106413 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106414 ,p_level => C_LEVEL_ERROR
106415 ,p_module => l_log_module);
106416 END IF;
106417 END IF;
106418 END IF;
106419 --
106420 --
106421 ------------------------------------------------------------------------------------------------
106422 -- 4219869 Business Flow
106423 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106424 -- Prior Entry. Currently, the following code is always generated.
106425 ------------------------------------------------------------------------------------------------
106426 XLA_AE_LINES_PKG.ValidateCurrentLine;
106427
106428 ------------------------------------------------------------------------------------
106429 -- 4219869 Business Flow
106430 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106431 ------------------------------------------------------------------------------------
106432 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106433
106434 ----------------------------------------------------------------------------------
106435 -- 4219869 Business Flow
106436 -- Update journal entry status -- Need to generate this within IF <condition>
106437 ----------------------------------------------------------------------------------
106438 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106439 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106440 ,p_balance_type_code => l_balance_type_code
106441 );
106442
106443 -------------------------------------------------------------------------------------------
106444 -- 4262811 - Generate the Accrual Reversal lines
106445 -------------------------------------------------------------------------------------------
106446 BEGIN
106447 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
106448 (g_array_event(p_event_id).array_value_num('header_index'));
106449 IF l_acc_rev_flag IS NULL THEN
106450 l_acc_rev_flag := 'N';
106451 END IF;
106452 EXCEPTION
106453 WHEN OTHERS THEN
106454 l_acc_rev_flag := 'N';
106455 END;
106456 --
106457 IF (l_acc_rev_flag = 'Y') THEN
106458
106459 -- 4645092 ------------------------------------------------------------------------------
106460 -- To allow MPA report to determine if it should generate report process
106461 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
106462 ------------------------------------------------------------------------------------------
106463
106464 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
106465 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
106466 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
106467 -- call ADRs
106468 -- Bug 4922099
106469 --
106470 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106471 (NVL(l_actual_upg_option, 'N') = 'O') OR
106472 (NVL(l_enc_upg_option, 'N') = 'O')
106473 )
106474 THEN
106475 NULL;
106476 --
106477 --
106478
106479 l_ccid := AcctDerRule_4(
106480 p_application_id => p_application_id
106481 , p_ae_header_id => l_ae_header_id
106482 , p_source_4 => p_source_4
106483 , x_transaction_coa_id => l_adr_transaction_coa_id
106484 , x_accounting_coa_id => l_adr_accounting_coa_id
106485 , x_value_type_code => l_adr_value_type_code
106486 , p_side => 'NA'
106487 );
106488
106489 xla_ae_lines_pkg.set_ccid(
106490 p_code_combination_id => l_ccid
106491 , p_value_type_code => l_adr_value_type_code
106492 , p_transaction_coa_id => l_adr_transaction_coa_id
106493 , p_accounting_coa_id => l_adr_accounting_coa_id
106494 , p_adr_code => 'CST_DEFAULT'
106495 , p_adr_type_code => 'S'
106496 , p_component_type => l_component_type
106497 , p_component_code => l_component_code
106498 , p_component_type_code => l_component_type_code
106499 , p_component_appl_id => l_component_appl_id
106500 , p_amb_context_code => l_amb_context_code
106501 , p_side => 'NA'
106502 );
106503
106504
106505 --
106506 --
106507 END IF;
106508
106509 --
106510 -- Update the line information that should be overwritten
106511 --
106512 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
106513 p_header_num => 1);
106514 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
106515
106516 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
106517
106518 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
106519 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
106520 END IF;
106521
106522 --
106523 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
106524 --
106525 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
106526 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
106527 ELSE
106528 ---------------------------------------------------------------------------------------------------
106529 -- 4262811a Switch Sign
106530 ---------------------------------------------------------------------------------------------------
106531 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
106532 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106533 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106534 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
106535 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106536 -- 5132302
106537 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
106538 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
106539
106540 END IF;
106541
106542 -- 4955764
106543 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106544 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
106545
106546
106547 XLA_AE_LINES_PKG.ValidateCurrentLine;
106548 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106549
106550 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106551 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
106552 ,p_balance_type_code => l_balance_type_code);
106553
106554 END IF;
106555
106556 -----------------------------------------------------------------------------------------
106557 -- 4262811 Multiperiod Accounting
106558 -----------------------------------------------------------------------------------------
106559 -- No MPA option is assigned.
106560
106561
106562 END IF;
106563 END IF;
106564 --
106565
106566 --
106567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106568 trace
106569 (p_msg => 'END of AcctLineType_193'
106570 ,p_level => C_LEVEL_PROCEDURE
106571 ,p_module => l_log_module);
106572 END IF;
106573 --
106574 EXCEPTION
106575 WHEN xla_exceptions_pkg.application_exception THEN
106576 RAISE;
106577 WHEN OTHERS THEN
106578 xla_exceptions_pkg.raise_message
106579 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_193');
106580 END AcctLineType_193;
106581 --
106582
106583 ---------------------------------------
106584 --
106585 -- PRIVATE FUNCTION
106586 -- AcctLineType_194
106587 --
106588 ---------------------------------------
106589 PROCEDURE AcctLineType_194 (
106590 p_application_id IN NUMBER
106591 ,p_event_id IN NUMBER
106592 ,p_calculate_acctd_flag IN VARCHAR2
106593 ,p_calculate_g_l_flag IN VARCHAR2
106594 ,p_actual_flag IN OUT VARCHAR2
106595 ,p_balance_type_code OUT VARCHAR2
106596 ,p_gain_or_loss_ref OUT VARCHAR2
106597
106598 --Cost Management Default Account
106599 , p_source_4 IN NUMBER
106600 --DISTRIBUTION_IDENTIFIER
106601 , p_source_11 IN NUMBER
106602 --Distribution Type
106603 , p_source_12 IN VARCHAR2
106604 , p_source_12_meaning IN VARCHAR2
106605 --Entered Currency Code
106606 , p_source_15 IN VARCHAR2
106607 --Entered Amount
106608 , p_source_18 IN NUMBER
106609 --Currency Conversion Date
106610 , p_source_19 IN DATE
106611 --Currency Conversion Rate
106612 , p_source_20 IN NUMBER
106613 --Currency Conversion Type
106614 , p_source_21 IN VARCHAR2
106615 --Accounted Amount
106616 , p_source_22 IN NUMBER
106617 --Accounting Line Type
106618 , p_source_24 IN NUMBER
106619 )
106620 IS
106621
106622 l_component_type VARCHAR2(80);
106623 l_component_code VARCHAR2(30);
106624 l_component_type_code VARCHAR2(1);
106625 l_component_appl_id INTEGER;
106626 l_amb_context_code VARCHAR2(30);
106627 l_entity_code VARCHAR2(30);
106628 l_event_class_code VARCHAR2(30);
106629 l_ae_header_id NUMBER;
106630 l_event_type_code VARCHAR2(30);
106631 l_line_definition_code VARCHAR2(30);
106632 l_line_definition_owner_code VARCHAR2(1);
106633 --
106634 -- adr variables
106635 l_segment VARCHAR2(30);
106636 l_ccid NUMBER;
106637 l_adr_transaction_coa_id NUMBER;
106638 l_adr_accounting_coa_id NUMBER;
106639 l_adr_flexfield_segment_code VARCHAR2(30);
106640 l_adr_flex_value_set_id NUMBER;
106641 l_adr_value_type_code VARCHAR2(30);
106642 l_adr_value_combination_id NUMBER;
106643 l_adr_value_segment_code VARCHAR2(30);
106644
106645 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
106646 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
106647 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
106648 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
106649
106650 -- 4262811 Variables ------------------------------------------------------------------------------------------
106651 l_entered_amt_idx NUMBER;
106652 l_accted_amt_idx NUMBER;
106653 l_acc_rev_flag VARCHAR2(1);
106654 l_accrual_line_num NUMBER;
106655 l_tmp_amt NUMBER;
106656 l_acc_rev_natural_side_code VARCHAR2(1);
106657
106658 l_num_entries NUMBER;
106659 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
106660 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
106661 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
106662 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
106663 l_recog_line_1 NUMBER;
106664 l_recog_line_2 NUMBER;
106665
106666 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
106667 l_bflow_applied_to_amt NUMBER; -- 5132302
106668 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
106669
106670 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
106671
106672 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
106673 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
106674
106675 ---------------------------------------------------------------------------------------------------------------
106676
106677
106678 --
106679 -- bulk performance
106680 --
106681 l_balance_type_code VARCHAR2(1);
106682 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
106683 l_log_module VARCHAR2(240);
106684
106685 --
106686 -- Upgrade strategy
106687 --
106688 l_actual_upg_option VARCHAR2(1);
106689 l_enc_upg_option VARCHAR2(1);
106690
106691 --
106692 BEGIN
106693 --
106694 IF g_log_enabled THEN
106695 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_194';
106696 END IF;
106697 --
106698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106699
106700 trace
106701 (p_msg => 'BEGIN of AcctLineType_194'
106702 ,p_level => C_LEVEL_PROCEDURE
106703 ,p_module => l_log_module);
106704
106705 END IF;
106706 --
106707 l_component_type := 'AMB_JLT';
106708 l_component_code := 'OFFSET';
106709 l_component_type_code := 'S';
106710 l_component_appl_id := 707;
106711 l_amb_context_code := 'DEFAULT';
106712 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
106713 l_event_class_code := 'USER_DEFINE';
106714 l_event_type_code := 'UDIR_INTERORG_SHIP';
106715 l_line_definition_owner_code := 'S';
106716 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
106717 --
106718 l_balance_type_code := 'A';
106719 l_segment := NULL;
106720 l_ccid := NULL;
106721 l_adr_transaction_coa_id := NULL;
106722 l_adr_accounting_coa_id := NULL;
106723 l_adr_flexfield_segment_code := NULL;
106724 l_adr_flex_value_set_id := NULL;
106725 l_adr_value_type_code := NULL;
106726 l_adr_value_combination_id := NULL;
106727 l_adr_value_segment_code := NULL;
106728
106729 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
106730 l_bflow_class_code := ''; -- 4219869 Business Flow
106731 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
106732 l_budgetary_control_flag := 'N';
106733
106734 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106735 l_bflow_applied_to_amt := NULL; -- 5132302
106736 l_entered_amt_idx := NULL; -- 4262811
106737 l_accted_amt_idx := NULL; -- 4262811
106738 l_acc_rev_flag := NULL; -- 4262811
106739 l_accrual_line_num := NULL; -- 4262811
106740 l_tmp_amt := NULL; -- 4262811
106741 --
106742
106743 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
106744 l_balance_type_code <> 'B' THEN
106745 IF NVL(p_source_24,9E125) = 2
106746 THEN
106747
106748 --
106749 XLA_AE_LINES_PKG.SetNewLine;
106750
106751 p_balance_type_code := l_balance_type_code;
106752 -- set the flag so later we will know whether the gain loss line needs to be created
106753
106754 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
106755 p_actual_flag :='A';
106756 END IF;
106757
106758 --
106759 -- bulk performance
106760 --
106761 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
106762 p_header_num => 0); -- 4262811
106763 --
106764 -- set accounting line options
106765 --
106766 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
106767 p_natural_side_code => 'D'
106768 , p_gain_or_loss_flag => 'N'
106769 , p_gl_transfer_mode_code => 'S'
106770 , p_acct_entry_type_code => 'A'
106771 , p_switch_side_flag => 'Y'
106772 , p_merge_duplicate_code => 'N'
106773 );
106774 --
106775 l_acc_rev_natural_side_code := 'C'; -- 4262811
106776 --
106777 --
106778 -- set accounting line type info
106779 --
106780 xla_ae_lines_pkg.SetAcctLineType
106781 (p_component_type => l_component_type
106782 ,p_event_type_code => l_event_type_code
106783 ,p_line_definition_owner_code => l_line_definition_owner_code
106784 ,p_line_definition_code => l_line_definition_code
106785 ,p_accounting_line_code => l_component_code
106786 ,p_accounting_line_type_code => l_component_type_code
106787 ,p_accounting_line_appl_id => l_component_appl_id
106788 ,p_amb_context_code => l_amb_context_code
106789 ,p_entity_code => l_entity_code
106790 ,p_event_class_code => l_event_class_code);
106791 --
106792 -- set accounting class
106793 --
106794 xla_ae_lines_pkg.SetAcctClass(
106795 p_accounting_class_code => 'OFFSET'
106796 , p_ae_header_id => l_ae_header_id
106797 );
106798
106799 --
106800 -- set rounding class
106801 --
106802 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
106803 'OFFSET';
106804
106805 --
106806 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
106807 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
106808 --
106809 -- bulk performance
106810 --
106811 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
106812
106813 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
106814 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
106815
106816 -- 4955764
106817 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
106818 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
106819
106820 -- 4458381 Public Sector Enh
106821
106822 --
106823 -- set accounting attributes for the line type
106824 --
106825 l_entered_amt_idx := 3;
106826 l_accted_amt_idx := 8;
106827 l_bflow_applied_to_amt_idx := NULL; -- 5132302
106828 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
106829 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
106830 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
106831 l_rec_acct_attrs.array_char_value(2) := p_source_12;
106832 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
106833 l_rec_acct_attrs.array_num_value(3) := p_source_18;
106834 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
106835 l_rec_acct_attrs.array_char_value(4) := p_source_15;
106836 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
106837 l_rec_acct_attrs.array_date_value(5) := p_source_19;
106838 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
106839 l_rec_acct_attrs.array_num_value(6) := p_source_20;
106840 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
106841 l_rec_acct_attrs.array_char_value(7) := p_source_21;
106842 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
106843 l_rec_acct_attrs.array_num_value(8) := p_source_22;
106844
106845 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
106846 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
106847
106848 ---------------------------------------------------------------------------------------------------------------
106849 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
106850 ---------------------------------------------------------------------------------------------------------------
106851 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
106852
106853 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106854 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
106855
106856 IF xla_accounting_cache_pkg.GetValueChar
106857 (p_source_code => 'LEDGER_CATEGORY_CODE'
106858 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
106859 AND l_bflow_method_code = 'PRIOR_ENTRY'
106860 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
106861 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
106862 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
106863 )
106864 THEN
106865 xla_ae_lines_pkg.BflowUpgEntry
106866 (p_business_method_code => l_bflow_method_code
106867 ,p_business_class_code => l_bflow_class_code
106868 ,p_balance_type => l_balance_type_code);
106869 ELSE
106870 NULL;
106871 -- No business flow processing for business flow method of NONE.
106872 END IF;
106873
106874 --
106875 -- call analytical criteria
106876 --
106877
106878 --
106879 -- call description
106880 --
106881 -- No description or it is inherited.
106882 --
106883 -- call ADRs
106884 -- Bug 4922099
106885 --
106886 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
106887 (NVL(l_actual_upg_option, 'N') = 'O') OR
106888 (NVL(l_enc_upg_option, 'N') = 'O')
106889 )
106890 THEN
106891 NULL;
106892 --
106893 --
106894
106895 l_ccid := AcctDerRule_4(
106896 p_application_id => p_application_id
106897 , p_ae_header_id => l_ae_header_id
106898 , p_source_4 => p_source_4
106899 , x_transaction_coa_id => l_adr_transaction_coa_id
106900 , x_accounting_coa_id => l_adr_accounting_coa_id
106901 , x_value_type_code => l_adr_value_type_code
106902 , p_side => 'NA'
106903 );
106904
106905 xla_ae_lines_pkg.set_ccid(
106906 p_code_combination_id => l_ccid
106907 , p_value_type_code => l_adr_value_type_code
106908 , p_transaction_coa_id => l_adr_transaction_coa_id
106909 , p_accounting_coa_id => l_adr_accounting_coa_id
106910 , p_adr_code => 'CST_DEFAULT'
106911 , p_adr_type_code => 'S'
106912 , p_component_type => l_component_type
106913 , p_component_code => l_component_code
106914 , p_component_type_code => l_component_type_code
106915 , p_component_appl_id => l_component_appl_id
106916 , p_amb_context_code => l_amb_context_code
106917 , p_side => 'NA'
106918 );
106919
106920
106921 --
106922 --
106923 END IF;
106924 --
106925 -- Bug 4922099
106926 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
106927 (NVL(l_enc_upg_option, 'N') = 'O')
106928 ) AND
106929 (l_bflow_method_code = 'PRIOR_ENTRY')
106930 )
106931 THEN
106932 IF
106933 --
106934 1 = 2
106935 --
106936 THEN
106937 xla_accounting_err_pkg.build_message
106938 (p_appli_s_name => 'XLA'
106939 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106940 ,p_token_1 => 'LINE_NUMBER'
106941 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
106942 ,p_token_2 => 'LINE_TYPE_NAME'
106943 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
106944 l_component_type
106945 ,l_component_code
106946 ,l_component_type_code
106947 ,l_component_appl_id
106948 ,l_amb_context_code
106949 ,l_entity_code
106950 ,l_event_class_code
106951 )
106952 ,p_token_3 => 'OWNER'
106953 ,p_value_3 => xla_lookups_pkg.get_meaning(
106954 p_lookup_type => 'XLA_OWNER_TYPE'
106955 ,p_lookup_code => l_component_type_code
106956 )
106957 ,p_token_4 => 'PRODUCT_NAME'
106958 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
106959 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
106960 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
106961 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
106962 ,p_ae_header_id => NULL
106963 );
106964
106965 IF (C_LEVEL_ERROR>= g_log_level) THEN
106966 trace
106967 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
106968 ,p_level => C_LEVEL_ERROR
106969 ,p_module => l_log_module);
106970 END IF;
106971 END IF;
106972 END IF;
106973 --
106974 --
106975 ------------------------------------------------------------------------------------------------
106976 -- 4219869 Business Flow
106977 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
106978 -- Prior Entry. Currently, the following code is always generated.
106979 ------------------------------------------------------------------------------------------------
106980 XLA_AE_LINES_PKG.ValidateCurrentLine;
106981
106982 ------------------------------------------------------------------------------------
106983 -- 4219869 Business Flow
106984 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
106985 ------------------------------------------------------------------------------------
106986 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
106987
106988 ----------------------------------------------------------------------------------
106989 -- 4219869 Business Flow
106990 -- Update journal entry status -- Need to generate this within IF <condition>
106991 ----------------------------------------------------------------------------------
106992 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
106993 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
106994 ,p_balance_type_code => l_balance_type_code
106995 );
106996
106997 -------------------------------------------------------------------------------------------
106998 -- 4262811 - Generate the Accrual Reversal lines
106999 -------------------------------------------------------------------------------------------
107000 BEGIN
107001 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
107002 (g_array_event(p_event_id).array_value_num('header_index'));
107003 IF l_acc_rev_flag IS NULL THEN
107004 l_acc_rev_flag := 'N';
107005 END IF;
107006 EXCEPTION
107007 WHEN OTHERS THEN
107008 l_acc_rev_flag := 'N';
107009 END;
107010 --
107011 IF (l_acc_rev_flag = 'Y') THEN
107012
107013 -- 4645092 ------------------------------------------------------------------------------
107014 -- To allow MPA report to determine if it should generate report process
107015 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
107016 ------------------------------------------------------------------------------------------
107017
107018 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
107019 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
107020 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
107021 -- call ADRs
107022 -- Bug 4922099
107023 --
107024 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
107025 (NVL(l_actual_upg_option, 'N') = 'O') OR
107026 (NVL(l_enc_upg_option, 'N') = 'O')
107027 )
107028 THEN
107029 NULL;
107030 --
107031 --
107032
107033 l_ccid := AcctDerRule_4(
107034 p_application_id => p_application_id
107035 , p_ae_header_id => l_ae_header_id
107036 , p_source_4 => p_source_4
107037 , x_transaction_coa_id => l_adr_transaction_coa_id
107038 , x_accounting_coa_id => l_adr_accounting_coa_id
107039 , x_value_type_code => l_adr_value_type_code
107040 , p_side => 'NA'
107041 );
107042
107043 xla_ae_lines_pkg.set_ccid(
107044 p_code_combination_id => l_ccid
107045 , p_value_type_code => l_adr_value_type_code
107046 , p_transaction_coa_id => l_adr_transaction_coa_id
107047 , p_accounting_coa_id => l_adr_accounting_coa_id
107048 , p_adr_code => 'CST_DEFAULT'
107049 , p_adr_type_code => 'S'
107050 , p_component_type => l_component_type
107051 , p_component_code => l_component_code
107052 , p_component_type_code => l_component_type_code
107053 , p_component_appl_id => l_component_appl_id
107054 , p_amb_context_code => l_amb_context_code
107055 , p_side => 'NA'
107056 );
107057
107058
107059 --
107060 --
107061 END IF;
107062
107063 --
107064 -- Update the line information that should be overwritten
107065 --
107066 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
107067 p_header_num => 1);
107068 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
107069
107070 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
107071
107072 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
107073 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
107074 END IF;
107075
107076 --
107077 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
107078 --
107079 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
107080 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
107081 ELSE
107082 ---------------------------------------------------------------------------------------------------
107083 -- 4262811a Switch Sign
107084 ---------------------------------------------------------------------------------------------------
107085 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
107086 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107087 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107088 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
107089 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107090 -- 5132302
107091 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
107092 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
107093
107094 END IF;
107095
107096 -- 4955764
107097 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
107098 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
107099
107100
107101 XLA_AE_LINES_PKG.ValidateCurrentLine;
107102 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
107103
107104 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
107105 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
107106 ,p_balance_type_code => l_balance_type_code);
107107
107108 END IF;
107109
107110 -----------------------------------------------------------------------------------------
107111 -- 4262811 Multiperiod Accounting
107112 -----------------------------------------------------------------------------------------
107113 -- No MPA option is assigned.
107114
107115
107116 END IF;
107117 END IF;
107118 --
107119
107120 --
107121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107122 trace
107123 (p_msg => 'END of AcctLineType_194'
107124 ,p_level => C_LEVEL_PROCEDURE
107125 ,p_module => l_log_module);
107126 END IF;
107127 --
107128 EXCEPTION
107129 WHEN xla_exceptions_pkg.application_exception THEN
107130 RAISE;
107131 WHEN OTHERS THEN
107132 xla_exceptions_pkg.raise_message
107133 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_194');
107134 END AcctLineType_194;
107135 --
107136
107137 ---------------------------------------
107138 --
107139 -- PRIVATE FUNCTION
107140 -- AcctLineType_195
107141 --
107142 ---------------------------------------
107143 PROCEDURE AcctLineType_195 (
107144 p_application_id IN NUMBER
107145 ,p_event_id IN NUMBER
107146 ,p_calculate_acctd_flag IN VARCHAR2
107147 ,p_calculate_g_l_flag IN VARCHAR2
107148 ,p_actual_flag IN OUT VARCHAR2
107149 ,p_balance_type_code OUT VARCHAR2
107150 ,p_gain_or_loss_ref OUT VARCHAR2
107151
107152 --Cost Management Default Account
107153 , p_source_4 IN NUMBER
107154 --DISTRIBUTION_IDENTIFIER
107155 , p_source_11 IN NUMBER
107156 --Distribution Type
107157 , p_source_12 IN VARCHAR2
107158 , p_source_12_meaning IN VARCHAR2
107159 --Entered Currency Code
107160 , p_source_15 IN VARCHAR2
107161 --Entered Amount
107162 , p_source_18 IN NUMBER
107163 --Currency Conversion Date
107164 , p_source_19 IN DATE
107165 --Currency Conversion Rate
107166 , p_source_20 IN NUMBER
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 := 'WIP_ACCOUNTING_EVENTS';
107265 l_event_class_code := 'OSP';
107266 l_event_type_code := 'OSP_ALL';
107267 l_line_definition_owner_code := 'S';
107268 l_line_definition_code := 'OUTSIDE_PROCESSING';
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_num_value(7) := to_char(p_source_20);
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_000005_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_RCPT_SENDER_RCPT';
107820 l_event_type_code := 'FOB_RCPT_SENDER_RCPT_ALL';
107821 l_line_definition_owner_code := 'S';
107822 l_line_definition_code := 'FOB_RCPT_SENDER_RCPT';
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_000005_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 := 'FOB_RCPT_SENDER_SHIP';
108375 l_event_type_code := 'FOB_RCPT_SENDER_SHIP_ALL';
108376 l_line_definition_owner_code := 'S';
108377 l_line_definition_code := 'FOB_RCPT_SEND_SHIP';
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_000005_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 := 'INTRAORG_TXFR';
108929 l_event_type_code := 'INTRAORG_TXFR_ALL';
108930 l_line_definition_owner_code := 'S';
108931 l_line_definition_code := 'INTRAORG_TXFR';
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_000005_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 := 'INT_ORDER_TO_EXP';
109483 l_event_type_code := 'INT_ORDER_TO_EXP_ALL';
109484 l_line_definition_owner_code := 'S';
109485 l_line_definition_code := 'INT_ORDER_TO_EXP';
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_000005_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 := 'MISC_ISSUE_RCPT';
110037 l_event_type_code := 'MISC_ISSUE_RCPT_ALL';
110038 l_line_definition_owner_code := 'S';
110039 l_line_definition_code := 'MISC_ISSUE_RCPT';
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_000005_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 := 'USER_DEFINE';
110591 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
110592 l_line_definition_owner_code := 'S';
110593 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
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_000005_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 --DISTRIBUTION_IDENTIFIER
111032 , p_source_11 IN NUMBER
111033 --Distribution Type
111034 , p_source_12 IN VARCHAR2
111035 , p_source_12_meaning IN VARCHAR2
111036 --Entered Currency Code
111037 , p_source_15 IN VARCHAR2
111038 --Entered Amount
111039 , p_source_18 IN NUMBER
111040 --Currency Conversion Date
111041 , p_source_19 IN DATE
111042 --Currency Conversion Rate
111043 , p_source_20 IN NUMBER
111044 --Currency Conversion Type
111045 , p_source_21 IN VARCHAR2
111046 --Accounted Amount
111047 , p_source_22 IN NUMBER
111048 --Accounting Line Type
111049 , p_source_24 IN NUMBER
111050 )
111051 IS
111052
111053 l_component_type VARCHAR2(80);
111054 l_component_code VARCHAR2(30);
111055 l_component_type_code VARCHAR2(1);
111056 l_component_appl_id INTEGER;
111057 l_amb_context_code VARCHAR2(30);
111058 l_entity_code VARCHAR2(30);
111059 l_event_class_code VARCHAR2(30);
111060 l_ae_header_id NUMBER;
111061 l_event_type_code VARCHAR2(30);
111062 l_line_definition_code VARCHAR2(30);
111063 l_line_definition_owner_code VARCHAR2(1);
111064 --
111065 -- adr variables
111066 l_segment VARCHAR2(30);
111067 l_ccid NUMBER;
111068 l_adr_transaction_coa_id NUMBER;
111069 l_adr_accounting_coa_id NUMBER;
111070 l_adr_flexfield_segment_code VARCHAR2(30);
111071 l_adr_flex_value_set_id NUMBER;
111072 l_adr_value_type_code VARCHAR2(30);
111073 l_adr_value_combination_id NUMBER;
111074 l_adr_value_segment_code VARCHAR2(30);
111075
111076 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
111077 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
111078 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
111079 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
111080
111081 -- 4262811 Variables ------------------------------------------------------------------------------------------
111082 l_entered_amt_idx NUMBER;
111083 l_accted_amt_idx NUMBER;
111084 l_acc_rev_flag VARCHAR2(1);
111085 l_accrual_line_num NUMBER;
111086 l_tmp_amt NUMBER;
111087 l_acc_rev_natural_side_code VARCHAR2(1);
111088
111089 l_num_entries NUMBER;
111090 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
111091 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
111092 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
111093 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
111094 l_recog_line_1 NUMBER;
111095 l_recog_line_2 NUMBER;
111096
111097 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
111098 l_bflow_applied_to_amt NUMBER; -- 5132302
111099 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
111100
111101 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111102
111103 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
111104 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
111105
111106 ---------------------------------------------------------------------------------------------------------------
111107
111108
111109 --
111110 -- bulk performance
111111 --
111112 l_balance_type_code VARCHAR2(1);
111113 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
111114 l_log_module VARCHAR2(240);
111115
111116 --
111117 -- Upgrade strategy
111118 --
111119 l_actual_upg_option VARCHAR2(1);
111120 l_enc_upg_option VARCHAR2(1);
111121
111122 --
111123 BEGIN
111124 --
111125 IF g_log_enabled THEN
111126 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_202';
111127 END IF;
111128 --
111129 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111130
111131 trace
111132 (p_msg => 'BEGIN of AcctLineType_202'
111133 ,p_level => C_LEVEL_PROCEDURE
111134 ,p_module => l_log_module);
111135
111136 END IF;
111137 --
111138 l_component_type := 'AMB_JLT';
111139 l_component_code := 'OFFSET';
111140 l_component_type_code := 'S';
111141 l_component_appl_id := 707;
111142 l_amb_context_code := 'DEFAULT';
111143 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
111144 l_event_class_code := 'USER_DEFINE';
111145 l_event_type_code := 'UMISC_RCPT';
111146 l_line_definition_owner_code := 'S';
111147 l_line_definition_code := 'USER_RCPT';
111148 --
111149 l_balance_type_code := 'A';
111150 l_segment := NULL;
111151 l_ccid := NULL;
111152 l_adr_transaction_coa_id := NULL;
111153 l_adr_accounting_coa_id := NULL;
111154 l_adr_flexfield_segment_code := NULL;
111155 l_adr_flex_value_set_id := NULL;
111156 l_adr_value_type_code := NULL;
111157 l_adr_value_combination_id := NULL;
111158 l_adr_value_segment_code := NULL;
111159
111160 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
111161 l_bflow_class_code := ''; -- 4219869 Business Flow
111162 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
111163 l_budgetary_control_flag := 'N';
111164
111165 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111166 l_bflow_applied_to_amt := NULL; -- 5132302
111167 l_entered_amt_idx := NULL; -- 4262811
111168 l_accted_amt_idx := NULL; -- 4262811
111169 l_acc_rev_flag := NULL; -- 4262811
111170 l_accrual_line_num := NULL; -- 4262811
111171 l_tmp_amt := NULL; -- 4262811
111172 --
111173
111174 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111175 l_balance_type_code <> 'B' THEN
111176 IF NVL(p_source_24,9E125) = 2
111177 THEN
111178
111179 --
111180 XLA_AE_LINES_PKG.SetNewLine;
111181
111182 p_balance_type_code := l_balance_type_code;
111183 -- set the flag so later we will know whether the gain loss line needs to be created
111184
111185 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111186 p_actual_flag :='A';
111187 END IF;
111188
111189 --
111190 -- bulk performance
111191 --
111192 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111193 p_header_num => 0); -- 4262811
111194 --
111195 -- set accounting line options
111196 --
111197 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111198 p_natural_side_code => 'D'
111199 , p_gain_or_loss_flag => 'N'
111200 , p_gl_transfer_mode_code => 'S'
111201 , p_acct_entry_type_code => 'A'
111202 , p_switch_side_flag => 'Y'
111203 , p_merge_duplicate_code => 'N'
111204 );
111205 --
111206 l_acc_rev_natural_side_code := 'C'; -- 4262811
111207 --
111208 --
111209 -- set accounting line type info
111210 --
111211 xla_ae_lines_pkg.SetAcctLineType
111212 (p_component_type => l_component_type
111213 ,p_event_type_code => l_event_type_code
111214 ,p_line_definition_owner_code => l_line_definition_owner_code
111215 ,p_line_definition_code => l_line_definition_code
111216 ,p_accounting_line_code => l_component_code
111217 ,p_accounting_line_type_code => l_component_type_code
111218 ,p_accounting_line_appl_id => l_component_appl_id
111219 ,p_amb_context_code => l_amb_context_code
111220 ,p_entity_code => l_entity_code
111221 ,p_event_class_code => l_event_class_code);
111222 --
111223 -- set accounting class
111224 --
111225 xla_ae_lines_pkg.SetAcctClass(
111226 p_accounting_class_code => 'OFFSET'
111227 , p_ae_header_id => l_ae_header_id
111228 );
111229
111230 --
111231 -- set rounding class
111232 --
111233 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111234 'OFFSET';
111235
111236 --
111237 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111238 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111239 --
111240 -- bulk performance
111241 --
111242 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111243
111244 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111245 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111246
111247 -- 4955764
111248 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111249 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111250
111251 -- 4458381 Public Sector Enh
111252
111253 --
111254 -- set accounting attributes for the line type
111255 --
111256 l_entered_amt_idx := 3;
111257 l_accted_amt_idx := 8;
111258 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111259 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111260 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
111261 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111262 l_rec_acct_attrs.array_char_value(2) := p_source_12;
111263 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111264 l_rec_acct_attrs.array_num_value(3) := p_source_18;
111265 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111266 l_rec_acct_attrs.array_char_value(4) := p_source_15;
111267 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111268 l_rec_acct_attrs.array_date_value(5) := p_source_19;
111269 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111270 l_rec_acct_attrs.array_num_value(6) := p_source_20;
111271 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111272 l_rec_acct_attrs.array_char_value(7) := p_source_21;
111273 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111274 l_rec_acct_attrs.array_num_value(8) := p_source_22;
111275
111276 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111277 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111278
111279 ---------------------------------------------------------------------------------------------------------------
111280 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111281 ---------------------------------------------------------------------------------------------------------------
111282 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111283
111284 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111285 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111286
111287 IF xla_accounting_cache_pkg.GetValueChar
111288 (p_source_code => 'LEDGER_CATEGORY_CODE'
111289 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111290 AND l_bflow_method_code = 'PRIOR_ENTRY'
111291 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111292 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111293 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111294 )
111295 THEN
111296 xla_ae_lines_pkg.BflowUpgEntry
111297 (p_business_method_code => l_bflow_method_code
111298 ,p_business_class_code => l_bflow_class_code
111299 ,p_balance_type => l_balance_type_code);
111300 ELSE
111301 NULL;
111302 -- No business flow processing for business flow method of NONE.
111303 END IF;
111304
111305 --
111306 -- call analytical criteria
111307 --
111308
111309 --
111310 -- call description
111311 --
111312 -- No description or it is inherited.
111313 --
111314 -- call ADRs
111315 -- Bug 4922099
111316 --
111317 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111318 (NVL(l_actual_upg_option, 'N') = 'O') OR
111319 (NVL(l_enc_upg_option, 'N') = 'O')
111320 )
111321 THEN
111322 NULL;
111323 --
111324 --
111325
111326 l_ccid := AcctDerRule_4(
111327 p_application_id => p_application_id
111328 , p_ae_header_id => l_ae_header_id
111329 , p_source_4 => p_source_4
111330 , x_transaction_coa_id => l_adr_transaction_coa_id
111331 , x_accounting_coa_id => l_adr_accounting_coa_id
111332 , x_value_type_code => l_adr_value_type_code
111333 , p_side => 'NA'
111334 );
111335
111336 xla_ae_lines_pkg.set_ccid(
111337 p_code_combination_id => l_ccid
111338 , p_value_type_code => l_adr_value_type_code
111339 , p_transaction_coa_id => l_adr_transaction_coa_id
111340 , p_accounting_coa_id => l_adr_accounting_coa_id
111341 , p_adr_code => 'CST_DEFAULT'
111342 , p_adr_type_code => 'S'
111343 , p_component_type => l_component_type
111344 , p_component_code => l_component_code
111345 , p_component_type_code => l_component_type_code
111346 , p_component_appl_id => l_component_appl_id
111347 , p_amb_context_code => l_amb_context_code
111348 , p_side => 'NA'
111349 );
111350
111351
111352 --
111353 --
111354 END IF;
111355 --
111356 -- Bug 4922099
111357 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111358 (NVL(l_enc_upg_option, 'N') = 'O')
111359 ) AND
111360 (l_bflow_method_code = 'PRIOR_ENTRY')
111361 )
111362 THEN
111363 IF
111364 --
111365 1 = 2
111366 --
111367 THEN
111368 xla_accounting_err_pkg.build_message
111369 (p_appli_s_name => 'XLA'
111370 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111371 ,p_token_1 => 'LINE_NUMBER'
111372 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
111373 ,p_token_2 => 'LINE_TYPE_NAME'
111374 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
111375 l_component_type
111376 ,l_component_code
111377 ,l_component_type_code
111378 ,l_component_appl_id
111379 ,l_amb_context_code
111380 ,l_entity_code
111381 ,l_event_class_code
111382 )
111383 ,p_token_3 => 'OWNER'
111384 ,p_value_3 => xla_lookups_pkg.get_meaning(
111385 p_lookup_type => 'XLA_OWNER_TYPE'
111386 ,p_lookup_code => l_component_type_code
111387 )
111388 ,p_token_4 => 'PRODUCT_NAME'
111389 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111390 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111391 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111392 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111393 ,p_ae_header_id => NULL
111394 );
111395
111396 IF (C_LEVEL_ERROR>= g_log_level) THEN
111397 trace
111398 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111399 ,p_level => C_LEVEL_ERROR
111400 ,p_module => l_log_module);
111401 END IF;
111402 END IF;
111403 END IF;
111404 --
111405 --
111406 ------------------------------------------------------------------------------------------------
111407 -- 4219869 Business Flow
111408 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
111409 -- Prior Entry. Currently, the following code is always generated.
111410 ------------------------------------------------------------------------------------------------
111411 XLA_AE_LINES_PKG.ValidateCurrentLine;
111412
111413 ------------------------------------------------------------------------------------
111414 -- 4219869 Business Flow
111415 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
111416 ------------------------------------------------------------------------------------
111417 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111418
111419 ----------------------------------------------------------------------------------
111420 -- 4219869 Business Flow
111421 -- Update journal entry status -- Need to generate this within IF <condition>
111422 ----------------------------------------------------------------------------------
111423 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111424 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
111425 ,p_balance_type_code => l_balance_type_code
111426 );
111427
111428 -------------------------------------------------------------------------------------------
111429 -- 4262811 - Generate the Accrual Reversal lines
111430 -------------------------------------------------------------------------------------------
111431 BEGIN
111432 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
111433 (g_array_event(p_event_id).array_value_num('header_index'));
111434 IF l_acc_rev_flag IS NULL THEN
111435 l_acc_rev_flag := 'N';
111436 END IF;
111437 EXCEPTION
111438 WHEN OTHERS THEN
111439 l_acc_rev_flag := 'N';
111440 END;
111441 --
111442 IF (l_acc_rev_flag = 'Y') THEN
111443
111444 -- 4645092 ------------------------------------------------------------------------------
111445 -- To allow MPA report to determine if it should generate report process
111446 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
111447 ------------------------------------------------------------------------------------------
111448
111449 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
111450 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
111451 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
111452 -- call ADRs
111453 -- Bug 4922099
111454 --
111455 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111456 (NVL(l_actual_upg_option, 'N') = 'O') OR
111457 (NVL(l_enc_upg_option, 'N') = 'O')
111458 )
111459 THEN
111460 NULL;
111461 --
111462 --
111463
111464 l_ccid := AcctDerRule_4(
111465 p_application_id => p_application_id
111466 , p_ae_header_id => l_ae_header_id
111467 , p_source_4 => p_source_4
111468 , x_transaction_coa_id => l_adr_transaction_coa_id
111469 , x_accounting_coa_id => l_adr_accounting_coa_id
111470 , x_value_type_code => l_adr_value_type_code
111471 , p_side => 'NA'
111472 );
111473
111474 xla_ae_lines_pkg.set_ccid(
111475 p_code_combination_id => l_ccid
111476 , p_value_type_code => l_adr_value_type_code
111477 , p_transaction_coa_id => l_adr_transaction_coa_id
111478 , p_accounting_coa_id => l_adr_accounting_coa_id
111479 , p_adr_code => 'CST_DEFAULT'
111480 , p_adr_type_code => 'S'
111481 , p_component_type => l_component_type
111482 , p_component_code => l_component_code
111483 , p_component_type_code => l_component_type_code
111484 , p_component_appl_id => l_component_appl_id
111485 , p_amb_context_code => l_amb_context_code
111486 , p_side => 'NA'
111487 );
111488
111489
111490 --
111491 --
111492 END IF;
111493
111494 --
111495 -- Update the line information that should be overwritten
111496 --
111497 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
111498 p_header_num => 1);
111499 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
111500
111501 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
111502
111503 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
111504 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
111505 END IF;
111506
111507 --
111508 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
111509 --
111510 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
111511 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
111512 ELSE
111513 ---------------------------------------------------------------------------------------------------
111514 -- 4262811a Switch Sign
111515 ---------------------------------------------------------------------------------------------------
111516 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
111517 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111518 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111519 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
111520 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111521 -- 5132302
111522 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
111523 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
111524
111525 END IF;
111526
111527 -- 4955764
111528 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111529 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
111530
111531
111532 XLA_AE_LINES_PKG.ValidateCurrentLine;
111533 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111534
111535 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111536 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
111537 ,p_balance_type_code => l_balance_type_code);
111538
111539 END IF;
111540
111541 -----------------------------------------------------------------------------------------
111542 -- 4262811 Multiperiod Accounting
111543 -----------------------------------------------------------------------------------------
111544 -- No MPA option is assigned.
111545
111546
111547 END IF;
111548 END IF;
111549 --
111550
111551 --
111552 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111553 trace
111554 (p_msg => 'END of AcctLineType_202'
111555 ,p_level => C_LEVEL_PROCEDURE
111556 ,p_module => l_log_module);
111557 END IF;
111558 --
111559 EXCEPTION
111560 WHEN xla_exceptions_pkg.application_exception THEN
111561 RAISE;
111562 WHEN OTHERS THEN
111563 xla_exceptions_pkg.raise_message
111564 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_202');
111565 END AcctLineType_202;
111566 --
111567
111568 ---------------------------------------
111569 --
111570 -- PRIVATE FUNCTION
111571 -- AcctLineType_203
111572 --
111573 ---------------------------------------
111574 PROCEDURE AcctLineType_203 (
111575 p_application_id IN NUMBER
111576 ,p_event_id IN NUMBER
111577 ,p_calculate_acctd_flag IN VARCHAR2
111578 ,p_calculate_g_l_flag IN VARCHAR2
111579 ,p_actual_flag IN OUT VARCHAR2
111580 ,p_balance_type_code OUT VARCHAR2
111581 ,p_gain_or_loss_ref OUT VARCHAR2
111582
111583 --Cost Management Default Account
111584 , p_source_4 IN NUMBER
111585 --DISTRIBUTION_IDENTIFIER
111586 , p_source_11 IN NUMBER
111587 --Distribution Type
111588 , p_source_12 IN VARCHAR2
111589 , p_source_12_meaning IN VARCHAR2
111590 --Entered Currency Code
111591 , p_source_15 IN VARCHAR2
111592 --Entered Amount
111593 , p_source_18 IN NUMBER
111594 --Currency Conversion Date
111595 , p_source_19 IN DATE
111596 --Currency Conversion Rate
111597 , p_source_20 IN NUMBER
111598 --Currency Conversion Type
111599 , p_source_21 IN VARCHAR2
111600 --Accounted Amount
111601 , p_source_22 IN NUMBER
111602 --Accounting Line Type
111603 , p_source_24 IN NUMBER
111604 )
111605 IS
111606
111607 l_component_type VARCHAR2(80);
111608 l_component_code VARCHAR2(30);
111609 l_component_type_code VARCHAR2(1);
111610 l_component_appl_id INTEGER;
111611 l_amb_context_code VARCHAR2(30);
111612 l_entity_code VARCHAR2(30);
111613 l_event_class_code VARCHAR2(30);
111614 l_ae_header_id NUMBER;
111615 l_event_type_code VARCHAR2(30);
111616 l_line_definition_code VARCHAR2(30);
111617 l_line_definition_owner_code VARCHAR2(1);
111618 --
111619 -- adr variables
111620 l_segment VARCHAR2(30);
111621 l_ccid NUMBER;
111622 l_adr_transaction_coa_id NUMBER;
111623 l_adr_accounting_coa_id NUMBER;
111624 l_adr_flexfield_segment_code VARCHAR2(30);
111625 l_adr_flex_value_set_id NUMBER;
111626 l_adr_value_type_code VARCHAR2(30);
111627 l_adr_value_combination_id NUMBER;
111628 l_adr_value_segment_code VARCHAR2(30);
111629
111630 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
111631 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
111632 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
111633 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
111634
111635 -- 4262811 Variables ------------------------------------------------------------------------------------------
111636 l_entered_amt_idx NUMBER;
111637 l_accted_amt_idx NUMBER;
111638 l_acc_rev_flag VARCHAR2(1);
111639 l_accrual_line_num NUMBER;
111640 l_tmp_amt NUMBER;
111641 l_acc_rev_natural_side_code VARCHAR2(1);
111642
111643 l_num_entries NUMBER;
111644 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
111645 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
111646 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
111647 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
111648 l_recog_line_1 NUMBER;
111649 l_recog_line_2 NUMBER;
111650
111651 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
111652 l_bflow_applied_to_amt NUMBER; -- 5132302
111653 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
111654
111655 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
111656
111657 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
111658 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
111659
111660 ---------------------------------------------------------------------------------------------------------------
111661
111662
111663 --
111664 -- bulk performance
111665 --
111666 l_balance_type_code VARCHAR2(1);
111667 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
111668 l_log_module VARCHAR2(240);
111669
111670 --
111671 -- Upgrade strategy
111672 --
111673 l_actual_upg_option VARCHAR2(1);
111674 l_enc_upg_option VARCHAR2(1);
111675
111676 --
111677 BEGIN
111678 --
111679 IF g_log_enabled THEN
111680 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_203';
111681 END IF;
111682 --
111683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
111684
111685 trace
111686 (p_msg => 'BEGIN of AcctLineType_203'
111687 ,p_level => C_LEVEL_PROCEDURE
111688 ,p_module => l_log_module);
111689
111690 END IF;
111691 --
111692 l_component_type := 'AMB_JLT';
111693 l_component_code := 'OFFSET';
111694 l_component_type_code := 'S';
111695 l_component_appl_id := 707;
111696 l_amb_context_code := 'DEFAULT';
111697 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
111698 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
111699 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
111700 l_line_definition_owner_code := 'S';
111701 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
111702 --
111703 l_balance_type_code := 'A';
111704 l_segment := NULL;
111705 l_ccid := NULL;
111706 l_adr_transaction_coa_id := NULL;
111707 l_adr_accounting_coa_id := NULL;
111708 l_adr_flexfield_segment_code := NULL;
111709 l_adr_flex_value_set_id := NULL;
111710 l_adr_value_type_code := NULL;
111711 l_adr_value_combination_id := NULL;
111712 l_adr_value_segment_code := NULL;
111713
111714 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
111715 l_bflow_class_code := ''; -- 4219869 Business Flow
111716 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
111717 l_budgetary_control_flag := 'N';
111718
111719 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111720 l_bflow_applied_to_amt := NULL; -- 5132302
111721 l_entered_amt_idx := NULL; -- 4262811
111722 l_accted_amt_idx := NULL; -- 4262811
111723 l_acc_rev_flag := NULL; -- 4262811
111724 l_accrual_line_num := NULL; -- 4262811
111725 l_tmp_amt := NULL; -- 4262811
111726 --
111727
111728 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
111729 l_balance_type_code <> 'B' THEN
111730 IF NVL(p_source_24,9E125) = 2 AND
111731 p_source_22 >= 0
111732 THEN
111733
111734 --
111735 XLA_AE_LINES_PKG.SetNewLine;
111736
111737 p_balance_type_code := l_balance_type_code;
111738 -- set the flag so later we will know whether the gain loss line needs to be created
111739
111740 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
111741 p_actual_flag :='A';
111742 END IF;
111743
111744 --
111745 -- bulk performance
111746 --
111747 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
111748 p_header_num => 0); -- 4262811
111749 --
111750 -- set accounting line options
111751 --
111752 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
111753 p_natural_side_code => 'D'
111754 , p_gain_or_loss_flag => 'N'
111755 , p_gl_transfer_mode_code => 'S'
111756 , p_acct_entry_type_code => 'A'
111757 , p_switch_side_flag => 'Y'
111758 , p_merge_duplicate_code => 'N'
111759 );
111760 --
111761 l_acc_rev_natural_side_code := 'C'; -- 4262811
111762 --
111763 --
111764 -- set accounting line type info
111765 --
111766 xla_ae_lines_pkg.SetAcctLineType
111767 (p_component_type => l_component_type
111768 ,p_event_type_code => l_event_type_code
111769 ,p_line_definition_owner_code => l_line_definition_owner_code
111770 ,p_line_definition_code => l_line_definition_code
111771 ,p_accounting_line_code => l_component_code
111772 ,p_accounting_line_type_code => l_component_type_code
111773 ,p_accounting_line_appl_id => l_component_appl_id
111774 ,p_amb_context_code => l_amb_context_code
111775 ,p_entity_code => l_entity_code
111776 ,p_event_class_code => l_event_class_code);
111777 --
111778 -- set accounting class
111779 --
111780 xla_ae_lines_pkg.SetAcctClass(
111781 p_accounting_class_code => 'OFFSET'
111782 , p_ae_header_id => l_ae_header_id
111783 );
111784
111785 --
111786 -- set rounding class
111787 --
111788 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
111789 'OFFSET';
111790
111791 --
111792 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
111793 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
111794 --
111795 -- bulk performance
111796 --
111797 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
111798
111799 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
111800 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
111801
111802 -- 4955764
111803 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
111804 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
111805
111806 -- 4458381 Public Sector Enh
111807
111808 --
111809 -- set accounting attributes for the line type
111810 --
111811 l_entered_amt_idx := 3;
111812 l_accted_amt_idx := 8;
111813 l_bflow_applied_to_amt_idx := NULL; -- 5132302
111814 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
111815 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
111816 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
111817 l_rec_acct_attrs.array_char_value(2) := p_source_12;
111818 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
111819 l_rec_acct_attrs.array_num_value(3) := p_source_18;
111820 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
111821 l_rec_acct_attrs.array_char_value(4) := p_source_15;
111822 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
111823 l_rec_acct_attrs.array_date_value(5) := p_source_19;
111824 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
111825 l_rec_acct_attrs.array_num_value(6) := p_source_20;
111826 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
111827 l_rec_acct_attrs.array_char_value(7) := p_source_21;
111828 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
111829 l_rec_acct_attrs.array_num_value(8) := p_source_22;
111830
111831 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
111832 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
111833
111834 ---------------------------------------------------------------------------------------------------------------
111835 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
111836 ---------------------------------------------------------------------------------------------------------------
111837 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
111838
111839 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111840 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
111841
111842 IF xla_accounting_cache_pkg.GetValueChar
111843 (p_source_code => 'LEDGER_CATEGORY_CODE'
111844 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
111845 AND l_bflow_method_code = 'PRIOR_ENTRY'
111846 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
111847 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
111848 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
111849 )
111850 THEN
111851 xla_ae_lines_pkg.BflowUpgEntry
111852 (p_business_method_code => l_bflow_method_code
111853 ,p_business_class_code => l_bflow_class_code
111854 ,p_balance_type => l_balance_type_code);
111855 ELSE
111856 NULL;
111857 -- No business flow processing for business flow method of NONE.
111858 END IF;
111859
111860 --
111861 -- call analytical criteria
111862 --
111863
111864 --
111865 -- call description
111866 --
111867 -- No description or it is inherited.
111868 --
111869 -- call ADRs
111870 -- Bug 4922099
111871 --
111872 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
111873 (NVL(l_actual_upg_option, 'N') = 'O') OR
111874 (NVL(l_enc_upg_option, 'N') = 'O')
111875 )
111876 THEN
111877 NULL;
111878 --
111879 --
111880
111881 l_ccid := AcctDerRule_4(
111882 p_application_id => p_application_id
111883 , p_ae_header_id => l_ae_header_id
111884 , p_source_4 => p_source_4
111885 , x_transaction_coa_id => l_adr_transaction_coa_id
111886 , x_accounting_coa_id => l_adr_accounting_coa_id
111887 , x_value_type_code => l_adr_value_type_code
111888 , p_side => 'NA'
111889 );
111890
111891 xla_ae_lines_pkg.set_ccid(
111892 p_code_combination_id => l_ccid
111893 , p_value_type_code => l_adr_value_type_code
111894 , p_transaction_coa_id => l_adr_transaction_coa_id
111895 , p_accounting_coa_id => l_adr_accounting_coa_id
111896 , p_adr_code => 'CST_DEFAULT'
111897 , p_adr_type_code => 'S'
111898 , p_component_type => l_component_type
111899 , p_component_code => l_component_code
111900 , p_component_type_code => l_component_type_code
111901 , p_component_appl_id => l_component_appl_id
111902 , p_amb_context_code => l_amb_context_code
111903 , p_side => 'NA'
111904 );
111905
111906
111907 --
111908 --
111909 END IF;
111910 --
111911 -- Bug 4922099
111912 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
111913 (NVL(l_enc_upg_option, 'N') = 'O')
111914 ) AND
111915 (l_bflow_method_code = 'PRIOR_ENTRY')
111916 )
111917 THEN
111918 IF
111919 --
111920 1 = 2
111921 --
111922 THEN
111923 xla_accounting_err_pkg.build_message
111924 (p_appli_s_name => 'XLA'
111925 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111926 ,p_token_1 => 'LINE_NUMBER'
111927 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
111928 ,p_token_2 => 'LINE_TYPE_NAME'
111929 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
111930 l_component_type
111931 ,l_component_code
111932 ,l_component_type_code
111933 ,l_component_appl_id
111934 ,l_amb_context_code
111935 ,l_entity_code
111936 ,l_event_class_code
111937 )
111938 ,p_token_3 => 'OWNER'
111939 ,p_value_3 => xla_lookups_pkg.get_meaning(
111940 p_lookup_type => 'XLA_OWNER_TYPE'
111941 ,p_lookup_code => l_component_type_code
111942 )
111943 ,p_token_4 => 'PRODUCT_NAME'
111944 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
111945 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
111946 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
111947 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
111948 ,p_ae_header_id => NULL
111949 );
111950
111951 IF (C_LEVEL_ERROR>= g_log_level) THEN
111952 trace
111953 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
111954 ,p_level => C_LEVEL_ERROR
111955 ,p_module => l_log_module);
111956 END IF;
111957 END IF;
111958 END IF;
111959 --
111960 --
111961 ------------------------------------------------------------------------------------------------
111962 -- 4219869 Business Flow
111963 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
111964 -- Prior Entry. Currently, the following code is always generated.
111965 ------------------------------------------------------------------------------------------------
111966 XLA_AE_LINES_PKG.ValidateCurrentLine;
111967
111968 ------------------------------------------------------------------------------------
111969 -- 4219869 Business Flow
111970 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
111971 ------------------------------------------------------------------------------------
111972 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
111973
111974 ----------------------------------------------------------------------------------
111975 -- 4219869 Business Flow
111976 -- Update journal entry status -- Need to generate this within IF <condition>
111977 ----------------------------------------------------------------------------------
111978 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
111979 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
111980 ,p_balance_type_code => l_balance_type_code
111981 );
111982
111983 -------------------------------------------------------------------------------------------
111984 -- 4262811 - Generate the Accrual Reversal lines
111985 -------------------------------------------------------------------------------------------
111986 BEGIN
111987 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
111988 (g_array_event(p_event_id).array_value_num('header_index'));
111989 IF l_acc_rev_flag IS NULL THEN
111990 l_acc_rev_flag := 'N';
111991 END IF;
111992 EXCEPTION
111993 WHEN OTHERS THEN
111994 l_acc_rev_flag := 'N';
111995 END;
111996 --
111997 IF (l_acc_rev_flag = 'Y') THEN
111998
111999 -- 4645092 ------------------------------------------------------------------------------
112000 -- To allow MPA report to determine if it should generate report process
112001 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112002 ------------------------------------------------------------------------------------------
112003
112004 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112005 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112006 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
112007 -- call ADRs
112008 -- Bug 4922099
112009 --
112010 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112011 (NVL(l_actual_upg_option, 'N') = 'O') OR
112012 (NVL(l_enc_upg_option, 'N') = 'O')
112013 )
112014 THEN
112015 NULL;
112016 --
112017 --
112018
112019 l_ccid := AcctDerRule_4(
112020 p_application_id => p_application_id
112021 , p_ae_header_id => l_ae_header_id
112022 , p_source_4 => p_source_4
112023 , x_transaction_coa_id => l_adr_transaction_coa_id
112024 , x_accounting_coa_id => l_adr_accounting_coa_id
112025 , x_value_type_code => l_adr_value_type_code
112026 , p_side => 'NA'
112027 );
112028
112029 xla_ae_lines_pkg.set_ccid(
112030 p_code_combination_id => l_ccid
112031 , p_value_type_code => l_adr_value_type_code
112032 , p_transaction_coa_id => l_adr_transaction_coa_id
112033 , p_accounting_coa_id => l_adr_accounting_coa_id
112034 , p_adr_code => 'CST_DEFAULT'
112035 , p_adr_type_code => 'S'
112036 , p_component_type => l_component_type
112037 , p_component_code => l_component_code
112038 , p_component_type_code => l_component_type_code
112039 , p_component_appl_id => l_component_appl_id
112040 , p_amb_context_code => l_amb_context_code
112041 , p_side => 'NA'
112042 );
112043
112044
112045 --
112046 --
112047 END IF;
112048
112049 --
112050 -- Update the line information that should be overwritten
112051 --
112052 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112053 p_header_num => 1);
112054 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
112055
112056 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112057
112058 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
112059 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112060 END IF;
112061
112062 --
112063 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112064 --
112065 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112066 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
112067 ELSE
112068 ---------------------------------------------------------------------------------------------------
112069 -- 4262811a Switch Sign
112070 ---------------------------------------------------------------------------------------------------
112071 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
112072 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112073 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112074 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112075 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112076 -- 5132302
112077 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112078 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112079
112080 END IF;
112081
112082 -- 4955764
112083 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112084 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112085
112086
112087 XLA_AE_LINES_PKG.ValidateCurrentLine;
112088 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112089
112090 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112091 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112092 ,p_balance_type_code => l_balance_type_code);
112093
112094 END IF;
112095
112096 -----------------------------------------------------------------------------------------
112097 -- 4262811 Multiperiod Accounting
112098 -----------------------------------------------------------------------------------------
112099 -- No MPA option is assigned.
112100
112101
112102 END IF;
112103 END IF;
112104 --
112105
112106 --
112107 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112108 trace
112109 (p_msg => 'END of AcctLineType_203'
112110 ,p_level => C_LEVEL_PROCEDURE
112111 ,p_module => l_log_module);
112112 END IF;
112113 --
112114 EXCEPTION
112115 WHEN xla_exceptions_pkg.application_exception THEN
112116 RAISE;
112117 WHEN OTHERS THEN
112118 xla_exceptions_pkg.raise_message
112119 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_203');
112120 END AcctLineType_203;
112121 --
112122
112123 ---------------------------------------
112124 --
112125 -- PRIVATE FUNCTION
112126 -- AcctLineType_204
112127 --
112128 ---------------------------------------
112129 PROCEDURE AcctLineType_204 (
112130 p_application_id IN NUMBER
112131 ,p_event_id IN NUMBER
112132 ,p_calculate_acctd_flag IN VARCHAR2
112133 ,p_calculate_g_l_flag IN VARCHAR2
112134 ,p_actual_flag IN OUT VARCHAR2
112135 ,p_balance_type_code OUT VARCHAR2
112136 ,p_gain_or_loss_ref OUT VARCHAR2
112137
112138 --Cost Management Default Account
112139 , p_source_4 IN NUMBER
112140 --DISTRIBUTION_IDENTIFIER
112141 , p_source_11 IN NUMBER
112142 --Distribution Type
112143 , p_source_12 IN VARCHAR2
112144 , p_source_12_meaning IN VARCHAR2
112145 --Entered Currency Code
112146 , p_source_15 IN VARCHAR2
112147 --Entered Amount
112148 , p_source_18 IN NUMBER
112149 --Currency Conversion Date
112150 , p_source_19 IN DATE
112151 --Currency Conversion Rate
112152 , p_source_20 IN NUMBER
112153 --Currency Conversion Type
112154 , p_source_21 IN VARCHAR2
112155 --Accounted Amount
112156 , p_source_22 IN NUMBER
112157 --Accounting Line Type
112158 , p_source_24 IN NUMBER
112159 )
112160 IS
112161
112162 l_component_type VARCHAR2(80);
112163 l_component_code VARCHAR2(30);
112164 l_component_type_code VARCHAR2(1);
112165 l_component_appl_id INTEGER;
112166 l_amb_context_code VARCHAR2(30);
112167 l_entity_code VARCHAR2(30);
112168 l_event_class_code VARCHAR2(30);
112169 l_ae_header_id NUMBER;
112170 l_event_type_code VARCHAR2(30);
112171 l_line_definition_code VARCHAR2(30);
112172 l_line_definition_owner_code VARCHAR2(1);
112173 --
112174 -- adr variables
112175 l_segment VARCHAR2(30);
112176 l_ccid NUMBER;
112177 l_adr_transaction_coa_id NUMBER;
112178 l_adr_accounting_coa_id NUMBER;
112179 l_adr_flexfield_segment_code VARCHAR2(30);
112180 l_adr_flex_value_set_id NUMBER;
112181 l_adr_value_type_code VARCHAR2(30);
112182 l_adr_value_combination_id NUMBER;
112183 l_adr_value_segment_code VARCHAR2(30);
112184
112185 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
112186 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
112187 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
112188 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
112189
112190 -- 4262811 Variables ------------------------------------------------------------------------------------------
112191 l_entered_amt_idx NUMBER;
112192 l_accted_amt_idx NUMBER;
112193 l_acc_rev_flag VARCHAR2(1);
112194 l_accrual_line_num NUMBER;
112195 l_tmp_amt NUMBER;
112196 l_acc_rev_natural_side_code VARCHAR2(1);
112197
112198 l_num_entries NUMBER;
112199 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
112200 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
112201 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
112202 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
112203 l_recog_line_1 NUMBER;
112204 l_recog_line_2 NUMBER;
112205
112206 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
112207 l_bflow_applied_to_amt NUMBER; -- 5132302
112208 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
112209
112210 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112211
112212 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
112213 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
112214
112215 ---------------------------------------------------------------------------------------------------------------
112216
112217
112218 --
112219 -- bulk performance
112220 --
112221 l_balance_type_code VARCHAR2(1);
112222 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
112223 l_log_module VARCHAR2(240);
112224
112225 --
112226 -- Upgrade strategy
112227 --
112228 l_actual_upg_option VARCHAR2(1);
112229 l_enc_upg_option VARCHAR2(1);
112230
112231 --
112232 BEGIN
112233 --
112234 IF g_log_enabled THEN
112235 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_204';
112236 END IF;
112237 --
112238 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112239
112240 trace
112241 (p_msg => 'BEGIN of AcctLineType_204'
112242 ,p_level => C_LEVEL_PROCEDURE
112243 ,p_module => l_log_module);
112244
112245 END IF;
112246 --
112247 l_component_type := 'AMB_JLT';
112248 l_component_code := 'OFFSET';
112249 l_component_type_code := 'S';
112250 l_component_appl_id := 707;
112251 l_amb_context_code := 'DEFAULT';
112252 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
112253 l_event_class_code := 'USER_DEFINE';
112254 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
112255 l_line_definition_owner_code := 'S';
112256 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
112257 --
112258 l_balance_type_code := 'A';
112259 l_segment := NULL;
112260 l_ccid := NULL;
112261 l_adr_transaction_coa_id := NULL;
112262 l_adr_accounting_coa_id := NULL;
112263 l_adr_flexfield_segment_code := NULL;
112264 l_adr_flex_value_set_id := NULL;
112265 l_adr_value_type_code := NULL;
112266 l_adr_value_combination_id := NULL;
112267 l_adr_value_segment_code := NULL;
112268
112269 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
112270 l_bflow_class_code := ''; -- 4219869 Business Flow
112271 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
112272 l_budgetary_control_flag := 'N';
112273
112274 l_bflow_applied_to_amt_idx := NULL; -- 5132302
112275 l_bflow_applied_to_amt := NULL; -- 5132302
112276 l_entered_amt_idx := NULL; -- 4262811
112277 l_accted_amt_idx := NULL; -- 4262811
112278 l_acc_rev_flag := NULL; -- 4262811
112279 l_accrual_line_num := NULL; -- 4262811
112280 l_tmp_amt := NULL; -- 4262811
112281 --
112282
112283 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112284 l_balance_type_code <> 'B' THEN
112285 IF NVL(p_source_24,9E125) = 2
112286 THEN
112287
112288 --
112289 XLA_AE_LINES_PKG.SetNewLine;
112290
112291 p_balance_type_code := l_balance_type_code;
112292 -- set the flag so later we will know whether the gain loss line needs to be created
112293
112294 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112295 p_actual_flag :='A';
112296 END IF;
112297
112298 --
112299 -- bulk performance
112300 --
112301 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112302 p_header_num => 0); -- 4262811
112303 --
112304 -- set accounting line options
112305 --
112306 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112307 p_natural_side_code => 'D'
112308 , p_gain_or_loss_flag => 'N'
112309 , p_gl_transfer_mode_code => 'S'
112310 , p_acct_entry_type_code => 'A'
112311 , p_switch_side_flag => 'Y'
112312 , p_merge_duplicate_code => 'N'
112313 );
112314 --
112315 l_acc_rev_natural_side_code := 'C'; -- 4262811
112316 --
112317 --
112318 -- set accounting line type info
112319 --
112320 xla_ae_lines_pkg.SetAcctLineType
112321 (p_component_type => l_component_type
112322 ,p_event_type_code => l_event_type_code
112323 ,p_line_definition_owner_code => l_line_definition_owner_code
112324 ,p_line_definition_code => l_line_definition_code
112325 ,p_accounting_line_code => l_component_code
112326 ,p_accounting_line_type_code => l_component_type_code
112327 ,p_accounting_line_appl_id => l_component_appl_id
112328 ,p_amb_context_code => l_amb_context_code
112329 ,p_entity_code => l_entity_code
112330 ,p_event_class_code => l_event_class_code);
112331 --
112332 -- set accounting class
112333 --
112334 xla_ae_lines_pkg.SetAcctClass(
112335 p_accounting_class_code => 'OFFSET'
112336 , p_ae_header_id => l_ae_header_id
112337 );
112338
112339 --
112340 -- set rounding class
112341 --
112342 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
112343 'OFFSET';
112344
112345 --
112346 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
112347 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
112348 --
112349 -- bulk performance
112350 --
112351 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
112352
112353 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
112354 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
112355
112356 -- 4955764
112357 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112358 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
112359
112360 -- 4458381 Public Sector Enh
112361
112362 --
112363 -- set accounting attributes for the line type
112364 --
112365 l_entered_amt_idx := 3;
112366 l_accted_amt_idx := 8;
112367 l_bflow_applied_to_amt_idx := NULL; -- 5132302
112368 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
112369 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
112370 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
112371 l_rec_acct_attrs.array_char_value(2) := p_source_12;
112372 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
112373 l_rec_acct_attrs.array_num_value(3) := p_source_18;
112374 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
112375 l_rec_acct_attrs.array_char_value(4) := p_source_15;
112376 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
112377 l_rec_acct_attrs.array_date_value(5) := p_source_19;
112378 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
112379 l_rec_acct_attrs.array_num_value(6) := p_source_20;
112380 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
112381 l_rec_acct_attrs.array_char_value(7) := p_source_21;
112382 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
112383 l_rec_acct_attrs.array_num_value(8) := p_source_22;
112384
112385 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
112386 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
112387
112388 ---------------------------------------------------------------------------------------------------------------
112389 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
112390 ---------------------------------------------------------------------------------------------------------------
112391 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
112392
112393 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112394 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112395
112396 IF xla_accounting_cache_pkg.GetValueChar
112397 (p_source_code => 'LEDGER_CATEGORY_CODE'
112398 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
112399 AND l_bflow_method_code = 'PRIOR_ENTRY'
112400 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
112401 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
112402 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
112403 )
112404 THEN
112405 xla_ae_lines_pkg.BflowUpgEntry
112406 (p_business_method_code => l_bflow_method_code
112407 ,p_business_class_code => l_bflow_class_code
112408 ,p_balance_type => l_balance_type_code);
112409 ELSE
112410 NULL;
112411 -- No business flow processing for business flow method of NONE.
112412 END IF;
112413
112414 --
112415 -- call analytical criteria
112416 --
112417
112418 --
112419 -- call description
112420 --
112421 -- No description or it is inherited.
112422 --
112423 -- call ADRs
112424 -- Bug 4922099
112425 --
112426 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112427 (NVL(l_actual_upg_option, 'N') = 'O') OR
112428 (NVL(l_enc_upg_option, 'N') = 'O')
112429 )
112430 THEN
112431 NULL;
112432 --
112433 --
112434
112435 l_ccid := AcctDerRule_4(
112436 p_application_id => p_application_id
112437 , p_ae_header_id => l_ae_header_id
112438 , p_source_4 => p_source_4
112439 , x_transaction_coa_id => l_adr_transaction_coa_id
112440 , x_accounting_coa_id => l_adr_accounting_coa_id
112441 , x_value_type_code => l_adr_value_type_code
112442 , p_side => 'NA'
112443 );
112444
112445 xla_ae_lines_pkg.set_ccid(
112446 p_code_combination_id => l_ccid
112447 , p_value_type_code => l_adr_value_type_code
112448 , p_transaction_coa_id => l_adr_transaction_coa_id
112449 , p_accounting_coa_id => l_adr_accounting_coa_id
112450 , p_adr_code => 'CST_DEFAULT'
112451 , p_adr_type_code => 'S'
112452 , p_component_type => l_component_type
112453 , p_component_code => l_component_code
112454 , p_component_type_code => l_component_type_code
112455 , p_component_appl_id => l_component_appl_id
112456 , p_amb_context_code => l_amb_context_code
112457 , p_side => 'NA'
112458 );
112459
112460
112461 --
112462 --
112463 END IF;
112464 --
112465 -- Bug 4922099
112466 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
112467 (NVL(l_enc_upg_option, 'N') = 'O')
112468 ) AND
112469 (l_bflow_method_code = 'PRIOR_ENTRY')
112470 )
112471 THEN
112472 IF
112473 --
112474 1 = 2
112475 --
112476 THEN
112477 xla_accounting_err_pkg.build_message
112478 (p_appli_s_name => 'XLA'
112479 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112480 ,p_token_1 => 'LINE_NUMBER'
112481 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
112482 ,p_token_2 => 'LINE_TYPE_NAME'
112483 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
112484 l_component_type
112485 ,l_component_code
112486 ,l_component_type_code
112487 ,l_component_appl_id
112488 ,l_amb_context_code
112489 ,l_entity_code
112490 ,l_event_class_code
112491 )
112492 ,p_token_3 => 'OWNER'
112493 ,p_value_3 => xla_lookups_pkg.get_meaning(
112494 p_lookup_type => 'XLA_OWNER_TYPE'
112495 ,p_lookup_code => l_component_type_code
112496 )
112497 ,p_token_4 => 'PRODUCT_NAME'
112498 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
112499 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
112500 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
112501 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
112502 ,p_ae_header_id => NULL
112503 );
112504
112505 IF (C_LEVEL_ERROR>= g_log_level) THEN
112506 trace
112507 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
112508 ,p_level => C_LEVEL_ERROR
112509 ,p_module => l_log_module);
112510 END IF;
112511 END IF;
112512 END IF;
112513 --
112514 --
112515 ------------------------------------------------------------------------------------------------
112516 -- 4219869 Business Flow
112517 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
112518 -- Prior Entry. Currently, the following code is always generated.
112519 ------------------------------------------------------------------------------------------------
112520 XLA_AE_LINES_PKG.ValidateCurrentLine;
112521
112522 ------------------------------------------------------------------------------------
112523 -- 4219869 Business Flow
112524 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
112525 ------------------------------------------------------------------------------------
112526 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112527
112528 ----------------------------------------------------------------------------------
112529 -- 4219869 Business Flow
112530 -- Update journal entry status -- Need to generate this within IF <condition>
112531 ----------------------------------------------------------------------------------
112532 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112533 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
112534 ,p_balance_type_code => l_balance_type_code
112535 );
112536
112537 -------------------------------------------------------------------------------------------
112538 -- 4262811 - Generate the Accrual Reversal lines
112539 -------------------------------------------------------------------------------------------
112540 BEGIN
112541 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
112542 (g_array_event(p_event_id).array_value_num('header_index'));
112543 IF l_acc_rev_flag IS NULL THEN
112544 l_acc_rev_flag := 'N';
112545 END IF;
112546 EXCEPTION
112547 WHEN OTHERS THEN
112548 l_acc_rev_flag := 'N';
112549 END;
112550 --
112551 IF (l_acc_rev_flag = 'Y') THEN
112552
112553 -- 4645092 ------------------------------------------------------------------------------
112554 -- To allow MPA report to determine if it should generate report process
112555 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
112556 ------------------------------------------------------------------------------------------
112557
112558 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
112559 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
112560 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
112561 -- call ADRs
112562 -- Bug 4922099
112563 --
112564 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112565 (NVL(l_actual_upg_option, 'N') = 'O') OR
112566 (NVL(l_enc_upg_option, 'N') = 'O')
112567 )
112568 THEN
112569 NULL;
112570 --
112571 --
112572
112573 l_ccid := AcctDerRule_4(
112574 p_application_id => p_application_id
112575 , p_ae_header_id => l_ae_header_id
112576 , p_source_4 => p_source_4
112577 , x_transaction_coa_id => l_adr_transaction_coa_id
112578 , x_accounting_coa_id => l_adr_accounting_coa_id
112579 , x_value_type_code => l_adr_value_type_code
112580 , p_side => 'NA'
112581 );
112582
112583 xla_ae_lines_pkg.set_ccid(
112584 p_code_combination_id => l_ccid
112585 , p_value_type_code => l_adr_value_type_code
112586 , p_transaction_coa_id => l_adr_transaction_coa_id
112587 , p_accounting_coa_id => l_adr_accounting_coa_id
112588 , p_adr_code => 'CST_DEFAULT'
112589 , p_adr_type_code => 'S'
112590 , p_component_type => l_component_type
112591 , p_component_code => l_component_code
112592 , p_component_type_code => l_component_type_code
112593 , p_component_appl_id => l_component_appl_id
112594 , p_amb_context_code => l_amb_context_code
112595 , p_side => 'NA'
112596 );
112597
112598
112599 --
112600 --
112601 END IF;
112602
112603 --
112604 -- Update the line information that should be overwritten
112605 --
112606 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
112607 p_header_num => 1);
112608 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
112609
112610 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
112611
112612 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
112613 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
112614 END IF;
112615
112616 --
112617 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
112618 --
112619 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
112620 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
112621 ELSE
112622 ---------------------------------------------------------------------------------------------------
112623 -- 4262811a Switch Sign
112624 ---------------------------------------------------------------------------------------------------
112625 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
112626 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112627 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112628 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
112629 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112630 -- 5132302
112631 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
112632 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
112633
112634 END IF;
112635
112636 -- 4955764
112637 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112638 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
112639
112640
112641 XLA_AE_LINES_PKG.ValidateCurrentLine;
112642 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
112643
112644 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
112645 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
112646 ,p_balance_type_code => l_balance_type_code);
112647
112648 END IF;
112649
112650 -----------------------------------------------------------------------------------------
112651 -- 4262811 Multiperiod Accounting
112652 -----------------------------------------------------------------------------------------
112653 -- No MPA option is assigned.
112654
112655
112656 END IF;
112657 END IF;
112658 --
112659
112660 --
112661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112662 trace
112663 (p_msg => 'END of AcctLineType_204'
112664 ,p_level => C_LEVEL_PROCEDURE
112665 ,p_module => l_log_module);
112666 END IF;
112667 --
112668 EXCEPTION
112669 WHEN xla_exceptions_pkg.application_exception THEN
112670 RAISE;
112671 WHEN OTHERS THEN
112672 xla_exceptions_pkg.raise_message
112673 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_204');
112674 END AcctLineType_204;
112675 --
112676
112677 ---------------------------------------
112678 --
112679 -- PRIVATE FUNCTION
112680 -- AcctLineType_205
112681 --
112682 ---------------------------------------
112683 PROCEDURE AcctLineType_205 (
112684 p_application_id IN NUMBER
112685 ,p_event_id IN NUMBER
112686 ,p_calculate_acctd_flag IN VARCHAR2
112687 ,p_calculate_g_l_flag IN VARCHAR2
112688 ,p_actual_flag IN OUT VARCHAR2
112689 ,p_balance_type_code OUT VARCHAR2
112690 ,p_gain_or_loss_ref OUT VARCHAR2
112691
112692 --Cost Management Default Account
112693 , p_source_4 IN NUMBER
112694 --DISTRIBUTION_IDENTIFIER
112695 , p_source_11 IN NUMBER
112696 --Distribution Type
112697 , p_source_12 IN VARCHAR2
112698 , p_source_12_meaning IN VARCHAR2
112699 --Entered Currency Code
112700 , p_source_15 IN VARCHAR2
112701 --Entered Amount
112702 , p_source_18 IN NUMBER
112703 --Currency Conversion Date
112704 , p_source_19 IN DATE
112705 --Currency Conversion Rate
112706 , p_source_20 IN NUMBER
112707 --Currency Conversion Type
112708 , p_source_21 IN VARCHAR2
112709 --Accounted Amount
112710 , p_source_22 IN NUMBER
112711 --Accounting Line Type
112712 , p_source_24 IN NUMBER
112713 )
112714 IS
112715
112716 l_component_type VARCHAR2(80);
112717 l_component_code VARCHAR2(30);
112718 l_component_type_code VARCHAR2(1);
112719 l_component_appl_id INTEGER;
112720 l_amb_context_code VARCHAR2(30);
112721 l_entity_code VARCHAR2(30);
112722 l_event_class_code VARCHAR2(30);
112723 l_ae_header_id NUMBER;
112724 l_event_type_code VARCHAR2(30);
112725 l_line_definition_code VARCHAR2(30);
112726 l_line_definition_owner_code VARCHAR2(1);
112727 --
112728 -- adr variables
112729 l_segment VARCHAR2(30);
112730 l_ccid NUMBER;
112731 l_adr_transaction_coa_id NUMBER;
112732 l_adr_accounting_coa_id NUMBER;
112733 l_adr_flexfield_segment_code VARCHAR2(30);
112734 l_adr_flex_value_set_id NUMBER;
112735 l_adr_value_type_code VARCHAR2(30);
112736 l_adr_value_combination_id NUMBER;
112737 l_adr_value_segment_code VARCHAR2(30);
112738
112739 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
112740 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
112741 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
112742 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
112743
112744 -- 4262811 Variables ------------------------------------------------------------------------------------------
112745 l_entered_amt_idx NUMBER;
112746 l_accted_amt_idx NUMBER;
112747 l_acc_rev_flag VARCHAR2(1);
112748 l_accrual_line_num NUMBER;
112749 l_tmp_amt NUMBER;
112750 l_acc_rev_natural_side_code VARCHAR2(1);
112751
112752 l_num_entries NUMBER;
112753 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
112754 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
112755 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
112756 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
112757 l_recog_line_1 NUMBER;
112758 l_recog_line_2 NUMBER;
112759
112760 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
112761 l_bflow_applied_to_amt NUMBER; -- 5132302
112762 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
112763
112764 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
112765
112766 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
112767 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
112768
112769 ---------------------------------------------------------------------------------------------------------------
112770
112771
112772 --
112773 -- bulk performance
112774 --
112775 l_balance_type_code VARCHAR2(1);
112776 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
112777 l_log_module VARCHAR2(240);
112778
112779 --
112780 -- Upgrade strategy
112781 --
112782 l_actual_upg_option VARCHAR2(1);
112783 l_enc_upg_option VARCHAR2(1);
112784
112785 --
112786 BEGIN
112787 --
112788 IF g_log_enabled THEN
112789 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_205';
112790 END IF;
112791 --
112792 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
112793
112794 trace
112795 (p_msg => 'BEGIN of AcctLineType_205'
112796 ,p_level => C_LEVEL_PROCEDURE
112797 ,p_module => l_log_module);
112798
112799 END IF;
112800 --
112801 l_component_type := 'AMB_JLT';
112802 l_component_code := 'OFFSET';
112803 l_component_type_code := 'S';
112804 l_component_appl_id := 707;
112805 l_amb_context_code := 'DEFAULT';
112806 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
112807 l_event_class_code := 'USER_DEFINE';
112808 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
112809 l_line_definition_owner_code := 'S';
112810 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
112811 --
112812 l_balance_type_code := 'A';
112813 l_segment := NULL;
112814 l_ccid := NULL;
112815 l_adr_transaction_coa_id := NULL;
112816 l_adr_accounting_coa_id := NULL;
112817 l_adr_flexfield_segment_code := NULL;
112818 l_adr_flex_value_set_id := NULL;
112819 l_adr_value_type_code := NULL;
112820 l_adr_value_combination_id := NULL;
112821 l_adr_value_segment_code := NULL;
112822
112823 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
112824 l_bflow_class_code := ''; -- 4219869 Business Flow
112825 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
112826 l_budgetary_control_flag := 'N';
112827
112828 l_bflow_applied_to_amt_idx := NULL; -- 5132302
112829 l_bflow_applied_to_amt := NULL; -- 5132302
112830 l_entered_amt_idx := NULL; -- 4262811
112831 l_accted_amt_idx := NULL; -- 4262811
112832 l_acc_rev_flag := NULL; -- 4262811
112833 l_accrual_line_num := NULL; -- 4262811
112834 l_tmp_amt := NULL; -- 4262811
112835 --
112836
112837 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
112838 l_balance_type_code <> 'B' THEN
112839 IF NVL(p_source_24,9E125) = 2
112840 THEN
112841
112842 --
112843 XLA_AE_LINES_PKG.SetNewLine;
112844
112845 p_balance_type_code := l_balance_type_code;
112846 -- set the flag so later we will know whether the gain loss line needs to be created
112847
112848 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
112849 p_actual_flag :='A';
112850 END IF;
112851
112852 --
112853 -- bulk performance
112854 --
112855 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
112856 p_header_num => 0); -- 4262811
112857 --
112858 -- set accounting line options
112859 --
112860 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
112861 p_natural_side_code => 'D'
112862 , p_gain_or_loss_flag => 'N'
112863 , p_gl_transfer_mode_code => 'S'
112864 , p_acct_entry_type_code => 'A'
112865 , p_switch_side_flag => 'Y'
112866 , p_merge_duplicate_code => 'N'
112867 );
112868 --
112869 l_acc_rev_natural_side_code := 'C'; -- 4262811
112870 --
112871 --
112872 -- set accounting line type info
112873 --
112874 xla_ae_lines_pkg.SetAcctLineType
112875 (p_component_type => l_component_type
112876 ,p_event_type_code => l_event_type_code
112877 ,p_line_definition_owner_code => l_line_definition_owner_code
112878 ,p_line_definition_code => l_line_definition_code
112879 ,p_accounting_line_code => l_component_code
112880 ,p_accounting_line_type_code => l_component_type_code
112881 ,p_accounting_line_appl_id => l_component_appl_id
112882 ,p_amb_context_code => l_amb_context_code
112883 ,p_entity_code => l_entity_code
112884 ,p_event_class_code => l_event_class_code);
112885 --
112886 -- set accounting class
112887 --
112888 xla_ae_lines_pkg.SetAcctClass(
112889 p_accounting_class_code => 'OFFSET'
112890 , p_ae_header_id => l_ae_header_id
112891 );
112892
112893 --
112894 -- set rounding class
112895 --
112896 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
112897 'OFFSET';
112898
112899 --
112900 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
112901 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
112902 --
112903 -- bulk performance
112904 --
112905 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
112906
112907 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
112908 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
112909
112910 -- 4955764
112911 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
112912 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
112913
112914 -- 4458381 Public Sector Enh
112915
112916 --
112917 -- set accounting attributes for the line type
112918 --
112919 l_entered_amt_idx := 3;
112920 l_accted_amt_idx := 8;
112921 l_bflow_applied_to_amt_idx := NULL; -- 5132302
112922 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
112923 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
112924 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
112925 l_rec_acct_attrs.array_char_value(2) := p_source_12;
112926 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
112927 l_rec_acct_attrs.array_num_value(3) := p_source_18;
112928 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
112929 l_rec_acct_attrs.array_char_value(4) := p_source_15;
112930 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
112931 l_rec_acct_attrs.array_date_value(5) := p_source_19;
112932 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
112933 l_rec_acct_attrs.array_num_value(6) := p_source_20;
112934 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
112935 l_rec_acct_attrs.array_char_value(7) := p_source_21;
112936 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
112937 l_rec_acct_attrs.array_num_value(8) := p_source_22;
112938
112939 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
112940 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
112941
112942 ---------------------------------------------------------------------------------------------------------------
112943 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
112944 ---------------------------------------------------------------------------------------------------------------
112945 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
112946
112947 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112948 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
112949
112950 IF xla_accounting_cache_pkg.GetValueChar
112951 (p_source_code => 'LEDGER_CATEGORY_CODE'
112952 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
112953 AND l_bflow_method_code = 'PRIOR_ENTRY'
112954 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
112955 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
112956 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
112957 )
112958 THEN
112959 xla_ae_lines_pkg.BflowUpgEntry
112960 (p_business_method_code => l_bflow_method_code
112961 ,p_business_class_code => l_bflow_class_code
112962 ,p_balance_type => l_balance_type_code);
112963 ELSE
112964 NULL;
112965 -- No business flow processing for business flow method of NONE.
112966 END IF;
112967
112968 --
112969 -- call analytical criteria
112970 --
112971
112972 --
112973 -- call description
112974 --
112975 -- No description or it is inherited.
112976 --
112977 -- call ADRs
112978 -- Bug 4922099
112979 --
112980 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
112981 (NVL(l_actual_upg_option, 'N') = 'O') OR
112982 (NVL(l_enc_upg_option, 'N') = 'O')
112983 )
112984 THEN
112985 NULL;
112986 --
112987 --
112988
112989 l_ccid := AcctDerRule_4(
112990 p_application_id => p_application_id
112991 , p_ae_header_id => l_ae_header_id
112992 , p_source_4 => p_source_4
112993 , x_transaction_coa_id => l_adr_transaction_coa_id
112994 , x_accounting_coa_id => l_adr_accounting_coa_id
112995 , x_value_type_code => l_adr_value_type_code
112996 , p_side => 'NA'
112997 );
112998
112999 xla_ae_lines_pkg.set_ccid(
113000 p_code_combination_id => l_ccid
113001 , p_value_type_code => l_adr_value_type_code
113002 , p_transaction_coa_id => l_adr_transaction_coa_id
113003 , p_accounting_coa_id => l_adr_accounting_coa_id
113004 , p_adr_code => 'CST_DEFAULT'
113005 , p_adr_type_code => 'S'
113006 , p_component_type => l_component_type
113007 , p_component_code => l_component_code
113008 , p_component_type_code => l_component_type_code
113009 , p_component_appl_id => l_component_appl_id
113010 , p_amb_context_code => l_amb_context_code
113011 , p_side => 'NA'
113012 );
113013
113014
113015 --
113016 --
113017 END IF;
113018 --
113019 -- Bug 4922099
113020 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113021 (NVL(l_enc_upg_option, 'N') = 'O')
113022 ) AND
113023 (l_bflow_method_code = 'PRIOR_ENTRY')
113024 )
113025 THEN
113026 IF
113027 --
113028 1 = 2
113029 --
113030 THEN
113031 xla_accounting_err_pkg.build_message
113032 (p_appli_s_name => 'XLA'
113033 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113034 ,p_token_1 => 'LINE_NUMBER'
113035 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
113036 ,p_token_2 => 'LINE_TYPE_NAME'
113037 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
113038 l_component_type
113039 ,l_component_code
113040 ,l_component_type_code
113041 ,l_component_appl_id
113042 ,l_amb_context_code
113043 ,l_entity_code
113044 ,l_event_class_code
113045 )
113046 ,p_token_3 => 'OWNER'
113047 ,p_value_3 => xla_lookups_pkg.get_meaning(
113048 p_lookup_type => 'XLA_OWNER_TYPE'
113049 ,p_lookup_code => l_component_type_code
113050 )
113051 ,p_token_4 => 'PRODUCT_NAME'
113052 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113053 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113054 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113055 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113056 ,p_ae_header_id => NULL
113057 );
113058
113059 IF (C_LEVEL_ERROR>= g_log_level) THEN
113060 trace
113061 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113062 ,p_level => C_LEVEL_ERROR
113063 ,p_module => l_log_module);
113064 END IF;
113065 END IF;
113066 END IF;
113067 --
113068 --
113069 ------------------------------------------------------------------------------------------------
113070 -- 4219869 Business Flow
113071 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113072 -- Prior Entry. Currently, the following code is always generated.
113073 ------------------------------------------------------------------------------------------------
113074 XLA_AE_LINES_PKG.ValidateCurrentLine;
113075
113076 ------------------------------------------------------------------------------------
113077 -- 4219869 Business Flow
113078 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113079 ------------------------------------------------------------------------------------
113080 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113081
113082 ----------------------------------------------------------------------------------
113083 -- 4219869 Business Flow
113084 -- Update journal entry status -- Need to generate this within IF <condition>
113085 ----------------------------------------------------------------------------------
113086 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113087 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113088 ,p_balance_type_code => l_balance_type_code
113089 );
113090
113091 -------------------------------------------------------------------------------------------
113092 -- 4262811 - Generate the Accrual Reversal lines
113093 -------------------------------------------------------------------------------------------
113094 BEGIN
113095 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113096 (g_array_event(p_event_id).array_value_num('header_index'));
113097 IF l_acc_rev_flag IS NULL THEN
113098 l_acc_rev_flag := 'N';
113099 END IF;
113100 EXCEPTION
113101 WHEN OTHERS THEN
113102 l_acc_rev_flag := 'N';
113103 END;
113104 --
113105 IF (l_acc_rev_flag = 'Y') THEN
113106
113107 -- 4645092 ------------------------------------------------------------------------------
113108 -- To allow MPA report to determine if it should generate report process
113109 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113110 ------------------------------------------------------------------------------------------
113111
113112 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113113 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113114 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
113115 -- call ADRs
113116 -- Bug 4922099
113117 --
113118 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113119 (NVL(l_actual_upg_option, 'N') = 'O') OR
113120 (NVL(l_enc_upg_option, 'N') = 'O')
113121 )
113122 THEN
113123 NULL;
113124 --
113125 --
113126
113127 l_ccid := AcctDerRule_4(
113128 p_application_id => p_application_id
113129 , p_ae_header_id => l_ae_header_id
113130 , p_source_4 => p_source_4
113131 , x_transaction_coa_id => l_adr_transaction_coa_id
113132 , x_accounting_coa_id => l_adr_accounting_coa_id
113133 , x_value_type_code => l_adr_value_type_code
113134 , p_side => 'NA'
113135 );
113136
113137 xla_ae_lines_pkg.set_ccid(
113138 p_code_combination_id => l_ccid
113139 , p_value_type_code => l_adr_value_type_code
113140 , p_transaction_coa_id => l_adr_transaction_coa_id
113141 , p_accounting_coa_id => l_adr_accounting_coa_id
113142 , p_adr_code => 'CST_DEFAULT'
113143 , p_adr_type_code => 'S'
113144 , p_component_type => l_component_type
113145 , p_component_code => l_component_code
113146 , p_component_type_code => l_component_type_code
113147 , p_component_appl_id => l_component_appl_id
113148 , p_amb_context_code => l_amb_context_code
113149 , p_side => 'NA'
113150 );
113151
113152
113153 --
113154 --
113155 END IF;
113156
113157 --
113158 -- Update the line information that should be overwritten
113159 --
113160 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113161 p_header_num => 1);
113162 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
113163
113164 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113165
113166 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
113167 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113168 END IF;
113169
113170 --
113171 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113172 --
113173 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113174 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
113175 ELSE
113176 ---------------------------------------------------------------------------------------------------
113177 -- 4262811a Switch Sign
113178 ---------------------------------------------------------------------------------------------------
113179 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
113180 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113181 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113182 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113183 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113184 -- 5132302
113185 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113186 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113187
113188 END IF;
113189
113190 -- 4955764
113191 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113192 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113193
113194
113195 XLA_AE_LINES_PKG.ValidateCurrentLine;
113196 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113197
113198 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113199 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113200 ,p_balance_type_code => l_balance_type_code);
113201
113202 END IF;
113203
113204 -----------------------------------------------------------------------------------------
113205 -- 4262811 Multiperiod Accounting
113206 -----------------------------------------------------------------------------------------
113207 -- No MPA option is assigned.
113208
113209
113210 END IF;
113211 END IF;
113212 --
113213
113214 --
113215 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113216 trace
113217 (p_msg => 'END of AcctLineType_205'
113218 ,p_level => C_LEVEL_PROCEDURE
113219 ,p_module => l_log_module);
113220 END IF;
113221 --
113222 EXCEPTION
113223 WHEN xla_exceptions_pkg.application_exception THEN
113224 RAISE;
113225 WHEN OTHERS THEN
113226 xla_exceptions_pkg.raise_message
113227 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_205');
113228 END AcctLineType_205;
113229 --
113230
113231 ---------------------------------------
113232 --
113233 -- PRIVATE FUNCTION
113234 -- AcctLineType_206
113235 --
113236 ---------------------------------------
113237 PROCEDURE AcctLineType_206 (
113238 p_application_id IN NUMBER
113239 ,p_event_id IN NUMBER
113240 ,p_calculate_acctd_flag IN VARCHAR2
113241 ,p_calculate_g_l_flag IN VARCHAR2
113242 ,p_actual_flag IN OUT VARCHAR2
113243 ,p_balance_type_code OUT VARCHAR2
113244 ,p_gain_or_loss_ref OUT VARCHAR2
113245
113246 --Cost Management Default Account
113247 , p_source_4 IN NUMBER
113248 --DISTRIBUTION_IDENTIFIER
113249 , p_source_11 IN NUMBER
113250 --Distribution Type
113251 , p_source_12 IN VARCHAR2
113252 , p_source_12_meaning IN VARCHAR2
113253 --Entered Currency Code
113254 , p_source_15 IN VARCHAR2
113255 --Entered Amount
113256 , p_source_18 IN NUMBER
113257 --Currency Conversion Date
113258 , p_source_19 IN DATE
113259 --Currency Conversion Rate
113260 , p_source_20 IN NUMBER
113261 --Currency Conversion Type
113262 , p_source_21 IN VARCHAR2
113263 --Accounted Amount
113264 , p_source_22 IN NUMBER
113265 --Accounting Line Type
113266 , p_source_24 IN NUMBER
113267 )
113268 IS
113269
113270 l_component_type VARCHAR2(80);
113271 l_component_code VARCHAR2(30);
113272 l_component_type_code VARCHAR2(1);
113273 l_component_appl_id INTEGER;
113274 l_amb_context_code VARCHAR2(30);
113275 l_entity_code VARCHAR2(30);
113276 l_event_class_code VARCHAR2(30);
113277 l_ae_header_id NUMBER;
113278 l_event_type_code VARCHAR2(30);
113279 l_line_definition_code VARCHAR2(30);
113280 l_line_definition_owner_code VARCHAR2(1);
113281 --
113282 -- adr variables
113283 l_segment VARCHAR2(30);
113284 l_ccid NUMBER;
113285 l_adr_transaction_coa_id NUMBER;
113286 l_adr_accounting_coa_id NUMBER;
113287 l_adr_flexfield_segment_code VARCHAR2(30);
113288 l_adr_flex_value_set_id NUMBER;
113289 l_adr_value_type_code VARCHAR2(30);
113290 l_adr_value_combination_id NUMBER;
113291 l_adr_value_segment_code VARCHAR2(30);
113292
113293 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
113294 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
113295 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
113296 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
113297
113298 -- 4262811 Variables ------------------------------------------------------------------------------------------
113299 l_entered_amt_idx NUMBER;
113300 l_accted_amt_idx NUMBER;
113301 l_acc_rev_flag VARCHAR2(1);
113302 l_accrual_line_num NUMBER;
113303 l_tmp_amt NUMBER;
113304 l_acc_rev_natural_side_code VARCHAR2(1);
113305
113306 l_num_entries NUMBER;
113307 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
113308 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
113309 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
113310 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
113311 l_recog_line_1 NUMBER;
113312 l_recog_line_2 NUMBER;
113313
113314 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
113315 l_bflow_applied_to_amt NUMBER; -- 5132302
113316 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
113317
113318 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113319
113320 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
113321 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
113322
113323 ---------------------------------------------------------------------------------------------------------------
113324
113325
113326 --
113327 -- bulk performance
113328 --
113329 l_balance_type_code VARCHAR2(1);
113330 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
113331 l_log_module VARCHAR2(240);
113332
113333 --
113334 -- Upgrade strategy
113335 --
113336 l_actual_upg_option VARCHAR2(1);
113337 l_enc_upg_option VARCHAR2(1);
113338
113339 --
113340 BEGIN
113341 --
113342 IF g_log_enabled THEN
113343 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_206';
113344 END IF;
113345 --
113346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113347
113348 trace
113349 (p_msg => 'BEGIN of AcctLineType_206'
113350 ,p_level => C_LEVEL_PROCEDURE
113351 ,p_module => l_log_module);
113352
113353 END IF;
113354 --
113355 l_component_type := 'AMB_JLT';
113356 l_component_code := 'OFFSET';
113357 l_component_type_code := 'S';
113358 l_component_appl_id := 707;
113359 l_amb_context_code := 'DEFAULT';
113360 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
113361 l_event_class_code := 'USER_DEFINE';
113362 l_event_type_code := 'UFOB_RCPT_SENDER_SHIP';
113363 l_line_definition_owner_code := 'S';
113364 l_line_definition_code := 'USER_FOB_RCPT_SENDER_SHIP';
113365 --
113366 l_balance_type_code := 'A';
113367 l_segment := NULL;
113368 l_ccid := NULL;
113369 l_adr_transaction_coa_id := NULL;
113370 l_adr_accounting_coa_id := NULL;
113371 l_adr_flexfield_segment_code := NULL;
113372 l_adr_flex_value_set_id := NULL;
113373 l_adr_value_type_code := NULL;
113374 l_adr_value_combination_id := NULL;
113375 l_adr_value_segment_code := NULL;
113376
113377 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
113378 l_bflow_class_code := ''; -- 4219869 Business Flow
113379 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
113380 l_budgetary_control_flag := 'N';
113381
113382 l_bflow_applied_to_amt_idx := NULL; -- 5132302
113383 l_bflow_applied_to_amt := NULL; -- 5132302
113384 l_entered_amt_idx := NULL; -- 4262811
113385 l_accted_amt_idx := NULL; -- 4262811
113386 l_acc_rev_flag := NULL; -- 4262811
113387 l_accrual_line_num := NULL; -- 4262811
113388 l_tmp_amt := NULL; -- 4262811
113389 --
113390
113391 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
113392 l_balance_type_code <> 'B' THEN
113393 IF NVL(p_source_24,9E125) = 2
113394 THEN
113395
113396 --
113397 XLA_AE_LINES_PKG.SetNewLine;
113398
113399 p_balance_type_code := l_balance_type_code;
113400 -- set the flag so later we will know whether the gain loss line needs to be created
113401
113402 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
113403 p_actual_flag :='A';
113404 END IF;
113405
113406 --
113407 -- bulk performance
113408 --
113409 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
113410 p_header_num => 0); -- 4262811
113411 --
113412 -- set accounting line options
113413 --
113414 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
113415 p_natural_side_code => 'D'
113416 , p_gain_or_loss_flag => 'N'
113417 , p_gl_transfer_mode_code => 'S'
113418 , p_acct_entry_type_code => 'A'
113419 , p_switch_side_flag => 'Y'
113420 , p_merge_duplicate_code => 'N'
113421 );
113422 --
113423 l_acc_rev_natural_side_code := 'C'; -- 4262811
113424 --
113425 --
113426 -- set accounting line type info
113427 --
113428 xla_ae_lines_pkg.SetAcctLineType
113429 (p_component_type => l_component_type
113430 ,p_event_type_code => l_event_type_code
113431 ,p_line_definition_owner_code => l_line_definition_owner_code
113432 ,p_line_definition_code => l_line_definition_code
113433 ,p_accounting_line_code => l_component_code
113434 ,p_accounting_line_type_code => l_component_type_code
113435 ,p_accounting_line_appl_id => l_component_appl_id
113436 ,p_amb_context_code => l_amb_context_code
113437 ,p_entity_code => l_entity_code
113438 ,p_event_class_code => l_event_class_code);
113439 --
113440 -- set accounting class
113441 --
113442 xla_ae_lines_pkg.SetAcctClass(
113443 p_accounting_class_code => 'OFFSET'
113444 , p_ae_header_id => l_ae_header_id
113445 );
113446
113447 --
113448 -- set rounding class
113449 --
113450 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
113451 'OFFSET';
113452
113453 --
113454 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
113455 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
113456 --
113457 -- bulk performance
113458 --
113459 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
113460
113461 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
113462 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
113463
113464 -- 4955764
113465 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113466 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
113467
113468 -- 4458381 Public Sector Enh
113469
113470 --
113471 -- set accounting attributes for the line type
113472 --
113473 l_entered_amt_idx := 3;
113474 l_accted_amt_idx := 8;
113475 l_bflow_applied_to_amt_idx := NULL; -- 5132302
113476 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
113477 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
113478 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
113479 l_rec_acct_attrs.array_char_value(2) := p_source_12;
113480 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
113481 l_rec_acct_attrs.array_num_value(3) := p_source_18;
113482 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
113483 l_rec_acct_attrs.array_char_value(4) := p_source_15;
113484 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
113485 l_rec_acct_attrs.array_date_value(5) := p_source_19;
113486 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
113487 l_rec_acct_attrs.array_num_value(6) := p_source_20;
113488 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
113489 l_rec_acct_attrs.array_char_value(7) := p_source_21;
113490 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
113491 l_rec_acct_attrs.array_num_value(8) := p_source_22;
113492
113493 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
113494 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
113495
113496 ---------------------------------------------------------------------------------------------------------------
113497 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
113498 ---------------------------------------------------------------------------------------------------------------
113499 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
113500
113501 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113502 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
113503
113504 IF xla_accounting_cache_pkg.GetValueChar
113505 (p_source_code => 'LEDGER_CATEGORY_CODE'
113506 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
113507 AND l_bflow_method_code = 'PRIOR_ENTRY'
113508 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
113509 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
113510 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
113511 )
113512 THEN
113513 xla_ae_lines_pkg.BflowUpgEntry
113514 (p_business_method_code => l_bflow_method_code
113515 ,p_business_class_code => l_bflow_class_code
113516 ,p_balance_type => l_balance_type_code);
113517 ELSE
113518 NULL;
113519 -- No business flow processing for business flow method of NONE.
113520 END IF;
113521
113522 --
113523 -- call analytical criteria
113524 --
113525
113526 --
113527 -- call description
113528 --
113529 -- No description or it is inherited.
113530 --
113531 -- call ADRs
113532 -- Bug 4922099
113533 --
113534 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113535 (NVL(l_actual_upg_option, 'N') = 'O') OR
113536 (NVL(l_enc_upg_option, 'N') = 'O')
113537 )
113538 THEN
113539 NULL;
113540 --
113541 --
113542
113543 l_ccid := AcctDerRule_4(
113544 p_application_id => p_application_id
113545 , p_ae_header_id => l_ae_header_id
113546 , p_source_4 => p_source_4
113547 , x_transaction_coa_id => l_adr_transaction_coa_id
113548 , x_accounting_coa_id => l_adr_accounting_coa_id
113549 , x_value_type_code => l_adr_value_type_code
113550 , p_side => 'NA'
113551 );
113552
113553 xla_ae_lines_pkg.set_ccid(
113554 p_code_combination_id => l_ccid
113555 , p_value_type_code => l_adr_value_type_code
113556 , p_transaction_coa_id => l_adr_transaction_coa_id
113557 , p_accounting_coa_id => l_adr_accounting_coa_id
113558 , p_adr_code => 'CST_DEFAULT'
113559 , p_adr_type_code => 'S'
113560 , p_component_type => l_component_type
113561 , p_component_code => l_component_code
113562 , p_component_type_code => l_component_type_code
113563 , p_component_appl_id => l_component_appl_id
113564 , p_amb_context_code => l_amb_context_code
113565 , p_side => 'NA'
113566 );
113567
113568
113569 --
113570 --
113571 END IF;
113572 --
113573 -- Bug 4922099
113574 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
113575 (NVL(l_enc_upg_option, 'N') = 'O')
113576 ) AND
113577 (l_bflow_method_code = 'PRIOR_ENTRY')
113578 )
113579 THEN
113580 IF
113581 --
113582 1 = 2
113583 --
113584 THEN
113585 xla_accounting_err_pkg.build_message
113586 (p_appli_s_name => 'XLA'
113587 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113588 ,p_token_1 => 'LINE_NUMBER'
113589 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
113590 ,p_token_2 => 'LINE_TYPE_NAME'
113591 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
113592 l_component_type
113593 ,l_component_code
113594 ,l_component_type_code
113595 ,l_component_appl_id
113596 ,l_amb_context_code
113597 ,l_entity_code
113598 ,l_event_class_code
113599 )
113600 ,p_token_3 => 'OWNER'
113601 ,p_value_3 => xla_lookups_pkg.get_meaning(
113602 p_lookup_type => 'XLA_OWNER_TYPE'
113603 ,p_lookup_code => l_component_type_code
113604 )
113605 ,p_token_4 => 'PRODUCT_NAME'
113606 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
113607 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
113608 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
113609 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
113610 ,p_ae_header_id => NULL
113611 );
113612
113613 IF (C_LEVEL_ERROR>= g_log_level) THEN
113614 trace
113615 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
113616 ,p_level => C_LEVEL_ERROR
113617 ,p_module => l_log_module);
113618 END IF;
113619 END IF;
113620 END IF;
113621 --
113622 --
113623 ------------------------------------------------------------------------------------------------
113624 -- 4219869 Business Flow
113625 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
113626 -- Prior Entry. Currently, the following code is always generated.
113627 ------------------------------------------------------------------------------------------------
113628 XLA_AE_LINES_PKG.ValidateCurrentLine;
113629
113630 ------------------------------------------------------------------------------------
113631 -- 4219869 Business Flow
113632 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
113633 ------------------------------------------------------------------------------------
113634 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113635
113636 ----------------------------------------------------------------------------------
113637 -- 4219869 Business Flow
113638 -- Update journal entry status -- Need to generate this within IF <condition>
113639 ----------------------------------------------------------------------------------
113640 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113641 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
113642 ,p_balance_type_code => l_balance_type_code
113643 );
113644
113645 -------------------------------------------------------------------------------------------
113646 -- 4262811 - Generate the Accrual Reversal lines
113647 -------------------------------------------------------------------------------------------
113648 BEGIN
113649 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
113650 (g_array_event(p_event_id).array_value_num('header_index'));
113651 IF l_acc_rev_flag IS NULL THEN
113652 l_acc_rev_flag := 'N';
113653 END IF;
113654 EXCEPTION
113655 WHEN OTHERS THEN
113656 l_acc_rev_flag := 'N';
113657 END;
113658 --
113659 IF (l_acc_rev_flag = 'Y') THEN
113660
113661 -- 4645092 ------------------------------------------------------------------------------
113662 -- To allow MPA report to determine if it should generate report process
113663 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
113664 ------------------------------------------------------------------------------------------
113665
113666 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
113667 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
113668 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
113669 -- call ADRs
113670 -- Bug 4922099
113671 --
113672 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
113673 (NVL(l_actual_upg_option, 'N') = 'O') OR
113674 (NVL(l_enc_upg_option, 'N') = 'O')
113675 )
113676 THEN
113677 NULL;
113678 --
113679 --
113680
113681 l_ccid := AcctDerRule_4(
113682 p_application_id => p_application_id
113683 , p_ae_header_id => l_ae_header_id
113684 , p_source_4 => p_source_4
113685 , x_transaction_coa_id => l_adr_transaction_coa_id
113686 , x_accounting_coa_id => l_adr_accounting_coa_id
113687 , x_value_type_code => l_adr_value_type_code
113688 , p_side => 'NA'
113689 );
113690
113691 xla_ae_lines_pkg.set_ccid(
113692 p_code_combination_id => l_ccid
113693 , p_value_type_code => l_adr_value_type_code
113694 , p_transaction_coa_id => l_adr_transaction_coa_id
113695 , p_accounting_coa_id => l_adr_accounting_coa_id
113696 , p_adr_code => 'CST_DEFAULT'
113697 , p_adr_type_code => 'S'
113698 , p_component_type => l_component_type
113699 , p_component_code => l_component_code
113700 , p_component_type_code => l_component_type_code
113701 , p_component_appl_id => l_component_appl_id
113702 , p_amb_context_code => l_amb_context_code
113703 , p_side => 'NA'
113704 );
113705
113706
113707 --
113708 --
113709 END IF;
113710
113711 --
113712 -- Update the line information that should be overwritten
113713 --
113714 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
113715 p_header_num => 1);
113716 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
113717
113718 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
113719
113720 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
113721 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
113722 END IF;
113723
113724 --
113725 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
113726 --
113727 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
113728 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
113729 ELSE
113730 ---------------------------------------------------------------------------------------------------
113731 -- 4262811a Switch Sign
113732 ---------------------------------------------------------------------------------------------------
113733 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
113734 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113735 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113736 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
113737 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113738 -- 5132302
113739 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
113740 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
113741
113742 END IF;
113743
113744 -- 4955764
113745 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
113746 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
113747
113748
113749 XLA_AE_LINES_PKG.ValidateCurrentLine;
113750 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
113751
113752 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
113753 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
113754 ,p_balance_type_code => l_balance_type_code);
113755
113756 END IF;
113757
113758 -----------------------------------------------------------------------------------------
113759 -- 4262811 Multiperiod Accounting
113760 -----------------------------------------------------------------------------------------
113761 -- No MPA option is assigned.
113762
113763
113764 END IF;
113765 END IF;
113766 --
113767
113768 --
113769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113770 trace
113771 (p_msg => 'END of AcctLineType_206'
113772 ,p_level => C_LEVEL_PROCEDURE
113773 ,p_module => l_log_module);
113774 END IF;
113775 --
113776 EXCEPTION
113777 WHEN xla_exceptions_pkg.application_exception THEN
113778 RAISE;
113779 WHEN OTHERS THEN
113780 xla_exceptions_pkg.raise_message
113781 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_206');
113782 END AcctLineType_206;
113783 --
113784
113785 ---------------------------------------
113786 --
113787 -- PRIVATE FUNCTION
113788 -- AcctLineType_207
113789 --
113790 ---------------------------------------
113791 PROCEDURE AcctLineType_207 (
113792 p_application_id IN NUMBER
113793 ,p_event_id IN NUMBER
113794 ,p_calculate_acctd_flag IN VARCHAR2
113795 ,p_calculate_g_l_flag IN VARCHAR2
113796 ,p_actual_flag IN OUT VARCHAR2
113797 ,p_balance_type_code OUT VARCHAR2
113798 ,p_gain_or_loss_ref OUT VARCHAR2
113799
113800 --Cost Management Default Account
113801 , p_source_4 IN NUMBER
113802 --DISTRIBUTION_IDENTIFIER
113803 , p_source_11 IN NUMBER
113804 --Distribution Type
113805 , p_source_12 IN VARCHAR2
113806 , p_source_12_meaning IN VARCHAR2
113807 --Entered Currency Code
113808 , p_source_15 IN VARCHAR2
113809 --Entered Amount
113810 , p_source_18 IN NUMBER
113811 --Currency Conversion Date
113812 , p_source_19 IN DATE
113813 --Currency Conversion Rate
113814 , p_source_20 IN NUMBER
113815 --Currency Conversion Type
113816 , p_source_21 IN VARCHAR2
113817 --Accounted Amount
113818 , p_source_22 IN NUMBER
113819 --Accounting Line Type
113820 , p_source_24 IN NUMBER
113821 )
113822 IS
113823
113824 l_component_type VARCHAR2(80);
113825 l_component_code VARCHAR2(30);
113826 l_component_type_code VARCHAR2(1);
113827 l_component_appl_id INTEGER;
113828 l_amb_context_code VARCHAR2(30);
113829 l_entity_code VARCHAR2(30);
113830 l_event_class_code VARCHAR2(30);
113831 l_ae_header_id NUMBER;
113832 l_event_type_code VARCHAR2(30);
113833 l_line_definition_code VARCHAR2(30);
113834 l_line_definition_owner_code VARCHAR2(1);
113835 --
113836 -- adr variables
113837 l_segment VARCHAR2(30);
113838 l_ccid NUMBER;
113839 l_adr_transaction_coa_id NUMBER;
113840 l_adr_accounting_coa_id NUMBER;
113841 l_adr_flexfield_segment_code VARCHAR2(30);
113842 l_adr_flex_value_set_id NUMBER;
113843 l_adr_value_type_code VARCHAR2(30);
113844 l_adr_value_combination_id NUMBER;
113845 l_adr_value_segment_code VARCHAR2(30);
113846
113847 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
113848 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
113849 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
113850 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
113851
113852 -- 4262811 Variables ------------------------------------------------------------------------------------------
113853 l_entered_amt_idx NUMBER;
113854 l_accted_amt_idx NUMBER;
113855 l_acc_rev_flag VARCHAR2(1);
113856 l_accrual_line_num NUMBER;
113857 l_tmp_amt NUMBER;
113858 l_acc_rev_natural_side_code VARCHAR2(1);
113859
113860 l_num_entries NUMBER;
113861 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
113862 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
113863 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
113864 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
113865 l_recog_line_1 NUMBER;
113866 l_recog_line_2 NUMBER;
113867
113868 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
113869 l_bflow_applied_to_amt NUMBER; -- 5132302
113870 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
113871
113872 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
113873
113874 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
113875 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
113876
113877 ---------------------------------------------------------------------------------------------------------------
113878
113879
113880 --
113881 -- bulk performance
113882 --
113883 l_balance_type_code VARCHAR2(1);
113884 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
113885 l_log_module VARCHAR2(240);
113886
113887 --
113888 -- Upgrade strategy
113889 --
113890 l_actual_upg_option VARCHAR2(1);
113891 l_enc_upg_option VARCHAR2(1);
113892
113893 --
113894 BEGIN
113895 --
113896 IF g_log_enabled THEN
113897 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_207';
113898 END IF;
113899 --
113900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
113901
113902 trace
113903 (p_msg => 'BEGIN of AcctLineType_207'
113904 ,p_level => C_LEVEL_PROCEDURE
113905 ,p_module => l_log_module);
113906
113907 END IF;
113908 --
113909 l_component_type := 'AMB_JLT';
113910 l_component_code := 'OFFSET';
113911 l_component_type_code := 'S';
113912 l_component_appl_id := 707;
113913 l_amb_context_code := 'DEFAULT';
113914 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
113915 l_event_class_code := 'USER_DEFINE';
113916 l_event_type_code := 'UFOB_SHIP_SENDER_SHIP_TP';
113917 l_line_definition_owner_code := 'S';
113918 l_line_definition_code := 'USER_FOB_SHIP_SENDER_SHIP_TP';
113919 --
113920 l_balance_type_code := 'A';
113921 l_segment := NULL;
113922 l_ccid := NULL;
113923 l_adr_transaction_coa_id := NULL;
113924 l_adr_accounting_coa_id := NULL;
113925 l_adr_flexfield_segment_code := NULL;
113926 l_adr_flex_value_set_id := NULL;
113927 l_adr_value_type_code := NULL;
113928 l_adr_value_combination_id := NULL;
113929 l_adr_value_segment_code := NULL;
113930
113931 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
113932 l_bflow_class_code := ''; -- 4219869 Business Flow
113933 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
113934 l_budgetary_control_flag := 'N';
113935
113936 l_bflow_applied_to_amt_idx := NULL; -- 5132302
113937 l_bflow_applied_to_amt := NULL; -- 5132302
113938 l_entered_amt_idx := NULL; -- 4262811
113939 l_accted_amt_idx := NULL; -- 4262811
113940 l_acc_rev_flag := NULL; -- 4262811
113941 l_accrual_line_num := NULL; -- 4262811
113942 l_tmp_amt := NULL; -- 4262811
113943 --
113944
113945 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
113946 l_balance_type_code <> 'B' THEN
113947 IF NVL(p_source_24,9E125) = 2
113948 THEN
113949
113950 --
113951 XLA_AE_LINES_PKG.SetNewLine;
113952
113953 p_balance_type_code := l_balance_type_code;
113954 -- set the flag so later we will know whether the gain loss line needs to be created
113955
113956 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
113957 p_actual_flag :='A';
113958 END IF;
113959
113960 --
113961 -- bulk performance
113962 --
113963 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
113964 p_header_num => 0); -- 4262811
113965 --
113966 -- set accounting line options
113967 --
113968 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
113969 p_natural_side_code => 'D'
113970 , p_gain_or_loss_flag => 'N'
113971 , p_gl_transfer_mode_code => 'S'
113972 , p_acct_entry_type_code => 'A'
113973 , p_switch_side_flag => 'Y'
113974 , p_merge_duplicate_code => 'N'
113975 );
113976 --
113977 l_acc_rev_natural_side_code := 'C'; -- 4262811
113978 --
113979 --
113980 -- set accounting line type info
113981 --
113982 xla_ae_lines_pkg.SetAcctLineType
113983 (p_component_type => l_component_type
113984 ,p_event_type_code => l_event_type_code
113985 ,p_line_definition_owner_code => l_line_definition_owner_code
113986 ,p_line_definition_code => l_line_definition_code
113987 ,p_accounting_line_code => l_component_code
113988 ,p_accounting_line_type_code => l_component_type_code
113989 ,p_accounting_line_appl_id => l_component_appl_id
113990 ,p_amb_context_code => l_amb_context_code
113991 ,p_entity_code => l_entity_code
113992 ,p_event_class_code => l_event_class_code);
113993 --
113994 -- set accounting class
113995 --
113996 xla_ae_lines_pkg.SetAcctClass(
113997 p_accounting_class_code => 'OFFSET'
113998 , p_ae_header_id => l_ae_header_id
113999 );
114000
114001 --
114002 -- set rounding class
114003 --
114004 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114005 'OFFSET';
114006
114007 --
114008 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114009 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114010 --
114011 -- bulk performance
114012 --
114013 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114014
114015 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114016 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114017
114018 -- 4955764
114019 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114020 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114021
114022 -- 4458381 Public Sector Enh
114023
114024 --
114025 -- set accounting attributes for the line type
114026 --
114027 l_entered_amt_idx := 3;
114028 l_accted_amt_idx := 8;
114029 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114030 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114031 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
114032 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114033 l_rec_acct_attrs.array_char_value(2) := p_source_12;
114034 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114035 l_rec_acct_attrs.array_num_value(3) := p_source_18;
114036 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114037 l_rec_acct_attrs.array_char_value(4) := p_source_15;
114038 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114039 l_rec_acct_attrs.array_date_value(5) := p_source_19;
114040 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114041 l_rec_acct_attrs.array_num_value(6) := p_source_20;
114042 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114043 l_rec_acct_attrs.array_char_value(7) := p_source_21;
114044 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114045 l_rec_acct_attrs.array_num_value(8) := p_source_22;
114046
114047 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114048 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114049
114050 ---------------------------------------------------------------------------------------------------------------
114051 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114052 ---------------------------------------------------------------------------------------------------------------
114053 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114054
114055 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114056 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114057
114058 IF xla_accounting_cache_pkg.GetValueChar
114059 (p_source_code => 'LEDGER_CATEGORY_CODE'
114060 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114061 AND l_bflow_method_code = 'PRIOR_ENTRY'
114062 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114063 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114064 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114065 )
114066 THEN
114067 xla_ae_lines_pkg.BflowUpgEntry
114068 (p_business_method_code => l_bflow_method_code
114069 ,p_business_class_code => l_bflow_class_code
114070 ,p_balance_type => l_balance_type_code);
114071 ELSE
114072 NULL;
114073 -- No business flow processing for business flow method of NONE.
114074 END IF;
114075
114076 --
114077 -- call analytical criteria
114078 --
114079
114080 --
114081 -- call description
114082 --
114083 -- No description or it is inherited.
114084 --
114085 -- call ADRs
114086 -- Bug 4922099
114087 --
114088 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114089 (NVL(l_actual_upg_option, 'N') = 'O') OR
114090 (NVL(l_enc_upg_option, 'N') = 'O')
114091 )
114092 THEN
114093 NULL;
114094 --
114095 --
114096
114097 l_ccid := AcctDerRule_4(
114098 p_application_id => p_application_id
114099 , p_ae_header_id => l_ae_header_id
114100 , p_source_4 => p_source_4
114101 , x_transaction_coa_id => l_adr_transaction_coa_id
114102 , x_accounting_coa_id => l_adr_accounting_coa_id
114103 , x_value_type_code => l_adr_value_type_code
114104 , p_side => 'NA'
114105 );
114106
114107 xla_ae_lines_pkg.set_ccid(
114108 p_code_combination_id => l_ccid
114109 , p_value_type_code => l_adr_value_type_code
114110 , p_transaction_coa_id => l_adr_transaction_coa_id
114111 , p_accounting_coa_id => l_adr_accounting_coa_id
114112 , p_adr_code => 'CST_DEFAULT'
114113 , p_adr_type_code => 'S'
114114 , p_component_type => l_component_type
114115 , p_component_code => l_component_code
114116 , p_component_type_code => l_component_type_code
114117 , p_component_appl_id => l_component_appl_id
114118 , p_amb_context_code => l_amb_context_code
114119 , p_side => 'NA'
114120 );
114121
114122
114123 --
114124 --
114125 END IF;
114126 --
114127 -- Bug 4922099
114128 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114129 (NVL(l_enc_upg_option, 'N') = 'O')
114130 ) AND
114131 (l_bflow_method_code = 'PRIOR_ENTRY')
114132 )
114133 THEN
114134 IF
114135 --
114136 1 = 2
114137 --
114138 THEN
114139 xla_accounting_err_pkg.build_message
114140 (p_appli_s_name => 'XLA'
114141 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114142 ,p_token_1 => 'LINE_NUMBER'
114143 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
114144 ,p_token_2 => 'LINE_TYPE_NAME'
114145 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
114146 l_component_type
114147 ,l_component_code
114148 ,l_component_type_code
114149 ,l_component_appl_id
114150 ,l_amb_context_code
114151 ,l_entity_code
114152 ,l_event_class_code
114153 )
114154 ,p_token_3 => 'OWNER'
114155 ,p_value_3 => xla_lookups_pkg.get_meaning(
114156 p_lookup_type => 'XLA_OWNER_TYPE'
114157 ,p_lookup_code => l_component_type_code
114158 )
114159 ,p_token_4 => 'PRODUCT_NAME'
114160 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114161 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114162 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114163 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114164 ,p_ae_header_id => NULL
114165 );
114166
114167 IF (C_LEVEL_ERROR>= g_log_level) THEN
114168 trace
114169 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114170 ,p_level => C_LEVEL_ERROR
114171 ,p_module => l_log_module);
114172 END IF;
114173 END IF;
114174 END IF;
114175 --
114176 --
114177 ------------------------------------------------------------------------------------------------
114178 -- 4219869 Business Flow
114179 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114180 -- Prior Entry. Currently, the following code is always generated.
114181 ------------------------------------------------------------------------------------------------
114182 XLA_AE_LINES_PKG.ValidateCurrentLine;
114183
114184 ------------------------------------------------------------------------------------
114185 -- 4219869 Business Flow
114186 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114187 ------------------------------------------------------------------------------------
114188 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114189
114190 ----------------------------------------------------------------------------------
114191 -- 4219869 Business Flow
114192 -- Update journal entry status -- Need to generate this within IF <condition>
114193 ----------------------------------------------------------------------------------
114194 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114195 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114196 ,p_balance_type_code => l_balance_type_code
114197 );
114198
114199 -------------------------------------------------------------------------------------------
114200 -- 4262811 - Generate the Accrual Reversal lines
114201 -------------------------------------------------------------------------------------------
114202 BEGIN
114203 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114204 (g_array_event(p_event_id).array_value_num('header_index'));
114205 IF l_acc_rev_flag IS NULL THEN
114206 l_acc_rev_flag := 'N';
114207 END IF;
114208 EXCEPTION
114209 WHEN OTHERS THEN
114210 l_acc_rev_flag := 'N';
114211 END;
114212 --
114213 IF (l_acc_rev_flag = 'Y') THEN
114214
114215 -- 4645092 ------------------------------------------------------------------------------
114216 -- To allow MPA report to determine if it should generate report process
114217 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114218 ------------------------------------------------------------------------------------------
114219
114220 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114221 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114222 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
114223 -- call ADRs
114224 -- Bug 4922099
114225 --
114226 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114227 (NVL(l_actual_upg_option, 'N') = 'O') OR
114228 (NVL(l_enc_upg_option, 'N') = 'O')
114229 )
114230 THEN
114231 NULL;
114232 --
114233 --
114234
114235 l_ccid := AcctDerRule_4(
114236 p_application_id => p_application_id
114237 , p_ae_header_id => l_ae_header_id
114238 , p_source_4 => p_source_4
114239 , x_transaction_coa_id => l_adr_transaction_coa_id
114240 , x_accounting_coa_id => l_adr_accounting_coa_id
114241 , x_value_type_code => l_adr_value_type_code
114242 , p_side => 'NA'
114243 );
114244
114245 xla_ae_lines_pkg.set_ccid(
114246 p_code_combination_id => l_ccid
114247 , p_value_type_code => l_adr_value_type_code
114248 , p_transaction_coa_id => l_adr_transaction_coa_id
114249 , p_accounting_coa_id => l_adr_accounting_coa_id
114250 , p_adr_code => 'CST_DEFAULT'
114251 , p_adr_type_code => 'S'
114252 , p_component_type => l_component_type
114253 , p_component_code => l_component_code
114254 , p_component_type_code => l_component_type_code
114255 , p_component_appl_id => l_component_appl_id
114256 , p_amb_context_code => l_amb_context_code
114257 , p_side => 'NA'
114258 );
114259
114260
114261 --
114262 --
114263 END IF;
114264
114265 --
114266 -- Update the line information that should be overwritten
114267 --
114268 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114269 p_header_num => 1);
114270 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
114271
114272 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114273
114274 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
114275 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114276 END IF;
114277
114278 --
114279 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114280 --
114281 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114282 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
114283 ELSE
114284 ---------------------------------------------------------------------------------------------------
114285 -- 4262811a Switch Sign
114286 ---------------------------------------------------------------------------------------------------
114287 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
114288 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114289 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114290 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114291 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114292 -- 5132302
114293 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114294 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114295
114296 END IF;
114297
114298 -- 4955764
114299 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114300 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114301
114302
114303 XLA_AE_LINES_PKG.ValidateCurrentLine;
114304 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114305
114306 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114307 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114308 ,p_balance_type_code => l_balance_type_code);
114309
114310 END IF;
114311
114312 -----------------------------------------------------------------------------------------
114313 -- 4262811 Multiperiod Accounting
114314 -----------------------------------------------------------------------------------------
114315 -- No MPA option is assigned.
114316
114317
114318 END IF;
114319 END IF;
114320 --
114321
114322 --
114323 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114324 trace
114325 (p_msg => 'END of AcctLineType_207'
114326 ,p_level => C_LEVEL_PROCEDURE
114327 ,p_module => l_log_module);
114328 END IF;
114329 --
114330 EXCEPTION
114331 WHEN xla_exceptions_pkg.application_exception THEN
114332 RAISE;
114333 WHEN OTHERS THEN
114334 xla_exceptions_pkg.raise_message
114335 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_207');
114336 END AcctLineType_207;
114337 --
114338
114339 ---------------------------------------
114340 --
114341 -- PRIVATE FUNCTION
114342 -- AcctLineType_208
114343 --
114344 ---------------------------------------
114345 PROCEDURE AcctLineType_208 (
114346 p_application_id IN NUMBER
114347 ,p_event_id IN NUMBER
114348 ,p_calculate_acctd_flag IN VARCHAR2
114349 ,p_calculate_g_l_flag IN VARCHAR2
114350 ,p_actual_flag IN OUT VARCHAR2
114351 ,p_balance_type_code OUT VARCHAR2
114352 ,p_gain_or_loss_ref OUT VARCHAR2
114353
114354 --Cost Management Default Account
114355 , p_source_4 IN NUMBER
114356 --DISTRIBUTION_IDENTIFIER
114357 , p_source_11 IN NUMBER
114358 --Distribution Type
114359 , p_source_12 IN VARCHAR2
114360 , p_source_12_meaning IN VARCHAR2
114361 --Entered Currency Code
114362 , p_source_15 IN VARCHAR2
114363 --Entered Amount
114364 , p_source_18 IN NUMBER
114365 --Currency Conversion Date
114366 , p_source_19 IN DATE
114367 --Currency Conversion Rate
114368 , p_source_20 IN NUMBER
114369 --Currency Conversion Type
114370 , p_source_21 IN VARCHAR2
114371 --Accounted Amount
114372 , p_source_22 IN NUMBER
114373 --Accounting Line Type
114374 , p_source_24 IN NUMBER
114375 )
114376 IS
114377
114378 l_component_type VARCHAR2(80);
114379 l_component_code VARCHAR2(30);
114380 l_component_type_code VARCHAR2(1);
114381 l_component_appl_id INTEGER;
114382 l_amb_context_code VARCHAR2(30);
114383 l_entity_code VARCHAR2(30);
114384 l_event_class_code VARCHAR2(30);
114385 l_ae_header_id NUMBER;
114386 l_event_type_code VARCHAR2(30);
114387 l_line_definition_code VARCHAR2(30);
114388 l_line_definition_owner_code VARCHAR2(1);
114389 --
114390 -- adr variables
114391 l_segment VARCHAR2(30);
114392 l_ccid NUMBER;
114393 l_adr_transaction_coa_id NUMBER;
114394 l_adr_accounting_coa_id NUMBER;
114395 l_adr_flexfield_segment_code VARCHAR2(30);
114396 l_adr_flex_value_set_id NUMBER;
114397 l_adr_value_type_code VARCHAR2(30);
114398 l_adr_value_combination_id NUMBER;
114399 l_adr_value_segment_code VARCHAR2(30);
114400
114401 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
114402 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
114403 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
114404 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
114405
114406 -- 4262811 Variables ------------------------------------------------------------------------------------------
114407 l_entered_amt_idx NUMBER;
114408 l_accted_amt_idx NUMBER;
114409 l_acc_rev_flag VARCHAR2(1);
114410 l_accrual_line_num NUMBER;
114411 l_tmp_amt NUMBER;
114412 l_acc_rev_natural_side_code VARCHAR2(1);
114413
114414 l_num_entries NUMBER;
114415 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
114416 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
114417 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
114418 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
114419 l_recog_line_1 NUMBER;
114420 l_recog_line_2 NUMBER;
114421
114422 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
114423 l_bflow_applied_to_amt NUMBER; -- 5132302
114424 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
114425
114426 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
114427
114428 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
114429 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
114430
114431 ---------------------------------------------------------------------------------------------------------------
114432
114433
114434 --
114435 -- bulk performance
114436 --
114437 l_balance_type_code VARCHAR2(1);
114438 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
114439 l_log_module VARCHAR2(240);
114440
114441 --
114442 -- Upgrade strategy
114443 --
114444 l_actual_upg_option VARCHAR2(1);
114445 l_enc_upg_option VARCHAR2(1);
114446
114447 --
114448 BEGIN
114449 --
114450 IF g_log_enabled THEN
114451 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_208';
114452 END IF;
114453 --
114454 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114455
114456 trace
114457 (p_msg => 'BEGIN of AcctLineType_208'
114458 ,p_level => C_LEVEL_PROCEDURE
114459 ,p_module => l_log_module);
114460
114461 END IF;
114462 --
114463 l_component_type := 'AMB_JLT';
114464 l_component_code := 'OFFSET';
114465 l_component_type_code := 'S';
114466 l_component_appl_id := 707;
114467 l_amb_context_code := 'DEFAULT';
114468 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
114469 l_event_class_code := 'WIP_MTL';
114470 l_event_type_code := 'WIP_MTL_ALL';
114471 l_line_definition_owner_code := 'S';
114472 l_line_definition_code := 'WIP_MTL';
114473 --
114474 l_balance_type_code := 'A';
114475 l_segment := NULL;
114476 l_ccid := NULL;
114477 l_adr_transaction_coa_id := NULL;
114478 l_adr_accounting_coa_id := NULL;
114479 l_adr_flexfield_segment_code := NULL;
114480 l_adr_flex_value_set_id := NULL;
114481 l_adr_value_type_code := NULL;
114482 l_adr_value_combination_id := NULL;
114483 l_adr_value_segment_code := NULL;
114484
114485 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
114486 l_bflow_class_code := ''; -- 4219869 Business Flow
114487 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
114488 l_budgetary_control_flag := 'N';
114489
114490 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114491 l_bflow_applied_to_amt := NULL; -- 5132302
114492 l_entered_amt_idx := NULL; -- 4262811
114493 l_accted_amt_idx := NULL; -- 4262811
114494 l_acc_rev_flag := NULL; -- 4262811
114495 l_accrual_line_num := NULL; -- 4262811
114496 l_tmp_amt := NULL; -- 4262811
114497 --
114498
114499 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
114500 l_balance_type_code <> 'B' THEN
114501 IF NVL(p_source_24,9E125) = 2
114502 THEN
114503
114504 --
114505 XLA_AE_LINES_PKG.SetNewLine;
114506
114507 p_balance_type_code := l_balance_type_code;
114508 -- set the flag so later we will know whether the gain loss line needs to be created
114509
114510 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
114511 p_actual_flag :='A';
114512 END IF;
114513
114514 --
114515 -- bulk performance
114516 --
114517 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
114518 p_header_num => 0); -- 4262811
114519 --
114520 -- set accounting line options
114521 --
114522 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
114523 p_natural_side_code => 'D'
114524 , p_gain_or_loss_flag => 'N'
114525 , p_gl_transfer_mode_code => 'S'
114526 , p_acct_entry_type_code => 'A'
114527 , p_switch_side_flag => 'Y'
114528 , p_merge_duplicate_code => 'N'
114529 );
114530 --
114531 l_acc_rev_natural_side_code := 'C'; -- 4262811
114532 --
114533 --
114534 -- set accounting line type info
114535 --
114536 xla_ae_lines_pkg.SetAcctLineType
114537 (p_component_type => l_component_type
114538 ,p_event_type_code => l_event_type_code
114539 ,p_line_definition_owner_code => l_line_definition_owner_code
114540 ,p_line_definition_code => l_line_definition_code
114541 ,p_accounting_line_code => l_component_code
114542 ,p_accounting_line_type_code => l_component_type_code
114543 ,p_accounting_line_appl_id => l_component_appl_id
114544 ,p_amb_context_code => l_amb_context_code
114545 ,p_entity_code => l_entity_code
114546 ,p_event_class_code => l_event_class_code);
114547 --
114548 -- set accounting class
114549 --
114550 xla_ae_lines_pkg.SetAcctClass(
114551 p_accounting_class_code => 'OFFSET'
114552 , p_ae_header_id => l_ae_header_id
114553 );
114554
114555 --
114556 -- set rounding class
114557 --
114558 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
114559 'OFFSET';
114560
114561 --
114562 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
114563 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
114564 --
114565 -- bulk performance
114566 --
114567 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
114568
114569 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
114570 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
114571
114572 -- 4955764
114573 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114574 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
114575
114576 -- 4458381 Public Sector Enh
114577
114578 --
114579 -- set accounting attributes for the line type
114580 --
114581 l_entered_amt_idx := 3;
114582 l_accted_amt_idx := 8;
114583 l_bflow_applied_to_amt_idx := NULL; -- 5132302
114584 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
114585 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
114586 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
114587 l_rec_acct_attrs.array_char_value(2) := p_source_12;
114588 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
114589 l_rec_acct_attrs.array_num_value(3) := p_source_18;
114590 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
114591 l_rec_acct_attrs.array_char_value(4) := p_source_15;
114592 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
114593 l_rec_acct_attrs.array_date_value(5) := p_source_19;
114594 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
114595 l_rec_acct_attrs.array_num_value(6) := p_source_20;
114596 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
114597 l_rec_acct_attrs.array_char_value(7) := p_source_21;
114598 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
114599 l_rec_acct_attrs.array_num_value(8) := p_source_22;
114600
114601 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
114602 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
114603
114604 ---------------------------------------------------------------------------------------------------------------
114605 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
114606 ---------------------------------------------------------------------------------------------------------------
114607 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
114608
114609 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114610 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
114611
114612 IF xla_accounting_cache_pkg.GetValueChar
114613 (p_source_code => 'LEDGER_CATEGORY_CODE'
114614 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
114615 AND l_bflow_method_code = 'PRIOR_ENTRY'
114616 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
114617 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
114618 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
114619 )
114620 THEN
114621 xla_ae_lines_pkg.BflowUpgEntry
114622 (p_business_method_code => l_bflow_method_code
114623 ,p_business_class_code => l_bflow_class_code
114624 ,p_balance_type => l_balance_type_code);
114625 ELSE
114626 NULL;
114627 -- No business flow processing for business flow method of NONE.
114628 END IF;
114629
114630 --
114631 -- call analytical criteria
114632 --
114633
114634 --
114635 -- call description
114636 --
114637 -- No description or it is inherited.
114638 --
114639 -- call ADRs
114640 -- Bug 4922099
114641 --
114642 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114643 (NVL(l_actual_upg_option, 'N') = 'O') OR
114644 (NVL(l_enc_upg_option, 'N') = 'O')
114645 )
114646 THEN
114647 NULL;
114648 --
114649 --
114650
114651 l_ccid := AcctDerRule_4(
114652 p_application_id => p_application_id
114653 , p_ae_header_id => l_ae_header_id
114654 , p_source_4 => p_source_4
114655 , x_transaction_coa_id => l_adr_transaction_coa_id
114656 , x_accounting_coa_id => l_adr_accounting_coa_id
114657 , x_value_type_code => l_adr_value_type_code
114658 , p_side => 'NA'
114659 );
114660
114661 xla_ae_lines_pkg.set_ccid(
114662 p_code_combination_id => l_ccid
114663 , p_value_type_code => l_adr_value_type_code
114664 , p_transaction_coa_id => l_adr_transaction_coa_id
114665 , p_accounting_coa_id => l_adr_accounting_coa_id
114666 , p_adr_code => 'CST_DEFAULT'
114667 , p_adr_type_code => 'S'
114668 , p_component_type => l_component_type
114669 , p_component_code => l_component_code
114670 , p_component_type_code => l_component_type_code
114671 , p_component_appl_id => l_component_appl_id
114672 , p_amb_context_code => l_amb_context_code
114673 , p_side => 'NA'
114674 );
114675
114676
114677 --
114678 --
114679 END IF;
114680 --
114681 -- Bug 4922099
114682 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
114683 (NVL(l_enc_upg_option, 'N') = 'O')
114684 ) AND
114685 (l_bflow_method_code = 'PRIOR_ENTRY')
114686 )
114687 THEN
114688 IF
114689 --
114690 1 = 2
114691 --
114692 THEN
114693 xla_accounting_err_pkg.build_message
114694 (p_appli_s_name => 'XLA'
114695 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114696 ,p_token_1 => 'LINE_NUMBER'
114697 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
114698 ,p_token_2 => 'LINE_TYPE_NAME'
114699 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
114700 l_component_type
114701 ,l_component_code
114702 ,l_component_type_code
114703 ,l_component_appl_id
114704 ,l_amb_context_code
114705 ,l_entity_code
114706 ,l_event_class_code
114707 )
114708 ,p_token_3 => 'OWNER'
114709 ,p_value_3 => xla_lookups_pkg.get_meaning(
114710 p_lookup_type => 'XLA_OWNER_TYPE'
114711 ,p_lookup_code => l_component_type_code
114712 )
114713 ,p_token_4 => 'PRODUCT_NAME'
114714 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
114715 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
114716 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
114717 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
114718 ,p_ae_header_id => NULL
114719 );
114720
114721 IF (C_LEVEL_ERROR>= g_log_level) THEN
114722 trace
114723 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
114724 ,p_level => C_LEVEL_ERROR
114725 ,p_module => l_log_module);
114726 END IF;
114727 END IF;
114728 END IF;
114729 --
114730 --
114731 ------------------------------------------------------------------------------------------------
114732 -- 4219869 Business Flow
114733 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
114734 -- Prior Entry. Currently, the following code is always generated.
114735 ------------------------------------------------------------------------------------------------
114736 XLA_AE_LINES_PKG.ValidateCurrentLine;
114737
114738 ------------------------------------------------------------------------------------
114739 -- 4219869 Business Flow
114740 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
114741 ------------------------------------------------------------------------------------
114742 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114743
114744 ----------------------------------------------------------------------------------
114745 -- 4219869 Business Flow
114746 -- Update journal entry status -- Need to generate this within IF <condition>
114747 ----------------------------------------------------------------------------------
114748 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114749 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
114750 ,p_balance_type_code => l_balance_type_code
114751 );
114752
114753 -------------------------------------------------------------------------------------------
114754 -- 4262811 - Generate the Accrual Reversal lines
114755 -------------------------------------------------------------------------------------------
114756 BEGIN
114757 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
114758 (g_array_event(p_event_id).array_value_num('header_index'));
114759 IF l_acc_rev_flag IS NULL THEN
114760 l_acc_rev_flag := 'N';
114761 END IF;
114762 EXCEPTION
114763 WHEN OTHERS THEN
114764 l_acc_rev_flag := 'N';
114765 END;
114766 --
114767 IF (l_acc_rev_flag = 'Y') THEN
114768
114769 -- 4645092 ------------------------------------------------------------------------------
114770 -- To allow MPA report to determine if it should generate report process
114771 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
114772 ------------------------------------------------------------------------------------------
114773
114774 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
114775 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
114776 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
114777 -- call ADRs
114778 -- Bug 4922099
114779 --
114780 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
114781 (NVL(l_actual_upg_option, 'N') = 'O') OR
114782 (NVL(l_enc_upg_option, 'N') = 'O')
114783 )
114784 THEN
114785 NULL;
114786 --
114787 --
114788
114789 l_ccid := AcctDerRule_4(
114790 p_application_id => p_application_id
114791 , p_ae_header_id => l_ae_header_id
114792 , p_source_4 => p_source_4
114793 , x_transaction_coa_id => l_adr_transaction_coa_id
114794 , x_accounting_coa_id => l_adr_accounting_coa_id
114795 , x_value_type_code => l_adr_value_type_code
114796 , p_side => 'NA'
114797 );
114798
114799 xla_ae_lines_pkg.set_ccid(
114800 p_code_combination_id => l_ccid
114801 , p_value_type_code => l_adr_value_type_code
114802 , p_transaction_coa_id => l_adr_transaction_coa_id
114803 , p_accounting_coa_id => l_adr_accounting_coa_id
114804 , p_adr_code => 'CST_DEFAULT'
114805 , p_adr_type_code => 'S'
114806 , p_component_type => l_component_type
114807 , p_component_code => l_component_code
114808 , p_component_type_code => l_component_type_code
114809 , p_component_appl_id => l_component_appl_id
114810 , p_amb_context_code => l_amb_context_code
114811 , p_side => 'NA'
114812 );
114813
114814
114815 --
114816 --
114817 END IF;
114818
114819 --
114820 -- Update the line information that should be overwritten
114821 --
114822 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
114823 p_header_num => 1);
114824 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
114825
114826 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
114827
114828 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
114829 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
114830 END IF;
114831
114832 --
114833 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
114834 --
114835 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
114836 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
114837 ELSE
114838 ---------------------------------------------------------------------------------------------------
114839 -- 4262811a Switch Sign
114840 ---------------------------------------------------------------------------------------------------
114841 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
114842 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114843 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114844 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
114845 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114846 -- 5132302
114847 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
114848 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
114849
114850 END IF;
114851
114852 -- 4955764
114853 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
114854 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
114855
114856
114857 XLA_AE_LINES_PKG.ValidateCurrentLine;
114858 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
114859
114860 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
114861 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
114862 ,p_balance_type_code => l_balance_type_code);
114863
114864 END IF;
114865
114866 -----------------------------------------------------------------------------------------
114867 -- 4262811 Multiperiod Accounting
114868 -----------------------------------------------------------------------------------------
114869 -- No MPA option is assigned.
114870
114871
114872 END IF;
114873 END IF;
114874 --
114875
114876 --
114877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
114878 trace
114879 (p_msg => 'END of AcctLineType_208'
114880 ,p_level => C_LEVEL_PROCEDURE
114881 ,p_module => l_log_module);
114882 END IF;
114883 --
114884 EXCEPTION
114885 WHEN xla_exceptions_pkg.application_exception THEN
114886 RAISE;
114887 WHEN OTHERS THEN
114888 xla_exceptions_pkg.raise_message
114889 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_208');
114890 END AcctLineType_208;
114891 --
114892
114893 ---------------------------------------
114894 --
114895 -- PRIVATE FUNCTION
114896 -- AcctLineType_209
114897 --
114898 ---------------------------------------
114899 PROCEDURE AcctLineType_209 (
114900 p_application_id IN NUMBER
114901 ,p_event_id IN NUMBER
114902 ,p_calculate_acctd_flag IN VARCHAR2
114903 ,p_calculate_g_l_flag IN VARCHAR2
114904 ,p_actual_flag IN OUT VARCHAR2
114905 ,p_balance_type_code OUT VARCHAR2
114906 ,p_gain_or_loss_ref OUT VARCHAR2
114907
114908 --Cost Management Default Account
114909 , p_source_4 IN NUMBER
114910 --Applied to Application ID
114911 , p_source_6 IN NUMBER
114912 --Applied to Distribution Link Type
114913 , p_source_7 IN VARCHAR2
114914 --Applied to Entity Code
114915 , p_source_8 IN VARCHAR2
114916 --DISTRIBUTION_IDENTIFIER
114917 , p_source_11 IN NUMBER
114918 --Distribution Type
114919 , p_source_12 IN VARCHAR2
114920 , p_source_12_meaning IN VARCHAR2
114921 --Encumbrance Reversal Amount Entered
114922 , p_source_14 IN NUMBER
114923 --Entered Currency Code
114924 , p_source_15 IN VARCHAR2
114925 --Transaction Encumbrance Reversal Amount
114926 , p_source_16 IN NUMBER
114927 --Entered Amount
114928 , p_source_18 IN NUMBER
114929 --Currency Conversion Date
114930 , p_source_19 IN DATE
114931 --Currency Conversion Rate
114932 , p_source_20 IN NUMBER
114933 --Currency Conversion Type
114934 , p_source_21 IN VARCHAR2
114935 --Accounted Amount
114936 , p_source_22 IN NUMBER
114937 --Accounting Line Type
114938 , p_source_24 IN NUMBER
114939 --Costing Encumbrance Upgrade Option
114940 , p_source_27 IN VARCHAR2
114941 --TXN_PO_DISTRIBUTION_ID
114942 , p_source_28 IN NUMBER
114943 --TXN_PO_HEADER_ID
114944 , p_source_29 IN NUMBER
114945 --Requisition Budget Account
114946 , p_source_30 IN NUMBER
114947 --Requisition Encumbrance Type Identifier
114948 , p_source_31 IN NUMBER
114949 )
114950 IS
114951
114952 l_component_type VARCHAR2(80);
114953 l_component_code VARCHAR2(30);
114954 l_component_type_code VARCHAR2(1);
114955 l_component_appl_id INTEGER;
114956 l_amb_context_code VARCHAR2(30);
114957 l_entity_code VARCHAR2(30);
114958 l_event_class_code VARCHAR2(30);
114959 l_ae_header_id NUMBER;
114960 l_event_type_code VARCHAR2(30);
114961 l_line_definition_code VARCHAR2(30);
114962 l_line_definition_owner_code VARCHAR2(1);
114963 --
114964 -- adr variables
114965 l_segment VARCHAR2(30);
114966 l_ccid NUMBER;
114967 l_adr_transaction_coa_id NUMBER;
114968 l_adr_accounting_coa_id NUMBER;
114969 l_adr_flexfield_segment_code VARCHAR2(30);
114970 l_adr_flex_value_set_id NUMBER;
114971 l_adr_value_type_code VARCHAR2(30);
114972 l_adr_value_combination_id NUMBER;
114973 l_adr_value_segment_code VARCHAR2(30);
114974
114975 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
114976 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
114977 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
114978 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
114979
114980 -- 4262811 Variables ------------------------------------------------------------------------------------------
114981 l_entered_amt_idx NUMBER;
114982 l_accted_amt_idx NUMBER;
114983 l_acc_rev_flag VARCHAR2(1);
114984 l_accrual_line_num NUMBER;
114985 l_tmp_amt NUMBER;
114986 l_acc_rev_natural_side_code VARCHAR2(1);
114987
114988 l_num_entries NUMBER;
114989 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
114990 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
114991 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
114992 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
114993 l_recog_line_1 NUMBER;
114994 l_recog_line_2 NUMBER;
114995
114996 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
114997 l_bflow_applied_to_amt NUMBER; -- 5132302
114998 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
114999
115000 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115001
115002 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
115003 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
115004
115005 ---------------------------------------------------------------------------------------------------------------
115006
115007
115008 --
115009 -- bulk performance
115010 --
115011 l_balance_type_code VARCHAR2(1);
115012 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
115013 l_log_module VARCHAR2(240);
115014
115015 --
115016 -- Upgrade strategy
115017 --
115018 l_actual_upg_option VARCHAR2(1);
115019 l_enc_upg_option VARCHAR2(1);
115020
115021 --
115022 BEGIN
115023 --
115024 IF g_log_enabled THEN
115025 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_209';
115026 END IF;
115027 --
115028 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115029
115030 trace
115031 (p_msg => 'BEGIN of AcctLineType_209'
115032 ,p_level => C_LEVEL_PROCEDURE
115033 ,p_module => l_log_module);
115034
115035 END IF;
115036 --
115037 l_component_type := 'AMB_JLT';
115038 l_component_code := 'OFFSET';
115039 l_component_type_code := 'S';
115040 l_component_appl_id := 707;
115041 l_amb_context_code := 'DEFAULT';
115042 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
115043 l_event_class_code := 'FOB_SHIP_RECIPIENT_RCPT';
115044 l_event_type_code := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
115045 l_line_definition_owner_code := 'S';
115046 l_line_definition_code := 'FOB_SHIP_RECIPIENT_RCPT';
115047 --
115048 l_balance_type_code := 'A';
115049 l_segment := NULL;
115050 l_ccid := NULL;
115051 l_adr_transaction_coa_id := NULL;
115052 l_adr_accounting_coa_id := NULL;
115053 l_adr_flexfield_segment_code := NULL;
115054 l_adr_flex_value_set_id := NULL;
115055 l_adr_value_type_code := NULL;
115056 l_adr_value_combination_id := NULL;
115057 l_adr_value_segment_code := NULL;
115058
115059 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
115060 l_bflow_class_code := ''; -- 4219869 Business Flow
115061 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
115062 l_budgetary_control_flag := 'N';
115063
115064 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115065 l_bflow_applied_to_amt := NULL; -- 5132302
115066 l_entered_amt_idx := NULL; -- 4262811
115067 l_accted_amt_idx := NULL; -- 4262811
115068 l_acc_rev_flag := NULL; -- 4262811
115069 l_accrual_line_num := NULL; -- 4262811
115070 l_tmp_amt := NULL; -- 4262811
115071 --
115072
115073 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115074 l_balance_type_code <> 'B' THEN
115075 IF NVL(p_source_24,9E125) = 2
115076 THEN
115077
115078 --
115079 XLA_AE_LINES_PKG.SetNewLine;
115080
115081 p_balance_type_code := l_balance_type_code;
115082 -- set the flag so later we will know whether the gain loss line needs to be created
115083
115084 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115085 p_actual_flag :='A';
115086 END IF;
115087
115088 --
115089 -- bulk performance
115090 --
115091 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115092 p_header_num => 0); -- 4262811
115093 --
115094 -- set accounting line options
115095 --
115096 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115097 p_natural_side_code => 'D'
115098 , p_gain_or_loss_flag => 'N'
115099 , p_gl_transfer_mode_code => 'S'
115100 , p_acct_entry_type_code => 'A'
115101 , p_switch_side_flag => 'Y'
115102 , p_merge_duplicate_code => 'N'
115103 );
115104 --
115105 l_acc_rev_natural_side_code := 'C'; -- 4262811
115106 --
115107 --
115108 -- set accounting line type info
115109 --
115110 xla_ae_lines_pkg.SetAcctLineType
115111 (p_component_type => l_component_type
115112 ,p_event_type_code => l_event_type_code
115113 ,p_line_definition_owner_code => l_line_definition_owner_code
115114 ,p_line_definition_code => l_line_definition_code
115115 ,p_accounting_line_code => l_component_code
115116 ,p_accounting_line_type_code => l_component_type_code
115117 ,p_accounting_line_appl_id => l_component_appl_id
115118 ,p_amb_context_code => l_amb_context_code
115119 ,p_entity_code => l_entity_code
115120 ,p_event_class_code => l_event_class_code);
115121 --
115122 -- set accounting class
115123 --
115124 xla_ae_lines_pkg.SetAcctClass(
115125 p_accounting_class_code => 'OFFSET'
115126 , p_ae_header_id => l_ae_header_id
115127 );
115128
115129 --
115130 -- set rounding class
115131 --
115132 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115133 'OFFSET';
115134
115135 --
115136 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115137 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115138 --
115139 -- bulk performance
115140 --
115141 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115142
115143 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115144 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115145
115146 -- 4955764
115147 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115148 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115149
115150 -- 4458381 Public Sector Enh
115151
115152 --
115153 -- set accounting attributes for the line type
115154 --
115155 l_entered_amt_idx := 17;
115156 l_accted_amt_idx := 22;
115157 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115158 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
115159 l_rec_acct_attrs.array_num_value(1) := p_source_6;
115160 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
115161 l_rec_acct_attrs.array_char_value(2) := p_source_7;
115162 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
115163 l_rec_acct_attrs.array_char_value(3) := p_source_8;
115164 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
115165 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
115166 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
115167 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
115168 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
115169 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
115170 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
115171 l_rec_acct_attrs.array_char_value(7) := p_source_12;
115172 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
115173 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
115174 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
115175 l_rec_acct_attrs.array_num_value(9) := p_source_14;
115176 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
115177 l_rec_acct_attrs.array_char_value(10) := p_source_15;
115178 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
115179 l_rec_acct_attrs.array_num_value(11) := p_source_16;
115180 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
115181 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
115182 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
115183 l_rec_acct_attrs.array_num_value(13) := p_source_14;
115184 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
115185 l_rec_acct_attrs.array_char_value(14) := p_source_15;
115186 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
115187 l_rec_acct_attrs.array_num_value(15) := p_source_16;
115188 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
115189 l_rec_acct_attrs.array_char_value(16) := p_source_27;
115190 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
115191 l_rec_acct_attrs.array_num_value(17) := p_source_18;
115192 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
115193 l_rec_acct_attrs.array_char_value(18) := p_source_15;
115194 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
115195 l_rec_acct_attrs.array_date_value(19) := p_source_19;
115196 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
115197 l_rec_acct_attrs.array_num_value(20) := p_source_20;
115198 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
115199 l_rec_acct_attrs.array_char_value(21) := p_source_21;
115200 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
115201 l_rec_acct_attrs.array_num_value(22) := p_source_22;
115202 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
115203 l_rec_acct_attrs.array_num_value(23) := p_source_31;
115204 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
115205 l_rec_acct_attrs.array_num_value(24) := p_source_31;
115206
115207 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115208 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115209
115210 ---------------------------------------------------------------------------------------------------------------
115211 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115212 ---------------------------------------------------------------------------------------------------------------
115213 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115214
115215 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115216 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115217
115218 IF xla_accounting_cache_pkg.GetValueChar
115219 (p_source_code => 'LEDGER_CATEGORY_CODE'
115220 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115221 AND l_bflow_method_code = 'PRIOR_ENTRY'
115222 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115223 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115224 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115225 )
115226 THEN
115227 xla_ae_lines_pkg.BflowUpgEntry
115228 (p_business_method_code => l_bflow_method_code
115229 ,p_business_class_code => l_bflow_class_code
115230 ,p_balance_type => l_balance_type_code);
115231 ELSE
115232 NULL;
115233 -- No business flow processing for business flow method of NONE.
115234 END IF;
115235
115236 --
115237 -- call analytical criteria
115238 --
115239
115240 --
115241 -- call description
115242 --
115243 -- No description or it is inherited.
115244 --
115245 -- call ADRs
115246 -- Bug 4922099
115247 --
115248 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115249 (NVL(l_actual_upg_option, 'N') = 'O') OR
115250 (NVL(l_enc_upg_option, 'N') = 'O')
115251 )
115252 THEN
115253 NULL;
115254 --
115255 --
115256
115257 l_ccid := AcctDerRule_4(
115258 p_application_id => p_application_id
115259 , p_ae_header_id => l_ae_header_id
115260 , p_source_4 => p_source_4
115261 , x_transaction_coa_id => l_adr_transaction_coa_id
115262 , x_accounting_coa_id => l_adr_accounting_coa_id
115263 , x_value_type_code => l_adr_value_type_code
115264 , p_side => 'NA'
115265 );
115266
115267 xla_ae_lines_pkg.set_ccid(
115268 p_code_combination_id => l_ccid
115269 , p_value_type_code => l_adr_value_type_code
115270 , p_transaction_coa_id => l_adr_transaction_coa_id
115271 , p_accounting_coa_id => l_adr_accounting_coa_id
115272 , p_adr_code => 'CST_DEFAULT'
115273 , p_adr_type_code => 'S'
115274 , p_component_type => l_component_type
115275 , p_component_code => l_component_code
115276 , p_component_type_code => l_component_type_code
115277 , p_component_appl_id => l_component_appl_id
115278 , p_amb_context_code => l_amb_context_code
115279 , p_side => 'NA'
115280 );
115281
115282
115283 --
115284 --
115285 END IF;
115286 --
115287 -- Bug 4922099
115288 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115289 (NVL(l_enc_upg_option, 'N') = 'O')
115290 ) AND
115291 (l_bflow_method_code = 'PRIOR_ENTRY')
115292 )
115293 THEN
115294 IF
115295 --
115296 1 = 2
115297 --
115298 THEN
115299 xla_accounting_err_pkg.build_message
115300 (p_appli_s_name => 'XLA'
115301 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115302 ,p_token_1 => 'LINE_NUMBER'
115303 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
115304 ,p_token_2 => 'LINE_TYPE_NAME'
115305 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
115306 l_component_type
115307 ,l_component_code
115308 ,l_component_type_code
115309 ,l_component_appl_id
115310 ,l_amb_context_code
115311 ,l_entity_code
115312 ,l_event_class_code
115313 )
115314 ,p_token_3 => 'OWNER'
115315 ,p_value_3 => xla_lookups_pkg.get_meaning(
115316 p_lookup_type => 'XLA_OWNER_TYPE'
115317 ,p_lookup_code => l_component_type_code
115318 )
115319 ,p_token_4 => 'PRODUCT_NAME'
115320 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115321 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115322 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115323 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115324 ,p_ae_header_id => NULL
115325 );
115326
115327 IF (C_LEVEL_ERROR>= g_log_level) THEN
115328 trace
115329 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115330 ,p_level => C_LEVEL_ERROR
115331 ,p_module => l_log_module);
115332 END IF;
115333 END IF;
115334 END IF;
115335 --
115336 --
115337 ------------------------------------------------------------------------------------------------
115338 -- 4219869 Business Flow
115339 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115340 -- Prior Entry. Currently, the following code is always generated.
115341 ------------------------------------------------------------------------------------------------
115342 XLA_AE_LINES_PKG.ValidateCurrentLine;
115343
115344 ------------------------------------------------------------------------------------
115345 -- 4219869 Business Flow
115346 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115347 ------------------------------------------------------------------------------------
115348 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115349
115350 ----------------------------------------------------------------------------------
115351 -- 4219869 Business Flow
115352 -- Update journal entry status -- Need to generate this within IF <condition>
115353 ----------------------------------------------------------------------------------
115354 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115355 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115356 ,p_balance_type_code => l_balance_type_code
115357 );
115358
115359 -------------------------------------------------------------------------------------------
115360 -- 4262811 - Generate the Accrual Reversal lines
115361 -------------------------------------------------------------------------------------------
115362 BEGIN
115363 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115364 (g_array_event(p_event_id).array_value_num('header_index'));
115365 IF l_acc_rev_flag IS NULL THEN
115366 l_acc_rev_flag := 'N';
115367 END IF;
115368 EXCEPTION
115369 WHEN OTHERS THEN
115370 l_acc_rev_flag := 'N';
115371 END;
115372 --
115373 IF (l_acc_rev_flag = 'Y') THEN
115374
115375 -- 4645092 ------------------------------------------------------------------------------
115376 -- To allow MPA report to determine if it should generate report process
115377 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
115378 ------------------------------------------------------------------------------------------
115379
115380 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
115381 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
115382 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
115383 -- call ADRs
115384 -- Bug 4922099
115385 --
115386 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115387 (NVL(l_actual_upg_option, 'N') = 'O') OR
115388 (NVL(l_enc_upg_option, 'N') = 'O')
115389 )
115390 THEN
115391 NULL;
115392 --
115393 --
115394
115395 l_ccid := AcctDerRule_4(
115396 p_application_id => p_application_id
115397 , p_ae_header_id => l_ae_header_id
115398 , p_source_4 => p_source_4
115399 , x_transaction_coa_id => l_adr_transaction_coa_id
115400 , x_accounting_coa_id => l_adr_accounting_coa_id
115401 , x_value_type_code => l_adr_value_type_code
115402 , p_side => 'NA'
115403 );
115404
115405 xla_ae_lines_pkg.set_ccid(
115406 p_code_combination_id => l_ccid
115407 , p_value_type_code => l_adr_value_type_code
115408 , p_transaction_coa_id => l_adr_transaction_coa_id
115409 , p_accounting_coa_id => l_adr_accounting_coa_id
115410 , p_adr_code => 'CST_DEFAULT'
115411 , p_adr_type_code => 'S'
115412 , p_component_type => l_component_type
115413 , p_component_code => l_component_code
115414 , p_component_type_code => l_component_type_code
115415 , p_component_appl_id => l_component_appl_id
115416 , p_amb_context_code => l_amb_context_code
115417 , p_side => 'NA'
115418 );
115419
115420
115421 --
115422 --
115423 END IF;
115424
115425 --
115426 -- Update the line information that should be overwritten
115427 --
115428 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
115429 p_header_num => 1);
115430 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
115431
115432 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
115433
115434 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
115435 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
115436 END IF;
115437
115438 --
115439 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
115440 --
115441 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
115442 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
115443 ELSE
115444 ---------------------------------------------------------------------------------------------------
115445 -- 4262811a Switch Sign
115446 ---------------------------------------------------------------------------------------------------
115447 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
115448 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115449 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115450 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
115451 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115452 -- 5132302
115453 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
115454 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
115455
115456 END IF;
115457
115458 -- 4955764
115459 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115460 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
115461
115462
115463 XLA_AE_LINES_PKG.ValidateCurrentLine;
115464 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115465
115466 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115467 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
115468 ,p_balance_type_code => l_balance_type_code);
115469
115470 END IF;
115471
115472 -----------------------------------------------------------------------------------------
115473 -- 4262811 Multiperiod Accounting
115474 -----------------------------------------------------------------------------------------
115475 -- No MPA option is assigned.
115476
115477
115478 END IF;
115479 END IF;
115480 --
115481
115482 --
115483 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115484 trace
115485 (p_msg => 'END of AcctLineType_209'
115486 ,p_level => C_LEVEL_PROCEDURE
115487 ,p_module => l_log_module);
115488 END IF;
115489 --
115490 EXCEPTION
115491 WHEN xla_exceptions_pkg.application_exception THEN
115492 RAISE;
115493 WHEN OTHERS THEN
115494 xla_exceptions_pkg.raise_message
115495 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_209');
115496 END AcctLineType_209;
115497 --
115498
115499 ---------------------------------------
115500 --
115501 -- PRIVATE FUNCTION
115502 -- AcctLineType_210
115503 --
115504 ---------------------------------------
115505 PROCEDURE AcctLineType_210 (
115506 p_application_id IN NUMBER
115507 ,p_event_id IN NUMBER
115508 ,p_calculate_acctd_flag IN VARCHAR2
115509 ,p_calculate_g_l_flag IN VARCHAR2
115510 ,p_actual_flag IN OUT VARCHAR2
115511 ,p_balance_type_code OUT VARCHAR2
115512 ,p_gain_or_loss_ref OUT VARCHAR2
115513
115514 --Offset Account for the Write Off
115515 , p_source_3 IN NUMBER
115516 --Distribution Type
115517 , p_source_12 IN VARCHAR2
115518 , p_source_12_meaning IN VARCHAR2
115519 --Entered Currency Code
115520 , p_source_15 IN VARCHAR2
115521 --Entered Amount
115522 , p_source_18 IN NUMBER
115523 --Currency Conversion Date
115524 , p_source_19 IN DATE
115525 --Currency Conversion Rate
115526 , p_source_20 IN NUMBER
115527 --Currency Conversion Type
115528 , p_source_21 IN VARCHAR2
115529 --Accounted Amount
115530 , p_source_22 IN NUMBER
115531 --Line Number
115532 , p_source_25 IN NUMBER
115533 --WRITE_OFF_ID
115534 , p_source_26 IN NUMBER
115535 )
115536 IS
115537
115538 l_component_type VARCHAR2(80);
115539 l_component_code VARCHAR2(30);
115540 l_component_type_code VARCHAR2(1);
115541 l_component_appl_id INTEGER;
115542 l_amb_context_code VARCHAR2(30);
115543 l_entity_code VARCHAR2(30);
115544 l_event_class_code VARCHAR2(30);
115545 l_ae_header_id NUMBER;
115546 l_event_type_code VARCHAR2(30);
115547 l_line_definition_code VARCHAR2(30);
115548 l_line_definition_owner_code VARCHAR2(1);
115549 --
115550 -- adr variables
115551 l_segment VARCHAR2(30);
115552 l_ccid NUMBER;
115553 l_adr_transaction_coa_id NUMBER;
115554 l_adr_accounting_coa_id NUMBER;
115555 l_adr_flexfield_segment_code VARCHAR2(30);
115556 l_adr_flex_value_set_id NUMBER;
115557 l_adr_value_type_code VARCHAR2(30);
115558 l_adr_value_combination_id NUMBER;
115559 l_adr_value_segment_code VARCHAR2(30);
115560
115561 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
115562 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
115563 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
115564 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
115565
115566 -- 4262811 Variables ------------------------------------------------------------------------------------------
115567 l_entered_amt_idx NUMBER;
115568 l_accted_amt_idx NUMBER;
115569 l_acc_rev_flag VARCHAR2(1);
115570 l_accrual_line_num NUMBER;
115571 l_tmp_amt NUMBER;
115572 l_acc_rev_natural_side_code VARCHAR2(1);
115573
115574 l_num_entries NUMBER;
115575 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
115576 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
115577 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
115578 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
115579 l_recog_line_1 NUMBER;
115580 l_recog_line_2 NUMBER;
115581
115582 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
115583 l_bflow_applied_to_amt NUMBER; -- 5132302
115584 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
115585
115586 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
115587
115588 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
115589 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
115590
115591 ---------------------------------------------------------------------------------------------------------------
115592
115593
115594 --
115595 -- bulk performance
115596 --
115597 l_balance_type_code VARCHAR2(1);
115598 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
115599 l_log_module VARCHAR2(240);
115600
115601 --
115602 -- Upgrade strategy
115603 --
115604 l_actual_upg_option VARCHAR2(1);
115605 l_enc_upg_option VARCHAR2(1);
115606
115607 --
115608 BEGIN
115609 --
115610 IF g_log_enabled THEN
115611 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_210';
115612 END IF;
115613 --
115614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
115615
115616 trace
115617 (p_msg => 'BEGIN of AcctLineType_210'
115618 ,p_level => C_LEVEL_PROCEDURE
115619 ,p_module => l_log_module);
115620
115621 END IF;
115622 --
115623 l_component_type := 'AMB_JLT';
115624 l_component_code := 'OFFSET';
115625 l_component_type_code := 'S';
115626 l_component_appl_id := 707;
115627 l_amb_context_code := 'DEFAULT';
115628 l_entity_code := 'WO_ACCOUNTING_EVENTS';
115629 l_event_class_code := 'ACCRUAL_WRITE_OFF';
115630 l_event_type_code := 'ACCRUAL_WRITE_OFF_ALL';
115631 l_line_definition_owner_code := 'S';
115632 l_line_definition_code := 'ACCRUAL_WRITE_OFF';
115633 --
115634 l_balance_type_code := 'A';
115635 l_segment := NULL;
115636 l_ccid := NULL;
115637 l_adr_transaction_coa_id := NULL;
115638 l_adr_accounting_coa_id := NULL;
115639 l_adr_flexfield_segment_code := NULL;
115640 l_adr_flex_value_set_id := NULL;
115641 l_adr_value_type_code := NULL;
115642 l_adr_value_combination_id := NULL;
115643 l_adr_value_segment_code := NULL;
115644
115645 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
115646 l_bflow_class_code := ''; -- 4219869 Business Flow
115647 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
115648 l_budgetary_control_flag := 'N';
115649
115650 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115651 l_bflow_applied_to_amt := NULL; -- 5132302
115652 l_entered_amt_idx := NULL; -- 4262811
115653 l_accted_amt_idx := NULL; -- 4262811
115654 l_acc_rev_flag := NULL; -- 4262811
115655 l_accrual_line_num := NULL; -- 4262811
115656 l_tmp_amt := NULL; -- 4262811
115657 --
115658
115659 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
115660 l_balance_type_code <> 'B' THEN
115661 IF NVL(p_source_25,9E125) = 1
115662 THEN
115663
115664 --
115665 XLA_AE_LINES_PKG.SetNewLine;
115666
115667 p_balance_type_code := l_balance_type_code;
115668 -- set the flag so later we will know whether the gain loss line needs to be created
115669
115670 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
115671 p_actual_flag :='A';
115672 END IF;
115673
115674 --
115675 -- bulk performance
115676 --
115677 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
115678 p_header_num => 0); -- 4262811
115679 --
115680 -- set accounting line options
115681 --
115682 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
115683 p_natural_side_code => 'C'
115684 , p_gain_or_loss_flag => 'N'
115685 , p_gl_transfer_mode_code => 'S'
115686 , p_acct_entry_type_code => 'A'
115687 , p_switch_side_flag => 'Y'
115688 , p_merge_duplicate_code => 'N'
115689 );
115690 --
115691 l_acc_rev_natural_side_code := 'D'; -- 4262811
115692 --
115693 --
115694 -- set accounting line type info
115695 --
115696 xla_ae_lines_pkg.SetAcctLineType
115697 (p_component_type => l_component_type
115698 ,p_event_type_code => l_event_type_code
115699 ,p_line_definition_owner_code => l_line_definition_owner_code
115700 ,p_line_definition_code => l_line_definition_code
115701 ,p_accounting_line_code => l_component_code
115702 ,p_accounting_line_type_code => l_component_type_code
115703 ,p_accounting_line_appl_id => l_component_appl_id
115704 ,p_amb_context_code => l_amb_context_code
115705 ,p_entity_code => l_entity_code
115706 ,p_event_class_code => l_event_class_code);
115707 --
115708 -- set accounting class
115709 --
115710 xla_ae_lines_pkg.SetAcctClass(
115711 p_accounting_class_code => 'OFFSET'
115712 , p_ae_header_id => l_ae_header_id
115713 );
115714
115715 --
115716 -- set rounding class
115717 --
115718 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
115719 'OFFSET';
115720
115721 --
115722 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
115723 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
115724 --
115725 -- bulk performance
115726 --
115727 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
115728
115729 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
115730 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
115731
115732 -- 4955764
115733 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
115734 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
115735
115736 -- 4458381 Public Sector Enh
115737
115738 --
115739 -- set accounting attributes for the line type
115740 --
115741 l_entered_amt_idx := 3;
115742 l_accted_amt_idx := 8;
115743 l_bflow_applied_to_amt_idx := NULL; -- 5132302
115744 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
115745 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_26);
115746 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
115747 l_rec_acct_attrs.array_char_value(2) := p_source_12;
115748 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
115749 l_rec_acct_attrs.array_num_value(3) := p_source_18;
115750 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
115751 l_rec_acct_attrs.array_char_value(4) := p_source_15;
115752 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
115753 l_rec_acct_attrs.array_date_value(5) := p_source_19;
115754 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
115755 l_rec_acct_attrs.array_num_value(6) := p_source_20;
115756 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
115757 l_rec_acct_attrs.array_char_value(7) := p_source_21;
115758 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
115759 l_rec_acct_attrs.array_num_value(8) := p_source_22;
115760
115761 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
115762 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
115763
115764 ---------------------------------------------------------------------------------------------------------------
115765 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
115766 ---------------------------------------------------------------------------------------------------------------
115767 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
115768
115769 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115770 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
115771
115772 IF xla_accounting_cache_pkg.GetValueChar
115773 (p_source_code => 'LEDGER_CATEGORY_CODE'
115774 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
115775 AND l_bflow_method_code = 'PRIOR_ENTRY'
115776 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
115777 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
115778 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
115779 )
115780 THEN
115781 xla_ae_lines_pkg.BflowUpgEntry
115782 (p_business_method_code => l_bflow_method_code
115783 ,p_business_class_code => l_bflow_class_code
115784 ,p_balance_type => l_balance_type_code);
115785 ELSE
115786 NULL;
115787 -- No business flow processing for business flow method of NONE.
115788 END IF;
115789
115790 --
115791 -- call analytical criteria
115792 --
115793
115794 --
115795 -- call description
115796 --
115797 -- No description or it is inherited.
115798 --
115799 -- call ADRs
115800 -- Bug 4922099
115801 --
115802 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115803 (NVL(l_actual_upg_option, 'N') = 'O') OR
115804 (NVL(l_enc_upg_option, 'N') = 'O')
115805 )
115806 THEN
115807 NULL;
115808 --
115809 --
115810
115811 l_ccid := AcctDerRule_3(
115812 p_application_id => p_application_id
115813 , p_ae_header_id => l_ae_header_id
115814 , p_source_3 => p_source_3
115815 , x_transaction_coa_id => l_adr_transaction_coa_id
115816 , x_accounting_coa_id => l_adr_accounting_coa_id
115817 , x_value_type_code => l_adr_value_type_code
115818 , p_side => 'NA'
115819 );
115820
115821 xla_ae_lines_pkg.set_ccid(
115822 p_code_combination_id => l_ccid
115823 , p_value_type_code => l_adr_value_type_code
115824 , p_transaction_coa_id => l_adr_transaction_coa_id
115825 , p_accounting_coa_id => l_adr_accounting_coa_id
115826 , p_adr_code => 'CST_AWO_OFFSET'
115827 , p_adr_type_code => 'S'
115828 , p_component_type => l_component_type
115829 , p_component_code => l_component_code
115830 , p_component_type_code => l_component_type_code
115831 , p_component_appl_id => l_component_appl_id
115832 , p_amb_context_code => l_amb_context_code
115833 , p_side => 'NA'
115834 );
115835
115836
115837 --
115838 --
115839 END IF;
115840 --
115841 -- Bug 4922099
115842 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
115843 (NVL(l_enc_upg_option, 'N') = 'O')
115844 ) AND
115845 (l_bflow_method_code = 'PRIOR_ENTRY')
115846 )
115847 THEN
115848 IF
115849 --
115850 1 = 2
115851 --
115852 THEN
115853 xla_accounting_err_pkg.build_message
115854 (p_appli_s_name => 'XLA'
115855 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115856 ,p_token_1 => 'LINE_NUMBER'
115857 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
115858 ,p_token_2 => 'LINE_TYPE_NAME'
115859 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
115860 l_component_type
115861 ,l_component_code
115862 ,l_component_type_code
115863 ,l_component_appl_id
115864 ,l_amb_context_code
115865 ,l_entity_code
115866 ,l_event_class_code
115867 )
115868 ,p_token_3 => 'OWNER'
115869 ,p_value_3 => xla_lookups_pkg.get_meaning(
115870 p_lookup_type => 'XLA_OWNER_TYPE'
115871 ,p_lookup_code => l_component_type_code
115872 )
115873 ,p_token_4 => 'PRODUCT_NAME'
115874 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
115875 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
115876 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
115877 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
115878 ,p_ae_header_id => NULL
115879 );
115880
115881 IF (C_LEVEL_ERROR>= g_log_level) THEN
115882 trace
115883 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
115884 ,p_level => C_LEVEL_ERROR
115885 ,p_module => l_log_module);
115886 END IF;
115887 END IF;
115888 END IF;
115889 --
115890 --
115891 ------------------------------------------------------------------------------------------------
115892 -- 4219869 Business Flow
115893 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
115894 -- Prior Entry. Currently, the following code is always generated.
115895 ------------------------------------------------------------------------------------------------
115896 XLA_AE_LINES_PKG.ValidateCurrentLine;
115897
115898 ------------------------------------------------------------------------------------
115899 -- 4219869 Business Flow
115900 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
115901 ------------------------------------------------------------------------------------
115902 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
115903
115904 ----------------------------------------------------------------------------------
115905 -- 4219869 Business Flow
115906 -- Update journal entry status -- Need to generate this within IF <condition>
115907 ----------------------------------------------------------------------------------
115908 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
115909 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
115910 ,p_balance_type_code => l_balance_type_code
115911 );
115912
115913 -------------------------------------------------------------------------------------------
115914 -- 4262811 - Generate the Accrual Reversal lines
115915 -------------------------------------------------------------------------------------------
115916 BEGIN
115917 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
115918 (g_array_event(p_event_id).array_value_num('header_index'));
115919 IF l_acc_rev_flag IS NULL THEN
115920 l_acc_rev_flag := 'N';
115921 END IF;
115922 EXCEPTION
115923 WHEN OTHERS THEN
115924 l_acc_rev_flag := 'N';
115925 END;
115926 --
115927 IF (l_acc_rev_flag = 'Y') THEN
115928
115929 -- 4645092 ------------------------------------------------------------------------------
115930 -- To allow MPA report to determine if it should generate report process
115931 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
115932 ------------------------------------------------------------------------------------------
115933
115934 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
115935 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
115936 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
115937 -- call ADRs
115938 -- Bug 4922099
115939 --
115940 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
115941 (NVL(l_actual_upg_option, 'N') = 'O') OR
115942 (NVL(l_enc_upg_option, 'N') = 'O')
115943 )
115944 THEN
115945 NULL;
115946 --
115947 --
115948
115949 l_ccid := AcctDerRule_3(
115950 p_application_id => p_application_id
115951 , p_ae_header_id => l_ae_header_id
115952 , p_source_3 => p_source_3
115953 , x_transaction_coa_id => l_adr_transaction_coa_id
115954 , x_accounting_coa_id => l_adr_accounting_coa_id
115955 , x_value_type_code => l_adr_value_type_code
115956 , p_side => 'NA'
115957 );
115958
115959 xla_ae_lines_pkg.set_ccid(
115960 p_code_combination_id => l_ccid
115961 , p_value_type_code => l_adr_value_type_code
115962 , p_transaction_coa_id => l_adr_transaction_coa_id
115963 , p_accounting_coa_id => l_adr_accounting_coa_id
115964 , p_adr_code => 'CST_AWO_OFFSET'
115965 , p_adr_type_code => 'S'
115966 , p_component_type => l_component_type
115967 , p_component_code => l_component_code
115968 , p_component_type_code => l_component_type_code
115969 , p_component_appl_id => l_component_appl_id
115970 , p_amb_context_code => l_amb_context_code
115971 , p_side => 'NA'
115972 );
115973
115974
115975 --
115976 --
115977 END IF;
115978
115979 --
115980 -- Update the line information that should be overwritten
115981 --
115982 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
115983 p_header_num => 1);
115984 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
115985
115986 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
115987
115988 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
115989 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
115990 END IF;
115991
115992 --
115993 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
115994 --
115995 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
115996 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
115997 ELSE
115998 ---------------------------------------------------------------------------------------------------
115999 -- 4262811a Switch Sign
116000 ---------------------------------------------------------------------------------------------------
116001 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
116002 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116003 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116004 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116005 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116006 -- 5132302
116007 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116008 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116009
116010 END IF;
116011
116012 -- 4955764
116013 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116014 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116015
116016
116017 XLA_AE_LINES_PKG.ValidateCurrentLine;
116018 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116019
116020 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116021 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116022 ,p_balance_type_code => l_balance_type_code);
116023
116024 END IF;
116025
116026 -----------------------------------------------------------------------------------------
116027 -- 4262811 Multiperiod Accounting
116028 -----------------------------------------------------------------------------------------
116029 -- No MPA option is assigned.
116030
116031
116032 END IF;
116033 END IF;
116034 --
116035
116036 --
116037 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116038 trace
116039 (p_msg => 'END of AcctLineType_210'
116040 ,p_level => C_LEVEL_PROCEDURE
116041 ,p_module => l_log_module);
116042 END IF;
116043 --
116044 EXCEPTION
116045 WHEN xla_exceptions_pkg.application_exception THEN
116046 RAISE;
116047 WHEN OTHERS THEN
116048 xla_exceptions_pkg.raise_message
116049 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_210');
116050 END AcctLineType_210;
116051 --
116052
116053 ---------------------------------------
116054 --
116055 -- PRIVATE FUNCTION
116056 -- AcctLineType_211
116057 --
116058 ---------------------------------------
116059 PROCEDURE AcctLineType_211 (
116060 p_application_id IN NUMBER
116061 ,p_event_id IN NUMBER
116062 ,p_calculate_acctd_flag IN VARCHAR2
116063 ,p_calculate_g_l_flag IN VARCHAR2
116064 ,p_actual_flag IN OUT VARCHAR2
116065 ,p_balance_type_code OUT VARCHAR2
116066 ,p_gain_or_loss_ref OUT VARCHAR2
116067
116068 --Cost Management Default Account
116069 , p_source_4 IN NUMBER
116070 --Applied to Application ID
116071 , p_source_6 IN NUMBER
116072 --Applied to Distribution Link Type
116073 , p_source_7 IN VARCHAR2
116074 --Applied to Entity Code
116075 , p_source_8 IN VARCHAR2
116076 --DISTRIBUTION_IDENTIFIER
116077 , p_source_11 IN NUMBER
116078 --Distribution Type
116079 , p_source_12 IN VARCHAR2
116080 , p_source_12_meaning IN VARCHAR2
116081 --Encumbrance Reversal Amount Entered
116082 , p_source_14 IN NUMBER
116083 --Entered Currency Code
116084 , p_source_15 IN VARCHAR2
116085 --Transaction Encumbrance Reversal Amount
116086 , p_source_16 IN NUMBER
116087 --Entered Amount
116088 , p_source_18 IN NUMBER
116089 --Currency Conversion Date
116090 , p_source_19 IN DATE
116091 --Currency Conversion Rate
116092 , p_source_20 IN NUMBER
116093 --Currency Conversion Type
116094 , p_source_21 IN VARCHAR2
116095 --Accounted Amount
116096 , p_source_22 IN NUMBER
116097 --Accounting Line Type
116098 , p_source_24 IN NUMBER
116099 --Costing Encumbrance Upgrade Option
116100 , p_source_27 IN VARCHAR2
116101 --TXN_PO_DISTRIBUTION_ID
116102 , p_source_28 IN NUMBER
116103 --TXN_PO_HEADER_ID
116104 , p_source_29 IN NUMBER
116105 --Requisition Budget Account
116106 , p_source_30 IN NUMBER
116107 --Requisition Encumbrance Type Identifier
116108 , p_source_31 IN NUMBER
116109 )
116110 IS
116111
116112 l_component_type VARCHAR2(80);
116113 l_component_code VARCHAR2(30);
116114 l_component_type_code VARCHAR2(1);
116115 l_component_appl_id INTEGER;
116116 l_amb_context_code VARCHAR2(30);
116117 l_entity_code VARCHAR2(30);
116118 l_event_class_code VARCHAR2(30);
116119 l_ae_header_id NUMBER;
116120 l_event_type_code VARCHAR2(30);
116121 l_line_definition_code VARCHAR2(30);
116122 l_line_definition_owner_code VARCHAR2(1);
116123 --
116124 -- adr variables
116125 l_segment VARCHAR2(30);
116126 l_ccid NUMBER;
116127 l_adr_transaction_coa_id NUMBER;
116128 l_adr_accounting_coa_id NUMBER;
116129 l_adr_flexfield_segment_code VARCHAR2(30);
116130 l_adr_flex_value_set_id NUMBER;
116131 l_adr_value_type_code VARCHAR2(30);
116132 l_adr_value_combination_id NUMBER;
116133 l_adr_value_segment_code VARCHAR2(30);
116134
116135 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
116136 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
116137 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
116138 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
116139
116140 -- 4262811 Variables ------------------------------------------------------------------------------------------
116141 l_entered_amt_idx NUMBER;
116142 l_accted_amt_idx NUMBER;
116143 l_acc_rev_flag VARCHAR2(1);
116144 l_accrual_line_num NUMBER;
116145 l_tmp_amt NUMBER;
116146 l_acc_rev_natural_side_code VARCHAR2(1);
116147
116148 l_num_entries NUMBER;
116149 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
116150 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
116151 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
116152 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
116153 l_recog_line_1 NUMBER;
116154 l_recog_line_2 NUMBER;
116155
116156 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
116157 l_bflow_applied_to_amt NUMBER; -- 5132302
116158 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
116159
116160 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116161
116162 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
116163 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
116164
116165 ---------------------------------------------------------------------------------------------------------------
116166
116167
116168 --
116169 -- bulk performance
116170 --
116171 l_balance_type_code VARCHAR2(1);
116172 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
116173 l_log_module VARCHAR2(240);
116174
116175 --
116176 -- Upgrade strategy
116177 --
116178 l_actual_upg_option VARCHAR2(1);
116179 l_enc_upg_option VARCHAR2(1);
116180
116181 --
116182 BEGIN
116183 --
116184 IF g_log_enabled THEN
116185 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_211';
116186 END IF;
116187 --
116188 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116189
116190 trace
116191 (p_msg => 'BEGIN of AcctLineType_211'
116192 ,p_level => C_LEVEL_PROCEDURE
116193 ,p_module => l_log_module);
116194
116195 END IF;
116196 --
116197 l_component_type := 'AMB_JLT';
116198 l_component_code := 'OFFSET';
116199 l_component_type_code := 'S';
116200 l_component_appl_id := 707;
116201 l_amb_context_code := 'DEFAULT';
116202 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
116203 l_event_class_code := 'DIR_INTERORG_RCPT';
116204 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
116205 l_line_definition_owner_code := 'S';
116206 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
116207 --
116208 l_balance_type_code := 'A';
116209 l_segment := NULL;
116210 l_ccid := NULL;
116211 l_adr_transaction_coa_id := NULL;
116212 l_adr_accounting_coa_id := NULL;
116213 l_adr_flexfield_segment_code := NULL;
116214 l_adr_flex_value_set_id := NULL;
116215 l_adr_value_type_code := NULL;
116216 l_adr_value_combination_id := NULL;
116217 l_adr_value_segment_code := NULL;
116218
116219 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
116220 l_bflow_class_code := ''; -- 4219869 Business Flow
116221 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
116222 l_budgetary_control_flag := 'N';
116223
116224 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116225 l_bflow_applied_to_amt := NULL; -- 5132302
116226 l_entered_amt_idx := NULL; -- 4262811
116227 l_accted_amt_idx := NULL; -- 4262811
116228 l_acc_rev_flag := NULL; -- 4262811
116229 l_accrual_line_num := NULL; -- 4262811
116230 l_tmp_amt := NULL; -- 4262811
116231 --
116232
116233 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116234 l_balance_type_code <> 'B' THEN
116235 IF NVL(p_source_24,9E125) = 2
116236 THEN
116237
116238 --
116239 XLA_AE_LINES_PKG.SetNewLine;
116240
116241 p_balance_type_code := l_balance_type_code;
116242 -- set the flag so later we will know whether the gain loss line needs to be created
116243
116244 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116245 p_actual_flag :='A';
116246 END IF;
116247
116248 --
116249 -- bulk performance
116250 --
116251 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116252 p_header_num => 0); -- 4262811
116253 --
116254 -- set accounting line options
116255 --
116256 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116257 p_natural_side_code => 'D'
116258 , p_gain_or_loss_flag => 'N'
116259 , p_gl_transfer_mode_code => 'S'
116260 , p_acct_entry_type_code => 'A'
116261 , p_switch_side_flag => 'Y'
116262 , p_merge_duplicate_code => 'N'
116263 );
116264 --
116265 l_acc_rev_natural_side_code := 'C'; -- 4262811
116266 --
116267 --
116268 -- set accounting line type info
116269 --
116270 xla_ae_lines_pkg.SetAcctLineType
116271 (p_component_type => l_component_type
116272 ,p_event_type_code => l_event_type_code
116273 ,p_line_definition_owner_code => l_line_definition_owner_code
116274 ,p_line_definition_code => l_line_definition_code
116275 ,p_accounting_line_code => l_component_code
116276 ,p_accounting_line_type_code => l_component_type_code
116277 ,p_accounting_line_appl_id => l_component_appl_id
116278 ,p_amb_context_code => l_amb_context_code
116279 ,p_entity_code => l_entity_code
116280 ,p_event_class_code => l_event_class_code);
116281 --
116282 -- set accounting class
116283 --
116284 xla_ae_lines_pkg.SetAcctClass(
116285 p_accounting_class_code => 'OFFSET'
116286 , p_ae_header_id => l_ae_header_id
116287 );
116288
116289 --
116290 -- set rounding class
116291 --
116292 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116293 'OFFSET';
116294
116295 --
116296 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116297 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116298 --
116299 -- bulk performance
116300 --
116301 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116302
116303 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116304 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116305
116306 -- 4955764
116307 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116308 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116309
116310 -- 4458381 Public Sector Enh
116311
116312 --
116313 -- set accounting attributes for the line type
116314 --
116315 l_entered_amt_idx := 17;
116316 l_accted_amt_idx := 22;
116317 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116318 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
116319 l_rec_acct_attrs.array_num_value(1) := p_source_6;
116320 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
116321 l_rec_acct_attrs.array_char_value(2) := p_source_7;
116322 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
116323 l_rec_acct_attrs.array_char_value(3) := p_source_8;
116324 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
116325 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
116326 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
116327 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
116328 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
116329 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
116330 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
116331 l_rec_acct_attrs.array_char_value(7) := p_source_12;
116332 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
116333 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
116334 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
116335 l_rec_acct_attrs.array_num_value(9) := p_source_14;
116336 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
116337 l_rec_acct_attrs.array_char_value(10) := p_source_15;
116338 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
116339 l_rec_acct_attrs.array_num_value(11) := p_source_16;
116340 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
116341 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
116342 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
116343 l_rec_acct_attrs.array_num_value(13) := p_source_14;
116344 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
116345 l_rec_acct_attrs.array_char_value(14) := p_source_15;
116346 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
116347 l_rec_acct_attrs.array_num_value(15) := p_source_16;
116348 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
116349 l_rec_acct_attrs.array_char_value(16) := p_source_27;
116350 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
116351 l_rec_acct_attrs.array_num_value(17) := p_source_18;
116352 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
116353 l_rec_acct_attrs.array_char_value(18) := p_source_15;
116354 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
116355 l_rec_acct_attrs.array_date_value(19) := p_source_19;
116356 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
116357 l_rec_acct_attrs.array_num_value(20) := p_source_20;
116358 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
116359 l_rec_acct_attrs.array_char_value(21) := p_source_21;
116360 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
116361 l_rec_acct_attrs.array_num_value(22) := p_source_22;
116362 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
116363 l_rec_acct_attrs.array_num_value(23) := p_source_31;
116364 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
116365 l_rec_acct_attrs.array_num_value(24) := p_source_31;
116366
116367 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116368 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116369
116370 ---------------------------------------------------------------------------------------------------------------
116371 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116372 ---------------------------------------------------------------------------------------------------------------
116373 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116374
116375 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116376 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116377
116378 IF xla_accounting_cache_pkg.GetValueChar
116379 (p_source_code => 'LEDGER_CATEGORY_CODE'
116380 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116381 AND l_bflow_method_code = 'PRIOR_ENTRY'
116382 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116383 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116384 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116385 )
116386 THEN
116387 xla_ae_lines_pkg.BflowUpgEntry
116388 (p_business_method_code => l_bflow_method_code
116389 ,p_business_class_code => l_bflow_class_code
116390 ,p_balance_type => l_balance_type_code);
116391 ELSE
116392 NULL;
116393 -- No business flow processing for business flow method of NONE.
116394 END IF;
116395
116396 --
116397 -- call analytical criteria
116398 --
116399
116400 --
116401 -- call description
116402 --
116403 -- No description or it is inherited.
116404 --
116405 -- call ADRs
116406 -- Bug 4922099
116407 --
116408 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116409 (NVL(l_actual_upg_option, 'N') = 'O') OR
116410 (NVL(l_enc_upg_option, 'N') = 'O')
116411 )
116412 THEN
116413 NULL;
116414 --
116415 --
116416
116417 l_ccid := AcctDerRule_4(
116418 p_application_id => p_application_id
116419 , p_ae_header_id => l_ae_header_id
116420 , p_source_4 => p_source_4
116421 , x_transaction_coa_id => l_adr_transaction_coa_id
116422 , x_accounting_coa_id => l_adr_accounting_coa_id
116423 , x_value_type_code => l_adr_value_type_code
116424 , p_side => 'NA'
116425 );
116426
116427 xla_ae_lines_pkg.set_ccid(
116428 p_code_combination_id => l_ccid
116429 , p_value_type_code => l_adr_value_type_code
116430 , p_transaction_coa_id => l_adr_transaction_coa_id
116431 , p_accounting_coa_id => l_adr_accounting_coa_id
116432 , p_adr_code => 'CST_DEFAULT'
116433 , p_adr_type_code => 'S'
116434 , p_component_type => l_component_type
116435 , p_component_code => l_component_code
116436 , p_component_type_code => l_component_type_code
116437 , p_component_appl_id => l_component_appl_id
116438 , p_amb_context_code => l_amb_context_code
116439 , p_side => 'NA'
116440 );
116441
116442
116443 --
116444 --
116445 END IF;
116446 --
116447 -- Bug 4922099
116448 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
116449 (NVL(l_enc_upg_option, 'N') = 'O')
116450 ) AND
116451 (l_bflow_method_code = 'PRIOR_ENTRY')
116452 )
116453 THEN
116454 IF
116455 --
116456 1 = 2
116457 --
116458 THEN
116459 xla_accounting_err_pkg.build_message
116460 (p_appli_s_name => 'XLA'
116461 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116462 ,p_token_1 => 'LINE_NUMBER'
116463 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
116464 ,p_token_2 => 'LINE_TYPE_NAME'
116465 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
116466 l_component_type
116467 ,l_component_code
116468 ,l_component_type_code
116469 ,l_component_appl_id
116470 ,l_amb_context_code
116471 ,l_entity_code
116472 ,l_event_class_code
116473 )
116474 ,p_token_3 => 'OWNER'
116475 ,p_value_3 => xla_lookups_pkg.get_meaning(
116476 p_lookup_type => 'XLA_OWNER_TYPE'
116477 ,p_lookup_code => l_component_type_code
116478 )
116479 ,p_token_4 => 'PRODUCT_NAME'
116480 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
116481 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
116482 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
116483 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
116484 ,p_ae_header_id => NULL
116485 );
116486
116487 IF (C_LEVEL_ERROR>= g_log_level) THEN
116488 trace
116489 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
116490 ,p_level => C_LEVEL_ERROR
116491 ,p_module => l_log_module);
116492 END IF;
116493 END IF;
116494 END IF;
116495 --
116496 --
116497 ------------------------------------------------------------------------------------------------
116498 -- 4219869 Business Flow
116499 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
116500 -- Prior Entry. Currently, the following code is always generated.
116501 ------------------------------------------------------------------------------------------------
116502 XLA_AE_LINES_PKG.ValidateCurrentLine;
116503
116504 ------------------------------------------------------------------------------------
116505 -- 4219869 Business Flow
116506 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
116507 ------------------------------------------------------------------------------------
116508 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116509
116510 ----------------------------------------------------------------------------------
116511 -- 4219869 Business Flow
116512 -- Update journal entry status -- Need to generate this within IF <condition>
116513 ----------------------------------------------------------------------------------
116514 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116515 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
116516 ,p_balance_type_code => l_balance_type_code
116517 );
116518
116519 -------------------------------------------------------------------------------------------
116520 -- 4262811 - Generate the Accrual Reversal lines
116521 -------------------------------------------------------------------------------------------
116522 BEGIN
116523 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
116524 (g_array_event(p_event_id).array_value_num('header_index'));
116525 IF l_acc_rev_flag IS NULL THEN
116526 l_acc_rev_flag := 'N';
116527 END IF;
116528 EXCEPTION
116529 WHEN OTHERS THEN
116530 l_acc_rev_flag := 'N';
116531 END;
116532 --
116533 IF (l_acc_rev_flag = 'Y') THEN
116534
116535 -- 4645092 ------------------------------------------------------------------------------
116536 -- To allow MPA report to determine if it should generate report process
116537 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
116538 ------------------------------------------------------------------------------------------
116539
116540 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
116541 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
116542 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
116543 -- call ADRs
116544 -- Bug 4922099
116545 --
116546 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116547 (NVL(l_actual_upg_option, 'N') = 'O') OR
116548 (NVL(l_enc_upg_option, 'N') = 'O')
116549 )
116550 THEN
116551 NULL;
116552 --
116553 --
116554
116555 l_ccid := AcctDerRule_4(
116556 p_application_id => p_application_id
116557 , p_ae_header_id => l_ae_header_id
116558 , p_source_4 => p_source_4
116559 , x_transaction_coa_id => l_adr_transaction_coa_id
116560 , x_accounting_coa_id => l_adr_accounting_coa_id
116561 , x_value_type_code => l_adr_value_type_code
116562 , p_side => 'NA'
116563 );
116564
116565 xla_ae_lines_pkg.set_ccid(
116566 p_code_combination_id => l_ccid
116567 , p_value_type_code => l_adr_value_type_code
116568 , p_transaction_coa_id => l_adr_transaction_coa_id
116569 , p_accounting_coa_id => l_adr_accounting_coa_id
116570 , p_adr_code => 'CST_DEFAULT'
116571 , p_adr_type_code => 'S'
116572 , p_component_type => l_component_type
116573 , p_component_code => l_component_code
116574 , p_component_type_code => l_component_type_code
116575 , p_component_appl_id => l_component_appl_id
116576 , p_amb_context_code => l_amb_context_code
116577 , p_side => 'NA'
116578 );
116579
116580
116581 --
116582 --
116583 END IF;
116584
116585 --
116586 -- Update the line information that should be overwritten
116587 --
116588 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
116589 p_header_num => 1);
116590 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
116591
116592 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
116593
116594 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
116595 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
116596 END IF;
116597
116598 --
116599 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
116600 --
116601 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
116602 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
116603 ELSE
116604 ---------------------------------------------------------------------------------------------------
116605 -- 4262811a Switch Sign
116606 ---------------------------------------------------------------------------------------------------
116607 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
116608 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116609 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116610 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
116611 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116612 -- 5132302
116613 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
116614 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
116615
116616 END IF;
116617
116618 -- 4955764
116619 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116620 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
116621
116622
116623 XLA_AE_LINES_PKG.ValidateCurrentLine;
116624 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
116625
116626 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
116627 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
116628 ,p_balance_type_code => l_balance_type_code);
116629
116630 END IF;
116631
116632 -----------------------------------------------------------------------------------------
116633 -- 4262811 Multiperiod Accounting
116634 -----------------------------------------------------------------------------------------
116635 -- No MPA option is assigned.
116636
116637
116638 END IF;
116639 END IF;
116640 --
116641
116642 --
116643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116644 trace
116645 (p_msg => 'END of AcctLineType_211'
116646 ,p_level => C_LEVEL_PROCEDURE
116647 ,p_module => l_log_module);
116648 END IF;
116649 --
116650 EXCEPTION
116651 WHEN xla_exceptions_pkg.application_exception THEN
116652 RAISE;
116653 WHEN OTHERS THEN
116654 xla_exceptions_pkg.raise_message
116655 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_211');
116656 END AcctLineType_211;
116657 --
116658
116659 ---------------------------------------
116660 --
116661 -- PRIVATE FUNCTION
116662 -- AcctLineType_212
116663 --
116664 ---------------------------------------
116665 PROCEDURE AcctLineType_212 (
116666 p_application_id IN NUMBER
116667 ,p_event_id IN NUMBER
116668 ,p_calculate_acctd_flag IN VARCHAR2
116669 ,p_calculate_g_l_flag IN VARCHAR2
116670 ,p_actual_flag IN OUT VARCHAR2
116671 ,p_balance_type_code OUT VARCHAR2
116672 ,p_gain_or_loss_ref OUT VARCHAR2
116673
116674 --Cost Management Default Account
116675 , p_source_4 IN NUMBER
116676 --DISTRIBUTION_IDENTIFIER
116677 , p_source_11 IN NUMBER
116678 --Distribution Type
116679 , p_source_12 IN VARCHAR2
116680 , p_source_12_meaning IN VARCHAR2
116681 --Entered Currency Code
116682 , p_source_15 IN VARCHAR2
116683 --Entered Amount
116684 , p_source_18 IN NUMBER
116685 --Currency Conversion Date
116686 , p_source_19 IN DATE
116687 --Currency Conversion Rate
116688 , p_source_20 IN NUMBER
116689 --Currency Conversion Type
116690 , p_source_21 IN VARCHAR2
116691 --Accounted Amount
116692 , p_source_22 IN NUMBER
116693 --Accounting Line Type
116694 , p_source_24 IN NUMBER
116695 )
116696 IS
116697
116698 l_component_type VARCHAR2(80);
116699 l_component_code VARCHAR2(30);
116700 l_component_type_code VARCHAR2(1);
116701 l_component_appl_id INTEGER;
116702 l_amb_context_code VARCHAR2(30);
116703 l_entity_code VARCHAR2(30);
116704 l_event_class_code VARCHAR2(30);
116705 l_ae_header_id NUMBER;
116706 l_event_type_code VARCHAR2(30);
116707 l_line_definition_code VARCHAR2(30);
116708 l_line_definition_owner_code VARCHAR2(1);
116709 --
116710 -- adr variables
116711 l_segment VARCHAR2(30);
116712 l_ccid NUMBER;
116713 l_adr_transaction_coa_id NUMBER;
116714 l_adr_accounting_coa_id NUMBER;
116715 l_adr_flexfield_segment_code VARCHAR2(30);
116716 l_adr_flex_value_set_id NUMBER;
116717 l_adr_value_type_code VARCHAR2(30);
116718 l_adr_value_combination_id NUMBER;
116719 l_adr_value_segment_code VARCHAR2(30);
116720
116721 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
116722 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
116723 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
116724 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
116725
116726 -- 4262811 Variables ------------------------------------------------------------------------------------------
116727 l_entered_amt_idx NUMBER;
116728 l_accted_amt_idx NUMBER;
116729 l_acc_rev_flag VARCHAR2(1);
116730 l_accrual_line_num NUMBER;
116731 l_tmp_amt NUMBER;
116732 l_acc_rev_natural_side_code VARCHAR2(1);
116733
116734 l_num_entries NUMBER;
116735 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
116736 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
116737 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
116738 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
116739 l_recog_line_1 NUMBER;
116740 l_recog_line_2 NUMBER;
116741
116742 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
116743 l_bflow_applied_to_amt NUMBER; -- 5132302
116744 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
116745
116746 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
116747
116748 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
116749 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
116750
116751 ---------------------------------------------------------------------------------------------------------------
116752
116753
116754 --
116755 -- bulk performance
116756 --
116757 l_balance_type_code VARCHAR2(1);
116758 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
116759 l_log_module VARCHAR2(240);
116760
116761 --
116762 -- Upgrade strategy
116763 --
116764 l_actual_upg_option VARCHAR2(1);
116765 l_enc_upg_option VARCHAR2(1);
116766
116767 --
116768 BEGIN
116769 --
116770 IF g_log_enabled THEN
116771 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_212';
116772 END IF;
116773 --
116774 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
116775
116776 trace
116777 (p_msg => 'BEGIN of AcctLineType_212'
116778 ,p_level => C_LEVEL_PROCEDURE
116779 ,p_module => l_log_module);
116780
116781 END IF;
116782 --
116783 l_component_type := 'AMB_JLT';
116784 l_component_code := 'OVERHEAD_ABSORPTION';
116785 l_component_type_code := 'S';
116786 l_component_appl_id := 707;
116787 l_amb_context_code := 'DEFAULT';
116788 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
116789 l_event_class_code := 'ABSORPTION';
116790 l_event_type_code := 'ABSORPTION_ALL';
116791 l_line_definition_owner_code := 'S';
116792 l_line_definition_code := 'ABSORPTION';
116793 --
116794 l_balance_type_code := 'A';
116795 l_segment := NULL;
116796 l_ccid := NULL;
116797 l_adr_transaction_coa_id := NULL;
116798 l_adr_accounting_coa_id := NULL;
116799 l_adr_flexfield_segment_code := NULL;
116800 l_adr_flex_value_set_id := NULL;
116801 l_adr_value_type_code := NULL;
116802 l_adr_value_combination_id := NULL;
116803 l_adr_value_segment_code := NULL;
116804
116805 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
116806 l_bflow_class_code := ''; -- 4219869 Business Flow
116807 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
116808 l_budgetary_control_flag := 'N';
116809
116810 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116811 l_bflow_applied_to_amt := NULL; -- 5132302
116812 l_entered_amt_idx := NULL; -- 4262811
116813 l_accted_amt_idx := NULL; -- 4262811
116814 l_acc_rev_flag := NULL; -- 4262811
116815 l_accrual_line_num := NULL; -- 4262811
116816 l_tmp_amt := NULL; -- 4262811
116817 --
116818
116819 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
116820 l_balance_type_code <> 'B' THEN
116821 IF NVL(p_source_24,9E125) = 3
116822 THEN
116823
116824 --
116825 XLA_AE_LINES_PKG.SetNewLine;
116826
116827 p_balance_type_code := l_balance_type_code;
116828 -- set the flag so later we will know whether the gain loss line needs to be created
116829
116830 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
116831 p_actual_flag :='A';
116832 END IF;
116833
116834 --
116835 -- bulk performance
116836 --
116837 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
116838 p_header_num => 0); -- 4262811
116839 --
116840 -- set accounting line options
116841 --
116842 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
116843 p_natural_side_code => 'D'
116844 , p_gain_or_loss_flag => 'N'
116845 , p_gl_transfer_mode_code => 'S'
116846 , p_acct_entry_type_code => 'A'
116847 , p_switch_side_flag => 'Y'
116848 , p_merge_duplicate_code => 'N'
116849 );
116850 --
116851 l_acc_rev_natural_side_code := 'C'; -- 4262811
116852 --
116853 --
116854 -- set accounting line type info
116855 --
116856 xla_ae_lines_pkg.SetAcctLineType
116857 (p_component_type => l_component_type
116858 ,p_event_type_code => l_event_type_code
116859 ,p_line_definition_owner_code => l_line_definition_owner_code
116860 ,p_line_definition_code => l_line_definition_code
116861 ,p_accounting_line_code => l_component_code
116862 ,p_accounting_line_type_code => l_component_type_code
116863 ,p_accounting_line_appl_id => l_component_appl_id
116864 ,p_amb_context_code => l_amb_context_code
116865 ,p_entity_code => l_entity_code
116866 ,p_event_class_code => l_event_class_code);
116867 --
116868 -- set accounting class
116869 --
116870 xla_ae_lines_pkg.SetAcctClass(
116871 p_accounting_class_code => 'OVERHEAD_ABSORPTION'
116872 , p_ae_header_id => l_ae_header_id
116873 );
116874
116875 --
116876 -- set rounding class
116877 --
116878 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
116879 'OVERHEAD_ABSORPTION';
116880
116881 --
116882 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
116883 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
116884 --
116885 -- bulk performance
116886 --
116887 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
116888
116889 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
116890 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
116891
116892 -- 4955764
116893 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
116894 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
116895
116896 -- 4458381 Public Sector Enh
116897
116898 --
116899 -- set accounting attributes for the line type
116900 --
116901 l_entered_amt_idx := 3;
116902 l_accted_amt_idx := 8;
116903 l_bflow_applied_to_amt_idx := NULL; -- 5132302
116904 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
116905 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
116906 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
116907 l_rec_acct_attrs.array_char_value(2) := p_source_12;
116908 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
116909 l_rec_acct_attrs.array_num_value(3) := p_source_18;
116910 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
116911 l_rec_acct_attrs.array_char_value(4) := p_source_15;
116912 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
116913 l_rec_acct_attrs.array_date_value(5) := p_source_19;
116914 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
116915 l_rec_acct_attrs.array_num_value(6) := p_source_20;
116916 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
116917 l_rec_acct_attrs.array_char_value(7) := p_source_21;
116918 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
116919 l_rec_acct_attrs.array_num_value(8) := p_source_22;
116920
116921 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
116922 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
116923
116924 ---------------------------------------------------------------------------------------------------------------
116925 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
116926 ---------------------------------------------------------------------------------------------------------------
116927 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
116928
116929 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116930 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
116931
116932 IF xla_accounting_cache_pkg.GetValueChar
116933 (p_source_code => 'LEDGER_CATEGORY_CODE'
116934 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
116935 AND l_bflow_method_code = 'PRIOR_ENTRY'
116936 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
116937 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
116938 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
116939 )
116940 THEN
116941 xla_ae_lines_pkg.BflowUpgEntry
116942 (p_business_method_code => l_bflow_method_code
116943 ,p_business_class_code => l_bflow_class_code
116944 ,p_balance_type => l_balance_type_code);
116945 ELSE
116946 NULL;
116947 -- No business flow processing for business flow method of NONE.
116948 END IF;
116949
116950 --
116951 -- call analytical criteria
116952 --
116953
116954 --
116955 -- call description
116956 --
116957 -- No description or it is inherited.
116958 --
116959 -- call ADRs
116960 -- Bug 4922099
116961 --
116962 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
116963 (NVL(l_actual_upg_option, 'N') = 'O') OR
116964 (NVL(l_enc_upg_option, 'N') = 'O')
116965 )
116966 THEN
116967 NULL;
116968 --
116969 --
116970
116971 l_ccid := AcctDerRule_4(
116972 p_application_id => p_application_id
116973 , p_ae_header_id => l_ae_header_id
116974 , p_source_4 => p_source_4
116975 , x_transaction_coa_id => l_adr_transaction_coa_id
116976 , x_accounting_coa_id => l_adr_accounting_coa_id
116977 , x_value_type_code => l_adr_value_type_code
116978 , p_side => 'NA'
116979 );
116980
116981 xla_ae_lines_pkg.set_ccid(
116982 p_code_combination_id => l_ccid
116983 , p_value_type_code => l_adr_value_type_code
116984 , p_transaction_coa_id => l_adr_transaction_coa_id
116985 , p_accounting_coa_id => l_adr_accounting_coa_id
116986 , p_adr_code => 'CST_DEFAULT'
116987 , p_adr_type_code => 'S'
116988 , p_component_type => l_component_type
116989 , p_component_code => l_component_code
116990 , p_component_type_code => l_component_type_code
116991 , p_component_appl_id => l_component_appl_id
116992 , p_amb_context_code => l_amb_context_code
116993 , p_side => 'NA'
116994 );
116995
116996
116997 --
116998 --
116999 END IF;
117000 --
117001 -- Bug 4922099
117002 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117003 (NVL(l_enc_upg_option, 'N') = 'O')
117004 ) AND
117005 (l_bflow_method_code = 'PRIOR_ENTRY')
117006 )
117007 THEN
117008 IF
117009 --
117010 1 = 2
117011 --
117012 THEN
117013 xla_accounting_err_pkg.build_message
117014 (p_appli_s_name => 'XLA'
117015 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117016 ,p_token_1 => 'LINE_NUMBER'
117017 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
117018 ,p_token_2 => 'LINE_TYPE_NAME'
117019 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
117020 l_component_type
117021 ,l_component_code
117022 ,l_component_type_code
117023 ,l_component_appl_id
117024 ,l_amb_context_code
117025 ,l_entity_code
117026 ,l_event_class_code
117027 )
117028 ,p_token_3 => 'OWNER'
117029 ,p_value_3 => xla_lookups_pkg.get_meaning(
117030 p_lookup_type => 'XLA_OWNER_TYPE'
117031 ,p_lookup_code => l_component_type_code
117032 )
117033 ,p_token_4 => 'PRODUCT_NAME'
117034 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117035 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117036 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117037 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117038 ,p_ae_header_id => NULL
117039 );
117040
117041 IF (C_LEVEL_ERROR>= g_log_level) THEN
117042 trace
117043 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117044 ,p_level => C_LEVEL_ERROR
117045 ,p_module => l_log_module);
117046 END IF;
117047 END IF;
117048 END IF;
117049 --
117050 --
117051 ------------------------------------------------------------------------------------------------
117052 -- 4219869 Business Flow
117053 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117054 -- Prior Entry. Currently, the following code is always generated.
117055 ------------------------------------------------------------------------------------------------
117056 XLA_AE_LINES_PKG.ValidateCurrentLine;
117057
117058 ------------------------------------------------------------------------------------
117059 -- 4219869 Business Flow
117060 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117061 ------------------------------------------------------------------------------------
117062 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117063
117064 ----------------------------------------------------------------------------------
117065 -- 4219869 Business Flow
117066 -- Update journal entry status -- Need to generate this within IF <condition>
117067 ----------------------------------------------------------------------------------
117068 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117069 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117070 ,p_balance_type_code => l_balance_type_code
117071 );
117072
117073 -------------------------------------------------------------------------------------------
117074 -- 4262811 - Generate the Accrual Reversal lines
117075 -------------------------------------------------------------------------------------------
117076 BEGIN
117077 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117078 (g_array_event(p_event_id).array_value_num('header_index'));
117079 IF l_acc_rev_flag IS NULL THEN
117080 l_acc_rev_flag := 'N';
117081 END IF;
117082 EXCEPTION
117083 WHEN OTHERS THEN
117084 l_acc_rev_flag := 'N';
117085 END;
117086 --
117087 IF (l_acc_rev_flag = 'Y') THEN
117088
117089 -- 4645092 ------------------------------------------------------------------------------
117090 -- To allow MPA report to determine if it should generate report process
117091 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117092 ------------------------------------------------------------------------------------------
117093
117094 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117095 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117096 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
117097 -- call ADRs
117098 -- Bug 4922099
117099 --
117100 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117101 (NVL(l_actual_upg_option, 'N') = 'O') OR
117102 (NVL(l_enc_upg_option, 'N') = 'O')
117103 )
117104 THEN
117105 NULL;
117106 --
117107 --
117108
117109 l_ccid := AcctDerRule_4(
117110 p_application_id => p_application_id
117111 , p_ae_header_id => l_ae_header_id
117112 , p_source_4 => p_source_4
117113 , x_transaction_coa_id => l_adr_transaction_coa_id
117114 , x_accounting_coa_id => l_adr_accounting_coa_id
117115 , x_value_type_code => l_adr_value_type_code
117116 , p_side => 'NA'
117117 );
117118
117119 xla_ae_lines_pkg.set_ccid(
117120 p_code_combination_id => l_ccid
117121 , p_value_type_code => l_adr_value_type_code
117122 , p_transaction_coa_id => l_adr_transaction_coa_id
117123 , p_accounting_coa_id => l_adr_accounting_coa_id
117124 , p_adr_code => 'CST_DEFAULT'
117125 , p_adr_type_code => 'S'
117126 , p_component_type => l_component_type
117127 , p_component_code => l_component_code
117128 , p_component_type_code => l_component_type_code
117129 , p_component_appl_id => l_component_appl_id
117130 , p_amb_context_code => l_amb_context_code
117131 , p_side => 'NA'
117132 );
117133
117134
117135 --
117136 --
117137 END IF;
117138
117139 --
117140 -- Update the line information that should be overwritten
117141 --
117142 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117143 p_header_num => 1);
117144 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
117145
117146 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117147
117148 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
117149 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117150 END IF;
117151
117152 --
117153 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117154 --
117155 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117156 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
117157 ELSE
117158 ---------------------------------------------------------------------------------------------------
117159 -- 4262811a Switch Sign
117160 ---------------------------------------------------------------------------------------------------
117161 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
117162 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117163 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117164 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117165 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117166 -- 5132302
117167 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117168 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117169
117170 END IF;
117171
117172 -- 4955764
117173 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117174 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117175
117176
117177 XLA_AE_LINES_PKG.ValidateCurrentLine;
117178 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117179
117180 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117181 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117182 ,p_balance_type_code => l_balance_type_code);
117183
117184 END IF;
117185
117186 -----------------------------------------------------------------------------------------
117187 -- 4262811 Multiperiod Accounting
117188 -----------------------------------------------------------------------------------------
117189 -- No MPA option is assigned.
117190
117191
117192 END IF;
117193 END IF;
117194 --
117195
117196 --
117197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117198 trace
117199 (p_msg => 'END of AcctLineType_212'
117200 ,p_level => C_LEVEL_PROCEDURE
117201 ,p_module => l_log_module);
117202 END IF;
117203 --
117204 EXCEPTION
117205 WHEN xla_exceptions_pkg.application_exception THEN
117206 RAISE;
117207 WHEN OTHERS THEN
117208 xla_exceptions_pkg.raise_message
117209 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_212');
117210 END AcctLineType_212;
117211 --
117212
117213 ---------------------------------------
117214 --
117215 -- PRIVATE FUNCTION
117216 -- AcctLineType_213
117217 --
117218 ---------------------------------------
117219 PROCEDURE AcctLineType_213 (
117220 p_application_id IN NUMBER
117221 ,p_event_id IN NUMBER
117222 ,p_calculate_acctd_flag IN VARCHAR2
117223 ,p_calculate_g_l_flag IN VARCHAR2
117224 ,p_actual_flag IN OUT VARCHAR2
117225 ,p_balance_type_code OUT VARCHAR2
117226 ,p_gain_or_loss_ref OUT VARCHAR2
117227
117228 --Cost Management Default Account
117229 , p_source_4 IN NUMBER
117230 --DISTRIBUTION_IDENTIFIER
117231 , p_source_11 IN NUMBER
117232 --Distribution Type
117233 , p_source_12 IN VARCHAR2
117234 , p_source_12_meaning IN VARCHAR2
117235 --Entered Currency Code
117236 , p_source_15 IN VARCHAR2
117237 --Entered Amount
117238 , p_source_18 IN NUMBER
117239 --Currency Conversion Date
117240 , p_source_19 IN DATE
117241 --Currency Conversion Rate
117242 , p_source_20 IN NUMBER
117243 --Accounted Amount
117244 , p_source_22 IN NUMBER
117245 --Accounting Line Type
117246 , p_source_24 IN NUMBER
117247 )
117248 IS
117249
117250 l_component_type VARCHAR2(80);
117251 l_component_code VARCHAR2(30);
117252 l_component_type_code VARCHAR2(1);
117253 l_component_appl_id INTEGER;
117254 l_amb_context_code VARCHAR2(30);
117255 l_entity_code VARCHAR2(30);
117256 l_event_class_code VARCHAR2(30);
117257 l_ae_header_id NUMBER;
117258 l_event_type_code VARCHAR2(30);
117259 l_line_definition_code VARCHAR2(30);
117260 l_line_definition_owner_code VARCHAR2(1);
117261 --
117262 -- adr variables
117263 l_segment VARCHAR2(30);
117264 l_ccid NUMBER;
117265 l_adr_transaction_coa_id NUMBER;
117266 l_adr_accounting_coa_id NUMBER;
117267 l_adr_flexfield_segment_code VARCHAR2(30);
117268 l_adr_flex_value_set_id NUMBER;
117269 l_adr_value_type_code VARCHAR2(30);
117270 l_adr_value_combination_id NUMBER;
117271 l_adr_value_segment_code VARCHAR2(30);
117272
117273 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
117274 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
117275 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
117276 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
117277
117278 -- 4262811 Variables ------------------------------------------------------------------------------------------
117279 l_entered_amt_idx NUMBER;
117280 l_accted_amt_idx NUMBER;
117281 l_acc_rev_flag VARCHAR2(1);
117282 l_accrual_line_num NUMBER;
117283 l_tmp_amt NUMBER;
117284 l_acc_rev_natural_side_code VARCHAR2(1);
117285
117286 l_num_entries NUMBER;
117287 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
117288 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
117289 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
117290 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
117291 l_recog_line_1 NUMBER;
117292 l_recog_line_2 NUMBER;
117293
117294 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
117295 l_bflow_applied_to_amt NUMBER; -- 5132302
117296 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
117297
117298 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117299
117300 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
117301 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
117302
117303 ---------------------------------------------------------------------------------------------------------------
117304
117305
117306 --
117307 -- bulk performance
117308 --
117309 l_balance_type_code VARCHAR2(1);
117310 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
117311 l_log_module VARCHAR2(240);
117312
117313 --
117314 -- Upgrade strategy
117315 --
117316 l_actual_upg_option VARCHAR2(1);
117317 l_enc_upg_option VARCHAR2(1);
117318
117319 --
117320 BEGIN
117321 --
117322 IF g_log_enabled THEN
117323 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_213';
117324 END IF;
117325 --
117326 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117327
117328 trace
117329 (p_msg => 'BEGIN of AcctLineType_213'
117330 ,p_level => C_LEVEL_PROCEDURE
117331 ,p_module => l_log_module);
117332
117333 END IF;
117334 --
117335 l_component_type := 'AMB_JLT';
117336 l_component_code := 'OVERHEAD_ABSORPTION';
117337 l_component_type_code := 'S';
117338 l_component_appl_id := 707;
117339 l_amb_context_code := 'DEFAULT';
117340 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
117341 l_event_class_code := 'OSP';
117342 l_event_type_code := 'OSP_ALL';
117343 l_line_definition_owner_code := 'S';
117344 l_line_definition_code := 'OUTSIDE_PROCESSING';
117345 --
117346 l_balance_type_code := 'A';
117347 l_segment := NULL;
117348 l_ccid := NULL;
117349 l_adr_transaction_coa_id := NULL;
117350 l_adr_accounting_coa_id := NULL;
117351 l_adr_flexfield_segment_code := NULL;
117352 l_adr_flex_value_set_id := NULL;
117353 l_adr_value_type_code := NULL;
117354 l_adr_value_combination_id := NULL;
117355 l_adr_value_segment_code := NULL;
117356
117357 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
117358 l_bflow_class_code := ''; -- 4219869 Business Flow
117359 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
117360 l_budgetary_control_flag := 'N';
117361
117362 l_bflow_applied_to_amt_idx := NULL; -- 5132302
117363 l_bflow_applied_to_amt := NULL; -- 5132302
117364 l_entered_amt_idx := NULL; -- 4262811
117365 l_accted_amt_idx := NULL; -- 4262811
117366 l_acc_rev_flag := NULL; -- 4262811
117367 l_accrual_line_num := NULL; -- 4262811
117368 l_tmp_amt := NULL; -- 4262811
117369 --
117370
117371 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117372 l_balance_type_code <> 'B' THEN
117373 IF NVL(p_source_24,9E125) = 3
117374 THEN
117375
117376 --
117377 XLA_AE_LINES_PKG.SetNewLine;
117378
117379 p_balance_type_code := l_balance_type_code;
117380 -- set the flag so later we will know whether the gain loss line needs to be created
117381
117382 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117383 p_actual_flag :='A';
117384 END IF;
117385
117386 --
117387 -- bulk performance
117388 --
117389 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117390 p_header_num => 0); -- 4262811
117391 --
117392 -- set accounting line options
117393 --
117394 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117395 p_natural_side_code => 'D'
117396 , p_gain_or_loss_flag => 'N'
117397 , p_gl_transfer_mode_code => 'S'
117398 , p_acct_entry_type_code => 'A'
117399 , p_switch_side_flag => 'Y'
117400 , p_merge_duplicate_code => 'N'
117401 );
117402 --
117403 l_acc_rev_natural_side_code := 'C'; -- 4262811
117404 --
117405 --
117406 -- set accounting line type info
117407 --
117408 xla_ae_lines_pkg.SetAcctLineType
117409 (p_component_type => l_component_type
117410 ,p_event_type_code => l_event_type_code
117411 ,p_line_definition_owner_code => l_line_definition_owner_code
117412 ,p_line_definition_code => l_line_definition_code
117413 ,p_accounting_line_code => l_component_code
117414 ,p_accounting_line_type_code => l_component_type_code
117415 ,p_accounting_line_appl_id => l_component_appl_id
117416 ,p_amb_context_code => l_amb_context_code
117417 ,p_entity_code => l_entity_code
117418 ,p_event_class_code => l_event_class_code);
117419 --
117420 -- set accounting class
117421 --
117422 xla_ae_lines_pkg.SetAcctClass(
117423 p_accounting_class_code => 'OVERHEAD_ABSORPTION'
117424 , p_ae_header_id => l_ae_header_id
117425 );
117426
117427 --
117428 -- set rounding class
117429 --
117430 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
117431 'OVERHEAD_ABSORPTION';
117432
117433 --
117434 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
117435 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
117436 --
117437 -- bulk performance
117438 --
117439 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
117440
117441 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
117442 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
117443
117444 -- 4955764
117445 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117446 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
117447
117448 -- 4458381 Public Sector Enh
117449
117450 --
117451 -- set accounting attributes for the line type
117452 --
117453 l_entered_amt_idx := 3;
117454 l_accted_amt_idx := 8;
117455 l_bflow_applied_to_amt_idx := NULL; -- 5132302
117456 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
117457 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
117458 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
117459 l_rec_acct_attrs.array_char_value(2) := p_source_12;
117460 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
117461 l_rec_acct_attrs.array_num_value(3) := p_source_18;
117462 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
117463 l_rec_acct_attrs.array_char_value(4) := p_source_15;
117464 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
117465 l_rec_acct_attrs.array_date_value(5) := p_source_19;
117466 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
117467 l_rec_acct_attrs.array_num_value(6) := p_source_20;
117468 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
117469 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
117470 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
117471 l_rec_acct_attrs.array_num_value(8) := p_source_22;
117472
117473 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
117474 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
117475
117476 ---------------------------------------------------------------------------------------------------------------
117477 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
117478 ---------------------------------------------------------------------------------------------------------------
117479 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
117480
117481 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117482 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
117483
117484 IF xla_accounting_cache_pkg.GetValueChar
117485 (p_source_code => 'LEDGER_CATEGORY_CODE'
117486 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
117487 AND l_bflow_method_code = 'PRIOR_ENTRY'
117488 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
117489 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
117490 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
117491 )
117492 THEN
117493 xla_ae_lines_pkg.BflowUpgEntry
117494 (p_business_method_code => l_bflow_method_code
117495 ,p_business_class_code => l_bflow_class_code
117496 ,p_balance_type => l_balance_type_code);
117497 ELSE
117498 NULL;
117499 -- No business flow processing for business flow method of NONE.
117500 END IF;
117501
117502 --
117503 -- call analytical criteria
117504 --
117505
117506 --
117507 -- call description
117508 --
117509 -- No description or it is inherited.
117510 --
117511 -- call ADRs
117512 -- Bug 4922099
117513 --
117514 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117515 (NVL(l_actual_upg_option, 'N') = 'O') OR
117516 (NVL(l_enc_upg_option, 'N') = 'O')
117517 )
117518 THEN
117519 NULL;
117520 --
117521 --
117522
117523 l_ccid := AcctDerRule_4(
117524 p_application_id => p_application_id
117525 , p_ae_header_id => l_ae_header_id
117526 , p_source_4 => p_source_4
117527 , x_transaction_coa_id => l_adr_transaction_coa_id
117528 , x_accounting_coa_id => l_adr_accounting_coa_id
117529 , x_value_type_code => l_adr_value_type_code
117530 , p_side => 'NA'
117531 );
117532
117533 xla_ae_lines_pkg.set_ccid(
117534 p_code_combination_id => l_ccid
117535 , p_value_type_code => l_adr_value_type_code
117536 , p_transaction_coa_id => l_adr_transaction_coa_id
117537 , p_accounting_coa_id => l_adr_accounting_coa_id
117538 , p_adr_code => 'CST_DEFAULT'
117539 , p_adr_type_code => 'S'
117540 , p_component_type => l_component_type
117541 , p_component_code => l_component_code
117542 , p_component_type_code => l_component_type_code
117543 , p_component_appl_id => l_component_appl_id
117544 , p_amb_context_code => l_amb_context_code
117545 , p_side => 'NA'
117546 );
117547
117548
117549 --
117550 --
117551 END IF;
117552 --
117553 -- Bug 4922099
117554 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
117555 (NVL(l_enc_upg_option, 'N') = 'O')
117556 ) AND
117557 (l_bflow_method_code = 'PRIOR_ENTRY')
117558 )
117559 THEN
117560 IF
117561 --
117562 1 = 2
117563 --
117564 THEN
117565 xla_accounting_err_pkg.build_message
117566 (p_appli_s_name => 'XLA'
117567 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117568 ,p_token_1 => 'LINE_NUMBER'
117569 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
117570 ,p_token_2 => 'LINE_TYPE_NAME'
117571 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
117572 l_component_type
117573 ,l_component_code
117574 ,l_component_type_code
117575 ,l_component_appl_id
117576 ,l_amb_context_code
117577 ,l_entity_code
117578 ,l_event_class_code
117579 )
117580 ,p_token_3 => 'OWNER'
117581 ,p_value_3 => xla_lookups_pkg.get_meaning(
117582 p_lookup_type => 'XLA_OWNER_TYPE'
117583 ,p_lookup_code => l_component_type_code
117584 )
117585 ,p_token_4 => 'PRODUCT_NAME'
117586 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
117587 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
117588 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
117589 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
117590 ,p_ae_header_id => NULL
117591 );
117592
117593 IF (C_LEVEL_ERROR>= g_log_level) THEN
117594 trace
117595 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
117596 ,p_level => C_LEVEL_ERROR
117597 ,p_module => l_log_module);
117598 END IF;
117599 END IF;
117600 END IF;
117601 --
117602 --
117603 ------------------------------------------------------------------------------------------------
117604 -- 4219869 Business Flow
117605 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
117606 -- Prior Entry. Currently, the following code is always generated.
117607 ------------------------------------------------------------------------------------------------
117608 XLA_AE_LINES_PKG.ValidateCurrentLine;
117609
117610 ------------------------------------------------------------------------------------
117611 -- 4219869 Business Flow
117612 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
117613 ------------------------------------------------------------------------------------
117614 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117615
117616 ----------------------------------------------------------------------------------
117617 -- 4219869 Business Flow
117618 -- Update journal entry status -- Need to generate this within IF <condition>
117619 ----------------------------------------------------------------------------------
117620 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117621 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
117622 ,p_balance_type_code => l_balance_type_code
117623 );
117624
117625 -------------------------------------------------------------------------------------------
117626 -- 4262811 - Generate the Accrual Reversal lines
117627 -------------------------------------------------------------------------------------------
117628 BEGIN
117629 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
117630 (g_array_event(p_event_id).array_value_num('header_index'));
117631 IF l_acc_rev_flag IS NULL THEN
117632 l_acc_rev_flag := 'N';
117633 END IF;
117634 EXCEPTION
117635 WHEN OTHERS THEN
117636 l_acc_rev_flag := 'N';
117637 END;
117638 --
117639 IF (l_acc_rev_flag = 'Y') THEN
117640
117641 -- 4645092 ------------------------------------------------------------------------------
117642 -- To allow MPA report to determine if it should generate report process
117643 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
117644 ------------------------------------------------------------------------------------------
117645
117646 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
117647 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
117648 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
117649 -- call ADRs
117650 -- Bug 4922099
117651 --
117652 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
117653 (NVL(l_actual_upg_option, 'N') = 'O') OR
117654 (NVL(l_enc_upg_option, 'N') = 'O')
117655 )
117656 THEN
117657 NULL;
117658 --
117659 --
117660
117661 l_ccid := AcctDerRule_4(
117662 p_application_id => p_application_id
117663 , p_ae_header_id => l_ae_header_id
117664 , p_source_4 => p_source_4
117665 , x_transaction_coa_id => l_adr_transaction_coa_id
117666 , x_accounting_coa_id => l_adr_accounting_coa_id
117667 , x_value_type_code => l_adr_value_type_code
117668 , p_side => 'NA'
117669 );
117670
117671 xla_ae_lines_pkg.set_ccid(
117672 p_code_combination_id => l_ccid
117673 , p_value_type_code => l_adr_value_type_code
117674 , p_transaction_coa_id => l_adr_transaction_coa_id
117675 , p_accounting_coa_id => l_adr_accounting_coa_id
117676 , p_adr_code => 'CST_DEFAULT'
117677 , p_adr_type_code => 'S'
117678 , p_component_type => l_component_type
117679 , p_component_code => l_component_code
117680 , p_component_type_code => l_component_type_code
117681 , p_component_appl_id => l_component_appl_id
117682 , p_amb_context_code => l_amb_context_code
117683 , p_side => 'NA'
117684 );
117685
117686
117687 --
117688 --
117689 END IF;
117690
117691 --
117692 -- Update the line information that should be overwritten
117693 --
117694 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
117695 p_header_num => 1);
117696 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
117697
117698 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
117699
117700 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
117701 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
117702 END IF;
117703
117704 --
117705 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
117706 --
117707 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
117708 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
117709 ELSE
117710 ---------------------------------------------------------------------------------------------------
117711 -- 4262811a Switch Sign
117712 ---------------------------------------------------------------------------------------------------
117713 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
117714 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117715 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117716 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
117717 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117718 -- 5132302
117719 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
117720 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
117721
117722 END IF;
117723
117724 -- 4955764
117725 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
117726 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
117727
117728
117729 XLA_AE_LINES_PKG.ValidateCurrentLine;
117730 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
117731
117732 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
117733 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
117734 ,p_balance_type_code => l_balance_type_code);
117735
117736 END IF;
117737
117738 -----------------------------------------------------------------------------------------
117739 -- 4262811 Multiperiod Accounting
117740 -----------------------------------------------------------------------------------------
117741 -- No MPA option is assigned.
117742
117743
117744 END IF;
117745 END IF;
117746 --
117747
117748 --
117749 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117750 trace
117751 (p_msg => 'END of AcctLineType_213'
117752 ,p_level => C_LEVEL_PROCEDURE
117753 ,p_module => l_log_module);
117754 END IF;
117755 --
117756 EXCEPTION
117757 WHEN xla_exceptions_pkg.application_exception THEN
117758 RAISE;
117759 WHEN OTHERS THEN
117760 xla_exceptions_pkg.raise_message
117761 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_213');
117762 END AcctLineType_213;
117763 --
117764
117765 ---------------------------------------
117766 --
117767 -- PRIVATE FUNCTION
117768 -- AcctLineType_214
117769 --
117770 ---------------------------------------
117771 PROCEDURE AcctLineType_214 (
117772 p_application_id IN NUMBER
117773 ,p_event_id IN NUMBER
117774 ,p_calculate_acctd_flag IN VARCHAR2
117775 ,p_calculate_g_l_flag IN VARCHAR2
117776 ,p_actual_flag IN OUT VARCHAR2
117777 ,p_balance_type_code OUT VARCHAR2
117778 ,p_gain_or_loss_ref OUT VARCHAR2
117779
117780 --Cost Management Default Account
117781 , p_source_4 IN NUMBER
117782 --DISTRIBUTION_IDENTIFIER
117783 , p_source_11 IN NUMBER
117784 --Distribution Type
117785 , p_source_12 IN VARCHAR2
117786 , p_source_12_meaning IN VARCHAR2
117787 --Entered Currency Code
117788 , p_source_15 IN VARCHAR2
117789 --Entered Amount
117790 , p_source_18 IN NUMBER
117791 --Currency Conversion Date
117792 , p_source_19 IN DATE
117793 --Currency Conversion Rate
117794 , p_source_20 IN NUMBER
117795 --Currency Conversion Type
117796 , p_source_21 IN VARCHAR2
117797 --Accounted Amount
117798 , p_source_22 IN NUMBER
117799 --Accounting Line Type
117800 , p_source_24 IN NUMBER
117801 )
117802 IS
117803
117804 l_component_type VARCHAR2(80);
117805 l_component_code VARCHAR2(30);
117806 l_component_type_code VARCHAR2(1);
117807 l_component_appl_id INTEGER;
117808 l_amb_context_code VARCHAR2(30);
117809 l_entity_code VARCHAR2(30);
117810 l_event_class_code VARCHAR2(30);
117811 l_ae_header_id NUMBER;
117812 l_event_type_code VARCHAR2(30);
117813 l_line_definition_code VARCHAR2(30);
117814 l_line_definition_owner_code VARCHAR2(1);
117815 --
117816 -- adr variables
117817 l_segment VARCHAR2(30);
117818 l_ccid NUMBER;
117819 l_adr_transaction_coa_id NUMBER;
117820 l_adr_accounting_coa_id NUMBER;
117821 l_adr_flexfield_segment_code VARCHAR2(30);
117822 l_adr_flex_value_set_id NUMBER;
117823 l_adr_value_type_code VARCHAR2(30);
117824 l_adr_value_combination_id NUMBER;
117825 l_adr_value_segment_code VARCHAR2(30);
117826
117827 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
117828 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
117829 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
117830 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
117831
117832 -- 4262811 Variables ------------------------------------------------------------------------------------------
117833 l_entered_amt_idx NUMBER;
117834 l_accted_amt_idx NUMBER;
117835 l_acc_rev_flag VARCHAR2(1);
117836 l_accrual_line_num NUMBER;
117837 l_tmp_amt NUMBER;
117838 l_acc_rev_natural_side_code VARCHAR2(1);
117839
117840 l_num_entries NUMBER;
117841 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
117842 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
117843 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
117844 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
117845 l_recog_line_1 NUMBER;
117846 l_recog_line_2 NUMBER;
117847
117848 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
117849 l_bflow_applied_to_amt NUMBER; -- 5132302
117850 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
117851
117852 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
117853
117854 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
117855 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
117856
117857 ---------------------------------------------------------------------------------------------------------------
117858
117859
117860 --
117861 -- bulk performance
117862 --
117863 l_balance_type_code VARCHAR2(1);
117864 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
117865 l_log_module VARCHAR2(240);
117866
117867 --
117868 -- Upgrade strategy
117869 --
117870 l_actual_upg_option VARCHAR2(1);
117871 l_enc_upg_option VARCHAR2(1);
117872
117873 --
117874 BEGIN
117875 --
117876 IF g_log_enabled THEN
117877 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_214';
117878 END IF;
117879 --
117880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
117881
117882 trace
117883 (p_msg => 'BEGIN of AcctLineType_214'
117884 ,p_level => C_LEVEL_PROCEDURE
117885 ,p_module => l_log_module);
117886
117887 END IF;
117888 --
117889 l_component_type := 'AMB_JLT';
117890 l_component_code := 'PROFIT_IN_INVENTORY';
117891 l_component_type_code := 'S';
117892 l_component_appl_id := 707;
117893 l_amb_context_code := 'DEFAULT';
117894 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
117895 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
117896 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
117897 l_line_definition_owner_code := 'S';
117898 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
117899 --
117900 l_balance_type_code := 'A';
117901 l_segment := NULL;
117902 l_ccid := NULL;
117903 l_adr_transaction_coa_id := NULL;
117904 l_adr_accounting_coa_id := NULL;
117905 l_adr_flexfield_segment_code := NULL;
117906 l_adr_flex_value_set_id := NULL;
117907 l_adr_value_type_code := NULL;
117908 l_adr_value_combination_id := NULL;
117909 l_adr_value_segment_code := NULL;
117910
117911 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
117912 l_bflow_class_code := ''; -- 4219869 Business Flow
117913 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
117914 l_budgetary_control_flag := 'N';
117915
117916 l_bflow_applied_to_amt_idx := NULL; -- 5132302
117917 l_bflow_applied_to_amt := NULL; -- 5132302
117918 l_entered_amt_idx := NULL; -- 4262811
117919 l_accted_amt_idx := NULL; -- 4262811
117920 l_acc_rev_flag := NULL; -- 4262811
117921 l_accrual_line_num := NULL; -- 4262811
117922 l_tmp_amt := NULL; -- 4262811
117923 --
117924
117925 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
117926 l_balance_type_code <> 'B' THEN
117927 IF NVL(p_source_24,9E125) = 30
117928 THEN
117929
117930 --
117931 XLA_AE_LINES_PKG.SetNewLine;
117932
117933 p_balance_type_code := l_balance_type_code;
117934 -- set the flag so later we will know whether the gain loss line needs to be created
117935
117936 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
117937 p_actual_flag :='A';
117938 END IF;
117939
117940 --
117941 -- bulk performance
117942 --
117943 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
117944 p_header_num => 0); -- 4262811
117945 --
117946 -- set accounting line options
117947 --
117948 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
117949 p_natural_side_code => 'D'
117950 , p_gain_or_loss_flag => 'N'
117951 , p_gl_transfer_mode_code => 'S'
117952 , p_acct_entry_type_code => 'A'
117953 , p_switch_side_flag => 'Y'
117954 , p_merge_duplicate_code => 'N'
117955 );
117956 --
117957 l_acc_rev_natural_side_code := 'C'; -- 4262811
117958 --
117959 --
117960 -- set accounting line type info
117961 --
117962 xla_ae_lines_pkg.SetAcctLineType
117963 (p_component_type => l_component_type
117964 ,p_event_type_code => l_event_type_code
117965 ,p_line_definition_owner_code => l_line_definition_owner_code
117966 ,p_line_definition_code => l_line_definition_code
117967 ,p_accounting_line_code => l_component_code
117968 ,p_accounting_line_type_code => l_component_type_code
117969 ,p_accounting_line_appl_id => l_component_appl_id
117970 ,p_amb_context_code => l_amb_context_code
117971 ,p_entity_code => l_entity_code
117972 ,p_event_class_code => l_event_class_code);
117973 --
117974 -- set accounting class
117975 --
117976 xla_ae_lines_pkg.SetAcctClass(
117977 p_accounting_class_code => 'PROFIT_IN_INVENTORY'
117978 , p_ae_header_id => l_ae_header_id
117979 );
117980
117981 --
117982 -- set rounding class
117983 --
117984 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
117985 'PROFIT_IN_INVENTORY';
117986
117987 --
117988 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
117989 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
117990 --
117991 -- bulk performance
117992 --
117993 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
117994
117995 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
117996 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
117997
117998 -- 4955764
117999 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118000 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118001
118002 -- 4458381 Public Sector Enh
118003
118004 --
118005 -- set accounting attributes for the line type
118006 --
118007 l_entered_amt_idx := 3;
118008 l_accted_amt_idx := 8;
118009 l_bflow_applied_to_amt_idx := NULL; -- 5132302
118010 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118011 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
118012 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118013 l_rec_acct_attrs.array_char_value(2) := p_source_12;
118014 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118015 l_rec_acct_attrs.array_num_value(3) := p_source_18;
118016 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118017 l_rec_acct_attrs.array_char_value(4) := p_source_15;
118018 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118019 l_rec_acct_attrs.array_date_value(5) := p_source_19;
118020 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118021 l_rec_acct_attrs.array_num_value(6) := p_source_20;
118022 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118023 l_rec_acct_attrs.array_char_value(7) := p_source_21;
118024 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118025 l_rec_acct_attrs.array_num_value(8) := p_source_22;
118026
118027 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118028 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118029
118030 ---------------------------------------------------------------------------------------------------------------
118031 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118032 ---------------------------------------------------------------------------------------------------------------
118033 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118034
118035 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118036 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118037
118038 IF xla_accounting_cache_pkg.GetValueChar
118039 (p_source_code => 'LEDGER_CATEGORY_CODE'
118040 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118041 AND l_bflow_method_code = 'PRIOR_ENTRY'
118042 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118043 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118044 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118045 )
118046 THEN
118047 xla_ae_lines_pkg.BflowUpgEntry
118048 (p_business_method_code => l_bflow_method_code
118049 ,p_business_class_code => l_bflow_class_code
118050 ,p_balance_type => l_balance_type_code);
118051 ELSE
118052 NULL;
118053 -- No business flow processing for business flow method of NONE.
118054 END IF;
118055
118056 --
118057 -- call analytical criteria
118058 --
118059
118060 --
118061 -- call description
118062 --
118063 -- No description or it is inherited.
118064 --
118065 -- call ADRs
118066 -- Bug 4922099
118067 --
118068 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118069 (NVL(l_actual_upg_option, 'N') = 'O') OR
118070 (NVL(l_enc_upg_option, 'N') = 'O')
118071 )
118072 THEN
118073 NULL;
118074 --
118075 --
118076
118077 l_ccid := AcctDerRule_4(
118078 p_application_id => p_application_id
118079 , p_ae_header_id => l_ae_header_id
118080 , p_source_4 => p_source_4
118081 , x_transaction_coa_id => l_adr_transaction_coa_id
118082 , x_accounting_coa_id => l_adr_accounting_coa_id
118083 , x_value_type_code => l_adr_value_type_code
118084 , p_side => 'NA'
118085 );
118086
118087 xla_ae_lines_pkg.set_ccid(
118088 p_code_combination_id => l_ccid
118089 , p_value_type_code => l_adr_value_type_code
118090 , p_transaction_coa_id => l_adr_transaction_coa_id
118091 , p_accounting_coa_id => l_adr_accounting_coa_id
118092 , p_adr_code => 'CST_DEFAULT'
118093 , p_adr_type_code => 'S'
118094 , p_component_type => l_component_type
118095 , p_component_code => l_component_code
118096 , p_component_type_code => l_component_type_code
118097 , p_component_appl_id => l_component_appl_id
118098 , p_amb_context_code => l_amb_context_code
118099 , p_side => 'NA'
118100 );
118101
118102
118103 --
118104 --
118105 END IF;
118106 --
118107 -- Bug 4922099
118108 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118109 (NVL(l_enc_upg_option, 'N') = 'O')
118110 ) AND
118111 (l_bflow_method_code = 'PRIOR_ENTRY')
118112 )
118113 THEN
118114 IF
118115 --
118116 1 = 2
118117 --
118118 THEN
118119 xla_accounting_err_pkg.build_message
118120 (p_appli_s_name => 'XLA'
118121 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118122 ,p_token_1 => 'LINE_NUMBER'
118123 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
118124 ,p_token_2 => 'LINE_TYPE_NAME'
118125 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
118126 l_component_type
118127 ,l_component_code
118128 ,l_component_type_code
118129 ,l_component_appl_id
118130 ,l_amb_context_code
118131 ,l_entity_code
118132 ,l_event_class_code
118133 )
118134 ,p_token_3 => 'OWNER'
118135 ,p_value_3 => xla_lookups_pkg.get_meaning(
118136 p_lookup_type => 'XLA_OWNER_TYPE'
118137 ,p_lookup_code => l_component_type_code
118138 )
118139 ,p_token_4 => 'PRODUCT_NAME'
118140 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118141 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118142 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118143 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118144 ,p_ae_header_id => NULL
118145 );
118146
118147 IF (C_LEVEL_ERROR>= g_log_level) THEN
118148 trace
118149 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118150 ,p_level => C_LEVEL_ERROR
118151 ,p_module => l_log_module);
118152 END IF;
118153 END IF;
118154 END IF;
118155 --
118156 --
118157 ------------------------------------------------------------------------------------------------
118158 -- 4219869 Business Flow
118159 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118160 -- Prior Entry. Currently, the following code is always generated.
118161 ------------------------------------------------------------------------------------------------
118162 XLA_AE_LINES_PKG.ValidateCurrentLine;
118163
118164 ------------------------------------------------------------------------------------
118165 -- 4219869 Business Flow
118166 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118167 ------------------------------------------------------------------------------------
118168 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118169
118170 ----------------------------------------------------------------------------------
118171 -- 4219869 Business Flow
118172 -- Update journal entry status -- Need to generate this within IF <condition>
118173 ----------------------------------------------------------------------------------
118174 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118175 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118176 ,p_balance_type_code => l_balance_type_code
118177 );
118178
118179 -------------------------------------------------------------------------------------------
118180 -- 4262811 - Generate the Accrual Reversal lines
118181 -------------------------------------------------------------------------------------------
118182 BEGIN
118183 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118184 (g_array_event(p_event_id).array_value_num('header_index'));
118185 IF l_acc_rev_flag IS NULL THEN
118186 l_acc_rev_flag := 'N';
118187 END IF;
118188 EXCEPTION
118189 WHEN OTHERS THEN
118190 l_acc_rev_flag := 'N';
118191 END;
118192 --
118193 IF (l_acc_rev_flag = 'Y') THEN
118194
118195 -- 4645092 ------------------------------------------------------------------------------
118196 -- To allow MPA report to determine if it should generate report process
118197 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118198 ------------------------------------------------------------------------------------------
118199
118200 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118201 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118202 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
118203 -- call ADRs
118204 -- Bug 4922099
118205 --
118206 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118207 (NVL(l_actual_upg_option, 'N') = 'O') OR
118208 (NVL(l_enc_upg_option, 'N') = 'O')
118209 )
118210 THEN
118211 NULL;
118212 --
118213 --
118214
118215 l_ccid := AcctDerRule_4(
118216 p_application_id => p_application_id
118217 , p_ae_header_id => l_ae_header_id
118218 , p_source_4 => p_source_4
118219 , x_transaction_coa_id => l_adr_transaction_coa_id
118220 , x_accounting_coa_id => l_adr_accounting_coa_id
118221 , x_value_type_code => l_adr_value_type_code
118222 , p_side => 'NA'
118223 );
118224
118225 xla_ae_lines_pkg.set_ccid(
118226 p_code_combination_id => l_ccid
118227 , p_value_type_code => l_adr_value_type_code
118228 , p_transaction_coa_id => l_adr_transaction_coa_id
118229 , p_accounting_coa_id => l_adr_accounting_coa_id
118230 , p_adr_code => 'CST_DEFAULT'
118231 , p_adr_type_code => 'S'
118232 , p_component_type => l_component_type
118233 , p_component_code => l_component_code
118234 , p_component_type_code => l_component_type_code
118235 , p_component_appl_id => l_component_appl_id
118236 , p_amb_context_code => l_amb_context_code
118237 , p_side => 'NA'
118238 );
118239
118240
118241 --
118242 --
118243 END IF;
118244
118245 --
118246 -- Update the line information that should be overwritten
118247 --
118248 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118249 p_header_num => 1);
118250 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
118251
118252 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118253
118254 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
118255 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118256 END IF;
118257
118258 --
118259 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118260 --
118261 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118262 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
118263 ELSE
118264 ---------------------------------------------------------------------------------------------------
118265 -- 4262811a Switch Sign
118266 ---------------------------------------------------------------------------------------------------
118267 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
118268 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118269 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118270 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118271 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118272 -- 5132302
118273 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118274 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118275
118276 END IF;
118277
118278 -- 4955764
118279 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118280 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118281
118282
118283 XLA_AE_LINES_PKG.ValidateCurrentLine;
118284 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118285
118286 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118287 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118288 ,p_balance_type_code => l_balance_type_code);
118289
118290 END IF;
118291
118292 -----------------------------------------------------------------------------------------
118293 -- 4262811 Multiperiod Accounting
118294 -----------------------------------------------------------------------------------------
118295 -- No MPA option is assigned.
118296
118297
118298 END IF;
118299 END IF;
118300 --
118301
118302 --
118303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118304 trace
118305 (p_msg => 'END of AcctLineType_214'
118306 ,p_level => C_LEVEL_PROCEDURE
118307 ,p_module => l_log_module);
118308 END IF;
118309 --
118310 EXCEPTION
118311 WHEN xla_exceptions_pkg.application_exception THEN
118312 RAISE;
118313 WHEN OTHERS THEN
118314 xla_exceptions_pkg.raise_message
118315 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_214');
118316 END AcctLineType_214;
118317 --
118318
118319 ---------------------------------------
118320 --
118321 -- PRIVATE FUNCTION
118322 -- AcctLineType_215
118323 --
118324 ---------------------------------------
118325 PROCEDURE AcctLineType_215 (
118326 p_application_id IN NUMBER
118327 ,p_event_id IN NUMBER
118328 ,p_calculate_acctd_flag IN VARCHAR2
118329 ,p_calculate_g_l_flag IN VARCHAR2
118330 ,p_actual_flag IN OUT VARCHAR2
118331 ,p_balance_type_code OUT VARCHAR2
118332 ,p_gain_or_loss_ref OUT VARCHAR2
118333
118334 --Cost Management Default Account
118335 , p_source_4 IN NUMBER
118336 --DISTRIBUTION_IDENTIFIER
118337 , p_source_11 IN NUMBER
118338 --Distribution Type
118339 , p_source_12 IN VARCHAR2
118340 , p_source_12_meaning IN VARCHAR2
118341 --Entered Currency Code
118342 , p_source_15 IN VARCHAR2
118343 --Entered Amount
118344 , p_source_18 IN NUMBER
118345 --Currency Conversion Date
118346 , p_source_19 IN DATE
118347 --Currency Conversion Rate
118348 , p_source_20 IN NUMBER
118349 --Currency Conversion Type
118350 , p_source_21 IN VARCHAR2
118351 --Accounted Amount
118352 , p_source_22 IN NUMBER
118353 --Accounting Line Type
118354 , p_source_24 IN NUMBER
118355 )
118356 IS
118357
118358 l_component_type VARCHAR2(80);
118359 l_component_code VARCHAR2(30);
118360 l_component_type_code VARCHAR2(1);
118361 l_component_appl_id INTEGER;
118362 l_amb_context_code VARCHAR2(30);
118363 l_entity_code VARCHAR2(30);
118364 l_event_class_code VARCHAR2(30);
118365 l_ae_header_id NUMBER;
118366 l_event_type_code VARCHAR2(30);
118367 l_line_definition_code VARCHAR2(30);
118368 l_line_definition_owner_code VARCHAR2(1);
118369 --
118370 -- adr variables
118371 l_segment VARCHAR2(30);
118372 l_ccid NUMBER;
118373 l_adr_transaction_coa_id NUMBER;
118374 l_adr_accounting_coa_id NUMBER;
118375 l_adr_flexfield_segment_code VARCHAR2(30);
118376 l_adr_flex_value_set_id NUMBER;
118377 l_adr_value_type_code VARCHAR2(30);
118378 l_adr_value_combination_id NUMBER;
118379 l_adr_value_segment_code VARCHAR2(30);
118380
118381 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
118382 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
118383 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
118384 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
118385
118386 -- 4262811 Variables ------------------------------------------------------------------------------------------
118387 l_entered_amt_idx NUMBER;
118388 l_accted_amt_idx NUMBER;
118389 l_acc_rev_flag VARCHAR2(1);
118390 l_accrual_line_num NUMBER;
118391 l_tmp_amt NUMBER;
118392 l_acc_rev_natural_side_code VARCHAR2(1);
118393
118394 l_num_entries NUMBER;
118395 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
118396 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
118397 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
118398 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
118399 l_recog_line_1 NUMBER;
118400 l_recog_line_2 NUMBER;
118401
118402 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
118403 l_bflow_applied_to_amt NUMBER; -- 5132302
118404 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
118405
118406 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118407
118408 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
118409 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
118410
118411 ---------------------------------------------------------------------------------------------------------------
118412
118413
118414 --
118415 -- bulk performance
118416 --
118417 l_balance_type_code VARCHAR2(1);
118418 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
118419 l_log_module VARCHAR2(240);
118420
118421 --
118422 -- Upgrade strategy
118423 --
118424 l_actual_upg_option VARCHAR2(1);
118425 l_enc_upg_option VARCHAR2(1);
118426
118427 --
118428 BEGIN
118429 --
118430 IF g_log_enabled THEN
118431 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_215';
118432 END IF;
118433 --
118434 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118435
118436 trace
118437 (p_msg => 'BEGIN of AcctLineType_215'
118438 ,p_level => C_LEVEL_PROCEDURE
118439 ,p_module => l_log_module);
118440
118441 END IF;
118442 --
118443 l_component_type := 'AMB_JLT';
118444 l_component_code := 'PROFIT_IN_INVENTORY';
118445 l_component_type_code := 'S';
118446 l_component_appl_id := 707;
118447 l_amb_context_code := 'DEFAULT';
118448 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
118449 l_event_class_code := 'USER_DEFINE';
118450 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
118451 l_line_definition_owner_code := 'S';
118452 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
118453 --
118454 l_balance_type_code := 'A';
118455 l_segment := NULL;
118456 l_ccid := NULL;
118457 l_adr_transaction_coa_id := NULL;
118458 l_adr_accounting_coa_id := NULL;
118459 l_adr_flexfield_segment_code := NULL;
118460 l_adr_flex_value_set_id := NULL;
118461 l_adr_value_type_code := NULL;
118462 l_adr_value_combination_id := NULL;
118463 l_adr_value_segment_code := NULL;
118464
118465 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
118466 l_bflow_class_code := ''; -- 4219869 Business Flow
118467 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
118468 l_budgetary_control_flag := 'N';
118469
118470 l_bflow_applied_to_amt_idx := NULL; -- 5132302
118471 l_bflow_applied_to_amt := NULL; -- 5132302
118472 l_entered_amt_idx := NULL; -- 4262811
118473 l_accted_amt_idx := NULL; -- 4262811
118474 l_acc_rev_flag := NULL; -- 4262811
118475 l_accrual_line_num := NULL; -- 4262811
118476 l_tmp_amt := NULL; -- 4262811
118477 --
118478
118479 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
118480 l_balance_type_code <> 'B' THEN
118481 IF NVL(p_source_24,9E125) = 30
118482 THEN
118483
118484 --
118485 XLA_AE_LINES_PKG.SetNewLine;
118486
118487 p_balance_type_code := l_balance_type_code;
118488 -- set the flag so later we will know whether the gain loss line needs to be created
118489
118490 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
118491 p_actual_flag :='A';
118492 END IF;
118493
118494 --
118495 -- bulk performance
118496 --
118497 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
118498 p_header_num => 0); -- 4262811
118499 --
118500 -- set accounting line options
118501 --
118502 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
118503 p_natural_side_code => 'D'
118504 , p_gain_or_loss_flag => 'N'
118505 , p_gl_transfer_mode_code => 'S'
118506 , p_acct_entry_type_code => 'A'
118507 , p_switch_side_flag => 'Y'
118508 , p_merge_duplicate_code => 'N'
118509 );
118510 --
118511 l_acc_rev_natural_side_code := 'C'; -- 4262811
118512 --
118513 --
118514 -- set accounting line type info
118515 --
118516 xla_ae_lines_pkg.SetAcctLineType
118517 (p_component_type => l_component_type
118518 ,p_event_type_code => l_event_type_code
118519 ,p_line_definition_owner_code => l_line_definition_owner_code
118520 ,p_line_definition_code => l_line_definition_code
118521 ,p_accounting_line_code => l_component_code
118522 ,p_accounting_line_type_code => l_component_type_code
118523 ,p_accounting_line_appl_id => l_component_appl_id
118524 ,p_amb_context_code => l_amb_context_code
118525 ,p_entity_code => l_entity_code
118526 ,p_event_class_code => l_event_class_code);
118527 --
118528 -- set accounting class
118529 --
118530 xla_ae_lines_pkg.SetAcctClass(
118531 p_accounting_class_code => 'PROFIT_IN_INVENTORY'
118532 , p_ae_header_id => l_ae_header_id
118533 );
118534
118535 --
118536 -- set rounding class
118537 --
118538 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
118539 'PROFIT_IN_INVENTORY';
118540
118541 --
118542 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
118543 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
118544 --
118545 -- bulk performance
118546 --
118547 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
118548
118549 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
118550 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
118551
118552 -- 4955764
118553 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118554 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
118555
118556 -- 4458381 Public Sector Enh
118557
118558 --
118559 -- set accounting attributes for the line type
118560 --
118561 l_entered_amt_idx := 3;
118562 l_accted_amt_idx := 8;
118563 l_bflow_applied_to_amt_idx := NULL; -- 5132302
118564 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
118565 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
118566 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
118567 l_rec_acct_attrs.array_char_value(2) := p_source_12;
118568 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
118569 l_rec_acct_attrs.array_num_value(3) := p_source_18;
118570 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
118571 l_rec_acct_attrs.array_char_value(4) := p_source_15;
118572 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
118573 l_rec_acct_attrs.array_date_value(5) := p_source_19;
118574 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
118575 l_rec_acct_attrs.array_num_value(6) := p_source_20;
118576 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
118577 l_rec_acct_attrs.array_char_value(7) := p_source_21;
118578 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
118579 l_rec_acct_attrs.array_num_value(8) := p_source_22;
118580
118581 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
118582 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
118583
118584 ---------------------------------------------------------------------------------------------------------------
118585 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
118586 ---------------------------------------------------------------------------------------------------------------
118587 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
118588
118589 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118590 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
118591
118592 IF xla_accounting_cache_pkg.GetValueChar
118593 (p_source_code => 'LEDGER_CATEGORY_CODE'
118594 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
118595 AND l_bflow_method_code = 'PRIOR_ENTRY'
118596 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
118597 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
118598 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
118599 )
118600 THEN
118601 xla_ae_lines_pkg.BflowUpgEntry
118602 (p_business_method_code => l_bflow_method_code
118603 ,p_business_class_code => l_bflow_class_code
118604 ,p_balance_type => l_balance_type_code);
118605 ELSE
118606 NULL;
118607 -- No business flow processing for business flow method of NONE.
118608 END IF;
118609
118610 --
118611 -- call analytical criteria
118612 --
118613
118614 --
118615 -- call description
118616 --
118617 -- No description or it is inherited.
118618 --
118619 -- call ADRs
118620 -- Bug 4922099
118621 --
118622 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118623 (NVL(l_actual_upg_option, 'N') = 'O') OR
118624 (NVL(l_enc_upg_option, 'N') = 'O')
118625 )
118626 THEN
118627 NULL;
118628 --
118629 --
118630
118631 l_ccid := AcctDerRule_4(
118632 p_application_id => p_application_id
118633 , p_ae_header_id => l_ae_header_id
118634 , p_source_4 => p_source_4
118635 , x_transaction_coa_id => l_adr_transaction_coa_id
118636 , x_accounting_coa_id => l_adr_accounting_coa_id
118637 , x_value_type_code => l_adr_value_type_code
118638 , p_side => 'NA'
118639 );
118640
118641 xla_ae_lines_pkg.set_ccid(
118642 p_code_combination_id => l_ccid
118643 , p_value_type_code => l_adr_value_type_code
118644 , p_transaction_coa_id => l_adr_transaction_coa_id
118645 , p_accounting_coa_id => l_adr_accounting_coa_id
118646 , p_adr_code => 'CST_DEFAULT'
118647 , p_adr_type_code => 'S'
118648 , p_component_type => l_component_type
118649 , p_component_code => l_component_code
118650 , p_component_type_code => l_component_type_code
118651 , p_component_appl_id => l_component_appl_id
118652 , p_amb_context_code => l_amb_context_code
118653 , p_side => 'NA'
118654 );
118655
118656
118657 --
118658 --
118659 END IF;
118660 --
118661 -- Bug 4922099
118662 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
118663 (NVL(l_enc_upg_option, 'N') = 'O')
118664 ) AND
118665 (l_bflow_method_code = 'PRIOR_ENTRY')
118666 )
118667 THEN
118668 IF
118669 --
118670 1 = 2
118671 --
118672 THEN
118673 xla_accounting_err_pkg.build_message
118674 (p_appli_s_name => 'XLA'
118675 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118676 ,p_token_1 => 'LINE_NUMBER'
118677 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
118678 ,p_token_2 => 'LINE_TYPE_NAME'
118679 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
118680 l_component_type
118681 ,l_component_code
118682 ,l_component_type_code
118683 ,l_component_appl_id
118684 ,l_amb_context_code
118685 ,l_entity_code
118686 ,l_event_class_code
118687 )
118688 ,p_token_3 => 'OWNER'
118689 ,p_value_3 => xla_lookups_pkg.get_meaning(
118690 p_lookup_type => 'XLA_OWNER_TYPE'
118691 ,p_lookup_code => l_component_type_code
118692 )
118693 ,p_token_4 => 'PRODUCT_NAME'
118694 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
118695 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
118696 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
118697 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
118698 ,p_ae_header_id => NULL
118699 );
118700
118701 IF (C_LEVEL_ERROR>= g_log_level) THEN
118702 trace
118703 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
118704 ,p_level => C_LEVEL_ERROR
118705 ,p_module => l_log_module);
118706 END IF;
118707 END IF;
118708 END IF;
118709 --
118710 --
118711 ------------------------------------------------------------------------------------------------
118712 -- 4219869 Business Flow
118713 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
118714 -- Prior Entry. Currently, the following code is always generated.
118715 ------------------------------------------------------------------------------------------------
118716 XLA_AE_LINES_PKG.ValidateCurrentLine;
118717
118718 ------------------------------------------------------------------------------------
118719 -- 4219869 Business Flow
118720 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
118721 ------------------------------------------------------------------------------------
118722 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118723
118724 ----------------------------------------------------------------------------------
118725 -- 4219869 Business Flow
118726 -- Update journal entry status -- Need to generate this within IF <condition>
118727 ----------------------------------------------------------------------------------
118728 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118729 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
118730 ,p_balance_type_code => l_balance_type_code
118731 );
118732
118733 -------------------------------------------------------------------------------------------
118734 -- 4262811 - Generate the Accrual Reversal lines
118735 -------------------------------------------------------------------------------------------
118736 BEGIN
118737 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
118738 (g_array_event(p_event_id).array_value_num('header_index'));
118739 IF l_acc_rev_flag IS NULL THEN
118740 l_acc_rev_flag := 'N';
118741 END IF;
118742 EXCEPTION
118743 WHEN OTHERS THEN
118744 l_acc_rev_flag := 'N';
118745 END;
118746 --
118747 IF (l_acc_rev_flag = 'Y') THEN
118748
118749 -- 4645092 ------------------------------------------------------------------------------
118750 -- To allow MPA report to determine if it should generate report process
118751 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
118752 ------------------------------------------------------------------------------------------
118753
118754 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
118755 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
118756 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
118757 -- call ADRs
118758 -- Bug 4922099
118759 --
118760 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
118761 (NVL(l_actual_upg_option, 'N') = 'O') OR
118762 (NVL(l_enc_upg_option, 'N') = 'O')
118763 )
118764 THEN
118765 NULL;
118766 --
118767 --
118768
118769 l_ccid := AcctDerRule_4(
118770 p_application_id => p_application_id
118771 , p_ae_header_id => l_ae_header_id
118772 , p_source_4 => p_source_4
118773 , x_transaction_coa_id => l_adr_transaction_coa_id
118774 , x_accounting_coa_id => l_adr_accounting_coa_id
118775 , x_value_type_code => l_adr_value_type_code
118776 , p_side => 'NA'
118777 );
118778
118779 xla_ae_lines_pkg.set_ccid(
118780 p_code_combination_id => l_ccid
118781 , p_value_type_code => l_adr_value_type_code
118782 , p_transaction_coa_id => l_adr_transaction_coa_id
118783 , p_accounting_coa_id => l_adr_accounting_coa_id
118784 , p_adr_code => 'CST_DEFAULT'
118785 , p_adr_type_code => 'S'
118786 , p_component_type => l_component_type
118787 , p_component_code => l_component_code
118788 , p_component_type_code => l_component_type_code
118789 , p_component_appl_id => l_component_appl_id
118790 , p_amb_context_code => l_amb_context_code
118791 , p_side => 'NA'
118792 );
118793
118794
118795 --
118796 --
118797 END IF;
118798
118799 --
118800 -- Update the line information that should be overwritten
118801 --
118802 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
118803 p_header_num => 1);
118804 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
118805
118806 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
118807
118808 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
118809 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
118810 END IF;
118811
118812 --
118813 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
118814 --
118815 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
118816 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
118817 ELSE
118818 ---------------------------------------------------------------------------------------------------
118819 -- 4262811a Switch Sign
118820 ---------------------------------------------------------------------------------------------------
118821 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
118822 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118823 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118824 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
118825 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118826 -- 5132302
118827 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
118828 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
118829
118830 END IF;
118831
118832 -- 4955764
118833 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
118834 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
118835
118836
118837 XLA_AE_LINES_PKG.ValidateCurrentLine;
118838 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
118839
118840 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
118841 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
118842 ,p_balance_type_code => l_balance_type_code);
118843
118844 END IF;
118845
118846 -----------------------------------------------------------------------------------------
118847 -- 4262811 Multiperiod Accounting
118848 -----------------------------------------------------------------------------------------
118849 -- No MPA option is assigned.
118850
118851
118852 END IF;
118853 END IF;
118854 --
118855
118856 --
118857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
118858 trace
118859 (p_msg => 'END of AcctLineType_215'
118860 ,p_level => C_LEVEL_PROCEDURE
118861 ,p_module => l_log_module);
118862 END IF;
118863 --
118864 EXCEPTION
118865 WHEN xla_exceptions_pkg.application_exception THEN
118866 RAISE;
118867 WHEN OTHERS THEN
118868 xla_exceptions_pkg.raise_message
118869 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_215');
118870 END AcctLineType_215;
118871 --
118872
118873 ---------------------------------------
118874 --
118875 -- PRIVATE FUNCTION
118876 -- AcctLineType_216
118877 --
118878 ---------------------------------------
118879 PROCEDURE AcctLineType_216 (
118880 p_application_id IN NUMBER
118881 ,p_event_id IN NUMBER
118882 ,p_calculate_acctd_flag IN VARCHAR2
118883 ,p_calculate_g_l_flag IN VARCHAR2
118884 ,p_actual_flag IN OUT VARCHAR2
118885 ,p_balance_type_code OUT VARCHAR2
118886 ,p_gain_or_loss_ref OUT VARCHAR2
118887
118888 --Cost Management Default Account
118889 , p_source_4 IN NUMBER
118890 --Applied to Application ID
118891 , p_source_6 IN NUMBER
118892 --Applied to Distribution Link Type
118893 , p_source_7 IN VARCHAR2
118894 --Applied to Entity Code
118895 , p_source_8 IN VARCHAR2
118896 --DISTRIBUTION_IDENTIFIER
118897 , p_source_11 IN NUMBER
118898 --Distribution Type
118899 , p_source_12 IN VARCHAR2
118900 , p_source_12_meaning IN VARCHAR2
118901 --Encumbrance Reversal Amount Entered
118902 , p_source_14 IN NUMBER
118903 --Entered Currency Code
118904 , p_source_15 IN VARCHAR2
118905 --Transaction Encumbrance Reversal Amount
118906 , p_source_16 IN NUMBER
118907 --Entered Amount
118908 , p_source_18 IN NUMBER
118909 --Currency Conversion Date
118910 , p_source_19 IN DATE
118911 --Currency Conversion Rate
118912 , p_source_20 IN NUMBER
118913 --Currency Conversion Type
118914 , p_source_21 IN VARCHAR2
118915 --Accounted Amount
118916 , p_source_22 IN NUMBER
118917 --Accounting Line Type
118918 , p_source_24 IN NUMBER
118919 --Costing Encumbrance Upgrade Option
118920 , p_source_27 IN VARCHAR2
118921 --TXN_PO_DISTRIBUTION_ID
118922 , p_source_28 IN NUMBER
118923 --TXN_PO_HEADER_ID
118924 , p_source_29 IN NUMBER
118925 --Requisition Budget Account
118926 , p_source_30 IN NUMBER
118927 --Requisition Encumbrance Type Identifier
118928 , p_source_31 IN NUMBER
118929 )
118930 IS
118931
118932 l_component_type VARCHAR2(80);
118933 l_component_code VARCHAR2(30);
118934 l_component_type_code VARCHAR2(1);
118935 l_component_appl_id INTEGER;
118936 l_amb_context_code VARCHAR2(30);
118937 l_entity_code VARCHAR2(30);
118938 l_event_class_code VARCHAR2(30);
118939 l_ae_header_id NUMBER;
118940 l_event_type_code VARCHAR2(30);
118941 l_line_definition_code VARCHAR2(30);
118942 l_line_definition_owner_code VARCHAR2(1);
118943 --
118944 -- adr variables
118945 l_segment VARCHAR2(30);
118946 l_ccid NUMBER;
118947 l_adr_transaction_coa_id NUMBER;
118948 l_adr_accounting_coa_id NUMBER;
118949 l_adr_flexfield_segment_code VARCHAR2(30);
118950 l_adr_flex_value_set_id NUMBER;
118951 l_adr_value_type_code VARCHAR2(30);
118952 l_adr_value_combination_id NUMBER;
118953 l_adr_value_segment_code VARCHAR2(30);
118954
118955 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
118956 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
118957 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
118958 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
118959
118960 -- 4262811 Variables ------------------------------------------------------------------------------------------
118961 l_entered_amt_idx NUMBER;
118962 l_accted_amt_idx NUMBER;
118963 l_acc_rev_flag VARCHAR2(1);
118964 l_accrual_line_num NUMBER;
118965 l_tmp_amt NUMBER;
118966 l_acc_rev_natural_side_code VARCHAR2(1);
118967
118968 l_num_entries NUMBER;
118969 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
118970 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
118971 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
118972 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
118973 l_recog_line_1 NUMBER;
118974 l_recog_line_2 NUMBER;
118975
118976 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
118977 l_bflow_applied_to_amt NUMBER; -- 5132302
118978 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
118979
118980 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
118981
118982 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
118983 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
118984
118985 ---------------------------------------------------------------------------------------------------------------
118986
118987
118988 --
118989 -- bulk performance
118990 --
118991 l_balance_type_code VARCHAR2(1);
118992 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
118993 l_log_module VARCHAR2(240);
118994
118995 --
118996 -- Upgrade strategy
118997 --
118998 l_actual_upg_option VARCHAR2(1);
118999 l_enc_upg_option VARCHAR2(1);
119000
119001 --
119002 BEGIN
119003 --
119004 IF g_log_enabled THEN
119005 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_216';
119006 END IF;
119007 --
119008 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119009
119010 trace
119011 (p_msg => 'BEGIN of AcctLineType_216'
119012 ,p_level => C_LEVEL_PROCEDURE
119013 ,p_module => l_log_module);
119014
119015 END IF;
119016 --
119017 l_component_type := 'AMB_JLT';
119018 l_component_code := 'PROFIT_IN_INVENTORY';
119019 l_component_type_code := 'S';
119020 l_component_appl_id := 707;
119021 l_amb_context_code := 'DEFAULT';
119022 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
119023 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
119024 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
119025 l_line_definition_owner_code := 'S';
119026 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
119027 --
119028 l_balance_type_code := 'A';
119029 l_segment := NULL;
119030 l_ccid := NULL;
119031 l_adr_transaction_coa_id := NULL;
119032 l_adr_accounting_coa_id := NULL;
119033 l_adr_flexfield_segment_code := NULL;
119034 l_adr_flex_value_set_id := NULL;
119035 l_adr_value_type_code := NULL;
119036 l_adr_value_combination_id := NULL;
119037 l_adr_value_segment_code := NULL;
119038
119039 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
119040 l_bflow_class_code := ''; -- 4219869 Business Flow
119041 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
119042 l_budgetary_control_flag := 'N';
119043
119044 l_bflow_applied_to_amt_idx := NULL; -- 5132302
119045 l_bflow_applied_to_amt := NULL; -- 5132302
119046 l_entered_amt_idx := NULL; -- 4262811
119047 l_accted_amt_idx := NULL; -- 4262811
119048 l_acc_rev_flag := NULL; -- 4262811
119049 l_accrual_line_num := NULL; -- 4262811
119050 l_tmp_amt := NULL; -- 4262811
119051 --
119052
119053 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119054 l_balance_type_code <> 'B' THEN
119055 IF NVL(p_source_24,9E125) = 30
119056 THEN
119057
119058 --
119059 XLA_AE_LINES_PKG.SetNewLine;
119060
119061 p_balance_type_code := l_balance_type_code;
119062 -- set the flag so later we will know whether the gain loss line needs to be created
119063
119064 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119065 p_actual_flag :='A';
119066 END IF;
119067
119068 --
119069 -- bulk performance
119070 --
119071 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119072 p_header_num => 0); -- 4262811
119073 --
119074 -- set accounting line options
119075 --
119076 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119077 p_natural_side_code => 'D'
119078 , p_gain_or_loss_flag => 'N'
119079 , p_gl_transfer_mode_code => 'S'
119080 , p_acct_entry_type_code => 'A'
119081 , p_switch_side_flag => 'Y'
119082 , p_merge_duplicate_code => 'N'
119083 );
119084 --
119085 l_acc_rev_natural_side_code := 'C'; -- 4262811
119086 --
119087 --
119088 -- set accounting line type info
119089 --
119090 xla_ae_lines_pkg.SetAcctLineType
119091 (p_component_type => l_component_type
119092 ,p_event_type_code => l_event_type_code
119093 ,p_line_definition_owner_code => l_line_definition_owner_code
119094 ,p_line_definition_code => l_line_definition_code
119095 ,p_accounting_line_code => l_component_code
119096 ,p_accounting_line_type_code => l_component_type_code
119097 ,p_accounting_line_appl_id => l_component_appl_id
119098 ,p_amb_context_code => l_amb_context_code
119099 ,p_entity_code => l_entity_code
119100 ,p_event_class_code => l_event_class_code);
119101 --
119102 -- set accounting class
119103 --
119104 xla_ae_lines_pkg.SetAcctClass(
119105 p_accounting_class_code => 'PROFIT_IN_INVENTORY'
119106 , p_ae_header_id => l_ae_header_id
119107 );
119108
119109 --
119110 -- set rounding class
119111 --
119112 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119113 'PROFIT_IN_INVENTORY';
119114
119115 --
119116 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119117 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119118 --
119119 -- bulk performance
119120 --
119121 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119122
119123 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119124 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119125
119126 -- 4955764
119127 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119128 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119129
119130 -- 4458381 Public Sector Enh
119131
119132 --
119133 -- set accounting attributes for the line type
119134 --
119135 l_entered_amt_idx := 17;
119136 l_accted_amt_idx := 22;
119137 l_bflow_applied_to_amt_idx := NULL; -- 5132302
119138 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
119139 l_rec_acct_attrs.array_num_value(1) := p_source_6;
119140 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
119141 l_rec_acct_attrs.array_char_value(2) := p_source_7;
119142 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
119143 l_rec_acct_attrs.array_char_value(3) := p_source_8;
119144 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
119145 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
119146 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
119147 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
119148 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
119149 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
119150 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
119151 l_rec_acct_attrs.array_char_value(7) := p_source_12;
119152 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
119153 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
119154 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
119155 l_rec_acct_attrs.array_num_value(9) := p_source_14;
119156 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
119157 l_rec_acct_attrs.array_char_value(10) := p_source_15;
119158 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
119159 l_rec_acct_attrs.array_num_value(11) := p_source_16;
119160 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
119161 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
119162 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
119163 l_rec_acct_attrs.array_num_value(13) := p_source_14;
119164 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
119165 l_rec_acct_attrs.array_char_value(14) := p_source_15;
119166 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
119167 l_rec_acct_attrs.array_num_value(15) := p_source_16;
119168 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
119169 l_rec_acct_attrs.array_char_value(16) := p_source_27;
119170 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
119171 l_rec_acct_attrs.array_num_value(17) := p_source_18;
119172 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
119173 l_rec_acct_attrs.array_char_value(18) := p_source_15;
119174 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
119175 l_rec_acct_attrs.array_date_value(19) := p_source_19;
119176 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
119177 l_rec_acct_attrs.array_num_value(20) := p_source_20;
119178 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
119179 l_rec_acct_attrs.array_char_value(21) := p_source_21;
119180 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
119181 l_rec_acct_attrs.array_num_value(22) := p_source_22;
119182 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
119183 l_rec_acct_attrs.array_num_value(23) := p_source_31;
119184 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
119185 l_rec_acct_attrs.array_num_value(24) := p_source_31;
119186
119187 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119188 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119189
119190 ---------------------------------------------------------------------------------------------------------------
119191 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119192 ---------------------------------------------------------------------------------------------------------------
119193 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119194
119195 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119196 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119197
119198 IF xla_accounting_cache_pkg.GetValueChar
119199 (p_source_code => 'LEDGER_CATEGORY_CODE'
119200 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119201 AND l_bflow_method_code = 'PRIOR_ENTRY'
119202 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119203 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119204 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119205 )
119206 THEN
119207 xla_ae_lines_pkg.BflowUpgEntry
119208 (p_business_method_code => l_bflow_method_code
119209 ,p_business_class_code => l_bflow_class_code
119210 ,p_balance_type => l_balance_type_code);
119211 ELSE
119212 NULL;
119213 -- No business flow processing for business flow method of NONE.
119214 END IF;
119215
119216 --
119217 -- call analytical criteria
119218 --
119219
119220 --
119221 -- call description
119222 --
119223 -- No description or it is inherited.
119224 --
119225 -- call ADRs
119226 -- Bug 4922099
119227 --
119228 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119229 (NVL(l_actual_upg_option, 'N') = 'O') OR
119230 (NVL(l_enc_upg_option, 'N') = 'O')
119231 )
119232 THEN
119233 NULL;
119234 --
119235 --
119236
119237 l_ccid := AcctDerRule_4(
119238 p_application_id => p_application_id
119239 , p_ae_header_id => l_ae_header_id
119240 , p_source_4 => p_source_4
119241 , x_transaction_coa_id => l_adr_transaction_coa_id
119242 , x_accounting_coa_id => l_adr_accounting_coa_id
119243 , x_value_type_code => l_adr_value_type_code
119244 , p_side => 'NA'
119245 );
119246
119247 xla_ae_lines_pkg.set_ccid(
119248 p_code_combination_id => l_ccid
119249 , p_value_type_code => l_adr_value_type_code
119250 , p_transaction_coa_id => l_adr_transaction_coa_id
119251 , p_accounting_coa_id => l_adr_accounting_coa_id
119252 , p_adr_code => 'CST_DEFAULT'
119253 , p_adr_type_code => 'S'
119254 , p_component_type => l_component_type
119255 , p_component_code => l_component_code
119256 , p_component_type_code => l_component_type_code
119257 , p_component_appl_id => l_component_appl_id
119258 , p_amb_context_code => l_amb_context_code
119259 , p_side => 'NA'
119260 );
119261
119262
119263 --
119264 --
119265 END IF;
119266 --
119267 -- Bug 4922099
119268 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119269 (NVL(l_enc_upg_option, 'N') = 'O')
119270 ) AND
119271 (l_bflow_method_code = 'PRIOR_ENTRY')
119272 )
119273 THEN
119274 IF
119275 --
119276 1 = 2
119277 --
119278 THEN
119279 xla_accounting_err_pkg.build_message
119280 (p_appli_s_name => 'XLA'
119281 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119282 ,p_token_1 => 'LINE_NUMBER'
119283 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
119284 ,p_token_2 => 'LINE_TYPE_NAME'
119285 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
119286 l_component_type
119287 ,l_component_code
119288 ,l_component_type_code
119289 ,l_component_appl_id
119290 ,l_amb_context_code
119291 ,l_entity_code
119292 ,l_event_class_code
119293 )
119294 ,p_token_3 => 'OWNER'
119295 ,p_value_3 => xla_lookups_pkg.get_meaning(
119296 p_lookup_type => 'XLA_OWNER_TYPE'
119297 ,p_lookup_code => l_component_type_code
119298 )
119299 ,p_token_4 => 'PRODUCT_NAME'
119300 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119301 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119302 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119303 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119304 ,p_ae_header_id => NULL
119305 );
119306
119307 IF (C_LEVEL_ERROR>= g_log_level) THEN
119308 trace
119309 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119310 ,p_level => C_LEVEL_ERROR
119311 ,p_module => l_log_module);
119312 END IF;
119313 END IF;
119314 END IF;
119315 --
119316 --
119317 ------------------------------------------------------------------------------------------------
119318 -- 4219869 Business Flow
119319 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119320 -- Prior Entry. Currently, the following code is always generated.
119321 ------------------------------------------------------------------------------------------------
119322 XLA_AE_LINES_PKG.ValidateCurrentLine;
119323
119324 ------------------------------------------------------------------------------------
119325 -- 4219869 Business Flow
119326 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119327 ------------------------------------------------------------------------------------
119328 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119329
119330 ----------------------------------------------------------------------------------
119331 -- 4219869 Business Flow
119332 -- Update journal entry status -- Need to generate this within IF <condition>
119333 ----------------------------------------------------------------------------------
119334 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119335 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119336 ,p_balance_type_code => l_balance_type_code
119337 );
119338
119339 -------------------------------------------------------------------------------------------
119340 -- 4262811 - Generate the Accrual Reversal lines
119341 -------------------------------------------------------------------------------------------
119342 BEGIN
119343 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119344 (g_array_event(p_event_id).array_value_num('header_index'));
119345 IF l_acc_rev_flag IS NULL THEN
119346 l_acc_rev_flag := 'N';
119347 END IF;
119348 EXCEPTION
119349 WHEN OTHERS THEN
119350 l_acc_rev_flag := 'N';
119351 END;
119352 --
119353 IF (l_acc_rev_flag = 'Y') THEN
119354
119355 -- 4645092 ------------------------------------------------------------------------------
119356 -- To allow MPA report to determine if it should generate report process
119357 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119358 ------------------------------------------------------------------------------------------
119359
119360 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119361 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119362 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
119363 -- call ADRs
119364 -- Bug 4922099
119365 --
119366 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119367 (NVL(l_actual_upg_option, 'N') = 'O') OR
119368 (NVL(l_enc_upg_option, 'N') = 'O')
119369 )
119370 THEN
119371 NULL;
119372 --
119373 --
119374
119375 l_ccid := AcctDerRule_4(
119376 p_application_id => p_application_id
119377 , p_ae_header_id => l_ae_header_id
119378 , p_source_4 => p_source_4
119379 , x_transaction_coa_id => l_adr_transaction_coa_id
119380 , x_accounting_coa_id => l_adr_accounting_coa_id
119381 , x_value_type_code => l_adr_value_type_code
119382 , p_side => 'NA'
119383 );
119384
119385 xla_ae_lines_pkg.set_ccid(
119386 p_code_combination_id => l_ccid
119387 , p_value_type_code => l_adr_value_type_code
119388 , p_transaction_coa_id => l_adr_transaction_coa_id
119389 , p_accounting_coa_id => l_adr_accounting_coa_id
119390 , p_adr_code => 'CST_DEFAULT'
119391 , p_adr_type_code => 'S'
119392 , p_component_type => l_component_type
119393 , p_component_code => l_component_code
119394 , p_component_type_code => l_component_type_code
119395 , p_component_appl_id => l_component_appl_id
119396 , p_amb_context_code => l_amb_context_code
119397 , p_side => 'NA'
119398 );
119399
119400
119401 --
119402 --
119403 END IF;
119404
119405 --
119406 -- Update the line information that should be overwritten
119407 --
119408 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
119409 p_header_num => 1);
119410 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
119411
119412 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
119413
119414 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
119415 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
119416 END IF;
119417
119418 --
119419 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
119420 --
119421 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
119422 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
119423 ELSE
119424 ---------------------------------------------------------------------------------------------------
119425 -- 4262811a Switch Sign
119426 ---------------------------------------------------------------------------------------------------
119427 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
119428 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119429 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119430 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119431 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119432 -- 5132302
119433 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
119434 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119435
119436 END IF;
119437
119438 -- 4955764
119439 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119440 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
119441
119442
119443 XLA_AE_LINES_PKG.ValidateCurrentLine;
119444 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119445
119446 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119447 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
119448 ,p_balance_type_code => l_balance_type_code);
119449
119450 END IF;
119451
119452 -----------------------------------------------------------------------------------------
119453 -- 4262811 Multiperiod Accounting
119454 -----------------------------------------------------------------------------------------
119455 -- No MPA option is assigned.
119456
119457
119458 END IF;
119459 END IF;
119460 --
119461
119462 --
119463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119464 trace
119465 (p_msg => 'END of AcctLineType_216'
119466 ,p_level => C_LEVEL_PROCEDURE
119467 ,p_module => l_log_module);
119468 END IF;
119469 --
119470 EXCEPTION
119471 WHEN xla_exceptions_pkg.application_exception THEN
119472 RAISE;
119473 WHEN OTHERS THEN
119474 xla_exceptions_pkg.raise_message
119475 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_216');
119476 END AcctLineType_216;
119477 --
119478
119479 ---------------------------------------
119480 --
119481 -- PRIVATE FUNCTION
119482 -- AcctLineType_217
119483 --
119484 ---------------------------------------
119485 PROCEDURE AcctLineType_217 (
119486 p_application_id IN NUMBER
119487 ,p_event_id IN NUMBER
119488 ,p_calculate_acctd_flag IN VARCHAR2
119489 ,p_calculate_g_l_flag IN VARCHAR2
119490 ,p_actual_flag IN OUT VARCHAR2
119491 ,p_balance_type_code OUT VARCHAR2
119492 ,p_gain_or_loss_ref OUT VARCHAR2
119493
119494 --Cost Management Default Account
119495 , p_source_4 IN NUMBER
119496 --DISTRIBUTION_IDENTIFIER
119497 , p_source_11 IN NUMBER
119498 --Distribution Type
119499 , p_source_12 IN VARCHAR2
119500 , p_source_12_meaning IN VARCHAR2
119501 --Entered Currency Code
119502 , p_source_15 IN VARCHAR2
119503 --Entered Amount
119504 , p_source_18 IN NUMBER
119505 --Currency Conversion Date
119506 , p_source_19 IN DATE
119507 --Currency Conversion Rate
119508 , p_source_20 IN NUMBER
119509 --Currency Conversion Type
119510 , p_source_21 IN VARCHAR2
119511 --Accounted Amount
119512 , p_source_22 IN NUMBER
119513 --Accounting Line Type
119514 , p_source_24 IN NUMBER
119515 )
119516 IS
119517
119518 l_component_type VARCHAR2(80);
119519 l_component_code VARCHAR2(30);
119520 l_component_type_code VARCHAR2(1);
119521 l_component_appl_id INTEGER;
119522 l_amb_context_code VARCHAR2(30);
119523 l_entity_code VARCHAR2(30);
119524 l_event_class_code VARCHAR2(30);
119525 l_ae_header_id NUMBER;
119526 l_event_type_code VARCHAR2(30);
119527 l_line_definition_code VARCHAR2(30);
119528 l_line_definition_owner_code VARCHAR2(1);
119529 --
119530 -- adr variables
119531 l_segment VARCHAR2(30);
119532 l_ccid NUMBER;
119533 l_adr_transaction_coa_id NUMBER;
119534 l_adr_accounting_coa_id NUMBER;
119535 l_adr_flexfield_segment_code VARCHAR2(30);
119536 l_adr_flex_value_set_id NUMBER;
119537 l_adr_value_type_code VARCHAR2(30);
119538 l_adr_value_combination_id NUMBER;
119539 l_adr_value_segment_code VARCHAR2(30);
119540
119541 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
119542 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
119543 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
119544 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
119545
119546 -- 4262811 Variables ------------------------------------------------------------------------------------------
119547 l_entered_amt_idx NUMBER;
119548 l_accted_amt_idx NUMBER;
119549 l_acc_rev_flag VARCHAR2(1);
119550 l_accrual_line_num NUMBER;
119551 l_tmp_amt NUMBER;
119552 l_acc_rev_natural_side_code VARCHAR2(1);
119553
119554 l_num_entries NUMBER;
119555 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
119556 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
119557 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
119558 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
119559 l_recog_line_1 NUMBER;
119560 l_recog_line_2 NUMBER;
119561
119562 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
119563 l_bflow_applied_to_amt NUMBER; -- 5132302
119564 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
119565
119566 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
119567
119568 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
119569 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
119570
119571 ---------------------------------------------------------------------------------------------------------------
119572
119573
119574 --
119575 -- bulk performance
119576 --
119577 l_balance_type_code VARCHAR2(1);
119578 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
119579 l_log_module VARCHAR2(240);
119580
119581 --
119582 -- Upgrade strategy
119583 --
119584 l_actual_upg_option VARCHAR2(1);
119585 l_enc_upg_option VARCHAR2(1);
119586
119587 --
119588 BEGIN
119589 --
119590 IF g_log_enabled THEN
119591 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_217';
119592 END IF;
119593 --
119594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
119595
119596 trace
119597 (p_msg => 'BEGIN of AcctLineType_217'
119598 ,p_level => C_LEVEL_PROCEDURE
119599 ,p_module => l_log_module);
119600
119601 END IF;
119602 --
119603 l_component_type := 'AMB_JLT';
119604 l_component_code := 'PROFIT_IN_INVENTORY';
119605 l_component_type_code := 'S';
119606 l_component_appl_id := 707;
119607 l_amb_context_code := 'DEFAULT';
119608 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
119609 l_event_class_code := 'USER_DEFINE';
119610 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
119611 l_line_definition_owner_code := 'S';
119612 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
119613 --
119614 l_balance_type_code := 'A';
119615 l_segment := NULL;
119616 l_ccid := NULL;
119617 l_adr_transaction_coa_id := NULL;
119618 l_adr_accounting_coa_id := NULL;
119619 l_adr_flexfield_segment_code := NULL;
119620 l_adr_flex_value_set_id := NULL;
119621 l_adr_value_type_code := NULL;
119622 l_adr_value_combination_id := NULL;
119623 l_adr_value_segment_code := NULL;
119624
119625 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
119626 l_bflow_class_code := ''; -- 4219869 Business Flow
119627 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
119628 l_budgetary_control_flag := 'N';
119629
119630 l_bflow_applied_to_amt_idx := NULL; -- 5132302
119631 l_bflow_applied_to_amt := NULL; -- 5132302
119632 l_entered_amt_idx := NULL; -- 4262811
119633 l_accted_amt_idx := NULL; -- 4262811
119634 l_acc_rev_flag := NULL; -- 4262811
119635 l_accrual_line_num := NULL; -- 4262811
119636 l_tmp_amt := NULL; -- 4262811
119637 --
119638
119639 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
119640 l_balance_type_code <> 'B' THEN
119641 IF NVL(p_source_24,9E125) = 30
119642 THEN
119643
119644 --
119645 XLA_AE_LINES_PKG.SetNewLine;
119646
119647 p_balance_type_code := l_balance_type_code;
119648 -- set the flag so later we will know whether the gain loss line needs to be created
119649
119650 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
119651 p_actual_flag :='A';
119652 END IF;
119653
119654 --
119655 -- bulk performance
119656 --
119657 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
119658 p_header_num => 0); -- 4262811
119659 --
119660 -- set accounting line options
119661 --
119662 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
119663 p_natural_side_code => 'D'
119664 , p_gain_or_loss_flag => 'N'
119665 , p_gl_transfer_mode_code => 'S'
119666 , p_acct_entry_type_code => 'A'
119667 , p_switch_side_flag => 'Y'
119668 , p_merge_duplicate_code => 'N'
119669 );
119670 --
119671 l_acc_rev_natural_side_code := 'C'; -- 4262811
119672 --
119673 --
119674 -- set accounting line type info
119675 --
119676 xla_ae_lines_pkg.SetAcctLineType
119677 (p_component_type => l_component_type
119678 ,p_event_type_code => l_event_type_code
119679 ,p_line_definition_owner_code => l_line_definition_owner_code
119680 ,p_line_definition_code => l_line_definition_code
119681 ,p_accounting_line_code => l_component_code
119682 ,p_accounting_line_type_code => l_component_type_code
119683 ,p_accounting_line_appl_id => l_component_appl_id
119684 ,p_amb_context_code => l_amb_context_code
119685 ,p_entity_code => l_entity_code
119686 ,p_event_class_code => l_event_class_code);
119687 --
119688 -- set accounting class
119689 --
119690 xla_ae_lines_pkg.SetAcctClass(
119691 p_accounting_class_code => 'PROFIT_IN_INVENTORY'
119692 , p_ae_header_id => l_ae_header_id
119693 );
119694
119695 --
119696 -- set rounding class
119697 --
119698 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
119699 'PROFIT_IN_INVENTORY';
119700
119701 --
119702 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
119703 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
119704 --
119705 -- bulk performance
119706 --
119707 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
119708
119709 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
119710 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
119711
119712 -- 4955764
119713 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119714 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
119715
119716 -- 4458381 Public Sector Enh
119717
119718 --
119719 -- set accounting attributes for the line type
119720 --
119721 l_entered_amt_idx := 3;
119722 l_accted_amt_idx := 8;
119723 l_bflow_applied_to_amt_idx := NULL; -- 5132302
119724 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
119725 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
119726 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
119727 l_rec_acct_attrs.array_char_value(2) := p_source_12;
119728 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
119729 l_rec_acct_attrs.array_num_value(3) := p_source_18;
119730 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
119731 l_rec_acct_attrs.array_char_value(4) := p_source_15;
119732 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
119733 l_rec_acct_attrs.array_date_value(5) := p_source_19;
119734 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
119735 l_rec_acct_attrs.array_num_value(6) := p_source_20;
119736 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
119737 l_rec_acct_attrs.array_char_value(7) := p_source_21;
119738 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
119739 l_rec_acct_attrs.array_num_value(8) := p_source_22;
119740
119741 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
119742 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
119743
119744 ---------------------------------------------------------------------------------------------------------------
119745 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
119746 ---------------------------------------------------------------------------------------------------------------
119747 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
119748
119749 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119750 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
119751
119752 IF xla_accounting_cache_pkg.GetValueChar
119753 (p_source_code => 'LEDGER_CATEGORY_CODE'
119754 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
119755 AND l_bflow_method_code = 'PRIOR_ENTRY'
119756 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
119757 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
119758 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
119759 )
119760 THEN
119761 xla_ae_lines_pkg.BflowUpgEntry
119762 (p_business_method_code => l_bflow_method_code
119763 ,p_business_class_code => l_bflow_class_code
119764 ,p_balance_type => l_balance_type_code);
119765 ELSE
119766 NULL;
119767 -- No business flow processing for business flow method of NONE.
119768 END IF;
119769
119770 --
119771 -- call analytical criteria
119772 --
119773
119774 --
119775 -- call description
119776 --
119777 -- No description or it is inherited.
119778 --
119779 -- call ADRs
119780 -- Bug 4922099
119781 --
119782 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119783 (NVL(l_actual_upg_option, 'N') = 'O') OR
119784 (NVL(l_enc_upg_option, 'N') = 'O')
119785 )
119786 THEN
119787 NULL;
119788 --
119789 --
119790
119791 l_ccid := AcctDerRule_4(
119792 p_application_id => p_application_id
119793 , p_ae_header_id => l_ae_header_id
119794 , p_source_4 => p_source_4
119795 , x_transaction_coa_id => l_adr_transaction_coa_id
119796 , x_accounting_coa_id => l_adr_accounting_coa_id
119797 , x_value_type_code => l_adr_value_type_code
119798 , p_side => 'NA'
119799 );
119800
119801 xla_ae_lines_pkg.set_ccid(
119802 p_code_combination_id => l_ccid
119803 , p_value_type_code => l_adr_value_type_code
119804 , p_transaction_coa_id => l_adr_transaction_coa_id
119805 , p_accounting_coa_id => l_adr_accounting_coa_id
119806 , p_adr_code => 'CST_DEFAULT'
119807 , p_adr_type_code => 'S'
119808 , p_component_type => l_component_type
119809 , p_component_code => l_component_code
119810 , p_component_type_code => l_component_type_code
119811 , p_component_appl_id => l_component_appl_id
119812 , p_amb_context_code => l_amb_context_code
119813 , p_side => 'NA'
119814 );
119815
119816
119817 --
119818 --
119819 END IF;
119820 --
119821 -- Bug 4922099
119822 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
119823 (NVL(l_enc_upg_option, 'N') = 'O')
119824 ) AND
119825 (l_bflow_method_code = 'PRIOR_ENTRY')
119826 )
119827 THEN
119828 IF
119829 --
119830 1 = 2
119831 --
119832 THEN
119833 xla_accounting_err_pkg.build_message
119834 (p_appli_s_name => 'XLA'
119835 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119836 ,p_token_1 => 'LINE_NUMBER'
119837 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
119838 ,p_token_2 => 'LINE_TYPE_NAME'
119839 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
119840 l_component_type
119841 ,l_component_code
119842 ,l_component_type_code
119843 ,l_component_appl_id
119844 ,l_amb_context_code
119845 ,l_entity_code
119846 ,l_event_class_code
119847 )
119848 ,p_token_3 => 'OWNER'
119849 ,p_value_3 => xla_lookups_pkg.get_meaning(
119850 p_lookup_type => 'XLA_OWNER_TYPE'
119851 ,p_lookup_code => l_component_type_code
119852 )
119853 ,p_token_4 => 'PRODUCT_NAME'
119854 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
119855 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
119856 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
119857 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
119858 ,p_ae_header_id => NULL
119859 );
119860
119861 IF (C_LEVEL_ERROR>= g_log_level) THEN
119862 trace
119863 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
119864 ,p_level => C_LEVEL_ERROR
119865 ,p_module => l_log_module);
119866 END IF;
119867 END IF;
119868 END IF;
119869 --
119870 --
119871 ------------------------------------------------------------------------------------------------
119872 -- 4219869 Business Flow
119873 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
119874 -- Prior Entry. Currently, the following code is always generated.
119875 ------------------------------------------------------------------------------------------------
119876 XLA_AE_LINES_PKG.ValidateCurrentLine;
119877
119878 ------------------------------------------------------------------------------------
119879 -- 4219869 Business Flow
119880 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
119881 ------------------------------------------------------------------------------------
119882 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119883
119884 ----------------------------------------------------------------------------------
119885 -- 4219869 Business Flow
119886 -- Update journal entry status -- Need to generate this within IF <condition>
119887 ----------------------------------------------------------------------------------
119888 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
119889 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
119890 ,p_balance_type_code => l_balance_type_code
119891 );
119892
119893 -------------------------------------------------------------------------------------------
119894 -- 4262811 - Generate the Accrual Reversal lines
119895 -------------------------------------------------------------------------------------------
119896 BEGIN
119897 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
119898 (g_array_event(p_event_id).array_value_num('header_index'));
119899 IF l_acc_rev_flag IS NULL THEN
119900 l_acc_rev_flag := 'N';
119901 END IF;
119902 EXCEPTION
119903 WHEN OTHERS THEN
119904 l_acc_rev_flag := 'N';
119905 END;
119906 --
119907 IF (l_acc_rev_flag = 'Y') THEN
119908
119909 -- 4645092 ------------------------------------------------------------------------------
119910 -- To allow MPA report to determine if it should generate report process
119911 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
119912 ------------------------------------------------------------------------------------------
119913
119914 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
119915 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
119916 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
119917 -- call ADRs
119918 -- Bug 4922099
119919 --
119920 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
119921 (NVL(l_actual_upg_option, 'N') = 'O') OR
119922 (NVL(l_enc_upg_option, 'N') = 'O')
119923 )
119924 THEN
119925 NULL;
119926 --
119927 --
119928
119929 l_ccid := AcctDerRule_4(
119930 p_application_id => p_application_id
119931 , p_ae_header_id => l_ae_header_id
119932 , p_source_4 => p_source_4
119933 , x_transaction_coa_id => l_adr_transaction_coa_id
119934 , x_accounting_coa_id => l_adr_accounting_coa_id
119935 , x_value_type_code => l_adr_value_type_code
119936 , p_side => 'NA'
119937 );
119938
119939 xla_ae_lines_pkg.set_ccid(
119940 p_code_combination_id => l_ccid
119941 , p_value_type_code => l_adr_value_type_code
119942 , p_transaction_coa_id => l_adr_transaction_coa_id
119943 , p_accounting_coa_id => l_adr_accounting_coa_id
119944 , p_adr_code => 'CST_DEFAULT'
119945 , p_adr_type_code => 'S'
119946 , p_component_type => l_component_type
119947 , p_component_code => l_component_code
119948 , p_component_type_code => l_component_type_code
119949 , p_component_appl_id => l_component_appl_id
119950 , p_amb_context_code => l_amb_context_code
119951 , p_side => 'NA'
119952 );
119953
119954
119955 --
119956 --
119957 END IF;
119958
119959 --
119960 -- Update the line information that should be overwritten
119961 --
119962 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
119963 p_header_num => 1);
119964 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
119965
119966 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
119967
119968 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
119969 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
119970 END IF;
119971
119972 --
119973 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
119974 --
119975 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
119976 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
119977 ELSE
119978 ---------------------------------------------------------------------------------------------------
119979 -- 4262811a Switch Sign
119980 ---------------------------------------------------------------------------------------------------
119981 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
119982 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119983 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119984 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
119985 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119986 -- 5132302
119987 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
119988 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
119989
119990 END IF;
119991
119992 -- 4955764
119993 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
119994 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
119995
119996
119997 XLA_AE_LINES_PKG.ValidateCurrentLine;
119998 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
119999
120000 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120001 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
120002 ,p_balance_type_code => l_balance_type_code);
120003
120004 END IF;
120005
120006 -----------------------------------------------------------------------------------------
120007 -- 4262811 Multiperiod Accounting
120008 -----------------------------------------------------------------------------------------
120009 -- No MPA option is assigned.
120010
120011
120012 END IF;
120013 END IF;
120014 --
120015
120016 --
120017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120018 trace
120019 (p_msg => 'END of AcctLineType_217'
120020 ,p_level => C_LEVEL_PROCEDURE
120021 ,p_module => l_log_module);
120022 END IF;
120023 --
120024 EXCEPTION
120025 WHEN xla_exceptions_pkg.application_exception THEN
120026 RAISE;
120027 WHEN OTHERS THEN
120028 xla_exceptions_pkg.raise_message
120029 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_217');
120030 END AcctLineType_217;
120031 --
120032
120033 ---------------------------------------
120034 --
120035 -- PRIVATE FUNCTION
120036 -- AcctLineType_218
120037 --
120038 ---------------------------------------
120039 PROCEDURE AcctLineType_218 (
120040 p_application_id IN NUMBER
120041 ,p_event_id IN NUMBER
120042 ,p_calculate_acctd_flag IN VARCHAR2
120043 ,p_calculate_g_l_flag IN VARCHAR2
120044 ,p_actual_flag IN OUT VARCHAR2
120045 ,p_balance_type_code OUT VARCHAR2
120046 ,p_gain_or_loss_ref OUT VARCHAR2
120047
120048 --Cost Management Default Account
120049 , p_source_4 IN NUMBER
120050 --DISTRIBUTION_IDENTIFIER
120051 , p_source_11 IN NUMBER
120052 --Distribution Type
120053 , p_source_12 IN VARCHAR2
120054 , p_source_12_meaning IN VARCHAR2
120055 --Entered Currency Code
120056 , p_source_15 IN VARCHAR2
120057 --Entered Amount
120058 , p_source_18 IN NUMBER
120059 --Currency Conversion Date
120060 , p_source_19 IN DATE
120061 --Currency Conversion Rate
120062 , p_source_20 IN NUMBER
120063 --Currency Conversion Type
120064 , p_source_21 IN VARCHAR2
120065 --Accounted Amount
120066 , p_source_22 IN NUMBER
120067 --Accounting Line Type
120068 , p_source_24 IN NUMBER
120069 )
120070 IS
120071
120072 l_component_type VARCHAR2(80);
120073 l_component_code VARCHAR2(30);
120074 l_component_type_code VARCHAR2(1);
120075 l_component_appl_id INTEGER;
120076 l_amb_context_code VARCHAR2(30);
120077 l_entity_code VARCHAR2(30);
120078 l_event_class_code VARCHAR2(30);
120079 l_ae_header_id NUMBER;
120080 l_event_type_code VARCHAR2(30);
120081 l_line_definition_code VARCHAR2(30);
120082 l_line_definition_owner_code VARCHAR2(1);
120083 --
120084 -- adr variables
120085 l_segment VARCHAR2(30);
120086 l_ccid NUMBER;
120087 l_adr_transaction_coa_id NUMBER;
120088 l_adr_accounting_coa_id NUMBER;
120089 l_adr_flexfield_segment_code VARCHAR2(30);
120090 l_adr_flex_value_set_id NUMBER;
120091 l_adr_value_type_code VARCHAR2(30);
120092 l_adr_value_combination_id NUMBER;
120093 l_adr_value_segment_code VARCHAR2(30);
120094
120095 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
120096 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
120097 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
120098 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
120099
120100 -- 4262811 Variables ------------------------------------------------------------------------------------------
120101 l_entered_amt_idx NUMBER;
120102 l_accted_amt_idx NUMBER;
120103 l_acc_rev_flag VARCHAR2(1);
120104 l_accrual_line_num NUMBER;
120105 l_tmp_amt NUMBER;
120106 l_acc_rev_natural_side_code VARCHAR2(1);
120107
120108 l_num_entries NUMBER;
120109 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
120110 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
120111 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
120112 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
120113 l_recog_line_1 NUMBER;
120114 l_recog_line_2 NUMBER;
120115
120116 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
120117 l_bflow_applied_to_amt NUMBER; -- 5132302
120118 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
120119
120120 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
120121
120122 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
120123 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
120124
120125 ---------------------------------------------------------------------------------------------------------------
120126
120127
120128 --
120129 -- bulk performance
120130 --
120131 l_balance_type_code VARCHAR2(1);
120132 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
120133 l_log_module VARCHAR2(240);
120134
120135 --
120136 -- Upgrade strategy
120137 --
120138 l_actual_upg_option VARCHAR2(1);
120139 l_enc_upg_option VARCHAR2(1);
120140
120141 --
120142 BEGIN
120143 --
120144 IF g_log_enabled THEN
120145 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_218';
120146 END IF;
120147 --
120148 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120149
120150 trace
120151 (p_msg => 'BEGIN of AcctLineType_218'
120152 ,p_level => C_LEVEL_PROCEDURE
120153 ,p_module => l_log_module);
120154
120155 END IF;
120156 --
120157 l_component_type := 'AMB_JLT';
120158 l_component_code := 'PURCHASE_PRICE_VARIANCE';
120159 l_component_type_code := 'S';
120160 l_component_appl_id := 707;
120161 l_amb_context_code := 'DEFAULT';
120162 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
120163 l_event_class_code := 'CON_INV_OWNR_TXFR';
120164 l_event_type_code := 'CON_INV_OWNR_TXFR_ALL';
120165 l_line_definition_owner_code := 'S';
120166 l_line_definition_code := 'CON_INV_OWNR_TXFR';
120167 --
120168 l_balance_type_code := 'A';
120169 l_segment := NULL;
120170 l_ccid := NULL;
120171 l_adr_transaction_coa_id := NULL;
120172 l_adr_accounting_coa_id := NULL;
120173 l_adr_flexfield_segment_code := NULL;
120174 l_adr_flex_value_set_id := NULL;
120175 l_adr_value_type_code := NULL;
120176 l_adr_value_combination_id := NULL;
120177 l_adr_value_segment_code := NULL;
120178
120179 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
120180 l_bflow_class_code := ''; -- 4219869 Business Flow
120181 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
120182 l_budgetary_control_flag := 'N';
120183
120184 l_bflow_applied_to_amt_idx := NULL; -- 5132302
120185 l_bflow_applied_to_amt := NULL; -- 5132302
120186 l_entered_amt_idx := NULL; -- 4262811
120187 l_accted_amt_idx := NULL; -- 4262811
120188 l_acc_rev_flag := NULL; -- 4262811
120189 l_accrual_line_num := NULL; -- 4262811
120190 l_tmp_amt := NULL; -- 4262811
120191 --
120192
120193 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
120194 l_balance_type_code <> 'B' THEN
120195 IF NVL(p_source_24,9E125) = 6
120196 THEN
120197
120198 --
120199 XLA_AE_LINES_PKG.SetNewLine;
120200
120201 p_balance_type_code := l_balance_type_code;
120202 -- set the flag so later we will know whether the gain loss line needs to be created
120203
120204 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
120205 p_actual_flag :='A';
120206 END IF;
120207
120208 --
120209 -- bulk performance
120210 --
120211 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
120212 p_header_num => 0); -- 4262811
120213 --
120214 -- set accounting line options
120215 --
120216 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
120217 p_natural_side_code => 'D'
120218 , p_gain_or_loss_flag => 'N'
120219 , p_gl_transfer_mode_code => 'S'
120220 , p_acct_entry_type_code => 'A'
120221 , p_switch_side_flag => 'Y'
120222 , p_merge_duplicate_code => 'N'
120223 );
120224 --
120225 l_acc_rev_natural_side_code := 'C'; -- 4262811
120226 --
120227 --
120228 -- set accounting line type info
120229 --
120230 xla_ae_lines_pkg.SetAcctLineType
120231 (p_component_type => l_component_type
120232 ,p_event_type_code => l_event_type_code
120233 ,p_line_definition_owner_code => l_line_definition_owner_code
120234 ,p_line_definition_code => l_line_definition_code
120235 ,p_accounting_line_code => l_component_code
120236 ,p_accounting_line_type_code => l_component_type_code
120237 ,p_accounting_line_appl_id => l_component_appl_id
120238 ,p_amb_context_code => l_amb_context_code
120239 ,p_entity_code => l_entity_code
120240 ,p_event_class_code => l_event_class_code);
120241 --
120242 -- set accounting class
120243 --
120244 xla_ae_lines_pkg.SetAcctClass(
120245 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
120246 , p_ae_header_id => l_ae_header_id
120247 );
120248
120249 --
120250 -- set rounding class
120251 --
120252 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
120253 'PURCHASE_PRICE_VARIANCE';
120254
120255 --
120256 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
120257 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
120258 --
120259 -- bulk performance
120260 --
120261 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
120262
120263 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
120264 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
120265
120266 -- 4955764
120267 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120268 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
120269
120270 -- 4458381 Public Sector Enh
120271
120272 --
120273 -- set accounting attributes for the line type
120274 --
120275 l_entered_amt_idx := 3;
120276 l_accted_amt_idx := 8;
120277 l_bflow_applied_to_amt_idx := NULL; -- 5132302
120278 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
120279 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
120280 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
120281 l_rec_acct_attrs.array_char_value(2) := p_source_12;
120282 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
120283 l_rec_acct_attrs.array_num_value(3) := p_source_18;
120284 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
120285 l_rec_acct_attrs.array_char_value(4) := p_source_15;
120286 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
120287 l_rec_acct_attrs.array_date_value(5) := p_source_19;
120288 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
120289 l_rec_acct_attrs.array_num_value(6) := p_source_20;
120290 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
120291 l_rec_acct_attrs.array_char_value(7) := p_source_21;
120292 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
120293 l_rec_acct_attrs.array_num_value(8) := p_source_22;
120294
120295 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
120296 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
120297
120298 ---------------------------------------------------------------------------------------------------------------
120299 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
120300 ---------------------------------------------------------------------------------------------------------------
120301 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
120302
120303 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120304 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120305
120306 IF xla_accounting_cache_pkg.GetValueChar
120307 (p_source_code => 'LEDGER_CATEGORY_CODE'
120308 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
120309 AND l_bflow_method_code = 'PRIOR_ENTRY'
120310 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
120311 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
120312 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
120313 )
120314 THEN
120315 xla_ae_lines_pkg.BflowUpgEntry
120316 (p_business_method_code => l_bflow_method_code
120317 ,p_business_class_code => l_bflow_class_code
120318 ,p_balance_type => l_balance_type_code);
120319 ELSE
120320 NULL;
120321 -- No business flow processing for business flow method of NONE.
120322 END IF;
120323
120324 --
120325 -- call analytical criteria
120326 --
120327
120328 --
120329 -- call description
120330 --
120331 -- No description or it is inherited.
120332 --
120333 -- call ADRs
120334 -- Bug 4922099
120335 --
120336 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120337 (NVL(l_actual_upg_option, 'N') = 'O') OR
120338 (NVL(l_enc_upg_option, 'N') = 'O')
120339 )
120340 THEN
120341 NULL;
120342 --
120343 --
120344
120345 l_ccid := AcctDerRule_4(
120346 p_application_id => p_application_id
120347 , p_ae_header_id => l_ae_header_id
120348 , p_source_4 => p_source_4
120349 , x_transaction_coa_id => l_adr_transaction_coa_id
120350 , x_accounting_coa_id => l_adr_accounting_coa_id
120351 , x_value_type_code => l_adr_value_type_code
120352 , p_side => 'NA'
120353 );
120354
120355 xla_ae_lines_pkg.set_ccid(
120356 p_code_combination_id => l_ccid
120357 , p_value_type_code => l_adr_value_type_code
120358 , p_transaction_coa_id => l_adr_transaction_coa_id
120359 , p_accounting_coa_id => l_adr_accounting_coa_id
120360 , p_adr_code => 'CST_DEFAULT'
120361 , p_adr_type_code => 'S'
120362 , p_component_type => l_component_type
120363 , p_component_code => l_component_code
120364 , p_component_type_code => l_component_type_code
120365 , p_component_appl_id => l_component_appl_id
120366 , p_amb_context_code => l_amb_context_code
120367 , p_side => 'NA'
120368 );
120369
120370
120371 --
120372 --
120373 END IF;
120374 --
120375 -- Bug 4922099
120376 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
120377 (NVL(l_enc_upg_option, 'N') = 'O')
120378 ) AND
120379 (l_bflow_method_code = 'PRIOR_ENTRY')
120380 )
120381 THEN
120382 IF
120383 --
120384 1 = 2
120385 --
120386 THEN
120387 xla_accounting_err_pkg.build_message
120388 (p_appli_s_name => 'XLA'
120389 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120390 ,p_token_1 => 'LINE_NUMBER'
120391 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
120392 ,p_token_2 => 'LINE_TYPE_NAME'
120393 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
120394 l_component_type
120395 ,l_component_code
120396 ,l_component_type_code
120397 ,l_component_appl_id
120398 ,l_amb_context_code
120399 ,l_entity_code
120400 ,l_event_class_code
120401 )
120402 ,p_token_3 => 'OWNER'
120403 ,p_value_3 => xla_lookups_pkg.get_meaning(
120404 p_lookup_type => 'XLA_OWNER_TYPE'
120405 ,p_lookup_code => l_component_type_code
120406 )
120407 ,p_token_4 => 'PRODUCT_NAME'
120408 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
120409 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
120410 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
120411 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
120412 ,p_ae_header_id => NULL
120413 );
120414
120415 IF (C_LEVEL_ERROR>= g_log_level) THEN
120416 trace
120417 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120418 ,p_level => C_LEVEL_ERROR
120419 ,p_module => l_log_module);
120420 END IF;
120421 END IF;
120422 END IF;
120423 --
120424 --
120425 ------------------------------------------------------------------------------------------------
120426 -- 4219869 Business Flow
120427 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
120428 -- Prior Entry. Currently, the following code is always generated.
120429 ------------------------------------------------------------------------------------------------
120430 XLA_AE_LINES_PKG.ValidateCurrentLine;
120431
120432 ------------------------------------------------------------------------------------
120433 -- 4219869 Business Flow
120434 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
120435 ------------------------------------------------------------------------------------
120436 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120437
120438 ----------------------------------------------------------------------------------
120439 -- 4219869 Business Flow
120440 -- Update journal entry status -- Need to generate this within IF <condition>
120441 ----------------------------------------------------------------------------------
120442 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120443 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
120444 ,p_balance_type_code => l_balance_type_code
120445 );
120446
120447 -------------------------------------------------------------------------------------------
120448 -- 4262811 - Generate the Accrual Reversal lines
120449 -------------------------------------------------------------------------------------------
120450 BEGIN
120451 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
120452 (g_array_event(p_event_id).array_value_num('header_index'));
120453 IF l_acc_rev_flag IS NULL THEN
120454 l_acc_rev_flag := 'N';
120455 END IF;
120456 EXCEPTION
120457 WHEN OTHERS THEN
120458 l_acc_rev_flag := 'N';
120459 END;
120460 --
120461 IF (l_acc_rev_flag = 'Y') THEN
120462
120463 -- 4645092 ------------------------------------------------------------------------------
120464 -- To allow MPA report to determine if it should generate report process
120465 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
120466 ------------------------------------------------------------------------------------------
120467
120468 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
120469 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
120470 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
120471 -- call ADRs
120472 -- Bug 4922099
120473 --
120474 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120475 (NVL(l_actual_upg_option, 'N') = 'O') OR
120476 (NVL(l_enc_upg_option, 'N') = 'O')
120477 )
120478 THEN
120479 NULL;
120480 --
120481 --
120482
120483 l_ccid := AcctDerRule_4(
120484 p_application_id => p_application_id
120485 , p_ae_header_id => l_ae_header_id
120486 , p_source_4 => p_source_4
120487 , x_transaction_coa_id => l_adr_transaction_coa_id
120488 , x_accounting_coa_id => l_adr_accounting_coa_id
120489 , x_value_type_code => l_adr_value_type_code
120490 , p_side => 'NA'
120491 );
120492
120493 xla_ae_lines_pkg.set_ccid(
120494 p_code_combination_id => l_ccid
120495 , p_value_type_code => l_adr_value_type_code
120496 , p_transaction_coa_id => l_adr_transaction_coa_id
120497 , p_accounting_coa_id => l_adr_accounting_coa_id
120498 , p_adr_code => 'CST_DEFAULT'
120499 , p_adr_type_code => 'S'
120500 , p_component_type => l_component_type
120501 , p_component_code => l_component_code
120502 , p_component_type_code => l_component_type_code
120503 , p_component_appl_id => l_component_appl_id
120504 , p_amb_context_code => l_amb_context_code
120505 , p_side => 'NA'
120506 );
120507
120508
120509 --
120510 --
120511 END IF;
120512
120513 --
120514 -- Update the line information that should be overwritten
120515 --
120516 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
120517 p_header_num => 1);
120518 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
120519
120520 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
120521
120522 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
120523 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
120524 END IF;
120525
120526 --
120527 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
120528 --
120529 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
120530 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
120531 ELSE
120532 ---------------------------------------------------------------------------------------------------
120533 -- 4262811a Switch Sign
120534 ---------------------------------------------------------------------------------------------------
120535 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
120536 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120537 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120538 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
120539 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120540 -- 5132302
120541 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
120542 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
120543
120544 END IF;
120545
120546 -- 4955764
120547 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120548 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
120549
120550
120551 XLA_AE_LINES_PKG.ValidateCurrentLine;
120552 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120553
120554 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120555 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
120556 ,p_balance_type_code => l_balance_type_code);
120557
120558 END IF;
120559
120560 -----------------------------------------------------------------------------------------
120561 -- 4262811 Multiperiod Accounting
120562 -----------------------------------------------------------------------------------------
120563 -- No MPA option is assigned.
120564
120565
120566 END IF;
120567 END IF;
120568 --
120569
120570 --
120571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120572 trace
120573 (p_msg => 'END of AcctLineType_218'
120574 ,p_level => C_LEVEL_PROCEDURE
120575 ,p_module => l_log_module);
120576 END IF;
120577 --
120578 EXCEPTION
120579 WHEN xla_exceptions_pkg.application_exception THEN
120580 RAISE;
120581 WHEN OTHERS THEN
120582 xla_exceptions_pkg.raise_message
120583 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_218');
120584 END AcctLineType_218;
120585 --
120586
120587 ---------------------------------------
120588 --
120589 -- PRIVATE FUNCTION
120590 -- AcctLineType_219
120591 --
120592 ---------------------------------------
120593 PROCEDURE AcctLineType_219 (
120594 p_application_id IN NUMBER
120595 ,p_event_id IN NUMBER
120596 ,p_calculate_acctd_flag IN VARCHAR2
120597 ,p_calculate_g_l_flag IN VARCHAR2
120598 ,p_actual_flag IN OUT VARCHAR2
120599 ,p_balance_type_code OUT VARCHAR2
120600 ,p_gain_or_loss_ref OUT VARCHAR2
120601
120602 --Cost Management Default Account
120603 , p_source_4 IN NUMBER
120604 --DISTRIBUTION_IDENTIFIER
120605 , p_source_11 IN NUMBER
120606 --Distribution Type
120607 , p_source_12 IN VARCHAR2
120608 , p_source_12_meaning IN VARCHAR2
120609 --Entered Currency Code
120610 , p_source_15 IN VARCHAR2
120611 --Entered Amount
120612 , p_source_18 IN NUMBER
120613 --Currency Conversion Date
120614 , p_source_19 IN DATE
120615 --Currency Conversion Rate
120616 , p_source_20 IN NUMBER
120617 --Currency Conversion Type
120618 , p_source_21 IN VARCHAR2
120619 --Accounted Amount
120620 , p_source_22 IN NUMBER
120621 --Accounting Line Type
120622 , p_source_24 IN NUMBER
120623 )
120624 IS
120625
120626 l_component_type VARCHAR2(80);
120627 l_component_code VARCHAR2(30);
120628 l_component_type_code VARCHAR2(1);
120629 l_component_appl_id INTEGER;
120630 l_amb_context_code VARCHAR2(30);
120631 l_entity_code VARCHAR2(30);
120632 l_event_class_code VARCHAR2(30);
120633 l_ae_header_id NUMBER;
120634 l_event_type_code VARCHAR2(30);
120635 l_line_definition_code VARCHAR2(30);
120636 l_line_definition_owner_code VARCHAR2(1);
120637 --
120638 -- adr variables
120639 l_segment VARCHAR2(30);
120640 l_ccid NUMBER;
120641 l_adr_transaction_coa_id NUMBER;
120642 l_adr_accounting_coa_id NUMBER;
120643 l_adr_flexfield_segment_code VARCHAR2(30);
120644 l_adr_flex_value_set_id NUMBER;
120645 l_adr_value_type_code VARCHAR2(30);
120646 l_adr_value_combination_id NUMBER;
120647 l_adr_value_segment_code VARCHAR2(30);
120648
120649 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
120650 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
120651 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
120652 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
120653
120654 -- 4262811 Variables ------------------------------------------------------------------------------------------
120655 l_entered_amt_idx NUMBER;
120656 l_accted_amt_idx NUMBER;
120657 l_acc_rev_flag VARCHAR2(1);
120658 l_accrual_line_num NUMBER;
120659 l_tmp_amt NUMBER;
120660 l_acc_rev_natural_side_code VARCHAR2(1);
120661
120662 l_num_entries NUMBER;
120663 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
120664 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
120665 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
120666 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
120667 l_recog_line_1 NUMBER;
120668 l_recog_line_2 NUMBER;
120669
120670 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
120671 l_bflow_applied_to_amt NUMBER; -- 5132302
120672 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
120673
120674 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
120675
120676 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
120677 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
120678
120679 ---------------------------------------------------------------------------------------------------------------
120680
120681
120682 --
120683 -- bulk performance
120684 --
120685 l_balance_type_code VARCHAR2(1);
120686 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
120687 l_log_module VARCHAR2(240);
120688
120689 --
120690 -- Upgrade strategy
120691 --
120692 l_actual_upg_option VARCHAR2(1);
120693 l_enc_upg_option VARCHAR2(1);
120694
120695 --
120696 BEGIN
120697 --
120698 IF g_log_enabled THEN
120699 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_219';
120700 END IF;
120701 --
120702 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
120703
120704 trace
120705 (p_msg => 'BEGIN of AcctLineType_219'
120706 ,p_level => C_LEVEL_PROCEDURE
120707 ,p_module => l_log_module);
120708
120709 END IF;
120710 --
120711 l_component_type := 'AMB_JLT';
120712 l_component_code := 'PURCHASE_PRICE_VARIANCE';
120713 l_component_type_code := 'S';
120714 l_component_appl_id := 707;
120715 l_amb_context_code := 'DEFAULT';
120716 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
120717 l_event_class_code := 'USER_DEFINE';
120718 l_event_type_code := 'UDIR_INTERORG_RCPT_TP';
120719 l_line_definition_owner_code := 'S';
120720 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_TP';
120721 --
120722 l_balance_type_code := 'A';
120723 l_segment := NULL;
120724 l_ccid := NULL;
120725 l_adr_transaction_coa_id := NULL;
120726 l_adr_accounting_coa_id := NULL;
120727 l_adr_flexfield_segment_code := NULL;
120728 l_adr_flex_value_set_id := NULL;
120729 l_adr_value_type_code := NULL;
120730 l_adr_value_combination_id := NULL;
120731 l_adr_value_segment_code := NULL;
120732
120733 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
120734 l_bflow_class_code := ''; -- 4219869 Business Flow
120735 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
120736 l_budgetary_control_flag := 'N';
120737
120738 l_bflow_applied_to_amt_idx := NULL; -- 5132302
120739 l_bflow_applied_to_amt := NULL; -- 5132302
120740 l_entered_amt_idx := NULL; -- 4262811
120741 l_accted_amt_idx := NULL; -- 4262811
120742 l_acc_rev_flag := NULL; -- 4262811
120743 l_accrual_line_num := NULL; -- 4262811
120744 l_tmp_amt := NULL; -- 4262811
120745 --
120746
120747 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
120748 l_balance_type_code <> 'B' THEN
120749 IF NVL(p_source_24,9E125) = 6
120750 THEN
120751
120752 --
120753 XLA_AE_LINES_PKG.SetNewLine;
120754
120755 p_balance_type_code := l_balance_type_code;
120756 -- set the flag so later we will know whether the gain loss line needs to be created
120757
120758 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
120759 p_actual_flag :='A';
120760 END IF;
120761
120762 --
120763 -- bulk performance
120764 --
120765 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
120766 p_header_num => 0); -- 4262811
120767 --
120768 -- set accounting line options
120769 --
120770 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
120771 p_natural_side_code => 'D'
120772 , p_gain_or_loss_flag => 'N'
120773 , p_gl_transfer_mode_code => 'S'
120774 , p_acct_entry_type_code => 'A'
120775 , p_switch_side_flag => 'Y'
120776 , p_merge_duplicate_code => 'N'
120777 );
120778 --
120779 l_acc_rev_natural_side_code := 'C'; -- 4262811
120780 --
120781 --
120782 -- set accounting line type info
120783 --
120784 xla_ae_lines_pkg.SetAcctLineType
120785 (p_component_type => l_component_type
120786 ,p_event_type_code => l_event_type_code
120787 ,p_line_definition_owner_code => l_line_definition_owner_code
120788 ,p_line_definition_code => l_line_definition_code
120789 ,p_accounting_line_code => l_component_code
120790 ,p_accounting_line_type_code => l_component_type_code
120791 ,p_accounting_line_appl_id => l_component_appl_id
120792 ,p_amb_context_code => l_amb_context_code
120793 ,p_entity_code => l_entity_code
120794 ,p_event_class_code => l_event_class_code);
120795 --
120796 -- set accounting class
120797 --
120798 xla_ae_lines_pkg.SetAcctClass(
120799 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
120800 , p_ae_header_id => l_ae_header_id
120801 );
120802
120803 --
120804 -- set rounding class
120805 --
120806 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
120807 'PURCHASE_PRICE_VARIANCE';
120808
120809 --
120810 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
120811 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
120812 --
120813 -- bulk performance
120814 --
120815 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
120816
120817 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
120818 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
120819
120820 -- 4955764
120821 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
120822 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
120823
120824 -- 4458381 Public Sector Enh
120825
120826 --
120827 -- set accounting attributes for the line type
120828 --
120829 l_entered_amt_idx := 3;
120830 l_accted_amt_idx := 8;
120831 l_bflow_applied_to_amt_idx := NULL; -- 5132302
120832 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
120833 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
120834 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
120835 l_rec_acct_attrs.array_char_value(2) := p_source_12;
120836 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
120837 l_rec_acct_attrs.array_num_value(3) := p_source_18;
120838 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
120839 l_rec_acct_attrs.array_char_value(4) := p_source_15;
120840 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
120841 l_rec_acct_attrs.array_date_value(5) := p_source_19;
120842 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
120843 l_rec_acct_attrs.array_num_value(6) := p_source_20;
120844 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
120845 l_rec_acct_attrs.array_char_value(7) := p_source_21;
120846 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
120847 l_rec_acct_attrs.array_num_value(8) := p_source_22;
120848
120849 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
120850 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
120851
120852 ---------------------------------------------------------------------------------------------------------------
120853 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
120854 ---------------------------------------------------------------------------------------------------------------
120855 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
120856
120857 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120858 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
120859
120860 IF xla_accounting_cache_pkg.GetValueChar
120861 (p_source_code => 'LEDGER_CATEGORY_CODE'
120862 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
120863 AND l_bflow_method_code = 'PRIOR_ENTRY'
120864 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
120865 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
120866 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
120867 )
120868 THEN
120869 xla_ae_lines_pkg.BflowUpgEntry
120870 (p_business_method_code => l_bflow_method_code
120871 ,p_business_class_code => l_bflow_class_code
120872 ,p_balance_type => l_balance_type_code);
120873 ELSE
120874 NULL;
120875 -- No business flow processing for business flow method of NONE.
120876 END IF;
120877
120878 --
120879 -- call analytical criteria
120880 --
120881
120882 --
120883 -- call description
120884 --
120885 -- No description or it is inherited.
120886 --
120887 -- call ADRs
120888 -- Bug 4922099
120889 --
120890 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
120891 (NVL(l_actual_upg_option, 'N') = 'O') OR
120892 (NVL(l_enc_upg_option, 'N') = 'O')
120893 )
120894 THEN
120895 NULL;
120896 --
120897 --
120898
120899 l_ccid := AcctDerRule_4(
120900 p_application_id => p_application_id
120901 , p_ae_header_id => l_ae_header_id
120902 , p_source_4 => p_source_4
120903 , x_transaction_coa_id => l_adr_transaction_coa_id
120904 , x_accounting_coa_id => l_adr_accounting_coa_id
120905 , x_value_type_code => l_adr_value_type_code
120906 , p_side => 'NA'
120907 );
120908
120909 xla_ae_lines_pkg.set_ccid(
120910 p_code_combination_id => l_ccid
120911 , p_value_type_code => l_adr_value_type_code
120912 , p_transaction_coa_id => l_adr_transaction_coa_id
120913 , p_accounting_coa_id => l_adr_accounting_coa_id
120914 , p_adr_code => 'CST_DEFAULT'
120915 , p_adr_type_code => 'S'
120916 , p_component_type => l_component_type
120917 , p_component_code => l_component_code
120918 , p_component_type_code => l_component_type_code
120919 , p_component_appl_id => l_component_appl_id
120920 , p_amb_context_code => l_amb_context_code
120921 , p_side => 'NA'
120922 );
120923
120924
120925 --
120926 --
120927 END IF;
120928 --
120929 -- Bug 4922099
120930 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
120931 (NVL(l_enc_upg_option, 'N') = 'O')
120932 ) AND
120933 (l_bflow_method_code = 'PRIOR_ENTRY')
120934 )
120935 THEN
120936 IF
120937 --
120938 1 = 2
120939 --
120940 THEN
120941 xla_accounting_err_pkg.build_message
120942 (p_appli_s_name => 'XLA'
120943 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120944 ,p_token_1 => 'LINE_NUMBER'
120945 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
120946 ,p_token_2 => 'LINE_TYPE_NAME'
120947 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
120948 l_component_type
120949 ,l_component_code
120950 ,l_component_type_code
120951 ,l_component_appl_id
120952 ,l_amb_context_code
120953 ,l_entity_code
120954 ,l_event_class_code
120955 )
120956 ,p_token_3 => 'OWNER'
120957 ,p_value_3 => xla_lookups_pkg.get_meaning(
120958 p_lookup_type => 'XLA_OWNER_TYPE'
120959 ,p_lookup_code => l_component_type_code
120960 )
120961 ,p_token_4 => 'PRODUCT_NAME'
120962 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
120963 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
120964 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
120965 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
120966 ,p_ae_header_id => NULL
120967 );
120968
120969 IF (C_LEVEL_ERROR>= g_log_level) THEN
120970 trace
120971 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
120972 ,p_level => C_LEVEL_ERROR
120973 ,p_module => l_log_module);
120974 END IF;
120975 END IF;
120976 END IF;
120977 --
120978 --
120979 ------------------------------------------------------------------------------------------------
120980 -- 4219869 Business Flow
120981 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
120982 -- Prior Entry. Currently, the following code is always generated.
120983 ------------------------------------------------------------------------------------------------
120984 XLA_AE_LINES_PKG.ValidateCurrentLine;
120985
120986 ------------------------------------------------------------------------------------
120987 -- 4219869 Business Flow
120988 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
120989 ------------------------------------------------------------------------------------
120990 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
120991
120992 ----------------------------------------------------------------------------------
120993 -- 4219869 Business Flow
120994 -- Update journal entry status -- Need to generate this within IF <condition>
120995 ----------------------------------------------------------------------------------
120996 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
120997 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
120998 ,p_balance_type_code => l_balance_type_code
120999 );
121000
121001 -------------------------------------------------------------------------------------------
121002 -- 4262811 - Generate the Accrual Reversal lines
121003 -------------------------------------------------------------------------------------------
121004 BEGIN
121005 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
121006 (g_array_event(p_event_id).array_value_num('header_index'));
121007 IF l_acc_rev_flag IS NULL THEN
121008 l_acc_rev_flag := 'N';
121009 END IF;
121010 EXCEPTION
121011 WHEN OTHERS THEN
121012 l_acc_rev_flag := 'N';
121013 END;
121014 --
121015 IF (l_acc_rev_flag = 'Y') THEN
121016
121017 -- 4645092 ------------------------------------------------------------------------------
121018 -- To allow MPA report to determine if it should generate report process
121019 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
121020 ------------------------------------------------------------------------------------------
121021
121022 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
121023 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
121024 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
121025 -- call ADRs
121026 -- Bug 4922099
121027 --
121028 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121029 (NVL(l_actual_upg_option, 'N') = 'O') OR
121030 (NVL(l_enc_upg_option, 'N') = 'O')
121031 )
121032 THEN
121033 NULL;
121034 --
121035 --
121036
121037 l_ccid := AcctDerRule_4(
121038 p_application_id => p_application_id
121039 , p_ae_header_id => l_ae_header_id
121040 , p_source_4 => p_source_4
121041 , x_transaction_coa_id => l_adr_transaction_coa_id
121042 , x_accounting_coa_id => l_adr_accounting_coa_id
121043 , x_value_type_code => l_adr_value_type_code
121044 , p_side => 'NA'
121045 );
121046
121047 xla_ae_lines_pkg.set_ccid(
121048 p_code_combination_id => l_ccid
121049 , p_value_type_code => l_adr_value_type_code
121050 , p_transaction_coa_id => l_adr_transaction_coa_id
121051 , p_accounting_coa_id => l_adr_accounting_coa_id
121052 , p_adr_code => 'CST_DEFAULT'
121053 , p_adr_type_code => 'S'
121054 , p_component_type => l_component_type
121055 , p_component_code => l_component_code
121056 , p_component_type_code => l_component_type_code
121057 , p_component_appl_id => l_component_appl_id
121058 , p_amb_context_code => l_amb_context_code
121059 , p_side => 'NA'
121060 );
121061
121062
121063 --
121064 --
121065 END IF;
121066
121067 --
121068 -- Update the line information that should be overwritten
121069 --
121070 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
121071 p_header_num => 1);
121072 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
121073
121074 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
121075
121076 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
121077 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
121078 END IF;
121079
121080 --
121081 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
121082 --
121083 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
121084 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
121085 ELSE
121086 ---------------------------------------------------------------------------------------------------
121087 -- 4262811a Switch Sign
121088 ---------------------------------------------------------------------------------------------------
121089 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
121090 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121091 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121092 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121093 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121094 -- 5132302
121095 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
121096 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121097
121098 END IF;
121099
121100 -- 4955764
121101 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121102 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
121103
121104
121105 XLA_AE_LINES_PKG.ValidateCurrentLine;
121106 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121107
121108 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121109 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
121110 ,p_balance_type_code => l_balance_type_code);
121111
121112 END IF;
121113
121114 -----------------------------------------------------------------------------------------
121115 -- 4262811 Multiperiod Accounting
121116 -----------------------------------------------------------------------------------------
121117 -- No MPA option is assigned.
121118
121119
121120 END IF;
121121 END IF;
121122 --
121123
121124 --
121125 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121126 trace
121127 (p_msg => 'END of AcctLineType_219'
121128 ,p_level => C_LEVEL_PROCEDURE
121129 ,p_module => l_log_module);
121130 END IF;
121131 --
121132 EXCEPTION
121133 WHEN xla_exceptions_pkg.application_exception THEN
121134 RAISE;
121135 WHEN OTHERS THEN
121136 xla_exceptions_pkg.raise_message
121137 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_219');
121138 END AcctLineType_219;
121139 --
121140
121141 ---------------------------------------
121142 --
121143 -- PRIVATE FUNCTION
121144 -- AcctLineType_220
121145 --
121146 ---------------------------------------
121147 PROCEDURE AcctLineType_220 (
121148 p_application_id IN NUMBER
121149 ,p_event_id IN NUMBER
121150 ,p_calculate_acctd_flag IN VARCHAR2
121151 ,p_calculate_g_l_flag IN VARCHAR2
121152 ,p_actual_flag IN OUT VARCHAR2
121153 ,p_balance_type_code OUT VARCHAR2
121154 ,p_gain_or_loss_ref OUT VARCHAR2
121155
121156 --Cost Management Default Account
121157 , p_source_4 IN NUMBER
121158 --DISTRIBUTION_IDENTIFIER
121159 , p_source_11 IN NUMBER
121160 --Distribution Type
121161 , p_source_12 IN VARCHAR2
121162 , p_source_12_meaning IN VARCHAR2
121163 --Entered Currency Code
121164 , p_source_15 IN VARCHAR2
121165 --Entered Amount
121166 , p_source_18 IN NUMBER
121167 --Currency Conversion Date
121168 , p_source_19 IN DATE
121169 --Currency Conversion Rate
121170 , p_source_20 IN NUMBER
121171 --Currency Conversion Type
121172 , p_source_21 IN VARCHAR2
121173 --Accounted Amount
121174 , p_source_22 IN NUMBER
121175 --Accounting Line Type
121176 , p_source_24 IN NUMBER
121177 )
121178 IS
121179
121180 l_component_type VARCHAR2(80);
121181 l_component_code VARCHAR2(30);
121182 l_component_type_code VARCHAR2(1);
121183 l_component_appl_id INTEGER;
121184 l_amb_context_code VARCHAR2(30);
121185 l_entity_code VARCHAR2(30);
121186 l_event_class_code VARCHAR2(30);
121187 l_ae_header_id NUMBER;
121188 l_event_type_code VARCHAR2(30);
121189 l_line_definition_code VARCHAR2(30);
121190 l_line_definition_owner_code VARCHAR2(1);
121191 --
121192 -- adr variables
121193 l_segment VARCHAR2(30);
121194 l_ccid NUMBER;
121195 l_adr_transaction_coa_id NUMBER;
121196 l_adr_accounting_coa_id NUMBER;
121197 l_adr_flexfield_segment_code VARCHAR2(30);
121198 l_adr_flex_value_set_id NUMBER;
121199 l_adr_value_type_code VARCHAR2(30);
121200 l_adr_value_combination_id NUMBER;
121201 l_adr_value_segment_code VARCHAR2(30);
121202
121203 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
121204 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
121205 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
121206 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
121207
121208 -- 4262811 Variables ------------------------------------------------------------------------------------------
121209 l_entered_amt_idx NUMBER;
121210 l_accted_amt_idx NUMBER;
121211 l_acc_rev_flag VARCHAR2(1);
121212 l_accrual_line_num NUMBER;
121213 l_tmp_amt NUMBER;
121214 l_acc_rev_natural_side_code VARCHAR2(1);
121215
121216 l_num_entries NUMBER;
121217 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
121218 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
121219 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
121220 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
121221 l_recog_line_1 NUMBER;
121222 l_recog_line_2 NUMBER;
121223
121224 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
121225 l_bflow_applied_to_amt NUMBER; -- 5132302
121226 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
121227
121228 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
121229
121230 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
121231 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
121232
121233 ---------------------------------------------------------------------------------------------------------------
121234
121235
121236 --
121237 -- bulk performance
121238 --
121239 l_balance_type_code VARCHAR2(1);
121240 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
121241 l_log_module VARCHAR2(240);
121242
121243 --
121244 -- Upgrade strategy
121245 --
121246 l_actual_upg_option VARCHAR2(1);
121247 l_enc_upg_option VARCHAR2(1);
121248
121249 --
121250 BEGIN
121251 --
121252 IF g_log_enabled THEN
121253 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_220';
121254 END IF;
121255 --
121256 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121257
121258 trace
121259 (p_msg => 'BEGIN of AcctLineType_220'
121260 ,p_level => C_LEVEL_PROCEDURE
121261 ,p_module => l_log_module);
121262
121263 END IF;
121264 --
121265 l_component_type := 'AMB_JLT';
121266 l_component_code := 'PURCHASE_PRICE_VARIANCE';
121267 l_component_type_code := 'S';
121268 l_component_appl_id := 707;
121269 l_amb_context_code := 'DEFAULT';
121270 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
121271 l_event_class_code := 'USER_DEFINE';
121272 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
121273 l_line_definition_owner_code := 'S';
121274 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_TP';
121275 --
121276 l_balance_type_code := 'A';
121277 l_segment := NULL;
121278 l_ccid := NULL;
121279 l_adr_transaction_coa_id := NULL;
121280 l_adr_accounting_coa_id := NULL;
121281 l_adr_flexfield_segment_code := NULL;
121282 l_adr_flex_value_set_id := NULL;
121283 l_adr_value_type_code := NULL;
121284 l_adr_value_combination_id := NULL;
121285 l_adr_value_segment_code := NULL;
121286
121287 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
121288 l_bflow_class_code := ''; -- 4219869 Business Flow
121289 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
121290 l_budgetary_control_flag := 'N';
121291
121292 l_bflow_applied_to_amt_idx := NULL; -- 5132302
121293 l_bflow_applied_to_amt := NULL; -- 5132302
121294 l_entered_amt_idx := NULL; -- 4262811
121295 l_accted_amt_idx := NULL; -- 4262811
121296 l_acc_rev_flag := NULL; -- 4262811
121297 l_accrual_line_num := NULL; -- 4262811
121298 l_tmp_amt := NULL; -- 4262811
121299 --
121300
121301 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
121302 l_balance_type_code <> 'B' THEN
121303 IF NVL(p_source_24,9E125) = 6
121304 THEN
121305
121306 --
121307 XLA_AE_LINES_PKG.SetNewLine;
121308
121309 p_balance_type_code := l_balance_type_code;
121310 -- set the flag so later we will know whether the gain loss line needs to be created
121311
121312 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
121313 p_actual_flag :='A';
121314 END IF;
121315
121316 --
121317 -- bulk performance
121318 --
121319 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
121320 p_header_num => 0); -- 4262811
121321 --
121322 -- set accounting line options
121323 --
121324 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
121325 p_natural_side_code => 'D'
121326 , p_gain_or_loss_flag => 'N'
121327 , p_gl_transfer_mode_code => 'S'
121328 , p_acct_entry_type_code => 'A'
121329 , p_switch_side_flag => 'Y'
121330 , p_merge_duplicate_code => 'N'
121331 );
121332 --
121333 l_acc_rev_natural_side_code := 'C'; -- 4262811
121334 --
121335 --
121336 -- set accounting line type info
121337 --
121338 xla_ae_lines_pkg.SetAcctLineType
121339 (p_component_type => l_component_type
121340 ,p_event_type_code => l_event_type_code
121341 ,p_line_definition_owner_code => l_line_definition_owner_code
121342 ,p_line_definition_code => l_line_definition_code
121343 ,p_accounting_line_code => l_component_code
121344 ,p_accounting_line_type_code => l_component_type_code
121345 ,p_accounting_line_appl_id => l_component_appl_id
121346 ,p_amb_context_code => l_amb_context_code
121347 ,p_entity_code => l_entity_code
121348 ,p_event_class_code => l_event_class_code);
121349 --
121350 -- set accounting class
121351 --
121352 xla_ae_lines_pkg.SetAcctClass(
121353 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
121354 , p_ae_header_id => l_ae_header_id
121355 );
121356
121357 --
121358 -- set rounding class
121359 --
121360 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
121361 'PURCHASE_PRICE_VARIANCE';
121362
121363 --
121364 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
121365 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
121366 --
121367 -- bulk performance
121368 --
121369 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
121370
121371 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
121372 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
121373
121374 -- 4955764
121375 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121376 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
121377
121378 -- 4458381 Public Sector Enh
121379
121380 --
121381 -- set accounting attributes for the line type
121382 --
121383 l_entered_amt_idx := 3;
121384 l_accted_amt_idx := 8;
121385 l_bflow_applied_to_amt_idx := NULL; -- 5132302
121386 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
121387 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
121388 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
121389 l_rec_acct_attrs.array_char_value(2) := p_source_12;
121390 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
121391 l_rec_acct_attrs.array_num_value(3) := p_source_18;
121392 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
121393 l_rec_acct_attrs.array_char_value(4) := p_source_15;
121394 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
121395 l_rec_acct_attrs.array_date_value(5) := p_source_19;
121396 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
121397 l_rec_acct_attrs.array_num_value(6) := p_source_20;
121398 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
121399 l_rec_acct_attrs.array_char_value(7) := p_source_21;
121400 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
121401 l_rec_acct_attrs.array_num_value(8) := p_source_22;
121402
121403 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
121404 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
121405
121406 ---------------------------------------------------------------------------------------------------------------
121407 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
121408 ---------------------------------------------------------------------------------------------------------------
121409 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
121410
121411 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121412 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121413
121414 IF xla_accounting_cache_pkg.GetValueChar
121415 (p_source_code => 'LEDGER_CATEGORY_CODE'
121416 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
121417 AND l_bflow_method_code = 'PRIOR_ENTRY'
121418 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
121419 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
121420 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
121421 )
121422 THEN
121423 xla_ae_lines_pkg.BflowUpgEntry
121424 (p_business_method_code => l_bflow_method_code
121425 ,p_business_class_code => l_bflow_class_code
121426 ,p_balance_type => l_balance_type_code);
121427 ELSE
121428 NULL;
121429 -- No business flow processing for business flow method of NONE.
121430 END IF;
121431
121432 --
121433 -- call analytical criteria
121434 --
121435
121436 --
121437 -- call description
121438 --
121439 -- No description or it is inherited.
121440 --
121441 -- call ADRs
121442 -- Bug 4922099
121443 --
121444 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121445 (NVL(l_actual_upg_option, 'N') = 'O') OR
121446 (NVL(l_enc_upg_option, 'N') = 'O')
121447 )
121448 THEN
121449 NULL;
121450 --
121451 --
121452
121453 l_ccid := AcctDerRule_4(
121454 p_application_id => p_application_id
121455 , p_ae_header_id => l_ae_header_id
121456 , p_source_4 => p_source_4
121457 , x_transaction_coa_id => l_adr_transaction_coa_id
121458 , x_accounting_coa_id => l_adr_accounting_coa_id
121459 , x_value_type_code => l_adr_value_type_code
121460 , p_side => 'NA'
121461 );
121462
121463 xla_ae_lines_pkg.set_ccid(
121464 p_code_combination_id => l_ccid
121465 , p_value_type_code => l_adr_value_type_code
121466 , p_transaction_coa_id => l_adr_transaction_coa_id
121467 , p_accounting_coa_id => l_adr_accounting_coa_id
121468 , p_adr_code => 'CST_DEFAULT'
121469 , p_adr_type_code => 'S'
121470 , p_component_type => l_component_type
121471 , p_component_code => l_component_code
121472 , p_component_type_code => l_component_type_code
121473 , p_component_appl_id => l_component_appl_id
121474 , p_amb_context_code => l_amb_context_code
121475 , p_side => 'NA'
121476 );
121477
121478
121479 --
121480 --
121481 END IF;
121482 --
121483 -- Bug 4922099
121484 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
121485 (NVL(l_enc_upg_option, 'N') = 'O')
121486 ) AND
121487 (l_bflow_method_code = 'PRIOR_ENTRY')
121488 )
121489 THEN
121490 IF
121491 --
121492 1 = 2
121493 --
121494 THEN
121495 xla_accounting_err_pkg.build_message
121496 (p_appli_s_name => 'XLA'
121497 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121498 ,p_token_1 => 'LINE_NUMBER'
121499 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
121500 ,p_token_2 => 'LINE_TYPE_NAME'
121501 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
121502 l_component_type
121503 ,l_component_code
121504 ,l_component_type_code
121505 ,l_component_appl_id
121506 ,l_amb_context_code
121507 ,l_entity_code
121508 ,l_event_class_code
121509 )
121510 ,p_token_3 => 'OWNER'
121511 ,p_value_3 => xla_lookups_pkg.get_meaning(
121512 p_lookup_type => 'XLA_OWNER_TYPE'
121513 ,p_lookup_code => l_component_type_code
121514 )
121515 ,p_token_4 => 'PRODUCT_NAME'
121516 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
121517 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
121518 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
121519 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
121520 ,p_ae_header_id => NULL
121521 );
121522
121523 IF (C_LEVEL_ERROR>= g_log_level) THEN
121524 trace
121525 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
121526 ,p_level => C_LEVEL_ERROR
121527 ,p_module => l_log_module);
121528 END IF;
121529 END IF;
121530 END IF;
121531 --
121532 --
121533 ------------------------------------------------------------------------------------------------
121534 -- 4219869 Business Flow
121535 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
121536 -- Prior Entry. Currently, the following code is always generated.
121537 ------------------------------------------------------------------------------------------------
121538 XLA_AE_LINES_PKG.ValidateCurrentLine;
121539
121540 ------------------------------------------------------------------------------------
121541 -- 4219869 Business Flow
121542 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
121543 ------------------------------------------------------------------------------------
121544 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121545
121546 ----------------------------------------------------------------------------------
121547 -- 4219869 Business Flow
121548 -- Update journal entry status -- Need to generate this within IF <condition>
121549 ----------------------------------------------------------------------------------
121550 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121551 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
121552 ,p_balance_type_code => l_balance_type_code
121553 );
121554
121555 -------------------------------------------------------------------------------------------
121556 -- 4262811 - Generate the Accrual Reversal lines
121557 -------------------------------------------------------------------------------------------
121558 BEGIN
121559 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
121560 (g_array_event(p_event_id).array_value_num('header_index'));
121561 IF l_acc_rev_flag IS NULL THEN
121562 l_acc_rev_flag := 'N';
121563 END IF;
121564 EXCEPTION
121565 WHEN OTHERS THEN
121566 l_acc_rev_flag := 'N';
121567 END;
121568 --
121569 IF (l_acc_rev_flag = 'Y') THEN
121570
121571 -- 4645092 ------------------------------------------------------------------------------
121572 -- To allow MPA report to determine if it should generate report process
121573 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
121574 ------------------------------------------------------------------------------------------
121575
121576 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
121577 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
121578 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
121579 -- call ADRs
121580 -- Bug 4922099
121581 --
121582 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121583 (NVL(l_actual_upg_option, 'N') = 'O') OR
121584 (NVL(l_enc_upg_option, 'N') = 'O')
121585 )
121586 THEN
121587 NULL;
121588 --
121589 --
121590
121591 l_ccid := AcctDerRule_4(
121592 p_application_id => p_application_id
121593 , p_ae_header_id => l_ae_header_id
121594 , p_source_4 => p_source_4
121595 , x_transaction_coa_id => l_adr_transaction_coa_id
121596 , x_accounting_coa_id => l_adr_accounting_coa_id
121597 , x_value_type_code => l_adr_value_type_code
121598 , p_side => 'NA'
121599 );
121600
121601 xla_ae_lines_pkg.set_ccid(
121602 p_code_combination_id => l_ccid
121603 , p_value_type_code => l_adr_value_type_code
121604 , p_transaction_coa_id => l_adr_transaction_coa_id
121605 , p_accounting_coa_id => l_adr_accounting_coa_id
121606 , p_adr_code => 'CST_DEFAULT'
121607 , p_adr_type_code => 'S'
121608 , p_component_type => l_component_type
121609 , p_component_code => l_component_code
121610 , p_component_type_code => l_component_type_code
121611 , p_component_appl_id => l_component_appl_id
121612 , p_amb_context_code => l_amb_context_code
121613 , p_side => 'NA'
121614 );
121615
121616
121617 --
121618 --
121619 END IF;
121620
121621 --
121622 -- Update the line information that should be overwritten
121623 --
121624 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
121625 p_header_num => 1);
121626 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
121627
121628 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
121629
121630 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
121631 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
121632 END IF;
121633
121634 --
121635 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
121636 --
121637 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
121638 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
121639 ELSE
121640 ---------------------------------------------------------------------------------------------------
121641 -- 4262811a Switch Sign
121642 ---------------------------------------------------------------------------------------------------
121643 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
121644 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121645 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121646 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
121647 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121648 -- 5132302
121649 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
121650 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
121651
121652 END IF;
121653
121654 -- 4955764
121655 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121656 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
121657
121658
121659 XLA_AE_LINES_PKG.ValidateCurrentLine;
121660 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
121661
121662 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
121663 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
121664 ,p_balance_type_code => l_balance_type_code);
121665
121666 END IF;
121667
121668 -----------------------------------------------------------------------------------------
121669 -- 4262811 Multiperiod Accounting
121670 -----------------------------------------------------------------------------------------
121671 -- No MPA option is assigned.
121672
121673
121674 END IF;
121675 END IF;
121676 --
121677
121678 --
121679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121680 trace
121681 (p_msg => 'END of AcctLineType_220'
121682 ,p_level => C_LEVEL_PROCEDURE
121683 ,p_module => l_log_module);
121684 END IF;
121685 --
121686 EXCEPTION
121687 WHEN xla_exceptions_pkg.application_exception THEN
121688 RAISE;
121689 WHEN OTHERS THEN
121690 xla_exceptions_pkg.raise_message
121691 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_220');
121692 END AcctLineType_220;
121693 --
121694
121695 ---------------------------------------
121696 --
121697 -- PRIVATE FUNCTION
121698 -- AcctLineType_221
121699 --
121700 ---------------------------------------
121701 PROCEDURE AcctLineType_221 (
121702 p_application_id IN NUMBER
121703 ,p_event_id IN NUMBER
121704 ,p_calculate_acctd_flag IN VARCHAR2
121705 ,p_calculate_g_l_flag IN VARCHAR2
121706 ,p_actual_flag IN OUT VARCHAR2
121707 ,p_balance_type_code OUT VARCHAR2
121708 ,p_gain_or_loss_ref OUT VARCHAR2
121709
121710 --Cost Management Default Account
121711 , p_source_4 IN NUMBER
121712 --DISTRIBUTION_IDENTIFIER
121713 , p_source_11 IN NUMBER
121714 --Distribution Type
121715 , p_source_12 IN VARCHAR2
121716 , p_source_12_meaning IN VARCHAR2
121717 --Entered Currency Code
121718 , p_source_15 IN VARCHAR2
121719 --Entered Amount
121720 , p_source_18 IN NUMBER
121721 --Currency Conversion Date
121722 , p_source_19 IN DATE
121723 --Currency Conversion Rate
121724 , p_source_20 IN NUMBER
121725 --Accounted Amount
121726 , p_source_22 IN NUMBER
121727 --Accounting Line Type
121728 , p_source_24 IN NUMBER
121729 )
121730 IS
121731
121732 l_component_type VARCHAR2(80);
121733 l_component_code VARCHAR2(30);
121734 l_component_type_code VARCHAR2(1);
121735 l_component_appl_id INTEGER;
121736 l_amb_context_code VARCHAR2(30);
121737 l_entity_code VARCHAR2(30);
121738 l_event_class_code VARCHAR2(30);
121739 l_ae_header_id NUMBER;
121740 l_event_type_code VARCHAR2(30);
121741 l_line_definition_code VARCHAR2(30);
121742 l_line_definition_owner_code VARCHAR2(1);
121743 --
121744 -- adr variables
121745 l_segment VARCHAR2(30);
121746 l_ccid NUMBER;
121747 l_adr_transaction_coa_id NUMBER;
121748 l_adr_accounting_coa_id NUMBER;
121749 l_adr_flexfield_segment_code VARCHAR2(30);
121750 l_adr_flex_value_set_id NUMBER;
121751 l_adr_value_type_code VARCHAR2(30);
121752 l_adr_value_combination_id NUMBER;
121753 l_adr_value_segment_code VARCHAR2(30);
121754
121755 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
121756 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
121757 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
121758 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
121759
121760 -- 4262811 Variables ------------------------------------------------------------------------------------------
121761 l_entered_amt_idx NUMBER;
121762 l_accted_amt_idx NUMBER;
121763 l_acc_rev_flag VARCHAR2(1);
121764 l_accrual_line_num NUMBER;
121765 l_tmp_amt NUMBER;
121766 l_acc_rev_natural_side_code VARCHAR2(1);
121767
121768 l_num_entries NUMBER;
121769 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
121770 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
121771 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
121772 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
121773 l_recog_line_1 NUMBER;
121774 l_recog_line_2 NUMBER;
121775
121776 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
121777 l_bflow_applied_to_amt NUMBER; -- 5132302
121778 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
121779
121780 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
121781
121782 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
121783 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
121784
121785 ---------------------------------------------------------------------------------------------------------------
121786
121787
121788 --
121789 -- bulk performance
121790 --
121791 l_balance_type_code VARCHAR2(1);
121792 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
121793 l_log_module VARCHAR2(240);
121794
121795 --
121796 -- Upgrade strategy
121797 --
121798 l_actual_upg_option VARCHAR2(1);
121799 l_enc_upg_option VARCHAR2(1);
121800
121801 --
121802 BEGIN
121803 --
121804 IF g_log_enabled THEN
121805 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_221';
121806 END IF;
121807 --
121808 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
121809
121810 trace
121811 (p_msg => 'BEGIN of AcctLineType_221'
121812 ,p_level => C_LEVEL_PROCEDURE
121813 ,p_module => l_log_module);
121814
121815 END IF;
121816 --
121817 l_component_type := 'AMB_JLT';
121818 l_component_code := 'PURCHASE_PRICE_VARIANCE';
121819 l_component_type_code := 'S';
121820 l_component_appl_id := 707;
121821 l_amb_context_code := 'DEFAULT';
121822 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
121823 l_event_class_code := 'OSP';
121824 l_event_type_code := 'OSP_ALL';
121825 l_line_definition_owner_code := 'S';
121826 l_line_definition_code := 'OUTSIDE_PROCESSING';
121827 --
121828 l_balance_type_code := 'A';
121829 l_segment := NULL;
121830 l_ccid := NULL;
121831 l_adr_transaction_coa_id := NULL;
121832 l_adr_accounting_coa_id := NULL;
121833 l_adr_flexfield_segment_code := NULL;
121834 l_adr_flex_value_set_id := NULL;
121835 l_adr_value_type_code := NULL;
121836 l_adr_value_combination_id := NULL;
121837 l_adr_value_segment_code := NULL;
121838
121839 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
121840 l_bflow_class_code := ''; -- 4219869 Business Flow
121841 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
121842 l_budgetary_control_flag := 'N';
121843
121844 l_bflow_applied_to_amt_idx := NULL; -- 5132302
121845 l_bflow_applied_to_amt := NULL; -- 5132302
121846 l_entered_amt_idx := NULL; -- 4262811
121847 l_accted_amt_idx := NULL; -- 4262811
121848 l_acc_rev_flag := NULL; -- 4262811
121849 l_accrual_line_num := NULL; -- 4262811
121850 l_tmp_amt := NULL; -- 4262811
121851 --
121852
121853 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
121854 l_balance_type_code <> 'B' THEN
121855 IF NVL(p_source_24,9E125) = 6
121856 THEN
121857
121858 --
121859 XLA_AE_LINES_PKG.SetNewLine;
121860
121861 p_balance_type_code := l_balance_type_code;
121862 -- set the flag so later we will know whether the gain loss line needs to be created
121863
121864 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
121865 p_actual_flag :='A';
121866 END IF;
121867
121868 --
121869 -- bulk performance
121870 --
121871 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
121872 p_header_num => 0); -- 4262811
121873 --
121874 -- set accounting line options
121875 --
121876 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
121877 p_natural_side_code => 'D'
121878 , p_gain_or_loss_flag => 'N'
121879 , p_gl_transfer_mode_code => 'S'
121880 , p_acct_entry_type_code => 'A'
121881 , p_switch_side_flag => 'Y'
121882 , p_merge_duplicate_code => 'N'
121883 );
121884 --
121885 l_acc_rev_natural_side_code := 'C'; -- 4262811
121886 --
121887 --
121888 -- set accounting line type info
121889 --
121890 xla_ae_lines_pkg.SetAcctLineType
121891 (p_component_type => l_component_type
121892 ,p_event_type_code => l_event_type_code
121893 ,p_line_definition_owner_code => l_line_definition_owner_code
121894 ,p_line_definition_code => l_line_definition_code
121895 ,p_accounting_line_code => l_component_code
121896 ,p_accounting_line_type_code => l_component_type_code
121897 ,p_accounting_line_appl_id => l_component_appl_id
121898 ,p_amb_context_code => l_amb_context_code
121899 ,p_entity_code => l_entity_code
121900 ,p_event_class_code => l_event_class_code);
121901 --
121902 -- set accounting class
121903 --
121904 xla_ae_lines_pkg.SetAcctClass(
121905 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
121906 , p_ae_header_id => l_ae_header_id
121907 );
121908
121909 --
121910 -- set rounding class
121911 --
121912 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
121913 'PURCHASE_PRICE_VARIANCE';
121914
121915 --
121916 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
121917 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
121918 --
121919 -- bulk performance
121920 --
121921 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
121922
121923 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
121924 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
121925
121926 -- 4955764
121927 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
121928 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
121929
121930 -- 4458381 Public Sector Enh
121931
121932 --
121933 -- set accounting attributes for the line type
121934 --
121935 l_entered_amt_idx := 3;
121936 l_accted_amt_idx := 8;
121937 l_bflow_applied_to_amt_idx := NULL; -- 5132302
121938 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
121939 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
121940 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
121941 l_rec_acct_attrs.array_char_value(2) := p_source_12;
121942 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
121943 l_rec_acct_attrs.array_num_value(3) := p_source_18;
121944 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
121945 l_rec_acct_attrs.array_char_value(4) := p_source_15;
121946 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
121947 l_rec_acct_attrs.array_date_value(5) := p_source_19;
121948 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
121949 l_rec_acct_attrs.array_num_value(6) := p_source_20;
121950 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
121951 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
121952 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
121953 l_rec_acct_attrs.array_num_value(8) := p_source_22;
121954
121955 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
121956 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
121957
121958 ---------------------------------------------------------------------------------------------------------------
121959 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
121960 ---------------------------------------------------------------------------------------------------------------
121961 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
121962
121963 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121964 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
121965
121966 IF xla_accounting_cache_pkg.GetValueChar
121967 (p_source_code => 'LEDGER_CATEGORY_CODE'
121968 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
121969 AND l_bflow_method_code = 'PRIOR_ENTRY'
121970 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
121971 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
121972 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
121973 )
121974 THEN
121975 xla_ae_lines_pkg.BflowUpgEntry
121976 (p_business_method_code => l_bflow_method_code
121977 ,p_business_class_code => l_bflow_class_code
121978 ,p_balance_type => l_balance_type_code);
121979 ELSE
121980 NULL;
121981 -- No business flow processing for business flow method of NONE.
121982 END IF;
121983
121984 --
121985 -- call analytical criteria
121986 --
121987
121988 --
121989 -- call description
121990 --
121991 -- No description or it is inherited.
121992 --
121993 -- call ADRs
121994 -- Bug 4922099
121995 --
121996 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
121997 (NVL(l_actual_upg_option, 'N') = 'O') OR
121998 (NVL(l_enc_upg_option, 'N') = 'O')
121999 )
122000 THEN
122001 NULL;
122002 --
122003 --
122004
122005 l_ccid := AcctDerRule_4(
122006 p_application_id => p_application_id
122007 , p_ae_header_id => l_ae_header_id
122008 , p_source_4 => p_source_4
122009 , x_transaction_coa_id => l_adr_transaction_coa_id
122010 , x_accounting_coa_id => l_adr_accounting_coa_id
122011 , x_value_type_code => l_adr_value_type_code
122012 , p_side => 'NA'
122013 );
122014
122015 xla_ae_lines_pkg.set_ccid(
122016 p_code_combination_id => l_ccid
122017 , p_value_type_code => l_adr_value_type_code
122018 , p_transaction_coa_id => l_adr_transaction_coa_id
122019 , p_accounting_coa_id => l_adr_accounting_coa_id
122020 , p_adr_code => 'CST_DEFAULT'
122021 , p_adr_type_code => 'S'
122022 , p_component_type => l_component_type
122023 , p_component_code => l_component_code
122024 , p_component_type_code => l_component_type_code
122025 , p_component_appl_id => l_component_appl_id
122026 , p_amb_context_code => l_amb_context_code
122027 , p_side => 'NA'
122028 );
122029
122030
122031 --
122032 --
122033 END IF;
122034 --
122035 -- Bug 4922099
122036 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
122037 (NVL(l_enc_upg_option, 'N') = 'O')
122038 ) AND
122039 (l_bflow_method_code = 'PRIOR_ENTRY')
122040 )
122041 THEN
122042 IF
122043 --
122044 1 = 2
122045 --
122046 THEN
122047 xla_accounting_err_pkg.build_message
122048 (p_appli_s_name => 'XLA'
122049 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122050 ,p_token_1 => 'LINE_NUMBER'
122051 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
122052 ,p_token_2 => 'LINE_TYPE_NAME'
122053 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
122054 l_component_type
122055 ,l_component_code
122056 ,l_component_type_code
122057 ,l_component_appl_id
122058 ,l_amb_context_code
122059 ,l_entity_code
122060 ,l_event_class_code
122061 )
122062 ,p_token_3 => 'OWNER'
122063 ,p_value_3 => xla_lookups_pkg.get_meaning(
122064 p_lookup_type => 'XLA_OWNER_TYPE'
122065 ,p_lookup_code => l_component_type_code
122066 )
122067 ,p_token_4 => 'PRODUCT_NAME'
122068 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
122069 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
122070 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
122071 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
122072 ,p_ae_header_id => NULL
122073 );
122074
122075 IF (C_LEVEL_ERROR>= g_log_level) THEN
122076 trace
122077 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122078 ,p_level => C_LEVEL_ERROR
122079 ,p_module => l_log_module);
122080 END IF;
122081 END IF;
122082 END IF;
122083 --
122084 --
122085 ------------------------------------------------------------------------------------------------
122086 -- 4219869 Business Flow
122087 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
122088 -- Prior Entry. Currently, the following code is always generated.
122089 ------------------------------------------------------------------------------------------------
122090 XLA_AE_LINES_PKG.ValidateCurrentLine;
122091
122092 ------------------------------------------------------------------------------------
122093 -- 4219869 Business Flow
122094 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
122095 ------------------------------------------------------------------------------------
122096 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122097
122098 ----------------------------------------------------------------------------------
122099 -- 4219869 Business Flow
122100 -- Update journal entry status -- Need to generate this within IF <condition>
122101 ----------------------------------------------------------------------------------
122102 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122103 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
122104 ,p_balance_type_code => l_balance_type_code
122105 );
122106
122107 -------------------------------------------------------------------------------------------
122108 -- 4262811 - Generate the Accrual Reversal lines
122109 -------------------------------------------------------------------------------------------
122110 BEGIN
122111 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
122112 (g_array_event(p_event_id).array_value_num('header_index'));
122113 IF l_acc_rev_flag IS NULL THEN
122114 l_acc_rev_flag := 'N';
122115 END IF;
122116 EXCEPTION
122117 WHEN OTHERS THEN
122118 l_acc_rev_flag := 'N';
122119 END;
122120 --
122121 IF (l_acc_rev_flag = 'Y') THEN
122122
122123 -- 4645092 ------------------------------------------------------------------------------
122124 -- To allow MPA report to determine if it should generate report process
122125 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
122126 ------------------------------------------------------------------------------------------
122127
122128 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
122129 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
122130 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
122131 -- call ADRs
122132 -- Bug 4922099
122133 --
122134 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122135 (NVL(l_actual_upg_option, 'N') = 'O') OR
122136 (NVL(l_enc_upg_option, 'N') = 'O')
122137 )
122138 THEN
122139 NULL;
122140 --
122141 --
122142
122143 l_ccid := AcctDerRule_4(
122144 p_application_id => p_application_id
122145 , p_ae_header_id => l_ae_header_id
122146 , p_source_4 => p_source_4
122147 , x_transaction_coa_id => l_adr_transaction_coa_id
122148 , x_accounting_coa_id => l_adr_accounting_coa_id
122149 , x_value_type_code => l_adr_value_type_code
122150 , p_side => 'NA'
122151 );
122152
122153 xla_ae_lines_pkg.set_ccid(
122154 p_code_combination_id => l_ccid
122155 , p_value_type_code => l_adr_value_type_code
122156 , p_transaction_coa_id => l_adr_transaction_coa_id
122157 , p_accounting_coa_id => l_adr_accounting_coa_id
122158 , p_adr_code => 'CST_DEFAULT'
122159 , p_adr_type_code => 'S'
122160 , p_component_type => l_component_type
122161 , p_component_code => l_component_code
122162 , p_component_type_code => l_component_type_code
122163 , p_component_appl_id => l_component_appl_id
122164 , p_amb_context_code => l_amb_context_code
122165 , p_side => 'NA'
122166 );
122167
122168
122169 --
122170 --
122171 END IF;
122172
122173 --
122174 -- Update the line information that should be overwritten
122175 --
122176 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
122177 p_header_num => 1);
122178 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
122179
122180 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
122181
122182 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
122183 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
122184 END IF;
122185
122186 --
122187 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
122188 --
122189 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
122190 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
122191 ELSE
122192 ---------------------------------------------------------------------------------------------------
122193 -- 4262811a Switch Sign
122194 ---------------------------------------------------------------------------------------------------
122195 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
122196 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122197 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122198 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122199 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122200 -- 5132302
122201 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
122202 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122203
122204 END IF;
122205
122206 -- 4955764
122207 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122208 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
122209
122210
122211 XLA_AE_LINES_PKG.ValidateCurrentLine;
122212 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122213
122214 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122215 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
122216 ,p_balance_type_code => l_balance_type_code);
122217
122218 END IF;
122219
122220 -----------------------------------------------------------------------------------------
122221 -- 4262811 Multiperiod Accounting
122222 -----------------------------------------------------------------------------------------
122223 -- No MPA option is assigned.
122224
122225
122226 END IF;
122227 END IF;
122228 --
122229
122230 --
122231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122232 trace
122233 (p_msg => 'END of AcctLineType_221'
122234 ,p_level => C_LEVEL_PROCEDURE
122235 ,p_module => l_log_module);
122236 END IF;
122237 --
122238 EXCEPTION
122239 WHEN xla_exceptions_pkg.application_exception THEN
122240 RAISE;
122241 WHEN OTHERS THEN
122242 xla_exceptions_pkg.raise_message
122243 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_221');
122244 END AcctLineType_221;
122245 --
122246
122247 ---------------------------------------
122248 --
122249 -- PRIVATE FUNCTION
122250 -- AcctLineType_222
122251 --
122252 ---------------------------------------
122253 PROCEDURE AcctLineType_222 (
122254 p_application_id IN NUMBER
122255 ,p_event_id IN NUMBER
122256 ,p_calculate_acctd_flag IN VARCHAR2
122257 ,p_calculate_g_l_flag IN VARCHAR2
122258 ,p_actual_flag IN OUT VARCHAR2
122259 ,p_balance_type_code OUT VARCHAR2
122260 ,p_gain_or_loss_ref OUT VARCHAR2
122261
122262 --Cost Management Default Account
122263 , p_source_4 IN NUMBER
122264 --DISTRIBUTION_IDENTIFIER
122265 , p_source_11 IN NUMBER
122266 --Distribution Type
122267 , p_source_12 IN VARCHAR2
122268 , p_source_12_meaning IN VARCHAR2
122269 --Entered Currency Code
122270 , p_source_15 IN VARCHAR2
122271 --Entered Amount
122272 , p_source_18 IN NUMBER
122273 --Currency Conversion Date
122274 , p_source_19 IN DATE
122275 --Currency Conversion Rate
122276 , p_source_20 IN NUMBER
122277 --Currency Conversion Type
122278 , p_source_21 IN VARCHAR2
122279 --Accounted Amount
122280 , p_source_22 IN NUMBER
122281 --Accounting Line Type
122282 , p_source_24 IN NUMBER
122283 )
122284 IS
122285
122286 l_component_type VARCHAR2(80);
122287 l_component_code VARCHAR2(30);
122288 l_component_type_code VARCHAR2(1);
122289 l_component_appl_id INTEGER;
122290 l_amb_context_code VARCHAR2(30);
122291 l_entity_code VARCHAR2(30);
122292 l_event_class_code VARCHAR2(30);
122293 l_ae_header_id NUMBER;
122294 l_event_type_code VARCHAR2(30);
122295 l_line_definition_code VARCHAR2(30);
122296 l_line_definition_owner_code VARCHAR2(1);
122297 --
122298 -- adr variables
122299 l_segment VARCHAR2(30);
122300 l_ccid NUMBER;
122301 l_adr_transaction_coa_id NUMBER;
122302 l_adr_accounting_coa_id NUMBER;
122303 l_adr_flexfield_segment_code VARCHAR2(30);
122304 l_adr_flex_value_set_id NUMBER;
122305 l_adr_value_type_code VARCHAR2(30);
122306 l_adr_value_combination_id NUMBER;
122307 l_adr_value_segment_code VARCHAR2(30);
122308
122309 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
122310 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
122311 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
122312 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
122313
122314 -- 4262811 Variables ------------------------------------------------------------------------------------------
122315 l_entered_amt_idx NUMBER;
122316 l_accted_amt_idx NUMBER;
122317 l_acc_rev_flag VARCHAR2(1);
122318 l_accrual_line_num NUMBER;
122319 l_tmp_amt NUMBER;
122320 l_acc_rev_natural_side_code VARCHAR2(1);
122321
122322 l_num_entries NUMBER;
122323 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
122324 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
122325 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
122326 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
122327 l_recog_line_1 NUMBER;
122328 l_recog_line_2 NUMBER;
122329
122330 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
122331 l_bflow_applied_to_amt NUMBER; -- 5132302
122332 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
122333
122334 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
122335
122336 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
122337 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
122338
122339 ---------------------------------------------------------------------------------------------------------------
122340
122341
122342 --
122343 -- bulk performance
122344 --
122345 l_balance_type_code VARCHAR2(1);
122346 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
122347 l_log_module VARCHAR2(240);
122348
122349 --
122350 -- Upgrade strategy
122351 --
122352 l_actual_upg_option VARCHAR2(1);
122353 l_enc_upg_option VARCHAR2(1);
122354
122355 --
122356 BEGIN
122357 --
122358 IF g_log_enabled THEN
122359 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_222';
122360 END IF;
122361 --
122362 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122363
122364 trace
122365 (p_msg => 'BEGIN of AcctLineType_222'
122366 ,p_level => C_LEVEL_PROCEDURE
122367 ,p_module => l_log_module);
122368
122369 END IF;
122370 --
122371 l_component_type := 'AMB_JLT';
122372 l_component_code := 'PURCHASE_PRICE_VARIANCE';
122373 l_component_type_code := 'S';
122374 l_component_appl_id := 707;
122375 l_amb_context_code := 'DEFAULT';
122376 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
122377 l_event_class_code := 'USER_DEFINE';
122378 l_event_type_code := 'UDIR_INTERORG_RCPT';
122379 l_line_definition_owner_code := 'S';
122380 l_line_definition_code := 'USER_DIR_INTERORG_RCPT';
122381 --
122382 l_balance_type_code := 'A';
122383 l_segment := NULL;
122384 l_ccid := NULL;
122385 l_adr_transaction_coa_id := NULL;
122386 l_adr_accounting_coa_id := NULL;
122387 l_adr_flexfield_segment_code := NULL;
122388 l_adr_flex_value_set_id := NULL;
122389 l_adr_value_type_code := NULL;
122390 l_adr_value_combination_id := NULL;
122391 l_adr_value_segment_code := NULL;
122392
122393 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
122394 l_bflow_class_code := ''; -- 4219869 Business Flow
122395 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
122396 l_budgetary_control_flag := 'N';
122397
122398 l_bflow_applied_to_amt_idx := NULL; -- 5132302
122399 l_bflow_applied_to_amt := NULL; -- 5132302
122400 l_entered_amt_idx := NULL; -- 4262811
122401 l_accted_amt_idx := NULL; -- 4262811
122402 l_acc_rev_flag := NULL; -- 4262811
122403 l_accrual_line_num := NULL; -- 4262811
122404 l_tmp_amt := NULL; -- 4262811
122405 --
122406
122407 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
122408 l_balance_type_code <> 'B' THEN
122409 IF NVL(p_source_24,9E125) = 6
122410 THEN
122411
122412 --
122413 XLA_AE_LINES_PKG.SetNewLine;
122414
122415 p_balance_type_code := l_balance_type_code;
122416 -- set the flag so later we will know whether the gain loss line needs to be created
122417
122418 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
122419 p_actual_flag :='A';
122420 END IF;
122421
122422 --
122423 -- bulk performance
122424 --
122425 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
122426 p_header_num => 0); -- 4262811
122427 --
122428 -- set accounting line options
122429 --
122430 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
122431 p_natural_side_code => 'D'
122432 , p_gain_or_loss_flag => 'N'
122433 , p_gl_transfer_mode_code => 'S'
122434 , p_acct_entry_type_code => 'A'
122435 , p_switch_side_flag => 'Y'
122436 , p_merge_duplicate_code => 'N'
122437 );
122438 --
122439 l_acc_rev_natural_side_code := 'C'; -- 4262811
122440 --
122441 --
122442 -- set accounting line type info
122443 --
122444 xla_ae_lines_pkg.SetAcctLineType
122445 (p_component_type => l_component_type
122446 ,p_event_type_code => l_event_type_code
122447 ,p_line_definition_owner_code => l_line_definition_owner_code
122448 ,p_line_definition_code => l_line_definition_code
122449 ,p_accounting_line_code => l_component_code
122450 ,p_accounting_line_type_code => l_component_type_code
122451 ,p_accounting_line_appl_id => l_component_appl_id
122452 ,p_amb_context_code => l_amb_context_code
122453 ,p_entity_code => l_entity_code
122454 ,p_event_class_code => l_event_class_code);
122455 --
122456 -- set accounting class
122457 --
122458 xla_ae_lines_pkg.SetAcctClass(
122459 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
122460 , p_ae_header_id => l_ae_header_id
122461 );
122462
122463 --
122464 -- set rounding class
122465 --
122466 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
122467 'PURCHASE_PRICE_VARIANCE';
122468
122469 --
122470 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
122471 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
122472 --
122473 -- bulk performance
122474 --
122475 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
122476
122477 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
122478 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
122479
122480 -- 4955764
122481 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122482 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
122483
122484 -- 4458381 Public Sector Enh
122485
122486 --
122487 -- set accounting attributes for the line type
122488 --
122489 l_entered_amt_idx := 3;
122490 l_accted_amt_idx := 8;
122491 l_bflow_applied_to_amt_idx := NULL; -- 5132302
122492 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
122493 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
122494 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
122495 l_rec_acct_attrs.array_char_value(2) := p_source_12;
122496 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
122497 l_rec_acct_attrs.array_num_value(3) := p_source_18;
122498 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
122499 l_rec_acct_attrs.array_char_value(4) := p_source_15;
122500 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
122501 l_rec_acct_attrs.array_date_value(5) := p_source_19;
122502 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
122503 l_rec_acct_attrs.array_num_value(6) := p_source_20;
122504 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
122505 l_rec_acct_attrs.array_char_value(7) := p_source_21;
122506 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
122507 l_rec_acct_attrs.array_num_value(8) := p_source_22;
122508
122509 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
122510 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
122511
122512 ---------------------------------------------------------------------------------------------------------------
122513 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
122514 ---------------------------------------------------------------------------------------------------------------
122515 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
122516
122517 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122518 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
122519
122520 IF xla_accounting_cache_pkg.GetValueChar
122521 (p_source_code => 'LEDGER_CATEGORY_CODE'
122522 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
122523 AND l_bflow_method_code = 'PRIOR_ENTRY'
122524 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
122525 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
122526 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
122527 )
122528 THEN
122529 xla_ae_lines_pkg.BflowUpgEntry
122530 (p_business_method_code => l_bflow_method_code
122531 ,p_business_class_code => l_bflow_class_code
122532 ,p_balance_type => l_balance_type_code);
122533 ELSE
122534 NULL;
122535 -- No business flow processing for business flow method of NONE.
122536 END IF;
122537
122538 --
122539 -- call analytical criteria
122540 --
122541
122542 --
122543 -- call description
122544 --
122545 -- No description or it is inherited.
122546 --
122547 -- call ADRs
122548 -- Bug 4922099
122549 --
122550 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122551 (NVL(l_actual_upg_option, 'N') = 'O') OR
122552 (NVL(l_enc_upg_option, 'N') = 'O')
122553 )
122554 THEN
122555 NULL;
122556 --
122557 --
122558
122559 l_ccid := AcctDerRule_4(
122560 p_application_id => p_application_id
122561 , p_ae_header_id => l_ae_header_id
122562 , p_source_4 => p_source_4
122563 , x_transaction_coa_id => l_adr_transaction_coa_id
122564 , x_accounting_coa_id => l_adr_accounting_coa_id
122565 , x_value_type_code => l_adr_value_type_code
122566 , p_side => 'NA'
122567 );
122568
122569 xla_ae_lines_pkg.set_ccid(
122570 p_code_combination_id => l_ccid
122571 , p_value_type_code => l_adr_value_type_code
122572 , p_transaction_coa_id => l_adr_transaction_coa_id
122573 , p_accounting_coa_id => l_adr_accounting_coa_id
122574 , p_adr_code => 'CST_DEFAULT'
122575 , p_adr_type_code => 'S'
122576 , p_component_type => l_component_type
122577 , p_component_code => l_component_code
122578 , p_component_type_code => l_component_type_code
122579 , p_component_appl_id => l_component_appl_id
122580 , p_amb_context_code => l_amb_context_code
122581 , p_side => 'NA'
122582 );
122583
122584
122585 --
122586 --
122587 END IF;
122588 --
122589 -- Bug 4922099
122590 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
122591 (NVL(l_enc_upg_option, 'N') = 'O')
122592 ) AND
122593 (l_bflow_method_code = 'PRIOR_ENTRY')
122594 )
122595 THEN
122596 IF
122597 --
122598 1 = 2
122599 --
122600 THEN
122601 xla_accounting_err_pkg.build_message
122602 (p_appli_s_name => 'XLA'
122603 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122604 ,p_token_1 => 'LINE_NUMBER'
122605 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
122606 ,p_token_2 => 'LINE_TYPE_NAME'
122607 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
122608 l_component_type
122609 ,l_component_code
122610 ,l_component_type_code
122611 ,l_component_appl_id
122612 ,l_amb_context_code
122613 ,l_entity_code
122614 ,l_event_class_code
122615 )
122616 ,p_token_3 => 'OWNER'
122617 ,p_value_3 => xla_lookups_pkg.get_meaning(
122618 p_lookup_type => 'XLA_OWNER_TYPE'
122619 ,p_lookup_code => l_component_type_code
122620 )
122621 ,p_token_4 => 'PRODUCT_NAME'
122622 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
122623 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
122624 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
122625 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
122626 ,p_ae_header_id => NULL
122627 );
122628
122629 IF (C_LEVEL_ERROR>= g_log_level) THEN
122630 trace
122631 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
122632 ,p_level => C_LEVEL_ERROR
122633 ,p_module => l_log_module);
122634 END IF;
122635 END IF;
122636 END IF;
122637 --
122638 --
122639 ------------------------------------------------------------------------------------------------
122640 -- 4219869 Business Flow
122641 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
122642 -- Prior Entry. Currently, the following code is always generated.
122643 ------------------------------------------------------------------------------------------------
122644 XLA_AE_LINES_PKG.ValidateCurrentLine;
122645
122646 ------------------------------------------------------------------------------------
122647 -- 4219869 Business Flow
122648 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
122649 ------------------------------------------------------------------------------------
122650 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122651
122652 ----------------------------------------------------------------------------------
122653 -- 4219869 Business Flow
122654 -- Update journal entry status -- Need to generate this within IF <condition>
122655 ----------------------------------------------------------------------------------
122656 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122657 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
122658 ,p_balance_type_code => l_balance_type_code
122659 );
122660
122661 -------------------------------------------------------------------------------------------
122662 -- 4262811 - Generate the Accrual Reversal lines
122663 -------------------------------------------------------------------------------------------
122664 BEGIN
122665 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
122666 (g_array_event(p_event_id).array_value_num('header_index'));
122667 IF l_acc_rev_flag IS NULL THEN
122668 l_acc_rev_flag := 'N';
122669 END IF;
122670 EXCEPTION
122671 WHEN OTHERS THEN
122672 l_acc_rev_flag := 'N';
122673 END;
122674 --
122675 IF (l_acc_rev_flag = 'Y') THEN
122676
122677 -- 4645092 ------------------------------------------------------------------------------
122678 -- To allow MPA report to determine if it should generate report process
122679 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
122680 ------------------------------------------------------------------------------------------
122681
122682 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
122683 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
122684 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
122685 -- call ADRs
122686 -- Bug 4922099
122687 --
122688 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
122689 (NVL(l_actual_upg_option, 'N') = 'O') OR
122690 (NVL(l_enc_upg_option, 'N') = 'O')
122691 )
122692 THEN
122693 NULL;
122694 --
122695 --
122696
122697 l_ccid := AcctDerRule_4(
122698 p_application_id => p_application_id
122699 , p_ae_header_id => l_ae_header_id
122700 , p_source_4 => p_source_4
122701 , x_transaction_coa_id => l_adr_transaction_coa_id
122702 , x_accounting_coa_id => l_adr_accounting_coa_id
122703 , x_value_type_code => l_adr_value_type_code
122704 , p_side => 'NA'
122705 );
122706
122707 xla_ae_lines_pkg.set_ccid(
122708 p_code_combination_id => l_ccid
122709 , p_value_type_code => l_adr_value_type_code
122710 , p_transaction_coa_id => l_adr_transaction_coa_id
122711 , p_accounting_coa_id => l_adr_accounting_coa_id
122712 , p_adr_code => 'CST_DEFAULT'
122713 , p_adr_type_code => 'S'
122714 , p_component_type => l_component_type
122715 , p_component_code => l_component_code
122716 , p_component_type_code => l_component_type_code
122717 , p_component_appl_id => l_component_appl_id
122718 , p_amb_context_code => l_amb_context_code
122719 , p_side => 'NA'
122720 );
122721
122722
122723 --
122724 --
122725 END IF;
122726
122727 --
122728 -- Update the line information that should be overwritten
122729 --
122730 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
122731 p_header_num => 1);
122732 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
122733
122734 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
122735
122736 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
122737 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
122738 END IF;
122739
122740 --
122741 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
122742 --
122743 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
122744 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
122745 ELSE
122746 ---------------------------------------------------------------------------------------------------
122747 -- 4262811a Switch Sign
122748 ---------------------------------------------------------------------------------------------------
122749 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
122750 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122751 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122752 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
122753 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122754 -- 5132302
122755 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
122756 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
122757
122758 END IF;
122759
122760 -- 4955764
122761 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
122762 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
122763
122764
122765 XLA_AE_LINES_PKG.ValidateCurrentLine;
122766 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
122767
122768 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
122769 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
122770 ,p_balance_type_code => l_balance_type_code);
122771
122772 END IF;
122773
122774 -----------------------------------------------------------------------------------------
122775 -- 4262811 Multiperiod Accounting
122776 -----------------------------------------------------------------------------------------
122777 -- No MPA option is assigned.
122778
122779
122780 END IF;
122781 END IF;
122782 --
122783
122784 --
122785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122786 trace
122787 (p_msg => 'END of AcctLineType_222'
122788 ,p_level => C_LEVEL_PROCEDURE
122789 ,p_module => l_log_module);
122790 END IF;
122791 --
122792 EXCEPTION
122793 WHEN xla_exceptions_pkg.application_exception THEN
122794 RAISE;
122795 WHEN OTHERS THEN
122796 xla_exceptions_pkg.raise_message
122797 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_222');
122798 END AcctLineType_222;
122799 --
122800
122801 ---------------------------------------
122802 --
122803 -- PRIVATE FUNCTION
122804 -- AcctLineType_223
122805 --
122806 ---------------------------------------
122807 PROCEDURE AcctLineType_223 (
122808 p_application_id IN NUMBER
122809 ,p_event_id IN NUMBER
122810 ,p_calculate_acctd_flag IN VARCHAR2
122811 ,p_calculate_g_l_flag IN VARCHAR2
122812 ,p_actual_flag IN OUT VARCHAR2
122813 ,p_balance_type_code OUT VARCHAR2
122814 ,p_gain_or_loss_ref OUT VARCHAR2
122815
122816 --Cost Management Default Account
122817 , p_source_4 IN NUMBER
122818 --Applied to Application ID
122819 , p_source_6 IN NUMBER
122820 --Applied to Distribution Link Type
122821 , p_source_7 IN VARCHAR2
122822 --Applied to Entity Code
122823 , p_source_8 IN VARCHAR2
122824 --DISTRIBUTION_IDENTIFIER
122825 , p_source_11 IN NUMBER
122826 --Distribution Type
122827 , p_source_12 IN VARCHAR2
122828 , p_source_12_meaning IN VARCHAR2
122829 --Encumbrance Reversal Amount Entered
122830 , p_source_14 IN NUMBER
122831 --Entered Currency Code
122832 , p_source_15 IN VARCHAR2
122833 --Transaction Encumbrance Reversal Amount
122834 , p_source_16 IN NUMBER
122835 --Entered Amount
122836 , p_source_18 IN NUMBER
122837 --Currency Conversion Date
122838 , p_source_19 IN DATE
122839 --Currency Conversion Rate
122840 , p_source_20 IN NUMBER
122841 --Currency Conversion Type
122842 , p_source_21 IN VARCHAR2
122843 --Accounted Amount
122844 , p_source_22 IN NUMBER
122845 --Accounting Line Type
122846 , p_source_24 IN NUMBER
122847 --Costing Encumbrance Upgrade Option
122848 , p_source_27 IN VARCHAR2
122849 --TXN_PO_DISTRIBUTION_ID
122850 , p_source_28 IN NUMBER
122851 --TXN_PO_HEADER_ID
122852 , p_source_29 IN NUMBER
122853 --Requisition Budget Account
122854 , p_source_30 IN NUMBER
122855 --Requisition Encumbrance Type Identifier
122856 , p_source_31 IN NUMBER
122857 )
122858 IS
122859
122860 l_component_type VARCHAR2(80);
122861 l_component_code VARCHAR2(30);
122862 l_component_type_code VARCHAR2(1);
122863 l_component_appl_id INTEGER;
122864 l_amb_context_code VARCHAR2(30);
122865 l_entity_code VARCHAR2(30);
122866 l_event_class_code VARCHAR2(30);
122867 l_ae_header_id NUMBER;
122868 l_event_type_code VARCHAR2(30);
122869 l_line_definition_code VARCHAR2(30);
122870 l_line_definition_owner_code VARCHAR2(1);
122871 --
122872 -- adr variables
122873 l_segment VARCHAR2(30);
122874 l_ccid NUMBER;
122875 l_adr_transaction_coa_id NUMBER;
122876 l_adr_accounting_coa_id NUMBER;
122877 l_adr_flexfield_segment_code VARCHAR2(30);
122878 l_adr_flex_value_set_id NUMBER;
122879 l_adr_value_type_code VARCHAR2(30);
122880 l_adr_value_combination_id NUMBER;
122881 l_adr_value_segment_code VARCHAR2(30);
122882
122883 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
122884 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
122885 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
122886 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
122887
122888 -- 4262811 Variables ------------------------------------------------------------------------------------------
122889 l_entered_amt_idx NUMBER;
122890 l_accted_amt_idx NUMBER;
122891 l_acc_rev_flag VARCHAR2(1);
122892 l_accrual_line_num NUMBER;
122893 l_tmp_amt NUMBER;
122894 l_acc_rev_natural_side_code VARCHAR2(1);
122895
122896 l_num_entries NUMBER;
122897 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
122898 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
122899 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
122900 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
122901 l_recog_line_1 NUMBER;
122902 l_recog_line_2 NUMBER;
122903
122904 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
122905 l_bflow_applied_to_amt NUMBER; -- 5132302
122906 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
122907
122908 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
122909
122910 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
122911 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
122912
122913 ---------------------------------------------------------------------------------------------------------------
122914
122915
122916 --
122917 -- bulk performance
122918 --
122919 l_balance_type_code VARCHAR2(1);
122920 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
122921 l_log_module VARCHAR2(240);
122922
122923 --
122924 -- Upgrade strategy
122925 --
122926 l_actual_upg_option VARCHAR2(1);
122927 l_enc_upg_option VARCHAR2(1);
122928
122929 --
122930 BEGIN
122931 --
122932 IF g_log_enabled THEN
122933 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_223';
122934 END IF;
122935 --
122936 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
122937
122938 trace
122939 (p_msg => 'BEGIN of AcctLineType_223'
122940 ,p_level => C_LEVEL_PROCEDURE
122941 ,p_module => l_log_module);
122942
122943 END IF;
122944 --
122945 l_component_type := 'AMB_JLT';
122946 l_component_code := 'PURCHASE_PRICE_VARIANCE';
122947 l_component_type_code := 'S';
122948 l_component_appl_id := 707;
122949 l_amb_context_code := 'DEFAULT';
122950 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
122951 l_event_class_code := 'FOB_RCPT_RECIPIENT_RCPT';
122952 l_event_type_code := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
122953 l_line_definition_owner_code := 'S';
122954 l_line_definition_code := 'FOB_RCPT_RECIPIENT_RCPT';
122955 --
122956 l_balance_type_code := 'A';
122957 l_segment := NULL;
122958 l_ccid := NULL;
122959 l_adr_transaction_coa_id := NULL;
122960 l_adr_accounting_coa_id := NULL;
122961 l_adr_flexfield_segment_code := NULL;
122962 l_adr_flex_value_set_id := NULL;
122963 l_adr_value_type_code := NULL;
122964 l_adr_value_combination_id := NULL;
122965 l_adr_value_segment_code := NULL;
122966
122967 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
122968 l_bflow_class_code := ''; -- 4219869 Business Flow
122969 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
122970 l_budgetary_control_flag := 'N';
122971
122972 l_bflow_applied_to_amt_idx := NULL; -- 5132302
122973 l_bflow_applied_to_amt := NULL; -- 5132302
122974 l_entered_amt_idx := NULL; -- 4262811
122975 l_accted_amt_idx := NULL; -- 4262811
122976 l_acc_rev_flag := NULL; -- 4262811
122977 l_accrual_line_num := NULL; -- 4262811
122978 l_tmp_amt := NULL; -- 4262811
122979 --
122980
122981 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
122982 l_balance_type_code <> 'B' THEN
122983 IF NVL(p_source_24,9E125) = 6
122984 THEN
122985
122986 --
122987 XLA_AE_LINES_PKG.SetNewLine;
122988
122989 p_balance_type_code := l_balance_type_code;
122990 -- set the flag so later we will know whether the gain loss line needs to be created
122991
122992 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
122993 p_actual_flag :='A';
122994 END IF;
122995
122996 --
122997 -- bulk performance
122998 --
122999 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
123000 p_header_num => 0); -- 4262811
123001 --
123002 -- set accounting line options
123003 --
123004 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
123005 p_natural_side_code => 'D'
123006 , p_gain_or_loss_flag => 'N'
123007 , p_gl_transfer_mode_code => 'S'
123008 , p_acct_entry_type_code => 'A'
123009 , p_switch_side_flag => 'Y'
123010 , p_merge_duplicate_code => 'N'
123011 );
123012 --
123013 l_acc_rev_natural_side_code := 'C'; -- 4262811
123014 --
123015 --
123016 -- set accounting line type info
123017 --
123018 xla_ae_lines_pkg.SetAcctLineType
123019 (p_component_type => l_component_type
123020 ,p_event_type_code => l_event_type_code
123021 ,p_line_definition_owner_code => l_line_definition_owner_code
123022 ,p_line_definition_code => l_line_definition_code
123023 ,p_accounting_line_code => l_component_code
123024 ,p_accounting_line_type_code => l_component_type_code
123025 ,p_accounting_line_appl_id => l_component_appl_id
123026 ,p_amb_context_code => l_amb_context_code
123027 ,p_entity_code => l_entity_code
123028 ,p_event_class_code => l_event_class_code);
123029 --
123030 -- set accounting class
123031 --
123032 xla_ae_lines_pkg.SetAcctClass(
123033 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
123034 , p_ae_header_id => l_ae_header_id
123035 );
123036
123037 --
123038 -- set rounding class
123039 --
123040 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
123041 'PURCHASE_PRICE_VARIANCE';
123042
123043 --
123044 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
123045 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
123046 --
123047 -- bulk performance
123048 --
123049 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
123050
123051 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
123052 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
123053
123054 -- 4955764
123055 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123056 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
123057
123058 -- 4458381 Public Sector Enh
123059
123060 --
123061 -- set accounting attributes for the line type
123062 --
123063 l_entered_amt_idx := 17;
123064 l_accted_amt_idx := 22;
123065 l_bflow_applied_to_amt_idx := NULL; -- 5132302
123066 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
123067 l_rec_acct_attrs.array_num_value(1) := p_source_6;
123068 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
123069 l_rec_acct_attrs.array_char_value(2) := p_source_7;
123070 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
123071 l_rec_acct_attrs.array_char_value(3) := p_source_8;
123072 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
123073 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
123074 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
123075 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
123076 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
123077 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
123078 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
123079 l_rec_acct_attrs.array_char_value(7) := p_source_12;
123080 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
123081 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
123082 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
123083 l_rec_acct_attrs.array_num_value(9) := p_source_14;
123084 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
123085 l_rec_acct_attrs.array_char_value(10) := p_source_15;
123086 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
123087 l_rec_acct_attrs.array_num_value(11) := p_source_16;
123088 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
123089 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
123090 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
123091 l_rec_acct_attrs.array_num_value(13) := p_source_14;
123092 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
123093 l_rec_acct_attrs.array_char_value(14) := p_source_15;
123094 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
123095 l_rec_acct_attrs.array_num_value(15) := p_source_16;
123096 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
123097 l_rec_acct_attrs.array_char_value(16) := p_source_27;
123098 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
123099 l_rec_acct_attrs.array_num_value(17) := p_source_18;
123100 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
123101 l_rec_acct_attrs.array_char_value(18) := p_source_15;
123102 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
123103 l_rec_acct_attrs.array_date_value(19) := p_source_19;
123104 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
123105 l_rec_acct_attrs.array_num_value(20) := p_source_20;
123106 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
123107 l_rec_acct_attrs.array_char_value(21) := p_source_21;
123108 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
123109 l_rec_acct_attrs.array_num_value(22) := p_source_22;
123110 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
123111 l_rec_acct_attrs.array_num_value(23) := p_source_31;
123112 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
123113 l_rec_acct_attrs.array_num_value(24) := p_source_31;
123114
123115 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
123116 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
123117
123118 ---------------------------------------------------------------------------------------------------------------
123119 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
123120 ---------------------------------------------------------------------------------------------------------------
123121 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
123122
123123 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123124 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123125
123126 IF xla_accounting_cache_pkg.GetValueChar
123127 (p_source_code => 'LEDGER_CATEGORY_CODE'
123128 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
123129 AND l_bflow_method_code = 'PRIOR_ENTRY'
123130 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
123131 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
123132 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
123133 )
123134 THEN
123135 xla_ae_lines_pkg.BflowUpgEntry
123136 (p_business_method_code => l_bflow_method_code
123137 ,p_business_class_code => l_bflow_class_code
123138 ,p_balance_type => l_balance_type_code);
123139 ELSE
123140 NULL;
123141 -- No business flow processing for business flow method of NONE.
123142 END IF;
123143
123144 --
123145 -- call analytical criteria
123146 --
123147
123148 --
123149 -- call description
123150 --
123151 -- No description or it is inherited.
123152 --
123153 -- call ADRs
123154 -- Bug 4922099
123155 --
123156 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123157 (NVL(l_actual_upg_option, 'N') = 'O') OR
123158 (NVL(l_enc_upg_option, 'N') = 'O')
123159 )
123160 THEN
123161 NULL;
123162 --
123163 --
123164
123165 l_ccid := AcctDerRule_4(
123166 p_application_id => p_application_id
123167 , p_ae_header_id => l_ae_header_id
123168 , p_source_4 => p_source_4
123169 , x_transaction_coa_id => l_adr_transaction_coa_id
123170 , x_accounting_coa_id => l_adr_accounting_coa_id
123171 , x_value_type_code => l_adr_value_type_code
123172 , p_side => 'NA'
123173 );
123174
123175 xla_ae_lines_pkg.set_ccid(
123176 p_code_combination_id => l_ccid
123177 , p_value_type_code => l_adr_value_type_code
123178 , p_transaction_coa_id => l_adr_transaction_coa_id
123179 , p_accounting_coa_id => l_adr_accounting_coa_id
123180 , p_adr_code => 'CST_DEFAULT'
123181 , p_adr_type_code => 'S'
123182 , p_component_type => l_component_type
123183 , p_component_code => l_component_code
123184 , p_component_type_code => l_component_type_code
123185 , p_component_appl_id => l_component_appl_id
123186 , p_amb_context_code => l_amb_context_code
123187 , p_side => 'NA'
123188 );
123189
123190
123191 --
123192 --
123193 END IF;
123194 --
123195 -- Bug 4922099
123196 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
123197 (NVL(l_enc_upg_option, 'N') = 'O')
123198 ) AND
123199 (l_bflow_method_code = 'PRIOR_ENTRY')
123200 )
123201 THEN
123202 IF
123203 --
123204 1 = 2
123205 --
123206 THEN
123207 xla_accounting_err_pkg.build_message
123208 (p_appli_s_name => 'XLA'
123209 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123210 ,p_token_1 => 'LINE_NUMBER'
123211 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
123212 ,p_token_2 => 'LINE_TYPE_NAME'
123213 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
123214 l_component_type
123215 ,l_component_code
123216 ,l_component_type_code
123217 ,l_component_appl_id
123218 ,l_amb_context_code
123219 ,l_entity_code
123220 ,l_event_class_code
123221 )
123222 ,p_token_3 => 'OWNER'
123223 ,p_value_3 => xla_lookups_pkg.get_meaning(
123224 p_lookup_type => 'XLA_OWNER_TYPE'
123225 ,p_lookup_code => l_component_type_code
123226 )
123227 ,p_token_4 => 'PRODUCT_NAME'
123228 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
123229 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
123230 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
123231 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
123232 ,p_ae_header_id => NULL
123233 );
123234
123235 IF (C_LEVEL_ERROR>= g_log_level) THEN
123236 trace
123237 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123238 ,p_level => C_LEVEL_ERROR
123239 ,p_module => l_log_module);
123240 END IF;
123241 END IF;
123242 END IF;
123243 --
123244 --
123245 ------------------------------------------------------------------------------------------------
123246 -- 4219869 Business Flow
123247 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
123248 -- Prior Entry. Currently, the following code is always generated.
123249 ------------------------------------------------------------------------------------------------
123250 XLA_AE_LINES_PKG.ValidateCurrentLine;
123251
123252 ------------------------------------------------------------------------------------
123253 -- 4219869 Business Flow
123254 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
123255 ------------------------------------------------------------------------------------
123256 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123257
123258 ----------------------------------------------------------------------------------
123259 -- 4219869 Business Flow
123260 -- Update journal entry status -- Need to generate this within IF <condition>
123261 ----------------------------------------------------------------------------------
123262 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123263 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
123264 ,p_balance_type_code => l_balance_type_code
123265 );
123266
123267 -------------------------------------------------------------------------------------------
123268 -- 4262811 - Generate the Accrual Reversal lines
123269 -------------------------------------------------------------------------------------------
123270 BEGIN
123271 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
123272 (g_array_event(p_event_id).array_value_num('header_index'));
123273 IF l_acc_rev_flag IS NULL THEN
123274 l_acc_rev_flag := 'N';
123275 END IF;
123276 EXCEPTION
123277 WHEN OTHERS THEN
123278 l_acc_rev_flag := 'N';
123279 END;
123280 --
123281 IF (l_acc_rev_flag = 'Y') THEN
123282
123283 -- 4645092 ------------------------------------------------------------------------------
123284 -- To allow MPA report to determine if it should generate report process
123285 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
123286 ------------------------------------------------------------------------------------------
123287
123288 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
123289 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
123290 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
123291 -- call ADRs
123292 -- Bug 4922099
123293 --
123294 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123295 (NVL(l_actual_upg_option, 'N') = 'O') OR
123296 (NVL(l_enc_upg_option, 'N') = 'O')
123297 )
123298 THEN
123299 NULL;
123300 --
123301 --
123302
123303 l_ccid := AcctDerRule_4(
123304 p_application_id => p_application_id
123305 , p_ae_header_id => l_ae_header_id
123306 , p_source_4 => p_source_4
123307 , x_transaction_coa_id => l_adr_transaction_coa_id
123308 , x_accounting_coa_id => l_adr_accounting_coa_id
123309 , x_value_type_code => l_adr_value_type_code
123310 , p_side => 'NA'
123311 );
123312
123313 xla_ae_lines_pkg.set_ccid(
123314 p_code_combination_id => l_ccid
123315 , p_value_type_code => l_adr_value_type_code
123316 , p_transaction_coa_id => l_adr_transaction_coa_id
123317 , p_accounting_coa_id => l_adr_accounting_coa_id
123318 , p_adr_code => 'CST_DEFAULT'
123319 , p_adr_type_code => 'S'
123320 , p_component_type => l_component_type
123321 , p_component_code => l_component_code
123322 , p_component_type_code => l_component_type_code
123323 , p_component_appl_id => l_component_appl_id
123324 , p_amb_context_code => l_amb_context_code
123325 , p_side => 'NA'
123326 );
123327
123328
123329 --
123330 --
123331 END IF;
123332
123333 --
123334 -- Update the line information that should be overwritten
123335 --
123336 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
123337 p_header_num => 1);
123338 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
123339
123340 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
123341
123342 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
123343 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
123344 END IF;
123345
123346 --
123347 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
123348 --
123349 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
123350 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
123351 ELSE
123352 ---------------------------------------------------------------------------------------------------
123353 -- 4262811a Switch Sign
123354 ---------------------------------------------------------------------------------------------------
123355 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
123356 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123357 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123358 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123359 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123360 -- 5132302
123361 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
123362 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123363
123364 END IF;
123365
123366 -- 4955764
123367 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123368 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
123369
123370
123371 XLA_AE_LINES_PKG.ValidateCurrentLine;
123372 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123373
123374 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123375 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
123376 ,p_balance_type_code => l_balance_type_code);
123377
123378 END IF;
123379
123380 -----------------------------------------------------------------------------------------
123381 -- 4262811 Multiperiod Accounting
123382 -----------------------------------------------------------------------------------------
123383 -- No MPA option is assigned.
123384
123385
123386 END IF;
123387 END IF;
123388 --
123389
123390 --
123391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123392 trace
123393 (p_msg => 'END of AcctLineType_223'
123394 ,p_level => C_LEVEL_PROCEDURE
123395 ,p_module => l_log_module);
123396 END IF;
123397 --
123398 EXCEPTION
123399 WHEN xla_exceptions_pkg.application_exception THEN
123400 RAISE;
123401 WHEN OTHERS THEN
123402 xla_exceptions_pkg.raise_message
123403 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_223');
123404 END AcctLineType_223;
123405 --
123406
123407 ---------------------------------------
123408 --
123409 -- PRIVATE FUNCTION
123410 -- AcctLineType_224
123411 --
123412 ---------------------------------------
123413 PROCEDURE AcctLineType_224 (
123414 p_application_id IN NUMBER
123415 ,p_event_id IN NUMBER
123416 ,p_calculate_acctd_flag IN VARCHAR2
123417 ,p_calculate_g_l_flag IN VARCHAR2
123418 ,p_actual_flag IN OUT VARCHAR2
123419 ,p_balance_type_code OUT VARCHAR2
123420 ,p_gain_or_loss_ref OUT VARCHAR2
123421
123422 --Cost Management Default Account
123423 , p_source_4 IN NUMBER
123424 --DISTRIBUTION_IDENTIFIER
123425 , p_source_11 IN NUMBER
123426 --Distribution Type
123427 , p_source_12 IN VARCHAR2
123428 , p_source_12_meaning IN VARCHAR2
123429 --Entered Currency Code
123430 , p_source_15 IN VARCHAR2
123431 --Entered Amount
123432 , p_source_18 IN NUMBER
123433 --Currency Conversion Date
123434 , p_source_19 IN DATE
123435 --Currency Conversion Rate
123436 , p_source_20 IN NUMBER
123437 --Currency Conversion Type
123438 , p_source_21 IN VARCHAR2
123439 --Accounted Amount
123440 , p_source_22 IN NUMBER
123441 --Accounting Line Type
123442 , p_source_24 IN NUMBER
123443 )
123444 IS
123445
123446 l_component_type VARCHAR2(80);
123447 l_component_code VARCHAR2(30);
123448 l_component_type_code VARCHAR2(1);
123449 l_component_appl_id INTEGER;
123450 l_amb_context_code VARCHAR2(30);
123451 l_entity_code VARCHAR2(30);
123452 l_event_class_code VARCHAR2(30);
123453 l_ae_header_id NUMBER;
123454 l_event_type_code VARCHAR2(30);
123455 l_line_definition_code VARCHAR2(30);
123456 l_line_definition_owner_code VARCHAR2(1);
123457 --
123458 -- adr variables
123459 l_segment VARCHAR2(30);
123460 l_ccid NUMBER;
123461 l_adr_transaction_coa_id NUMBER;
123462 l_adr_accounting_coa_id NUMBER;
123463 l_adr_flexfield_segment_code VARCHAR2(30);
123464 l_adr_flex_value_set_id NUMBER;
123465 l_adr_value_type_code VARCHAR2(30);
123466 l_adr_value_combination_id NUMBER;
123467 l_adr_value_segment_code VARCHAR2(30);
123468
123469 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
123470 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
123471 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
123472 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
123473
123474 -- 4262811 Variables ------------------------------------------------------------------------------------------
123475 l_entered_amt_idx NUMBER;
123476 l_accted_amt_idx NUMBER;
123477 l_acc_rev_flag VARCHAR2(1);
123478 l_accrual_line_num NUMBER;
123479 l_tmp_amt NUMBER;
123480 l_acc_rev_natural_side_code VARCHAR2(1);
123481
123482 l_num_entries NUMBER;
123483 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
123484 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
123485 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
123486 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
123487 l_recog_line_1 NUMBER;
123488 l_recog_line_2 NUMBER;
123489
123490 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
123491 l_bflow_applied_to_amt NUMBER; -- 5132302
123492 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
123493
123494 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
123495
123496 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
123497 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
123498
123499 ---------------------------------------------------------------------------------------------------------------
123500
123501
123502 --
123503 -- bulk performance
123504 --
123505 l_balance_type_code VARCHAR2(1);
123506 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
123507 l_log_module VARCHAR2(240);
123508
123509 --
123510 -- Upgrade strategy
123511 --
123512 l_actual_upg_option VARCHAR2(1);
123513 l_enc_upg_option VARCHAR2(1);
123514
123515 --
123516 BEGIN
123517 --
123518 IF g_log_enabled THEN
123519 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_224';
123520 END IF;
123521 --
123522 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123523
123524 trace
123525 (p_msg => 'BEGIN of AcctLineType_224'
123526 ,p_level => C_LEVEL_PROCEDURE
123527 ,p_module => l_log_module);
123528
123529 END IF;
123530 --
123531 l_component_type := 'AMB_JLT';
123532 l_component_code := 'PURCHASE_PRICE_VARIANCE';
123533 l_component_type_code := 'S';
123534 l_component_appl_id := 707;
123535 l_amb_context_code := 'DEFAULT';
123536 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
123537 l_event_class_code := 'USER_DEFINE';
123538 l_event_type_code := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
123539 l_line_definition_owner_code := 'S';
123540 l_line_definition_code := 'USER_FOB_SHIP_RECP_SHIP_NO_TP';
123541 --
123542 l_balance_type_code := 'A';
123543 l_segment := NULL;
123544 l_ccid := NULL;
123545 l_adr_transaction_coa_id := NULL;
123546 l_adr_accounting_coa_id := NULL;
123547 l_adr_flexfield_segment_code := NULL;
123548 l_adr_flex_value_set_id := NULL;
123549 l_adr_value_type_code := NULL;
123550 l_adr_value_combination_id := NULL;
123551 l_adr_value_segment_code := NULL;
123552
123553 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
123554 l_bflow_class_code := ''; -- 4219869 Business Flow
123555 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
123556 l_budgetary_control_flag := 'N';
123557
123558 l_bflow_applied_to_amt_idx := NULL; -- 5132302
123559 l_bflow_applied_to_amt := NULL; -- 5132302
123560 l_entered_amt_idx := NULL; -- 4262811
123561 l_accted_amt_idx := NULL; -- 4262811
123562 l_acc_rev_flag := NULL; -- 4262811
123563 l_accrual_line_num := NULL; -- 4262811
123564 l_tmp_amt := NULL; -- 4262811
123565 --
123566
123567 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
123568 l_balance_type_code <> 'B' THEN
123569 IF NVL(p_source_24,9E125) = 6
123570 THEN
123571
123572 --
123573 XLA_AE_LINES_PKG.SetNewLine;
123574
123575 p_balance_type_code := l_balance_type_code;
123576 -- set the flag so later we will know whether the gain loss line needs to be created
123577
123578 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
123579 p_actual_flag :='A';
123580 END IF;
123581
123582 --
123583 -- bulk performance
123584 --
123585 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
123586 p_header_num => 0); -- 4262811
123587 --
123588 -- set accounting line options
123589 --
123590 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
123591 p_natural_side_code => 'D'
123592 , p_gain_or_loss_flag => 'N'
123593 , p_gl_transfer_mode_code => 'S'
123594 , p_acct_entry_type_code => 'A'
123595 , p_switch_side_flag => 'Y'
123596 , p_merge_duplicate_code => 'N'
123597 );
123598 --
123599 l_acc_rev_natural_side_code := 'C'; -- 4262811
123600 --
123601 --
123602 -- set accounting line type info
123603 --
123604 xla_ae_lines_pkg.SetAcctLineType
123605 (p_component_type => l_component_type
123606 ,p_event_type_code => l_event_type_code
123607 ,p_line_definition_owner_code => l_line_definition_owner_code
123608 ,p_line_definition_code => l_line_definition_code
123609 ,p_accounting_line_code => l_component_code
123610 ,p_accounting_line_type_code => l_component_type_code
123611 ,p_accounting_line_appl_id => l_component_appl_id
123612 ,p_amb_context_code => l_amb_context_code
123613 ,p_entity_code => l_entity_code
123614 ,p_event_class_code => l_event_class_code);
123615 --
123616 -- set accounting class
123617 --
123618 xla_ae_lines_pkg.SetAcctClass(
123619 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
123620 , p_ae_header_id => l_ae_header_id
123621 );
123622
123623 --
123624 -- set rounding class
123625 --
123626 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
123627 'PURCHASE_PRICE_VARIANCE';
123628
123629 --
123630 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
123631 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
123632 --
123633 -- bulk performance
123634 --
123635 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
123636
123637 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
123638 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
123639
123640 -- 4955764
123641 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123642 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
123643
123644 -- 4458381 Public Sector Enh
123645
123646 --
123647 -- set accounting attributes for the line type
123648 --
123649 l_entered_amt_idx := 3;
123650 l_accted_amt_idx := 8;
123651 l_bflow_applied_to_amt_idx := NULL; -- 5132302
123652 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
123653 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
123654 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
123655 l_rec_acct_attrs.array_char_value(2) := p_source_12;
123656 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
123657 l_rec_acct_attrs.array_num_value(3) := p_source_18;
123658 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
123659 l_rec_acct_attrs.array_char_value(4) := p_source_15;
123660 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
123661 l_rec_acct_attrs.array_date_value(5) := p_source_19;
123662 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
123663 l_rec_acct_attrs.array_num_value(6) := p_source_20;
123664 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
123665 l_rec_acct_attrs.array_char_value(7) := p_source_21;
123666 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
123667 l_rec_acct_attrs.array_num_value(8) := p_source_22;
123668
123669 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
123670 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
123671
123672 ---------------------------------------------------------------------------------------------------------------
123673 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
123674 ---------------------------------------------------------------------------------------------------------------
123675 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
123676
123677 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123678 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
123679
123680 IF xla_accounting_cache_pkg.GetValueChar
123681 (p_source_code => 'LEDGER_CATEGORY_CODE'
123682 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
123683 AND l_bflow_method_code = 'PRIOR_ENTRY'
123684 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
123685 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
123686 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
123687 )
123688 THEN
123689 xla_ae_lines_pkg.BflowUpgEntry
123690 (p_business_method_code => l_bflow_method_code
123691 ,p_business_class_code => l_bflow_class_code
123692 ,p_balance_type => l_balance_type_code);
123693 ELSE
123694 NULL;
123695 -- No business flow processing for business flow method of NONE.
123696 END IF;
123697
123698 --
123699 -- call analytical criteria
123700 --
123701
123702 --
123703 -- call description
123704 --
123705 -- No description or it is inherited.
123706 --
123707 -- call ADRs
123708 -- Bug 4922099
123709 --
123710 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123711 (NVL(l_actual_upg_option, 'N') = 'O') OR
123712 (NVL(l_enc_upg_option, 'N') = 'O')
123713 )
123714 THEN
123715 NULL;
123716 --
123717 --
123718
123719 l_ccid := AcctDerRule_4(
123720 p_application_id => p_application_id
123721 , p_ae_header_id => l_ae_header_id
123722 , p_source_4 => p_source_4
123723 , x_transaction_coa_id => l_adr_transaction_coa_id
123724 , x_accounting_coa_id => l_adr_accounting_coa_id
123725 , x_value_type_code => l_adr_value_type_code
123726 , p_side => 'NA'
123727 );
123728
123729 xla_ae_lines_pkg.set_ccid(
123730 p_code_combination_id => l_ccid
123731 , p_value_type_code => l_adr_value_type_code
123732 , p_transaction_coa_id => l_adr_transaction_coa_id
123733 , p_accounting_coa_id => l_adr_accounting_coa_id
123734 , p_adr_code => 'CST_DEFAULT'
123735 , p_adr_type_code => 'S'
123736 , p_component_type => l_component_type
123737 , p_component_code => l_component_code
123738 , p_component_type_code => l_component_type_code
123739 , p_component_appl_id => l_component_appl_id
123740 , p_amb_context_code => l_amb_context_code
123741 , p_side => 'NA'
123742 );
123743
123744
123745 --
123746 --
123747 END IF;
123748 --
123749 -- Bug 4922099
123750 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
123751 (NVL(l_enc_upg_option, 'N') = 'O')
123752 ) AND
123753 (l_bflow_method_code = 'PRIOR_ENTRY')
123754 )
123755 THEN
123756 IF
123757 --
123758 1 = 2
123759 --
123760 THEN
123761 xla_accounting_err_pkg.build_message
123762 (p_appli_s_name => 'XLA'
123763 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123764 ,p_token_1 => 'LINE_NUMBER'
123765 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
123766 ,p_token_2 => 'LINE_TYPE_NAME'
123767 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
123768 l_component_type
123769 ,l_component_code
123770 ,l_component_type_code
123771 ,l_component_appl_id
123772 ,l_amb_context_code
123773 ,l_entity_code
123774 ,l_event_class_code
123775 )
123776 ,p_token_3 => 'OWNER'
123777 ,p_value_3 => xla_lookups_pkg.get_meaning(
123778 p_lookup_type => 'XLA_OWNER_TYPE'
123779 ,p_lookup_code => l_component_type_code
123780 )
123781 ,p_token_4 => 'PRODUCT_NAME'
123782 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
123783 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
123784 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
123785 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
123786 ,p_ae_header_id => NULL
123787 );
123788
123789 IF (C_LEVEL_ERROR>= g_log_level) THEN
123790 trace
123791 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
123792 ,p_level => C_LEVEL_ERROR
123793 ,p_module => l_log_module);
123794 END IF;
123795 END IF;
123796 END IF;
123797 --
123798 --
123799 ------------------------------------------------------------------------------------------------
123800 -- 4219869 Business Flow
123801 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
123802 -- Prior Entry. Currently, the following code is always generated.
123803 ------------------------------------------------------------------------------------------------
123804 XLA_AE_LINES_PKG.ValidateCurrentLine;
123805
123806 ------------------------------------------------------------------------------------
123807 -- 4219869 Business Flow
123808 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
123809 ------------------------------------------------------------------------------------
123810 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123811
123812 ----------------------------------------------------------------------------------
123813 -- 4219869 Business Flow
123814 -- Update journal entry status -- Need to generate this within IF <condition>
123815 ----------------------------------------------------------------------------------
123816 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123817 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
123818 ,p_balance_type_code => l_balance_type_code
123819 );
123820
123821 -------------------------------------------------------------------------------------------
123822 -- 4262811 - Generate the Accrual Reversal lines
123823 -------------------------------------------------------------------------------------------
123824 BEGIN
123825 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
123826 (g_array_event(p_event_id).array_value_num('header_index'));
123827 IF l_acc_rev_flag IS NULL THEN
123828 l_acc_rev_flag := 'N';
123829 END IF;
123830 EXCEPTION
123831 WHEN OTHERS THEN
123832 l_acc_rev_flag := 'N';
123833 END;
123834 --
123835 IF (l_acc_rev_flag = 'Y') THEN
123836
123837 -- 4645092 ------------------------------------------------------------------------------
123838 -- To allow MPA report to determine if it should generate report process
123839 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
123840 ------------------------------------------------------------------------------------------
123841
123842 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
123843 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
123844 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
123845 -- call ADRs
123846 -- Bug 4922099
123847 --
123848 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
123849 (NVL(l_actual_upg_option, 'N') = 'O') OR
123850 (NVL(l_enc_upg_option, 'N') = 'O')
123851 )
123852 THEN
123853 NULL;
123854 --
123855 --
123856
123857 l_ccid := AcctDerRule_4(
123858 p_application_id => p_application_id
123859 , p_ae_header_id => l_ae_header_id
123860 , p_source_4 => p_source_4
123861 , x_transaction_coa_id => l_adr_transaction_coa_id
123862 , x_accounting_coa_id => l_adr_accounting_coa_id
123863 , x_value_type_code => l_adr_value_type_code
123864 , p_side => 'NA'
123865 );
123866
123867 xla_ae_lines_pkg.set_ccid(
123868 p_code_combination_id => l_ccid
123869 , p_value_type_code => l_adr_value_type_code
123870 , p_transaction_coa_id => l_adr_transaction_coa_id
123871 , p_accounting_coa_id => l_adr_accounting_coa_id
123872 , p_adr_code => 'CST_DEFAULT'
123873 , p_adr_type_code => 'S'
123874 , p_component_type => l_component_type
123875 , p_component_code => l_component_code
123876 , p_component_type_code => l_component_type_code
123877 , p_component_appl_id => l_component_appl_id
123878 , p_amb_context_code => l_amb_context_code
123879 , p_side => 'NA'
123880 );
123881
123882
123883 --
123884 --
123885 END IF;
123886
123887 --
123888 -- Update the line information that should be overwritten
123889 --
123890 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
123891 p_header_num => 1);
123892 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
123893
123894 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
123895
123896 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
123897 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
123898 END IF;
123899
123900 --
123901 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
123902 --
123903 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
123904 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
123905 ELSE
123906 ---------------------------------------------------------------------------------------------------
123907 -- 4262811a Switch Sign
123908 ---------------------------------------------------------------------------------------------------
123909 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
123910 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123911 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123912 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
123913 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123914 -- 5132302
123915 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
123916 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
123917
123918 END IF;
123919
123920 -- 4955764
123921 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
123922 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
123923
123924
123925 XLA_AE_LINES_PKG.ValidateCurrentLine;
123926 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
123927
123928 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
123929 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
123930 ,p_balance_type_code => l_balance_type_code);
123931
123932 END IF;
123933
123934 -----------------------------------------------------------------------------------------
123935 -- 4262811 Multiperiod Accounting
123936 -----------------------------------------------------------------------------------------
123937 -- No MPA option is assigned.
123938
123939
123940 END IF;
123941 END IF;
123942 --
123943
123944 --
123945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
123946 trace
123947 (p_msg => 'END of AcctLineType_224'
123948 ,p_level => C_LEVEL_PROCEDURE
123949 ,p_module => l_log_module);
123950 END IF;
123951 --
123952 EXCEPTION
123953 WHEN xla_exceptions_pkg.application_exception THEN
123954 RAISE;
123955 WHEN OTHERS THEN
123956 xla_exceptions_pkg.raise_message
123957 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_224');
123958 END AcctLineType_224;
123959 --
123960
123961 ---------------------------------------
123962 --
123963 -- PRIVATE FUNCTION
123964 -- AcctLineType_225
123965 --
123966 ---------------------------------------
123967 PROCEDURE AcctLineType_225 (
123968 p_application_id IN NUMBER
123969 ,p_event_id IN NUMBER
123970 ,p_calculate_acctd_flag IN VARCHAR2
123971 ,p_calculate_g_l_flag IN VARCHAR2
123972 ,p_actual_flag IN OUT VARCHAR2
123973 ,p_balance_type_code OUT VARCHAR2
123974 ,p_gain_or_loss_ref OUT VARCHAR2
123975
123976 --Cost Management Default Account
123977 , p_source_4 IN NUMBER
123978 --DISTRIBUTION_IDENTIFIER
123979 , p_source_11 IN NUMBER
123980 --Distribution Type
123981 , p_source_12 IN VARCHAR2
123982 , p_source_12_meaning IN VARCHAR2
123983 --Entered Currency Code
123984 , p_source_15 IN VARCHAR2
123985 --Entered Amount
123986 , p_source_18 IN NUMBER
123987 --Currency Conversion Date
123988 , p_source_19 IN DATE
123989 --Currency Conversion Rate
123990 , p_source_20 IN NUMBER
123991 --Currency Conversion Type
123992 , p_source_21 IN VARCHAR2
123993 --Accounted Amount
123994 , p_source_22 IN NUMBER
123995 --Accounting Line Type
123996 , p_source_24 IN NUMBER
123997 )
123998 IS
123999
124000 l_component_type VARCHAR2(80);
124001 l_component_code VARCHAR2(30);
124002 l_component_type_code VARCHAR2(1);
124003 l_component_appl_id INTEGER;
124004 l_amb_context_code VARCHAR2(30);
124005 l_entity_code VARCHAR2(30);
124006 l_event_class_code VARCHAR2(30);
124007 l_ae_header_id NUMBER;
124008 l_event_type_code VARCHAR2(30);
124009 l_line_definition_code VARCHAR2(30);
124010 l_line_definition_owner_code VARCHAR2(1);
124011 --
124012 -- adr variables
124013 l_segment VARCHAR2(30);
124014 l_ccid NUMBER;
124015 l_adr_transaction_coa_id NUMBER;
124016 l_adr_accounting_coa_id NUMBER;
124017 l_adr_flexfield_segment_code VARCHAR2(30);
124018 l_adr_flex_value_set_id NUMBER;
124019 l_adr_value_type_code VARCHAR2(30);
124020 l_adr_value_combination_id NUMBER;
124021 l_adr_value_segment_code VARCHAR2(30);
124022
124023 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
124024 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
124025 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
124026 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
124027
124028 -- 4262811 Variables ------------------------------------------------------------------------------------------
124029 l_entered_amt_idx NUMBER;
124030 l_accted_amt_idx NUMBER;
124031 l_acc_rev_flag VARCHAR2(1);
124032 l_accrual_line_num NUMBER;
124033 l_tmp_amt NUMBER;
124034 l_acc_rev_natural_side_code VARCHAR2(1);
124035
124036 l_num_entries NUMBER;
124037 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
124038 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
124039 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
124040 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
124041 l_recog_line_1 NUMBER;
124042 l_recog_line_2 NUMBER;
124043
124044 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
124045 l_bflow_applied_to_amt NUMBER; -- 5132302
124046 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
124047
124048 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
124049
124050 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
124051 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
124052
124053 ---------------------------------------------------------------------------------------------------------------
124054
124055
124056 --
124057 -- bulk performance
124058 --
124059 l_balance_type_code VARCHAR2(1);
124060 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
124061 l_log_module VARCHAR2(240);
124062
124063 --
124064 -- Upgrade strategy
124065 --
124066 l_actual_upg_option VARCHAR2(1);
124067 l_enc_upg_option VARCHAR2(1);
124068
124069 --
124070 BEGIN
124071 --
124072 IF g_log_enabled THEN
124073 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_225';
124074 END IF;
124075 --
124076 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124077
124078 trace
124079 (p_msg => 'BEGIN of AcctLineType_225'
124080 ,p_level => C_LEVEL_PROCEDURE
124081 ,p_module => l_log_module);
124082
124083 END IF;
124084 --
124085 l_component_type := 'AMB_JLT';
124086 l_component_code := 'PURCHASE_PRICE_VARIANCE';
124087 l_component_type_code := 'S';
124088 l_component_appl_id := 707;
124089 l_amb_context_code := 'DEFAULT';
124090 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
124091 l_event_class_code := 'DIR_INTERORG_SHIP';
124092 l_event_type_code := 'DIR_INTERORG_SHIP_ALL';
124093 l_line_definition_owner_code := 'S';
124094 l_line_definition_code := 'DIRECT_INTERORG_SHIP';
124095 --
124096 l_balance_type_code := 'A';
124097 l_segment := NULL;
124098 l_ccid := NULL;
124099 l_adr_transaction_coa_id := NULL;
124100 l_adr_accounting_coa_id := NULL;
124101 l_adr_flexfield_segment_code := NULL;
124102 l_adr_flex_value_set_id := NULL;
124103 l_adr_value_type_code := NULL;
124104 l_adr_value_combination_id := NULL;
124105 l_adr_value_segment_code := NULL;
124106
124107 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
124108 l_bflow_class_code := ''; -- 4219869 Business Flow
124109 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
124110 l_budgetary_control_flag := 'N';
124111
124112 l_bflow_applied_to_amt_idx := NULL; -- 5132302
124113 l_bflow_applied_to_amt := NULL; -- 5132302
124114 l_entered_amt_idx := NULL; -- 4262811
124115 l_accted_amt_idx := NULL; -- 4262811
124116 l_acc_rev_flag := NULL; -- 4262811
124117 l_accrual_line_num := NULL; -- 4262811
124118 l_tmp_amt := NULL; -- 4262811
124119 --
124120
124121 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
124122 l_balance_type_code <> 'B' THEN
124123 IF NVL(p_source_24,9E125) = 6
124124 THEN
124125
124126 --
124127 XLA_AE_LINES_PKG.SetNewLine;
124128
124129 p_balance_type_code := l_balance_type_code;
124130 -- set the flag so later we will know whether the gain loss line needs to be created
124131
124132 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
124133 p_actual_flag :='A';
124134 END IF;
124135
124136 --
124137 -- bulk performance
124138 --
124139 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
124140 p_header_num => 0); -- 4262811
124141 --
124142 -- set accounting line options
124143 --
124144 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
124145 p_natural_side_code => 'D'
124146 , p_gain_or_loss_flag => 'N'
124147 , p_gl_transfer_mode_code => 'S'
124148 , p_acct_entry_type_code => 'A'
124149 , p_switch_side_flag => 'Y'
124150 , p_merge_duplicate_code => 'N'
124151 );
124152 --
124153 l_acc_rev_natural_side_code := 'C'; -- 4262811
124154 --
124155 --
124156 -- set accounting line type info
124157 --
124158 xla_ae_lines_pkg.SetAcctLineType
124159 (p_component_type => l_component_type
124160 ,p_event_type_code => l_event_type_code
124161 ,p_line_definition_owner_code => l_line_definition_owner_code
124162 ,p_line_definition_code => l_line_definition_code
124163 ,p_accounting_line_code => l_component_code
124164 ,p_accounting_line_type_code => l_component_type_code
124165 ,p_accounting_line_appl_id => l_component_appl_id
124166 ,p_amb_context_code => l_amb_context_code
124167 ,p_entity_code => l_entity_code
124168 ,p_event_class_code => l_event_class_code);
124169 --
124170 -- set accounting class
124171 --
124172 xla_ae_lines_pkg.SetAcctClass(
124173 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
124174 , p_ae_header_id => l_ae_header_id
124175 );
124176
124177 --
124178 -- set rounding class
124179 --
124180 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
124181 'PURCHASE_PRICE_VARIANCE';
124182
124183 --
124184 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
124185 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
124186 --
124187 -- bulk performance
124188 --
124189 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
124190
124191 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
124192 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
124193
124194 -- 4955764
124195 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124196 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
124197
124198 -- 4458381 Public Sector Enh
124199
124200 --
124201 -- set accounting attributes for the line type
124202 --
124203 l_entered_amt_idx := 3;
124204 l_accted_amt_idx := 8;
124205 l_bflow_applied_to_amt_idx := NULL; -- 5132302
124206 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
124207 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
124208 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
124209 l_rec_acct_attrs.array_char_value(2) := p_source_12;
124210 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
124211 l_rec_acct_attrs.array_num_value(3) := p_source_18;
124212 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
124213 l_rec_acct_attrs.array_char_value(4) := p_source_15;
124214 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
124215 l_rec_acct_attrs.array_date_value(5) := p_source_19;
124216 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
124217 l_rec_acct_attrs.array_num_value(6) := p_source_20;
124218 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
124219 l_rec_acct_attrs.array_char_value(7) := p_source_21;
124220 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
124221 l_rec_acct_attrs.array_num_value(8) := p_source_22;
124222
124223 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
124224 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
124225
124226 ---------------------------------------------------------------------------------------------------------------
124227 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
124228 ---------------------------------------------------------------------------------------------------------------
124229 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
124230
124231 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124232 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124233
124234 IF xla_accounting_cache_pkg.GetValueChar
124235 (p_source_code => 'LEDGER_CATEGORY_CODE'
124236 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
124237 AND l_bflow_method_code = 'PRIOR_ENTRY'
124238 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
124239 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
124240 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
124241 )
124242 THEN
124243 xla_ae_lines_pkg.BflowUpgEntry
124244 (p_business_method_code => l_bflow_method_code
124245 ,p_business_class_code => l_bflow_class_code
124246 ,p_balance_type => l_balance_type_code);
124247 ELSE
124248 NULL;
124249 -- No business flow processing for business flow method of NONE.
124250 END IF;
124251
124252 --
124253 -- call analytical criteria
124254 --
124255
124256 --
124257 -- call description
124258 --
124259 -- No description or it is inherited.
124260 --
124261 -- call ADRs
124262 -- Bug 4922099
124263 --
124264 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124265 (NVL(l_actual_upg_option, 'N') = 'O') OR
124266 (NVL(l_enc_upg_option, 'N') = 'O')
124267 )
124268 THEN
124269 NULL;
124270 --
124271 --
124272
124273 l_ccid := AcctDerRule_4(
124274 p_application_id => p_application_id
124275 , p_ae_header_id => l_ae_header_id
124276 , p_source_4 => p_source_4
124277 , x_transaction_coa_id => l_adr_transaction_coa_id
124278 , x_accounting_coa_id => l_adr_accounting_coa_id
124279 , x_value_type_code => l_adr_value_type_code
124280 , p_side => 'NA'
124281 );
124282
124283 xla_ae_lines_pkg.set_ccid(
124284 p_code_combination_id => l_ccid
124285 , p_value_type_code => l_adr_value_type_code
124286 , p_transaction_coa_id => l_adr_transaction_coa_id
124287 , p_accounting_coa_id => l_adr_accounting_coa_id
124288 , p_adr_code => 'CST_DEFAULT'
124289 , p_adr_type_code => 'S'
124290 , p_component_type => l_component_type
124291 , p_component_code => l_component_code
124292 , p_component_type_code => l_component_type_code
124293 , p_component_appl_id => l_component_appl_id
124294 , p_amb_context_code => l_amb_context_code
124295 , p_side => 'NA'
124296 );
124297
124298
124299 --
124300 --
124301 END IF;
124302 --
124303 -- Bug 4922099
124304 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
124305 (NVL(l_enc_upg_option, 'N') = 'O')
124306 ) AND
124307 (l_bflow_method_code = 'PRIOR_ENTRY')
124308 )
124309 THEN
124310 IF
124311 --
124312 1 = 2
124313 --
124314 THEN
124315 xla_accounting_err_pkg.build_message
124316 (p_appli_s_name => 'XLA'
124317 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124318 ,p_token_1 => 'LINE_NUMBER'
124319 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
124320 ,p_token_2 => 'LINE_TYPE_NAME'
124321 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
124322 l_component_type
124323 ,l_component_code
124324 ,l_component_type_code
124325 ,l_component_appl_id
124326 ,l_amb_context_code
124327 ,l_entity_code
124328 ,l_event_class_code
124329 )
124330 ,p_token_3 => 'OWNER'
124331 ,p_value_3 => xla_lookups_pkg.get_meaning(
124332 p_lookup_type => 'XLA_OWNER_TYPE'
124333 ,p_lookup_code => l_component_type_code
124334 )
124335 ,p_token_4 => 'PRODUCT_NAME'
124336 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
124337 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
124338 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
124339 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
124340 ,p_ae_header_id => NULL
124341 );
124342
124343 IF (C_LEVEL_ERROR>= g_log_level) THEN
124344 trace
124345 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124346 ,p_level => C_LEVEL_ERROR
124347 ,p_module => l_log_module);
124348 END IF;
124349 END IF;
124350 END IF;
124351 --
124352 --
124353 ------------------------------------------------------------------------------------------------
124354 -- 4219869 Business Flow
124355 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
124356 -- Prior Entry. Currently, the following code is always generated.
124357 ------------------------------------------------------------------------------------------------
124358 XLA_AE_LINES_PKG.ValidateCurrentLine;
124359
124360 ------------------------------------------------------------------------------------
124361 -- 4219869 Business Flow
124362 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
124363 ------------------------------------------------------------------------------------
124364 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124365
124366 ----------------------------------------------------------------------------------
124367 -- 4219869 Business Flow
124368 -- Update journal entry status -- Need to generate this within IF <condition>
124369 ----------------------------------------------------------------------------------
124370 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124371 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
124372 ,p_balance_type_code => l_balance_type_code
124373 );
124374
124375 -------------------------------------------------------------------------------------------
124376 -- 4262811 - Generate the Accrual Reversal lines
124377 -------------------------------------------------------------------------------------------
124378 BEGIN
124379 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
124380 (g_array_event(p_event_id).array_value_num('header_index'));
124381 IF l_acc_rev_flag IS NULL THEN
124382 l_acc_rev_flag := 'N';
124383 END IF;
124384 EXCEPTION
124385 WHEN OTHERS THEN
124386 l_acc_rev_flag := 'N';
124387 END;
124388 --
124389 IF (l_acc_rev_flag = 'Y') THEN
124390
124391 -- 4645092 ------------------------------------------------------------------------------
124392 -- To allow MPA report to determine if it should generate report process
124393 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
124394 ------------------------------------------------------------------------------------------
124395
124396 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
124397 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
124398 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
124399 -- call ADRs
124400 -- Bug 4922099
124401 --
124402 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124403 (NVL(l_actual_upg_option, 'N') = 'O') OR
124404 (NVL(l_enc_upg_option, 'N') = 'O')
124405 )
124406 THEN
124407 NULL;
124408 --
124409 --
124410
124411 l_ccid := AcctDerRule_4(
124412 p_application_id => p_application_id
124413 , p_ae_header_id => l_ae_header_id
124414 , p_source_4 => p_source_4
124415 , x_transaction_coa_id => l_adr_transaction_coa_id
124416 , x_accounting_coa_id => l_adr_accounting_coa_id
124417 , x_value_type_code => l_adr_value_type_code
124418 , p_side => 'NA'
124419 );
124420
124421 xla_ae_lines_pkg.set_ccid(
124422 p_code_combination_id => l_ccid
124423 , p_value_type_code => l_adr_value_type_code
124424 , p_transaction_coa_id => l_adr_transaction_coa_id
124425 , p_accounting_coa_id => l_adr_accounting_coa_id
124426 , p_adr_code => 'CST_DEFAULT'
124427 , p_adr_type_code => 'S'
124428 , p_component_type => l_component_type
124429 , p_component_code => l_component_code
124430 , p_component_type_code => l_component_type_code
124431 , p_component_appl_id => l_component_appl_id
124432 , p_amb_context_code => l_amb_context_code
124433 , p_side => 'NA'
124434 );
124435
124436
124437 --
124438 --
124439 END IF;
124440
124441 --
124442 -- Update the line information that should be overwritten
124443 --
124444 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
124445 p_header_num => 1);
124446 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
124447
124448 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
124449
124450 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
124451 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
124452 END IF;
124453
124454 --
124455 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
124456 --
124457 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
124458 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
124459 ELSE
124460 ---------------------------------------------------------------------------------------------------
124461 -- 4262811a Switch Sign
124462 ---------------------------------------------------------------------------------------------------
124463 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
124464 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124465 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124466 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
124467 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124468 -- 5132302
124469 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
124470 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
124471
124472 END IF;
124473
124474 -- 4955764
124475 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124476 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
124477
124478
124479 XLA_AE_LINES_PKG.ValidateCurrentLine;
124480 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124481
124482 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124483 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
124484 ,p_balance_type_code => l_balance_type_code);
124485
124486 END IF;
124487
124488 -----------------------------------------------------------------------------------------
124489 -- 4262811 Multiperiod Accounting
124490 -----------------------------------------------------------------------------------------
124491 -- No MPA option is assigned.
124492
124493
124494 END IF;
124495 END IF;
124496 --
124497
124498 --
124499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124500 trace
124501 (p_msg => 'END of AcctLineType_225'
124502 ,p_level => C_LEVEL_PROCEDURE
124503 ,p_module => l_log_module);
124504 END IF;
124505 --
124506 EXCEPTION
124507 WHEN xla_exceptions_pkg.application_exception THEN
124508 RAISE;
124509 WHEN OTHERS THEN
124510 xla_exceptions_pkg.raise_message
124511 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_225');
124512 END AcctLineType_225;
124513 --
124514
124515 ---------------------------------------
124516 --
124517 -- PRIVATE FUNCTION
124518 -- AcctLineType_226
124519 --
124520 ---------------------------------------
124521 PROCEDURE AcctLineType_226 (
124522 p_application_id IN NUMBER
124523 ,p_event_id IN NUMBER
124524 ,p_calculate_acctd_flag IN VARCHAR2
124525 ,p_calculate_g_l_flag IN VARCHAR2
124526 ,p_actual_flag IN OUT VARCHAR2
124527 ,p_balance_type_code OUT VARCHAR2
124528 ,p_gain_or_loss_ref OUT VARCHAR2
124529
124530 --Cost Management Default Account
124531 , p_source_4 IN NUMBER
124532 --DISTRIBUTION_IDENTIFIER
124533 , p_source_11 IN NUMBER
124534 --Distribution Type
124535 , p_source_12 IN VARCHAR2
124536 , p_source_12_meaning IN VARCHAR2
124537 --Entered Currency Code
124538 , p_source_15 IN VARCHAR2
124539 --Entered Amount
124540 , p_source_18 IN NUMBER
124541 --Currency Conversion Date
124542 , p_source_19 IN DATE
124543 --Currency Conversion Rate
124544 , p_source_20 IN NUMBER
124545 --Currency Conversion Type
124546 , p_source_21 IN VARCHAR2
124547 --Accounted Amount
124548 , p_source_22 IN NUMBER
124549 --Accounting Line Type
124550 , p_source_24 IN NUMBER
124551 )
124552 IS
124553
124554 l_component_type VARCHAR2(80);
124555 l_component_code VARCHAR2(30);
124556 l_component_type_code VARCHAR2(1);
124557 l_component_appl_id INTEGER;
124558 l_amb_context_code VARCHAR2(30);
124559 l_entity_code VARCHAR2(30);
124560 l_event_class_code VARCHAR2(30);
124561 l_ae_header_id NUMBER;
124562 l_event_type_code VARCHAR2(30);
124563 l_line_definition_code VARCHAR2(30);
124564 l_line_definition_owner_code VARCHAR2(1);
124565 --
124566 -- adr variables
124567 l_segment VARCHAR2(30);
124568 l_ccid NUMBER;
124569 l_adr_transaction_coa_id NUMBER;
124570 l_adr_accounting_coa_id NUMBER;
124571 l_adr_flexfield_segment_code VARCHAR2(30);
124572 l_adr_flex_value_set_id NUMBER;
124573 l_adr_value_type_code VARCHAR2(30);
124574 l_adr_value_combination_id NUMBER;
124575 l_adr_value_segment_code VARCHAR2(30);
124576
124577 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
124578 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
124579 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
124580 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
124581
124582 -- 4262811 Variables ------------------------------------------------------------------------------------------
124583 l_entered_amt_idx NUMBER;
124584 l_accted_amt_idx NUMBER;
124585 l_acc_rev_flag VARCHAR2(1);
124586 l_accrual_line_num NUMBER;
124587 l_tmp_amt NUMBER;
124588 l_acc_rev_natural_side_code VARCHAR2(1);
124589
124590 l_num_entries NUMBER;
124591 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
124592 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
124593 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
124594 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
124595 l_recog_line_1 NUMBER;
124596 l_recog_line_2 NUMBER;
124597
124598 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
124599 l_bflow_applied_to_amt NUMBER; -- 5132302
124600 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
124601
124602 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
124603
124604 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
124605 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
124606
124607 ---------------------------------------------------------------------------------------------------------------
124608
124609
124610 --
124611 -- bulk performance
124612 --
124613 l_balance_type_code VARCHAR2(1);
124614 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
124615 l_log_module VARCHAR2(240);
124616
124617 --
124618 -- Upgrade strategy
124619 --
124620 l_actual_upg_option VARCHAR2(1);
124621 l_enc_upg_option VARCHAR2(1);
124622
124623 --
124624 BEGIN
124625 --
124626 IF g_log_enabled THEN
124627 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_226';
124628 END IF;
124629 --
124630 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
124631
124632 trace
124633 (p_msg => 'BEGIN of AcctLineType_226'
124634 ,p_level => C_LEVEL_PROCEDURE
124635 ,p_module => l_log_module);
124636
124637 END IF;
124638 --
124639 l_component_type := 'AMB_JLT';
124640 l_component_code := 'PURCHASE_PRICE_VARIANCE';
124641 l_component_type_code := 'S';
124642 l_component_appl_id := 707;
124643 l_amb_context_code := 'DEFAULT';
124644 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
124645 l_event_class_code := 'FOB_SHIP_RECIPIENT_SHIP';
124646 l_event_type_code := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
124647 l_line_definition_owner_code := 'S';
124648 l_line_definition_code := 'FOB_SHIP_RECIPIENT_SHIP';
124649 --
124650 l_balance_type_code := 'A';
124651 l_segment := NULL;
124652 l_ccid := NULL;
124653 l_adr_transaction_coa_id := NULL;
124654 l_adr_accounting_coa_id := NULL;
124655 l_adr_flexfield_segment_code := NULL;
124656 l_adr_flex_value_set_id := NULL;
124657 l_adr_value_type_code := NULL;
124658 l_adr_value_combination_id := NULL;
124659 l_adr_value_segment_code := NULL;
124660
124661 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
124662 l_bflow_class_code := ''; -- 4219869 Business Flow
124663 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
124664 l_budgetary_control_flag := 'N';
124665
124666 l_bflow_applied_to_amt_idx := NULL; -- 5132302
124667 l_bflow_applied_to_amt := NULL; -- 5132302
124668 l_entered_amt_idx := NULL; -- 4262811
124669 l_accted_amt_idx := NULL; -- 4262811
124670 l_acc_rev_flag := NULL; -- 4262811
124671 l_accrual_line_num := NULL; -- 4262811
124672 l_tmp_amt := NULL; -- 4262811
124673 --
124674
124675 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
124676 l_balance_type_code <> 'B' THEN
124677 IF NVL(p_source_24,9E125) = 6
124678 THEN
124679
124680 --
124681 XLA_AE_LINES_PKG.SetNewLine;
124682
124683 p_balance_type_code := l_balance_type_code;
124684 -- set the flag so later we will know whether the gain loss line needs to be created
124685
124686 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
124687 p_actual_flag :='A';
124688 END IF;
124689
124690 --
124691 -- bulk performance
124692 --
124693 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
124694 p_header_num => 0); -- 4262811
124695 --
124696 -- set accounting line options
124697 --
124698 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
124699 p_natural_side_code => 'D'
124700 , p_gain_or_loss_flag => 'N'
124701 , p_gl_transfer_mode_code => 'S'
124702 , p_acct_entry_type_code => 'A'
124703 , p_switch_side_flag => 'Y'
124704 , p_merge_duplicate_code => 'N'
124705 );
124706 --
124707 l_acc_rev_natural_side_code := 'C'; -- 4262811
124708 --
124709 --
124710 -- set accounting line type info
124711 --
124712 xla_ae_lines_pkg.SetAcctLineType
124713 (p_component_type => l_component_type
124714 ,p_event_type_code => l_event_type_code
124715 ,p_line_definition_owner_code => l_line_definition_owner_code
124716 ,p_line_definition_code => l_line_definition_code
124717 ,p_accounting_line_code => l_component_code
124718 ,p_accounting_line_type_code => l_component_type_code
124719 ,p_accounting_line_appl_id => l_component_appl_id
124720 ,p_amb_context_code => l_amb_context_code
124721 ,p_entity_code => l_entity_code
124722 ,p_event_class_code => l_event_class_code);
124723 --
124724 -- set accounting class
124725 --
124726 xla_ae_lines_pkg.SetAcctClass(
124727 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
124728 , p_ae_header_id => l_ae_header_id
124729 );
124730
124731 --
124732 -- set rounding class
124733 --
124734 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
124735 'PURCHASE_PRICE_VARIANCE';
124736
124737 --
124738 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
124739 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
124740 --
124741 -- bulk performance
124742 --
124743 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
124744
124745 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
124746 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
124747
124748 -- 4955764
124749 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
124750 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
124751
124752 -- 4458381 Public Sector Enh
124753
124754 --
124755 -- set accounting attributes for the line type
124756 --
124757 l_entered_amt_idx := 3;
124758 l_accted_amt_idx := 8;
124759 l_bflow_applied_to_amt_idx := NULL; -- 5132302
124760 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
124761 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
124762 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
124763 l_rec_acct_attrs.array_char_value(2) := p_source_12;
124764 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
124765 l_rec_acct_attrs.array_num_value(3) := p_source_18;
124766 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
124767 l_rec_acct_attrs.array_char_value(4) := p_source_15;
124768 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
124769 l_rec_acct_attrs.array_date_value(5) := p_source_19;
124770 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
124771 l_rec_acct_attrs.array_num_value(6) := p_source_20;
124772 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
124773 l_rec_acct_attrs.array_char_value(7) := p_source_21;
124774 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
124775 l_rec_acct_attrs.array_num_value(8) := p_source_22;
124776
124777 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
124778 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
124779
124780 ---------------------------------------------------------------------------------------------------------------
124781 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
124782 ---------------------------------------------------------------------------------------------------------------
124783 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
124784
124785 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124786 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
124787
124788 IF xla_accounting_cache_pkg.GetValueChar
124789 (p_source_code => 'LEDGER_CATEGORY_CODE'
124790 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
124791 AND l_bflow_method_code = 'PRIOR_ENTRY'
124792 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
124793 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
124794 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
124795 )
124796 THEN
124797 xla_ae_lines_pkg.BflowUpgEntry
124798 (p_business_method_code => l_bflow_method_code
124799 ,p_business_class_code => l_bflow_class_code
124800 ,p_balance_type => l_balance_type_code);
124801 ELSE
124802 NULL;
124803 -- No business flow processing for business flow method of NONE.
124804 END IF;
124805
124806 --
124807 -- call analytical criteria
124808 --
124809
124810 --
124811 -- call description
124812 --
124813 -- No description or it is inherited.
124814 --
124815 -- call ADRs
124816 -- Bug 4922099
124817 --
124818 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124819 (NVL(l_actual_upg_option, 'N') = 'O') OR
124820 (NVL(l_enc_upg_option, 'N') = 'O')
124821 )
124822 THEN
124823 NULL;
124824 --
124825 --
124826
124827 l_ccid := AcctDerRule_4(
124828 p_application_id => p_application_id
124829 , p_ae_header_id => l_ae_header_id
124830 , p_source_4 => p_source_4
124831 , x_transaction_coa_id => l_adr_transaction_coa_id
124832 , x_accounting_coa_id => l_adr_accounting_coa_id
124833 , x_value_type_code => l_adr_value_type_code
124834 , p_side => 'NA'
124835 );
124836
124837 xla_ae_lines_pkg.set_ccid(
124838 p_code_combination_id => l_ccid
124839 , p_value_type_code => l_adr_value_type_code
124840 , p_transaction_coa_id => l_adr_transaction_coa_id
124841 , p_accounting_coa_id => l_adr_accounting_coa_id
124842 , p_adr_code => 'CST_DEFAULT'
124843 , p_adr_type_code => 'S'
124844 , p_component_type => l_component_type
124845 , p_component_code => l_component_code
124846 , p_component_type_code => l_component_type_code
124847 , p_component_appl_id => l_component_appl_id
124848 , p_amb_context_code => l_amb_context_code
124849 , p_side => 'NA'
124850 );
124851
124852
124853 --
124854 --
124855 END IF;
124856 --
124857 -- Bug 4922099
124858 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
124859 (NVL(l_enc_upg_option, 'N') = 'O')
124860 ) AND
124861 (l_bflow_method_code = 'PRIOR_ENTRY')
124862 )
124863 THEN
124864 IF
124865 --
124866 1 = 2
124867 --
124868 THEN
124869 xla_accounting_err_pkg.build_message
124870 (p_appli_s_name => 'XLA'
124871 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124872 ,p_token_1 => 'LINE_NUMBER'
124873 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
124874 ,p_token_2 => 'LINE_TYPE_NAME'
124875 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
124876 l_component_type
124877 ,l_component_code
124878 ,l_component_type_code
124879 ,l_component_appl_id
124880 ,l_amb_context_code
124881 ,l_entity_code
124882 ,l_event_class_code
124883 )
124884 ,p_token_3 => 'OWNER'
124885 ,p_value_3 => xla_lookups_pkg.get_meaning(
124886 p_lookup_type => 'XLA_OWNER_TYPE'
124887 ,p_lookup_code => l_component_type_code
124888 )
124889 ,p_token_4 => 'PRODUCT_NAME'
124890 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
124891 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
124892 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
124893 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
124894 ,p_ae_header_id => NULL
124895 );
124896
124897 IF (C_LEVEL_ERROR>= g_log_level) THEN
124898 trace
124899 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
124900 ,p_level => C_LEVEL_ERROR
124901 ,p_module => l_log_module);
124902 END IF;
124903 END IF;
124904 END IF;
124905 --
124906 --
124907 ------------------------------------------------------------------------------------------------
124908 -- 4219869 Business Flow
124909 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
124910 -- Prior Entry. Currently, the following code is always generated.
124911 ------------------------------------------------------------------------------------------------
124912 XLA_AE_LINES_PKG.ValidateCurrentLine;
124913
124914 ------------------------------------------------------------------------------------
124915 -- 4219869 Business Flow
124916 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
124917 ------------------------------------------------------------------------------------
124918 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
124919
124920 ----------------------------------------------------------------------------------
124921 -- 4219869 Business Flow
124922 -- Update journal entry status -- Need to generate this within IF <condition>
124923 ----------------------------------------------------------------------------------
124924 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
124925 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
124926 ,p_balance_type_code => l_balance_type_code
124927 );
124928
124929 -------------------------------------------------------------------------------------------
124930 -- 4262811 - Generate the Accrual Reversal lines
124931 -------------------------------------------------------------------------------------------
124932 BEGIN
124933 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
124934 (g_array_event(p_event_id).array_value_num('header_index'));
124935 IF l_acc_rev_flag IS NULL THEN
124936 l_acc_rev_flag := 'N';
124937 END IF;
124938 EXCEPTION
124939 WHEN OTHERS THEN
124940 l_acc_rev_flag := 'N';
124941 END;
124942 --
124943 IF (l_acc_rev_flag = 'Y') THEN
124944
124945 -- 4645092 ------------------------------------------------------------------------------
124946 -- To allow MPA report to determine if it should generate report process
124947 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
124948 ------------------------------------------------------------------------------------------
124949
124950 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
124951 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
124952 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
124953 -- call ADRs
124954 -- Bug 4922099
124955 --
124956 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
124957 (NVL(l_actual_upg_option, 'N') = 'O') OR
124958 (NVL(l_enc_upg_option, 'N') = 'O')
124959 )
124960 THEN
124961 NULL;
124962 --
124963 --
124964
124965 l_ccid := AcctDerRule_4(
124966 p_application_id => p_application_id
124967 , p_ae_header_id => l_ae_header_id
124968 , p_source_4 => p_source_4
124969 , x_transaction_coa_id => l_adr_transaction_coa_id
124970 , x_accounting_coa_id => l_adr_accounting_coa_id
124971 , x_value_type_code => l_adr_value_type_code
124972 , p_side => 'NA'
124973 );
124974
124975 xla_ae_lines_pkg.set_ccid(
124976 p_code_combination_id => l_ccid
124977 , p_value_type_code => l_adr_value_type_code
124978 , p_transaction_coa_id => l_adr_transaction_coa_id
124979 , p_accounting_coa_id => l_adr_accounting_coa_id
124980 , p_adr_code => 'CST_DEFAULT'
124981 , p_adr_type_code => 'S'
124982 , p_component_type => l_component_type
124983 , p_component_code => l_component_code
124984 , p_component_type_code => l_component_type_code
124985 , p_component_appl_id => l_component_appl_id
124986 , p_amb_context_code => l_amb_context_code
124987 , p_side => 'NA'
124988 );
124989
124990
124991 --
124992 --
124993 END IF;
124994
124995 --
124996 -- Update the line information that should be overwritten
124997 --
124998 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
124999 p_header_num => 1);
125000 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
125001
125002 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
125003
125004 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
125005 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
125006 END IF;
125007
125008 --
125009 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
125010 --
125011 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
125012 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
125013 ELSE
125014 ---------------------------------------------------------------------------------------------------
125015 -- 4262811a Switch Sign
125016 ---------------------------------------------------------------------------------------------------
125017 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
125018 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125019 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125020 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125021 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125022 -- 5132302
125023 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
125024 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125025
125026 END IF;
125027
125028 -- 4955764
125029 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125030 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
125031
125032
125033 XLA_AE_LINES_PKG.ValidateCurrentLine;
125034 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125035
125036 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125037 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
125038 ,p_balance_type_code => l_balance_type_code);
125039
125040 END IF;
125041
125042 -----------------------------------------------------------------------------------------
125043 -- 4262811 Multiperiod Accounting
125044 -----------------------------------------------------------------------------------------
125045 -- No MPA option is assigned.
125046
125047
125048 END IF;
125049 END IF;
125050 --
125051
125052 --
125053 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125054 trace
125055 (p_msg => 'END of AcctLineType_226'
125056 ,p_level => C_LEVEL_PROCEDURE
125057 ,p_module => l_log_module);
125058 END IF;
125059 --
125060 EXCEPTION
125061 WHEN xla_exceptions_pkg.application_exception THEN
125062 RAISE;
125063 WHEN OTHERS THEN
125064 xla_exceptions_pkg.raise_message
125065 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_226');
125066 END AcctLineType_226;
125067 --
125068
125069 ---------------------------------------
125070 --
125071 -- PRIVATE FUNCTION
125072 -- AcctLineType_227
125073 --
125074 ---------------------------------------
125075 PROCEDURE AcctLineType_227 (
125076 p_application_id IN NUMBER
125077 ,p_event_id IN NUMBER
125078 ,p_calculate_acctd_flag IN VARCHAR2
125079 ,p_calculate_g_l_flag IN VARCHAR2
125080 ,p_actual_flag IN OUT VARCHAR2
125081 ,p_balance_type_code OUT VARCHAR2
125082 ,p_gain_or_loss_ref OUT VARCHAR2
125083
125084 --Cost Management Default Account
125085 , p_source_4 IN NUMBER
125086 --DISTRIBUTION_IDENTIFIER
125087 , p_source_11 IN NUMBER
125088 --Distribution Type
125089 , p_source_12 IN VARCHAR2
125090 , p_source_12_meaning IN VARCHAR2
125091 --Entered Currency Code
125092 , p_source_15 IN VARCHAR2
125093 --Entered Amount
125094 , p_source_18 IN NUMBER
125095 --Currency Conversion Date
125096 , p_source_19 IN DATE
125097 --Currency Conversion Rate
125098 , p_source_20 IN NUMBER
125099 --Currency Conversion Type
125100 , p_source_21 IN VARCHAR2
125101 --Accounted Amount
125102 , p_source_22 IN NUMBER
125103 --Accounting Line Type
125104 , p_source_24 IN NUMBER
125105 )
125106 IS
125107
125108 l_component_type VARCHAR2(80);
125109 l_component_code VARCHAR2(30);
125110 l_component_type_code VARCHAR2(1);
125111 l_component_appl_id INTEGER;
125112 l_amb_context_code VARCHAR2(30);
125113 l_entity_code VARCHAR2(30);
125114 l_event_class_code VARCHAR2(30);
125115 l_ae_header_id NUMBER;
125116 l_event_type_code VARCHAR2(30);
125117 l_line_definition_code VARCHAR2(30);
125118 l_line_definition_owner_code VARCHAR2(1);
125119 --
125120 -- adr variables
125121 l_segment VARCHAR2(30);
125122 l_ccid NUMBER;
125123 l_adr_transaction_coa_id NUMBER;
125124 l_adr_accounting_coa_id NUMBER;
125125 l_adr_flexfield_segment_code VARCHAR2(30);
125126 l_adr_flex_value_set_id NUMBER;
125127 l_adr_value_type_code VARCHAR2(30);
125128 l_adr_value_combination_id NUMBER;
125129 l_adr_value_segment_code VARCHAR2(30);
125130
125131 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
125132 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
125133 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
125134 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
125135
125136 -- 4262811 Variables ------------------------------------------------------------------------------------------
125137 l_entered_amt_idx NUMBER;
125138 l_accted_amt_idx NUMBER;
125139 l_acc_rev_flag VARCHAR2(1);
125140 l_accrual_line_num NUMBER;
125141 l_tmp_amt NUMBER;
125142 l_acc_rev_natural_side_code VARCHAR2(1);
125143
125144 l_num_entries NUMBER;
125145 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
125146 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
125147 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
125148 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
125149 l_recog_line_1 NUMBER;
125150 l_recog_line_2 NUMBER;
125151
125152 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
125153 l_bflow_applied_to_amt NUMBER; -- 5132302
125154 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
125155
125156 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
125157
125158 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
125159 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
125160
125161 ---------------------------------------------------------------------------------------------------------------
125162
125163
125164 --
125165 -- bulk performance
125166 --
125167 l_balance_type_code VARCHAR2(1);
125168 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
125169 l_log_module VARCHAR2(240);
125170
125171 --
125172 -- Upgrade strategy
125173 --
125174 l_actual_upg_option VARCHAR2(1);
125175 l_enc_upg_option VARCHAR2(1);
125176
125177 --
125178 BEGIN
125179 --
125180 IF g_log_enabled THEN
125181 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_227';
125182 END IF;
125183 --
125184 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125185
125186 trace
125187 (p_msg => 'BEGIN of AcctLineType_227'
125188 ,p_level => C_LEVEL_PROCEDURE
125189 ,p_module => l_log_module);
125190
125191 END IF;
125192 --
125193 l_component_type := 'AMB_JLT';
125194 l_component_code := 'PURCHASE_PRICE_VARIANCE';
125195 l_component_type_code := 'S';
125196 l_component_appl_id := 707;
125197 l_amb_context_code := 'DEFAULT';
125198 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
125199 l_event_class_code := 'USER_DEFINE';
125200 l_event_type_code := 'UDIR_INTERORG_RCPT_NO_TP';
125201 l_line_definition_owner_code := 'S';
125202 l_line_definition_code := 'USER_DIR_INTERORG_RCPT_NO_TP';
125203 --
125204 l_balance_type_code := 'A';
125205 l_segment := NULL;
125206 l_ccid := NULL;
125207 l_adr_transaction_coa_id := NULL;
125208 l_adr_accounting_coa_id := NULL;
125209 l_adr_flexfield_segment_code := NULL;
125210 l_adr_flex_value_set_id := NULL;
125211 l_adr_value_type_code := NULL;
125212 l_adr_value_combination_id := NULL;
125213 l_adr_value_segment_code := NULL;
125214
125215 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
125216 l_bflow_class_code := ''; -- 4219869 Business Flow
125217 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
125218 l_budgetary_control_flag := 'N';
125219
125220 l_bflow_applied_to_amt_idx := NULL; -- 5132302
125221 l_bflow_applied_to_amt := NULL; -- 5132302
125222 l_entered_amt_idx := NULL; -- 4262811
125223 l_accted_amt_idx := NULL; -- 4262811
125224 l_acc_rev_flag := NULL; -- 4262811
125225 l_accrual_line_num := NULL; -- 4262811
125226 l_tmp_amt := NULL; -- 4262811
125227 --
125228
125229 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
125230 l_balance_type_code <> 'B' THEN
125231 IF NVL(p_source_24,9E125) = 6
125232 THEN
125233
125234 --
125235 XLA_AE_LINES_PKG.SetNewLine;
125236
125237 p_balance_type_code := l_balance_type_code;
125238 -- set the flag so later we will know whether the gain loss line needs to be created
125239
125240 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
125241 p_actual_flag :='A';
125242 END IF;
125243
125244 --
125245 -- bulk performance
125246 --
125247 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
125248 p_header_num => 0); -- 4262811
125249 --
125250 -- set accounting line options
125251 --
125252 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
125253 p_natural_side_code => 'D'
125254 , p_gain_or_loss_flag => 'N'
125255 , p_gl_transfer_mode_code => 'S'
125256 , p_acct_entry_type_code => 'A'
125257 , p_switch_side_flag => 'Y'
125258 , p_merge_duplicate_code => 'N'
125259 );
125260 --
125261 l_acc_rev_natural_side_code := 'C'; -- 4262811
125262 --
125263 --
125264 -- set accounting line type info
125265 --
125266 xla_ae_lines_pkg.SetAcctLineType
125267 (p_component_type => l_component_type
125268 ,p_event_type_code => l_event_type_code
125269 ,p_line_definition_owner_code => l_line_definition_owner_code
125270 ,p_line_definition_code => l_line_definition_code
125271 ,p_accounting_line_code => l_component_code
125272 ,p_accounting_line_type_code => l_component_type_code
125273 ,p_accounting_line_appl_id => l_component_appl_id
125274 ,p_amb_context_code => l_amb_context_code
125275 ,p_entity_code => l_entity_code
125276 ,p_event_class_code => l_event_class_code);
125277 --
125278 -- set accounting class
125279 --
125280 xla_ae_lines_pkg.SetAcctClass(
125281 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
125282 , p_ae_header_id => l_ae_header_id
125283 );
125284
125285 --
125286 -- set rounding class
125287 --
125288 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
125289 'PURCHASE_PRICE_VARIANCE';
125290
125291 --
125292 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
125293 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
125294 --
125295 -- bulk performance
125296 --
125297 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
125298
125299 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
125300 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
125301
125302 -- 4955764
125303 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125304 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
125305
125306 -- 4458381 Public Sector Enh
125307
125308 --
125309 -- set accounting attributes for the line type
125310 --
125311 l_entered_amt_idx := 3;
125312 l_accted_amt_idx := 8;
125313 l_bflow_applied_to_amt_idx := NULL; -- 5132302
125314 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
125315 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
125316 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
125317 l_rec_acct_attrs.array_char_value(2) := p_source_12;
125318 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
125319 l_rec_acct_attrs.array_num_value(3) := p_source_18;
125320 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
125321 l_rec_acct_attrs.array_char_value(4) := p_source_15;
125322 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
125323 l_rec_acct_attrs.array_date_value(5) := p_source_19;
125324 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
125325 l_rec_acct_attrs.array_num_value(6) := p_source_20;
125326 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
125327 l_rec_acct_attrs.array_char_value(7) := p_source_21;
125328 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
125329 l_rec_acct_attrs.array_num_value(8) := p_source_22;
125330
125331 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
125332 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
125333
125334 ---------------------------------------------------------------------------------------------------------------
125335 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
125336 ---------------------------------------------------------------------------------------------------------------
125337 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
125338
125339 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125340 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125341
125342 IF xla_accounting_cache_pkg.GetValueChar
125343 (p_source_code => 'LEDGER_CATEGORY_CODE'
125344 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
125345 AND l_bflow_method_code = 'PRIOR_ENTRY'
125346 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
125347 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
125348 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
125349 )
125350 THEN
125351 xla_ae_lines_pkg.BflowUpgEntry
125352 (p_business_method_code => l_bflow_method_code
125353 ,p_business_class_code => l_bflow_class_code
125354 ,p_balance_type => l_balance_type_code);
125355 ELSE
125356 NULL;
125357 -- No business flow processing for business flow method of NONE.
125358 END IF;
125359
125360 --
125361 -- call analytical criteria
125362 --
125363
125364 --
125365 -- call description
125366 --
125367 -- No description or it is inherited.
125368 --
125369 -- call ADRs
125370 -- Bug 4922099
125371 --
125372 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125373 (NVL(l_actual_upg_option, 'N') = 'O') OR
125374 (NVL(l_enc_upg_option, 'N') = 'O')
125375 )
125376 THEN
125377 NULL;
125378 --
125379 --
125380
125381 l_ccid := AcctDerRule_4(
125382 p_application_id => p_application_id
125383 , p_ae_header_id => l_ae_header_id
125384 , p_source_4 => p_source_4
125385 , x_transaction_coa_id => l_adr_transaction_coa_id
125386 , x_accounting_coa_id => l_adr_accounting_coa_id
125387 , x_value_type_code => l_adr_value_type_code
125388 , p_side => 'NA'
125389 );
125390
125391 xla_ae_lines_pkg.set_ccid(
125392 p_code_combination_id => l_ccid
125393 , p_value_type_code => l_adr_value_type_code
125394 , p_transaction_coa_id => l_adr_transaction_coa_id
125395 , p_accounting_coa_id => l_adr_accounting_coa_id
125396 , p_adr_code => 'CST_DEFAULT'
125397 , p_adr_type_code => 'S'
125398 , p_component_type => l_component_type
125399 , p_component_code => l_component_code
125400 , p_component_type_code => l_component_type_code
125401 , p_component_appl_id => l_component_appl_id
125402 , p_amb_context_code => l_amb_context_code
125403 , p_side => 'NA'
125404 );
125405
125406
125407 --
125408 --
125409 END IF;
125410 --
125411 -- Bug 4922099
125412 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
125413 (NVL(l_enc_upg_option, 'N') = 'O')
125414 ) AND
125415 (l_bflow_method_code = 'PRIOR_ENTRY')
125416 )
125417 THEN
125418 IF
125419 --
125420 1 = 2
125421 --
125422 THEN
125423 xla_accounting_err_pkg.build_message
125424 (p_appli_s_name => 'XLA'
125425 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125426 ,p_token_1 => 'LINE_NUMBER'
125427 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
125428 ,p_token_2 => 'LINE_TYPE_NAME'
125429 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
125430 l_component_type
125431 ,l_component_code
125432 ,l_component_type_code
125433 ,l_component_appl_id
125434 ,l_amb_context_code
125435 ,l_entity_code
125436 ,l_event_class_code
125437 )
125438 ,p_token_3 => 'OWNER'
125439 ,p_value_3 => xla_lookups_pkg.get_meaning(
125440 p_lookup_type => 'XLA_OWNER_TYPE'
125441 ,p_lookup_code => l_component_type_code
125442 )
125443 ,p_token_4 => 'PRODUCT_NAME'
125444 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
125445 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
125446 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
125447 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
125448 ,p_ae_header_id => NULL
125449 );
125450
125451 IF (C_LEVEL_ERROR>= g_log_level) THEN
125452 trace
125453 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125454 ,p_level => C_LEVEL_ERROR
125455 ,p_module => l_log_module);
125456 END IF;
125457 END IF;
125458 END IF;
125459 --
125460 --
125461 ------------------------------------------------------------------------------------------------
125462 -- 4219869 Business Flow
125463 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
125464 -- Prior Entry. Currently, the following code is always generated.
125465 ------------------------------------------------------------------------------------------------
125466 XLA_AE_LINES_PKG.ValidateCurrentLine;
125467
125468 ------------------------------------------------------------------------------------
125469 -- 4219869 Business Flow
125470 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
125471 ------------------------------------------------------------------------------------
125472 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125473
125474 ----------------------------------------------------------------------------------
125475 -- 4219869 Business Flow
125476 -- Update journal entry status -- Need to generate this within IF <condition>
125477 ----------------------------------------------------------------------------------
125478 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125479 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
125480 ,p_balance_type_code => l_balance_type_code
125481 );
125482
125483 -------------------------------------------------------------------------------------------
125484 -- 4262811 - Generate the Accrual Reversal lines
125485 -------------------------------------------------------------------------------------------
125486 BEGIN
125487 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
125488 (g_array_event(p_event_id).array_value_num('header_index'));
125489 IF l_acc_rev_flag IS NULL THEN
125490 l_acc_rev_flag := 'N';
125491 END IF;
125492 EXCEPTION
125493 WHEN OTHERS THEN
125494 l_acc_rev_flag := 'N';
125495 END;
125496 --
125497 IF (l_acc_rev_flag = 'Y') THEN
125498
125499 -- 4645092 ------------------------------------------------------------------------------
125500 -- To allow MPA report to determine if it should generate report process
125501 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
125502 ------------------------------------------------------------------------------------------
125503
125504 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
125505 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
125506 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
125507 -- call ADRs
125508 -- Bug 4922099
125509 --
125510 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125511 (NVL(l_actual_upg_option, 'N') = 'O') OR
125512 (NVL(l_enc_upg_option, 'N') = 'O')
125513 )
125514 THEN
125515 NULL;
125516 --
125517 --
125518
125519 l_ccid := AcctDerRule_4(
125520 p_application_id => p_application_id
125521 , p_ae_header_id => l_ae_header_id
125522 , p_source_4 => p_source_4
125523 , x_transaction_coa_id => l_adr_transaction_coa_id
125524 , x_accounting_coa_id => l_adr_accounting_coa_id
125525 , x_value_type_code => l_adr_value_type_code
125526 , p_side => 'NA'
125527 );
125528
125529 xla_ae_lines_pkg.set_ccid(
125530 p_code_combination_id => l_ccid
125531 , p_value_type_code => l_adr_value_type_code
125532 , p_transaction_coa_id => l_adr_transaction_coa_id
125533 , p_accounting_coa_id => l_adr_accounting_coa_id
125534 , p_adr_code => 'CST_DEFAULT'
125535 , p_adr_type_code => 'S'
125536 , p_component_type => l_component_type
125537 , p_component_code => l_component_code
125538 , p_component_type_code => l_component_type_code
125539 , p_component_appl_id => l_component_appl_id
125540 , p_amb_context_code => l_amb_context_code
125541 , p_side => 'NA'
125542 );
125543
125544
125545 --
125546 --
125547 END IF;
125548
125549 --
125550 -- Update the line information that should be overwritten
125551 --
125552 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
125553 p_header_num => 1);
125554 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
125555
125556 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
125557
125558 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
125559 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
125560 END IF;
125561
125562 --
125563 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
125564 --
125565 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
125566 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
125567 ELSE
125568 ---------------------------------------------------------------------------------------------------
125569 -- 4262811a Switch Sign
125570 ---------------------------------------------------------------------------------------------------
125571 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
125572 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125573 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125574 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
125575 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125576 -- 5132302
125577 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
125578 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
125579
125580 END IF;
125581
125582 -- 4955764
125583 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125584 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
125585
125586
125587 XLA_AE_LINES_PKG.ValidateCurrentLine;
125588 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
125589
125590 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
125591 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
125592 ,p_balance_type_code => l_balance_type_code);
125593
125594 END IF;
125595
125596 -----------------------------------------------------------------------------------------
125597 -- 4262811 Multiperiod Accounting
125598 -----------------------------------------------------------------------------------------
125599 -- No MPA option is assigned.
125600
125601
125602 END IF;
125603 END IF;
125604 --
125605
125606 --
125607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125608 trace
125609 (p_msg => 'END of AcctLineType_227'
125610 ,p_level => C_LEVEL_PROCEDURE
125611 ,p_module => l_log_module);
125612 END IF;
125613 --
125614 EXCEPTION
125615 WHEN xla_exceptions_pkg.application_exception THEN
125616 RAISE;
125617 WHEN OTHERS THEN
125618 xla_exceptions_pkg.raise_message
125619 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_227');
125620 END AcctLineType_227;
125621 --
125622
125623 ---------------------------------------
125624 --
125625 -- PRIVATE FUNCTION
125626 -- AcctLineType_228
125627 --
125628 ---------------------------------------
125629 PROCEDURE AcctLineType_228 (
125630 p_application_id IN NUMBER
125631 ,p_event_id IN NUMBER
125632 ,p_calculate_acctd_flag IN VARCHAR2
125633 ,p_calculate_g_l_flag IN VARCHAR2
125634 ,p_actual_flag IN OUT VARCHAR2
125635 ,p_balance_type_code OUT VARCHAR2
125636 ,p_gain_or_loss_ref OUT VARCHAR2
125637
125638 --Cost Management Default Account
125639 , p_source_4 IN NUMBER
125640 --DISTRIBUTION_IDENTIFIER
125641 , p_source_11 IN NUMBER
125642 --Distribution Type
125643 , p_source_12 IN VARCHAR2
125644 , p_source_12_meaning IN VARCHAR2
125645 --Entered Currency Code
125646 , p_source_15 IN VARCHAR2
125647 --Entered Amount
125648 , p_source_18 IN NUMBER
125649 --Currency Conversion Date
125650 , p_source_19 IN DATE
125651 --Currency Conversion Rate
125652 , p_source_20 IN NUMBER
125653 --Currency Conversion Type
125654 , p_source_21 IN VARCHAR2
125655 --Accounted Amount
125656 , p_source_22 IN NUMBER
125657 --Accounting Line Type
125658 , p_source_24 IN NUMBER
125659 )
125660 IS
125661
125662 l_component_type VARCHAR2(80);
125663 l_component_code VARCHAR2(30);
125664 l_component_type_code VARCHAR2(1);
125665 l_component_appl_id INTEGER;
125666 l_amb_context_code VARCHAR2(30);
125667 l_entity_code VARCHAR2(30);
125668 l_event_class_code VARCHAR2(30);
125669 l_ae_header_id NUMBER;
125670 l_event_type_code VARCHAR2(30);
125671 l_line_definition_code VARCHAR2(30);
125672 l_line_definition_owner_code VARCHAR2(1);
125673 --
125674 -- adr variables
125675 l_segment VARCHAR2(30);
125676 l_ccid NUMBER;
125677 l_adr_transaction_coa_id NUMBER;
125678 l_adr_accounting_coa_id NUMBER;
125679 l_adr_flexfield_segment_code VARCHAR2(30);
125680 l_adr_flex_value_set_id NUMBER;
125681 l_adr_value_type_code VARCHAR2(30);
125682 l_adr_value_combination_id NUMBER;
125683 l_adr_value_segment_code VARCHAR2(30);
125684
125685 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
125686 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
125687 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
125688 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
125689
125690 -- 4262811 Variables ------------------------------------------------------------------------------------------
125691 l_entered_amt_idx NUMBER;
125692 l_accted_amt_idx NUMBER;
125693 l_acc_rev_flag VARCHAR2(1);
125694 l_accrual_line_num NUMBER;
125695 l_tmp_amt NUMBER;
125696 l_acc_rev_natural_side_code VARCHAR2(1);
125697
125698 l_num_entries NUMBER;
125699 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
125700 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
125701 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
125702 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
125703 l_recog_line_1 NUMBER;
125704 l_recog_line_2 NUMBER;
125705
125706 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
125707 l_bflow_applied_to_amt NUMBER; -- 5132302
125708 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
125709
125710 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
125711
125712 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
125713 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
125714
125715 ---------------------------------------------------------------------------------------------------------------
125716
125717
125718 --
125719 -- bulk performance
125720 --
125721 l_balance_type_code VARCHAR2(1);
125722 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
125723 l_log_module VARCHAR2(240);
125724
125725 --
125726 -- Upgrade strategy
125727 --
125728 l_actual_upg_option VARCHAR2(1);
125729 l_enc_upg_option VARCHAR2(1);
125730
125731 --
125732 BEGIN
125733 --
125734 IF g_log_enabled THEN
125735 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_228';
125736 END IF;
125737 --
125738 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
125739
125740 trace
125741 (p_msg => 'BEGIN of AcctLineType_228'
125742 ,p_level => C_LEVEL_PROCEDURE
125743 ,p_module => l_log_module);
125744
125745 END IF;
125746 --
125747 l_component_type := 'AMB_JLT';
125748 l_component_code := 'PURCHASE_PRICE_VARIANCE';
125749 l_component_type_code := 'S';
125750 l_component_appl_id := 707;
125751 l_amb_context_code := 'DEFAULT';
125752 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
125753 l_event_class_code := 'USER_DEFINE';
125754 l_event_type_code := 'UDIR_INTERORG_SHIP_NO_TP';
125755 l_line_definition_owner_code := 'S';
125756 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_NO_TP';
125757 --
125758 l_balance_type_code := 'A';
125759 l_segment := NULL;
125760 l_ccid := NULL;
125761 l_adr_transaction_coa_id := NULL;
125762 l_adr_accounting_coa_id := NULL;
125763 l_adr_flexfield_segment_code := NULL;
125764 l_adr_flex_value_set_id := NULL;
125765 l_adr_value_type_code := NULL;
125766 l_adr_value_combination_id := NULL;
125767 l_adr_value_segment_code := NULL;
125768
125769 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
125770 l_bflow_class_code := ''; -- 4219869 Business Flow
125771 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
125772 l_budgetary_control_flag := 'N';
125773
125774 l_bflow_applied_to_amt_idx := NULL; -- 5132302
125775 l_bflow_applied_to_amt := NULL; -- 5132302
125776 l_entered_amt_idx := NULL; -- 4262811
125777 l_accted_amt_idx := NULL; -- 4262811
125778 l_acc_rev_flag := NULL; -- 4262811
125779 l_accrual_line_num := NULL; -- 4262811
125780 l_tmp_amt := NULL; -- 4262811
125781 --
125782
125783 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
125784 l_balance_type_code <> 'B' THEN
125785 IF NVL(p_source_24,9E125) = 6
125786 THEN
125787
125788 --
125789 XLA_AE_LINES_PKG.SetNewLine;
125790
125791 p_balance_type_code := l_balance_type_code;
125792 -- set the flag so later we will know whether the gain loss line needs to be created
125793
125794 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
125795 p_actual_flag :='A';
125796 END IF;
125797
125798 --
125799 -- bulk performance
125800 --
125801 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
125802 p_header_num => 0); -- 4262811
125803 --
125804 -- set accounting line options
125805 --
125806 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
125807 p_natural_side_code => 'D'
125808 , p_gain_or_loss_flag => 'N'
125809 , p_gl_transfer_mode_code => 'S'
125810 , p_acct_entry_type_code => 'A'
125811 , p_switch_side_flag => 'Y'
125812 , p_merge_duplicate_code => 'N'
125813 );
125814 --
125815 l_acc_rev_natural_side_code := 'C'; -- 4262811
125816 --
125817 --
125818 -- set accounting line type info
125819 --
125820 xla_ae_lines_pkg.SetAcctLineType
125821 (p_component_type => l_component_type
125822 ,p_event_type_code => l_event_type_code
125823 ,p_line_definition_owner_code => l_line_definition_owner_code
125824 ,p_line_definition_code => l_line_definition_code
125825 ,p_accounting_line_code => l_component_code
125826 ,p_accounting_line_type_code => l_component_type_code
125827 ,p_accounting_line_appl_id => l_component_appl_id
125828 ,p_amb_context_code => l_amb_context_code
125829 ,p_entity_code => l_entity_code
125830 ,p_event_class_code => l_event_class_code);
125831 --
125832 -- set accounting class
125833 --
125834 xla_ae_lines_pkg.SetAcctClass(
125835 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
125836 , p_ae_header_id => l_ae_header_id
125837 );
125838
125839 --
125840 -- set rounding class
125841 --
125842 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
125843 'PURCHASE_PRICE_VARIANCE';
125844
125845 --
125846 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
125847 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
125848 --
125849 -- bulk performance
125850 --
125851 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
125852
125853 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
125854 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
125855
125856 -- 4955764
125857 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
125858 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
125859
125860 -- 4458381 Public Sector Enh
125861
125862 --
125863 -- set accounting attributes for the line type
125864 --
125865 l_entered_amt_idx := 3;
125866 l_accted_amt_idx := 8;
125867 l_bflow_applied_to_amt_idx := NULL; -- 5132302
125868 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
125869 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
125870 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
125871 l_rec_acct_attrs.array_char_value(2) := p_source_12;
125872 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
125873 l_rec_acct_attrs.array_num_value(3) := p_source_18;
125874 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
125875 l_rec_acct_attrs.array_char_value(4) := p_source_15;
125876 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
125877 l_rec_acct_attrs.array_date_value(5) := p_source_19;
125878 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
125879 l_rec_acct_attrs.array_num_value(6) := p_source_20;
125880 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
125881 l_rec_acct_attrs.array_char_value(7) := p_source_21;
125882 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
125883 l_rec_acct_attrs.array_num_value(8) := p_source_22;
125884
125885 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
125886 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
125887
125888 ---------------------------------------------------------------------------------------------------------------
125889 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
125890 ---------------------------------------------------------------------------------------------------------------
125891 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
125892
125893 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125894 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
125895
125896 IF xla_accounting_cache_pkg.GetValueChar
125897 (p_source_code => 'LEDGER_CATEGORY_CODE'
125898 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
125899 AND l_bflow_method_code = 'PRIOR_ENTRY'
125900 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
125901 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
125902 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
125903 )
125904 THEN
125905 xla_ae_lines_pkg.BflowUpgEntry
125906 (p_business_method_code => l_bflow_method_code
125907 ,p_business_class_code => l_bflow_class_code
125908 ,p_balance_type => l_balance_type_code);
125909 ELSE
125910 NULL;
125911 -- No business flow processing for business flow method of NONE.
125912 END IF;
125913
125914 --
125915 -- call analytical criteria
125916 --
125917
125918 --
125919 -- call description
125920 --
125921 -- No description or it is inherited.
125922 --
125923 -- call ADRs
125924 -- Bug 4922099
125925 --
125926 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
125927 (NVL(l_actual_upg_option, 'N') = 'O') OR
125928 (NVL(l_enc_upg_option, 'N') = 'O')
125929 )
125930 THEN
125931 NULL;
125932 --
125933 --
125934
125935 l_ccid := AcctDerRule_4(
125936 p_application_id => p_application_id
125937 , p_ae_header_id => l_ae_header_id
125938 , p_source_4 => p_source_4
125939 , x_transaction_coa_id => l_adr_transaction_coa_id
125940 , x_accounting_coa_id => l_adr_accounting_coa_id
125941 , x_value_type_code => l_adr_value_type_code
125942 , p_side => 'NA'
125943 );
125944
125945 xla_ae_lines_pkg.set_ccid(
125946 p_code_combination_id => l_ccid
125947 , p_value_type_code => l_adr_value_type_code
125948 , p_transaction_coa_id => l_adr_transaction_coa_id
125949 , p_accounting_coa_id => l_adr_accounting_coa_id
125950 , p_adr_code => 'CST_DEFAULT'
125951 , p_adr_type_code => 'S'
125952 , p_component_type => l_component_type
125953 , p_component_code => l_component_code
125954 , p_component_type_code => l_component_type_code
125955 , p_component_appl_id => l_component_appl_id
125956 , p_amb_context_code => l_amb_context_code
125957 , p_side => 'NA'
125958 );
125959
125960
125961 --
125962 --
125963 END IF;
125964 --
125965 -- Bug 4922099
125966 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
125967 (NVL(l_enc_upg_option, 'N') = 'O')
125968 ) AND
125969 (l_bflow_method_code = 'PRIOR_ENTRY')
125970 )
125971 THEN
125972 IF
125973 --
125974 1 = 2
125975 --
125976 THEN
125977 xla_accounting_err_pkg.build_message
125978 (p_appli_s_name => 'XLA'
125979 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
125980 ,p_token_1 => 'LINE_NUMBER'
125981 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
125982 ,p_token_2 => 'LINE_TYPE_NAME'
125983 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
125984 l_component_type
125985 ,l_component_code
125986 ,l_component_type_code
125987 ,l_component_appl_id
125988 ,l_amb_context_code
125989 ,l_entity_code
125990 ,l_event_class_code
125991 )
125992 ,p_token_3 => 'OWNER'
125993 ,p_value_3 => xla_lookups_pkg.get_meaning(
125994 p_lookup_type => 'XLA_OWNER_TYPE'
125995 ,p_lookup_code => l_component_type_code
125996 )
125997 ,p_token_4 => 'PRODUCT_NAME'
125998 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
125999 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
126000 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
126001 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
126002 ,p_ae_header_id => NULL
126003 );
126004
126005 IF (C_LEVEL_ERROR>= g_log_level) THEN
126006 trace
126007 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126008 ,p_level => C_LEVEL_ERROR
126009 ,p_module => l_log_module);
126010 END IF;
126011 END IF;
126012 END IF;
126013 --
126014 --
126015 ------------------------------------------------------------------------------------------------
126016 -- 4219869 Business Flow
126017 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
126018 -- Prior Entry. Currently, the following code is always generated.
126019 ------------------------------------------------------------------------------------------------
126020 XLA_AE_LINES_PKG.ValidateCurrentLine;
126021
126022 ------------------------------------------------------------------------------------
126023 -- 4219869 Business Flow
126024 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
126025 ------------------------------------------------------------------------------------
126026 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126027
126028 ----------------------------------------------------------------------------------
126029 -- 4219869 Business Flow
126030 -- Update journal entry status -- Need to generate this within IF <condition>
126031 ----------------------------------------------------------------------------------
126032 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126033 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
126034 ,p_balance_type_code => l_balance_type_code
126035 );
126036
126037 -------------------------------------------------------------------------------------------
126038 -- 4262811 - Generate the Accrual Reversal lines
126039 -------------------------------------------------------------------------------------------
126040 BEGIN
126041 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
126042 (g_array_event(p_event_id).array_value_num('header_index'));
126043 IF l_acc_rev_flag IS NULL THEN
126044 l_acc_rev_flag := 'N';
126045 END IF;
126046 EXCEPTION
126047 WHEN OTHERS THEN
126048 l_acc_rev_flag := 'N';
126049 END;
126050 --
126051 IF (l_acc_rev_flag = 'Y') THEN
126052
126053 -- 4645092 ------------------------------------------------------------------------------
126054 -- To allow MPA report to determine if it should generate report process
126055 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
126056 ------------------------------------------------------------------------------------------
126057
126058 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
126059 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
126060 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
126061 -- call ADRs
126062 -- Bug 4922099
126063 --
126064 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126065 (NVL(l_actual_upg_option, 'N') = 'O') OR
126066 (NVL(l_enc_upg_option, 'N') = 'O')
126067 )
126068 THEN
126069 NULL;
126070 --
126071 --
126072
126073 l_ccid := AcctDerRule_4(
126074 p_application_id => p_application_id
126075 , p_ae_header_id => l_ae_header_id
126076 , p_source_4 => p_source_4
126077 , x_transaction_coa_id => l_adr_transaction_coa_id
126078 , x_accounting_coa_id => l_adr_accounting_coa_id
126079 , x_value_type_code => l_adr_value_type_code
126080 , p_side => 'NA'
126081 );
126082
126083 xla_ae_lines_pkg.set_ccid(
126084 p_code_combination_id => l_ccid
126085 , p_value_type_code => l_adr_value_type_code
126086 , p_transaction_coa_id => l_adr_transaction_coa_id
126087 , p_accounting_coa_id => l_adr_accounting_coa_id
126088 , p_adr_code => 'CST_DEFAULT'
126089 , p_adr_type_code => 'S'
126090 , p_component_type => l_component_type
126091 , p_component_code => l_component_code
126092 , p_component_type_code => l_component_type_code
126093 , p_component_appl_id => l_component_appl_id
126094 , p_amb_context_code => l_amb_context_code
126095 , p_side => 'NA'
126096 );
126097
126098
126099 --
126100 --
126101 END IF;
126102
126103 --
126104 -- Update the line information that should be overwritten
126105 --
126106 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
126107 p_header_num => 1);
126108 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
126109
126110 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
126111
126112 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
126113 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
126114 END IF;
126115
126116 --
126117 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
126118 --
126119 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
126120 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
126121 ELSE
126122 ---------------------------------------------------------------------------------------------------
126123 -- 4262811a Switch Sign
126124 ---------------------------------------------------------------------------------------------------
126125 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
126126 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126127 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126128 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126129 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126130 -- 5132302
126131 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
126132 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126133
126134 END IF;
126135
126136 -- 4955764
126137 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126138 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
126139
126140
126141 XLA_AE_LINES_PKG.ValidateCurrentLine;
126142 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126143
126144 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126145 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
126146 ,p_balance_type_code => l_balance_type_code);
126147
126148 END IF;
126149
126150 -----------------------------------------------------------------------------------------
126151 -- 4262811 Multiperiod Accounting
126152 -----------------------------------------------------------------------------------------
126153 -- No MPA option is assigned.
126154
126155
126156 END IF;
126157 END IF;
126158 --
126159
126160 --
126161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126162 trace
126163 (p_msg => 'END of AcctLineType_228'
126164 ,p_level => C_LEVEL_PROCEDURE
126165 ,p_module => l_log_module);
126166 END IF;
126167 --
126168 EXCEPTION
126169 WHEN xla_exceptions_pkg.application_exception THEN
126170 RAISE;
126171 WHEN OTHERS THEN
126172 xla_exceptions_pkg.raise_message
126173 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_228');
126174 END AcctLineType_228;
126175 --
126176
126177 ---------------------------------------
126178 --
126179 -- PRIVATE FUNCTION
126180 -- AcctLineType_229
126181 --
126182 ---------------------------------------
126183 PROCEDURE AcctLineType_229 (
126184 p_application_id IN NUMBER
126185 ,p_event_id IN NUMBER
126186 ,p_calculate_acctd_flag IN VARCHAR2
126187 ,p_calculate_g_l_flag IN VARCHAR2
126188 ,p_actual_flag IN OUT VARCHAR2
126189 ,p_balance_type_code OUT VARCHAR2
126190 ,p_gain_or_loss_ref OUT VARCHAR2
126191
126192 --Cost Management Default Account
126193 , p_source_4 IN NUMBER
126194 --DISTRIBUTION_IDENTIFIER
126195 , p_source_11 IN NUMBER
126196 --Distribution Type
126197 , p_source_12 IN VARCHAR2
126198 , p_source_12_meaning IN VARCHAR2
126199 --Entered Currency Code
126200 , p_source_15 IN VARCHAR2
126201 --Entered Amount
126202 , p_source_18 IN NUMBER
126203 --Currency Conversion Date
126204 , p_source_19 IN DATE
126205 --Currency Conversion Rate
126206 , p_source_20 IN NUMBER
126207 --Currency Conversion Type
126208 , p_source_21 IN VARCHAR2
126209 --Accounted Amount
126210 , p_source_22 IN NUMBER
126211 --Accounting Line Type
126212 , p_source_24 IN NUMBER
126213 )
126214 IS
126215
126216 l_component_type VARCHAR2(80);
126217 l_component_code VARCHAR2(30);
126218 l_component_type_code VARCHAR2(1);
126219 l_component_appl_id INTEGER;
126220 l_amb_context_code VARCHAR2(30);
126221 l_entity_code VARCHAR2(30);
126222 l_event_class_code VARCHAR2(30);
126223 l_ae_header_id NUMBER;
126224 l_event_type_code VARCHAR2(30);
126225 l_line_definition_code VARCHAR2(30);
126226 l_line_definition_owner_code VARCHAR2(1);
126227 --
126228 -- adr variables
126229 l_segment VARCHAR2(30);
126230 l_ccid NUMBER;
126231 l_adr_transaction_coa_id NUMBER;
126232 l_adr_accounting_coa_id NUMBER;
126233 l_adr_flexfield_segment_code VARCHAR2(30);
126234 l_adr_flex_value_set_id NUMBER;
126235 l_adr_value_type_code VARCHAR2(30);
126236 l_adr_value_combination_id NUMBER;
126237 l_adr_value_segment_code VARCHAR2(30);
126238
126239 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
126240 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
126241 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
126242 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
126243
126244 -- 4262811 Variables ------------------------------------------------------------------------------------------
126245 l_entered_amt_idx NUMBER;
126246 l_accted_amt_idx NUMBER;
126247 l_acc_rev_flag VARCHAR2(1);
126248 l_accrual_line_num NUMBER;
126249 l_tmp_amt NUMBER;
126250 l_acc_rev_natural_side_code VARCHAR2(1);
126251
126252 l_num_entries NUMBER;
126253 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
126254 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
126255 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
126256 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
126257 l_recog_line_1 NUMBER;
126258 l_recog_line_2 NUMBER;
126259
126260 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
126261 l_bflow_applied_to_amt NUMBER; -- 5132302
126262 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
126263
126264 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
126265
126266 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
126267 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
126268
126269 ---------------------------------------------------------------------------------------------------------------
126270
126271
126272 --
126273 -- bulk performance
126274 --
126275 l_balance_type_code VARCHAR2(1);
126276 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
126277 l_log_module VARCHAR2(240);
126278
126279 --
126280 -- Upgrade strategy
126281 --
126282 l_actual_upg_option VARCHAR2(1);
126283 l_enc_upg_option VARCHAR2(1);
126284
126285 --
126286 BEGIN
126287 --
126288 IF g_log_enabled THEN
126289 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_229';
126290 END IF;
126291 --
126292 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126293
126294 trace
126295 (p_msg => 'BEGIN of AcctLineType_229'
126296 ,p_level => C_LEVEL_PROCEDURE
126297 ,p_module => l_log_module);
126298
126299 END IF;
126300 --
126301 l_component_type := 'AMB_JLT';
126302 l_component_code := 'PURCHASE_PRICE_VARIANCE';
126303 l_component_type_code := 'S';
126304 l_component_appl_id := 707;
126305 l_amb_context_code := 'DEFAULT';
126306 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
126307 l_event_class_code := 'USER_DEFINE';
126308 l_event_type_code := 'UDIR_INTERORG_SHIP';
126309 l_line_definition_owner_code := 'S';
126310 l_line_definition_code := 'USER_DIR_INTERORG_SHIP';
126311 --
126312 l_balance_type_code := 'A';
126313 l_segment := NULL;
126314 l_ccid := NULL;
126315 l_adr_transaction_coa_id := NULL;
126316 l_adr_accounting_coa_id := NULL;
126317 l_adr_flexfield_segment_code := NULL;
126318 l_adr_flex_value_set_id := NULL;
126319 l_adr_value_type_code := NULL;
126320 l_adr_value_combination_id := NULL;
126321 l_adr_value_segment_code := NULL;
126322
126323 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
126324 l_bflow_class_code := ''; -- 4219869 Business Flow
126325 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
126326 l_budgetary_control_flag := 'N';
126327
126328 l_bflow_applied_to_amt_idx := NULL; -- 5132302
126329 l_bflow_applied_to_amt := NULL; -- 5132302
126330 l_entered_amt_idx := NULL; -- 4262811
126331 l_accted_amt_idx := NULL; -- 4262811
126332 l_acc_rev_flag := NULL; -- 4262811
126333 l_accrual_line_num := NULL; -- 4262811
126334 l_tmp_amt := NULL; -- 4262811
126335 --
126336
126337 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
126338 l_balance_type_code <> 'B' THEN
126339 IF NVL(p_source_24,9E125) = 6
126340 THEN
126341
126342 --
126343 XLA_AE_LINES_PKG.SetNewLine;
126344
126345 p_balance_type_code := l_balance_type_code;
126346 -- set the flag so later we will know whether the gain loss line needs to be created
126347
126348 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
126349 p_actual_flag :='A';
126350 END IF;
126351
126352 --
126353 -- bulk performance
126354 --
126355 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
126356 p_header_num => 0); -- 4262811
126357 --
126358 -- set accounting line options
126359 --
126360 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
126361 p_natural_side_code => 'D'
126362 , p_gain_or_loss_flag => 'N'
126363 , p_gl_transfer_mode_code => 'S'
126364 , p_acct_entry_type_code => 'A'
126365 , p_switch_side_flag => 'Y'
126366 , p_merge_duplicate_code => 'N'
126367 );
126368 --
126369 l_acc_rev_natural_side_code := 'C'; -- 4262811
126370 --
126371 --
126372 -- set accounting line type info
126373 --
126374 xla_ae_lines_pkg.SetAcctLineType
126375 (p_component_type => l_component_type
126376 ,p_event_type_code => l_event_type_code
126377 ,p_line_definition_owner_code => l_line_definition_owner_code
126378 ,p_line_definition_code => l_line_definition_code
126379 ,p_accounting_line_code => l_component_code
126380 ,p_accounting_line_type_code => l_component_type_code
126381 ,p_accounting_line_appl_id => l_component_appl_id
126382 ,p_amb_context_code => l_amb_context_code
126383 ,p_entity_code => l_entity_code
126384 ,p_event_class_code => l_event_class_code);
126385 --
126386 -- set accounting class
126387 --
126388 xla_ae_lines_pkg.SetAcctClass(
126389 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
126390 , p_ae_header_id => l_ae_header_id
126391 );
126392
126393 --
126394 -- set rounding class
126395 --
126396 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
126397 'PURCHASE_PRICE_VARIANCE';
126398
126399 --
126400 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
126401 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
126402 --
126403 -- bulk performance
126404 --
126405 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
126406
126407 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
126408 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
126409
126410 -- 4955764
126411 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126412 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
126413
126414 -- 4458381 Public Sector Enh
126415
126416 --
126417 -- set accounting attributes for the line type
126418 --
126419 l_entered_amt_idx := 3;
126420 l_accted_amt_idx := 8;
126421 l_bflow_applied_to_amt_idx := NULL; -- 5132302
126422 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
126423 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
126424 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
126425 l_rec_acct_attrs.array_char_value(2) := p_source_12;
126426 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
126427 l_rec_acct_attrs.array_num_value(3) := p_source_18;
126428 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
126429 l_rec_acct_attrs.array_char_value(4) := p_source_15;
126430 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
126431 l_rec_acct_attrs.array_date_value(5) := p_source_19;
126432 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
126433 l_rec_acct_attrs.array_num_value(6) := p_source_20;
126434 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
126435 l_rec_acct_attrs.array_char_value(7) := p_source_21;
126436 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
126437 l_rec_acct_attrs.array_num_value(8) := p_source_22;
126438
126439 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
126440 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
126441
126442 ---------------------------------------------------------------------------------------------------------------
126443 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
126444 ---------------------------------------------------------------------------------------------------------------
126445 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
126446
126447 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126448 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
126449
126450 IF xla_accounting_cache_pkg.GetValueChar
126451 (p_source_code => 'LEDGER_CATEGORY_CODE'
126452 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
126453 AND l_bflow_method_code = 'PRIOR_ENTRY'
126454 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
126455 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
126456 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
126457 )
126458 THEN
126459 xla_ae_lines_pkg.BflowUpgEntry
126460 (p_business_method_code => l_bflow_method_code
126461 ,p_business_class_code => l_bflow_class_code
126462 ,p_balance_type => l_balance_type_code);
126463 ELSE
126464 NULL;
126465 -- No business flow processing for business flow method of NONE.
126466 END IF;
126467
126468 --
126469 -- call analytical criteria
126470 --
126471
126472 --
126473 -- call description
126474 --
126475 -- No description or it is inherited.
126476 --
126477 -- call ADRs
126478 -- Bug 4922099
126479 --
126480 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126481 (NVL(l_actual_upg_option, 'N') = 'O') OR
126482 (NVL(l_enc_upg_option, 'N') = 'O')
126483 )
126484 THEN
126485 NULL;
126486 --
126487 --
126488
126489 l_ccid := AcctDerRule_4(
126490 p_application_id => p_application_id
126491 , p_ae_header_id => l_ae_header_id
126492 , p_source_4 => p_source_4
126493 , x_transaction_coa_id => l_adr_transaction_coa_id
126494 , x_accounting_coa_id => l_adr_accounting_coa_id
126495 , x_value_type_code => l_adr_value_type_code
126496 , p_side => 'NA'
126497 );
126498
126499 xla_ae_lines_pkg.set_ccid(
126500 p_code_combination_id => l_ccid
126501 , p_value_type_code => l_adr_value_type_code
126502 , p_transaction_coa_id => l_adr_transaction_coa_id
126503 , p_accounting_coa_id => l_adr_accounting_coa_id
126504 , p_adr_code => 'CST_DEFAULT'
126505 , p_adr_type_code => 'S'
126506 , p_component_type => l_component_type
126507 , p_component_code => l_component_code
126508 , p_component_type_code => l_component_type_code
126509 , p_component_appl_id => l_component_appl_id
126510 , p_amb_context_code => l_amb_context_code
126511 , p_side => 'NA'
126512 );
126513
126514
126515 --
126516 --
126517 END IF;
126518 --
126519 -- Bug 4922099
126520 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
126521 (NVL(l_enc_upg_option, 'N') = 'O')
126522 ) AND
126523 (l_bflow_method_code = 'PRIOR_ENTRY')
126524 )
126525 THEN
126526 IF
126527 --
126528 1 = 2
126529 --
126530 THEN
126531 xla_accounting_err_pkg.build_message
126532 (p_appli_s_name => 'XLA'
126533 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126534 ,p_token_1 => 'LINE_NUMBER'
126535 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
126536 ,p_token_2 => 'LINE_TYPE_NAME'
126537 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
126538 l_component_type
126539 ,l_component_code
126540 ,l_component_type_code
126541 ,l_component_appl_id
126542 ,l_amb_context_code
126543 ,l_entity_code
126544 ,l_event_class_code
126545 )
126546 ,p_token_3 => 'OWNER'
126547 ,p_value_3 => xla_lookups_pkg.get_meaning(
126548 p_lookup_type => 'XLA_OWNER_TYPE'
126549 ,p_lookup_code => l_component_type_code
126550 )
126551 ,p_token_4 => 'PRODUCT_NAME'
126552 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
126553 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
126554 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
126555 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
126556 ,p_ae_header_id => NULL
126557 );
126558
126559 IF (C_LEVEL_ERROR>= g_log_level) THEN
126560 trace
126561 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
126562 ,p_level => C_LEVEL_ERROR
126563 ,p_module => l_log_module);
126564 END IF;
126565 END IF;
126566 END IF;
126567 --
126568 --
126569 ------------------------------------------------------------------------------------------------
126570 -- 4219869 Business Flow
126571 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
126572 -- Prior Entry. Currently, the following code is always generated.
126573 ------------------------------------------------------------------------------------------------
126574 XLA_AE_LINES_PKG.ValidateCurrentLine;
126575
126576 ------------------------------------------------------------------------------------
126577 -- 4219869 Business Flow
126578 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
126579 ------------------------------------------------------------------------------------
126580 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126581
126582 ----------------------------------------------------------------------------------
126583 -- 4219869 Business Flow
126584 -- Update journal entry status -- Need to generate this within IF <condition>
126585 ----------------------------------------------------------------------------------
126586 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126587 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
126588 ,p_balance_type_code => l_balance_type_code
126589 );
126590
126591 -------------------------------------------------------------------------------------------
126592 -- 4262811 - Generate the Accrual Reversal lines
126593 -------------------------------------------------------------------------------------------
126594 BEGIN
126595 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
126596 (g_array_event(p_event_id).array_value_num('header_index'));
126597 IF l_acc_rev_flag IS NULL THEN
126598 l_acc_rev_flag := 'N';
126599 END IF;
126600 EXCEPTION
126601 WHEN OTHERS THEN
126602 l_acc_rev_flag := 'N';
126603 END;
126604 --
126605 IF (l_acc_rev_flag = 'Y') THEN
126606
126607 -- 4645092 ------------------------------------------------------------------------------
126608 -- To allow MPA report to determine if it should generate report process
126609 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
126610 ------------------------------------------------------------------------------------------
126611
126612 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
126613 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
126614 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
126615 -- call ADRs
126616 -- Bug 4922099
126617 --
126618 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
126619 (NVL(l_actual_upg_option, 'N') = 'O') OR
126620 (NVL(l_enc_upg_option, 'N') = 'O')
126621 )
126622 THEN
126623 NULL;
126624 --
126625 --
126626
126627 l_ccid := AcctDerRule_4(
126628 p_application_id => p_application_id
126629 , p_ae_header_id => l_ae_header_id
126630 , p_source_4 => p_source_4
126631 , x_transaction_coa_id => l_adr_transaction_coa_id
126632 , x_accounting_coa_id => l_adr_accounting_coa_id
126633 , x_value_type_code => l_adr_value_type_code
126634 , p_side => 'NA'
126635 );
126636
126637 xla_ae_lines_pkg.set_ccid(
126638 p_code_combination_id => l_ccid
126639 , p_value_type_code => l_adr_value_type_code
126640 , p_transaction_coa_id => l_adr_transaction_coa_id
126641 , p_accounting_coa_id => l_adr_accounting_coa_id
126642 , p_adr_code => 'CST_DEFAULT'
126643 , p_adr_type_code => 'S'
126644 , p_component_type => l_component_type
126645 , p_component_code => l_component_code
126646 , p_component_type_code => l_component_type_code
126647 , p_component_appl_id => l_component_appl_id
126648 , p_amb_context_code => l_amb_context_code
126649 , p_side => 'NA'
126650 );
126651
126652
126653 --
126654 --
126655 END IF;
126656
126657 --
126658 -- Update the line information that should be overwritten
126659 --
126660 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
126661 p_header_num => 1);
126662 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
126663
126664 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
126665
126666 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
126667 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
126668 END IF;
126669
126670 --
126671 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
126672 --
126673 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
126674 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
126675 ELSE
126676 ---------------------------------------------------------------------------------------------------
126677 -- 4262811a Switch Sign
126678 ---------------------------------------------------------------------------------------------------
126679 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
126680 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126681 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126682 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
126683 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126684 -- 5132302
126685 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
126686 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
126687
126688 END IF;
126689
126690 -- 4955764
126691 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126692 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
126693
126694
126695 XLA_AE_LINES_PKG.ValidateCurrentLine;
126696 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
126697
126698 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
126699 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
126700 ,p_balance_type_code => l_balance_type_code);
126701
126702 END IF;
126703
126704 -----------------------------------------------------------------------------------------
126705 -- 4262811 Multiperiod Accounting
126706 -----------------------------------------------------------------------------------------
126707 -- No MPA option is assigned.
126708
126709
126710 END IF;
126711 END IF;
126712 --
126713
126714 --
126715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126716 trace
126717 (p_msg => 'END of AcctLineType_229'
126718 ,p_level => C_LEVEL_PROCEDURE
126719 ,p_module => l_log_module);
126720 END IF;
126721 --
126722 EXCEPTION
126723 WHEN xla_exceptions_pkg.application_exception THEN
126724 RAISE;
126725 WHEN OTHERS THEN
126726 xla_exceptions_pkg.raise_message
126727 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_229');
126728 END AcctLineType_229;
126729 --
126730
126731 ---------------------------------------
126732 --
126733 -- PRIVATE FUNCTION
126734 -- AcctLineType_230
126735 --
126736 ---------------------------------------
126737 PROCEDURE AcctLineType_230 (
126738 p_application_id IN NUMBER
126739 ,p_event_id IN NUMBER
126740 ,p_calculate_acctd_flag IN VARCHAR2
126741 ,p_calculate_g_l_flag IN VARCHAR2
126742 ,p_actual_flag IN OUT VARCHAR2
126743 ,p_balance_type_code OUT VARCHAR2
126744 ,p_gain_or_loss_ref OUT VARCHAR2
126745
126746 --Cost Management Default Account
126747 , p_source_4 IN NUMBER
126748 --Applied to Application ID
126749 , p_source_6 IN NUMBER
126750 --Applied to Distribution Link Type
126751 , p_source_7 IN VARCHAR2
126752 --Applied to Entity Code
126753 , p_source_8 IN VARCHAR2
126754 --DISTRIBUTION_IDENTIFIER
126755 , p_source_11 IN NUMBER
126756 --Distribution Type
126757 , p_source_12 IN VARCHAR2
126758 , p_source_12_meaning IN VARCHAR2
126759 --Encumbrance Reversal Amount Entered
126760 , p_source_14 IN NUMBER
126761 --Entered Currency Code
126762 , p_source_15 IN VARCHAR2
126763 --Transaction Encumbrance Reversal Amount
126764 , p_source_16 IN NUMBER
126765 --Entered Amount
126766 , p_source_18 IN NUMBER
126767 --Currency Conversion Date
126768 , p_source_19 IN DATE
126769 --Currency Conversion Rate
126770 , p_source_20 IN NUMBER
126771 --Currency Conversion Type
126772 , p_source_21 IN VARCHAR2
126773 --Accounted Amount
126774 , p_source_22 IN NUMBER
126775 --Accounting Line Type
126776 , p_source_24 IN NUMBER
126777 --Costing Encumbrance Upgrade Option
126778 , p_source_27 IN VARCHAR2
126779 --TXN_PO_DISTRIBUTION_ID
126780 , p_source_28 IN NUMBER
126781 --TXN_PO_HEADER_ID
126782 , p_source_29 IN NUMBER
126783 --Requisition Budget Account
126784 , p_source_30 IN NUMBER
126785 --Requisition Encumbrance Type Identifier
126786 , p_source_31 IN NUMBER
126787 )
126788 IS
126789
126790 l_component_type VARCHAR2(80);
126791 l_component_code VARCHAR2(30);
126792 l_component_type_code VARCHAR2(1);
126793 l_component_appl_id INTEGER;
126794 l_amb_context_code VARCHAR2(30);
126795 l_entity_code VARCHAR2(30);
126796 l_event_class_code VARCHAR2(30);
126797 l_ae_header_id NUMBER;
126798 l_event_type_code VARCHAR2(30);
126799 l_line_definition_code VARCHAR2(30);
126800 l_line_definition_owner_code VARCHAR2(1);
126801 --
126802 -- adr variables
126803 l_segment VARCHAR2(30);
126804 l_ccid NUMBER;
126805 l_adr_transaction_coa_id NUMBER;
126806 l_adr_accounting_coa_id NUMBER;
126807 l_adr_flexfield_segment_code VARCHAR2(30);
126808 l_adr_flex_value_set_id NUMBER;
126809 l_adr_value_type_code VARCHAR2(30);
126810 l_adr_value_combination_id NUMBER;
126811 l_adr_value_segment_code VARCHAR2(30);
126812
126813 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
126814 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
126815 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
126816 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
126817
126818 -- 4262811 Variables ------------------------------------------------------------------------------------------
126819 l_entered_amt_idx NUMBER;
126820 l_accted_amt_idx NUMBER;
126821 l_acc_rev_flag VARCHAR2(1);
126822 l_accrual_line_num NUMBER;
126823 l_tmp_amt NUMBER;
126824 l_acc_rev_natural_side_code VARCHAR2(1);
126825
126826 l_num_entries NUMBER;
126827 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
126828 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
126829 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
126830 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
126831 l_recog_line_1 NUMBER;
126832 l_recog_line_2 NUMBER;
126833
126834 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
126835 l_bflow_applied_to_amt NUMBER; -- 5132302
126836 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
126837
126838 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
126839
126840 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
126841 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
126842
126843 ---------------------------------------------------------------------------------------------------------------
126844
126845
126846 --
126847 -- bulk performance
126848 --
126849 l_balance_type_code VARCHAR2(1);
126850 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
126851 l_log_module VARCHAR2(240);
126852
126853 --
126854 -- Upgrade strategy
126855 --
126856 l_actual_upg_option VARCHAR2(1);
126857 l_enc_upg_option VARCHAR2(1);
126858
126859 --
126860 BEGIN
126861 --
126862 IF g_log_enabled THEN
126863 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_230';
126864 END IF;
126865 --
126866 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
126867
126868 trace
126869 (p_msg => 'BEGIN of AcctLineType_230'
126870 ,p_level => C_LEVEL_PROCEDURE
126871 ,p_module => l_log_module);
126872
126873 END IF;
126874 --
126875 l_component_type := 'AMB_JLT';
126876 l_component_code := 'PURCHASE_PRICE_VARIANCE';
126877 l_component_type_code := 'S';
126878 l_component_appl_id := 707;
126879 l_amb_context_code := 'DEFAULT';
126880 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
126881 l_event_class_code := 'DIR_INTERORG_RCPT';
126882 l_event_type_code := 'DIR_INTERORG_RCPT_ALL';
126883 l_line_definition_owner_code := 'S';
126884 l_line_definition_code := 'DIRECT_INTERORG_RCPT';
126885 --
126886 l_balance_type_code := 'A';
126887 l_segment := NULL;
126888 l_ccid := NULL;
126889 l_adr_transaction_coa_id := NULL;
126890 l_adr_accounting_coa_id := NULL;
126891 l_adr_flexfield_segment_code := NULL;
126892 l_adr_flex_value_set_id := NULL;
126893 l_adr_value_type_code := NULL;
126894 l_adr_value_combination_id := NULL;
126895 l_adr_value_segment_code := NULL;
126896
126897 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
126898 l_bflow_class_code := ''; -- 4219869 Business Flow
126899 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
126900 l_budgetary_control_flag := 'N';
126901
126902 l_bflow_applied_to_amt_idx := NULL; -- 5132302
126903 l_bflow_applied_to_amt := NULL; -- 5132302
126904 l_entered_amt_idx := NULL; -- 4262811
126905 l_accted_amt_idx := NULL; -- 4262811
126906 l_acc_rev_flag := NULL; -- 4262811
126907 l_accrual_line_num := NULL; -- 4262811
126908 l_tmp_amt := NULL; -- 4262811
126909 --
126910
126911 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
126912 l_balance_type_code <> 'B' THEN
126913 IF NVL(p_source_24,9E125) = 6
126914 THEN
126915
126916 --
126917 XLA_AE_LINES_PKG.SetNewLine;
126918
126919 p_balance_type_code := l_balance_type_code;
126920 -- set the flag so later we will know whether the gain loss line needs to be created
126921
126922 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
126923 p_actual_flag :='A';
126924 END IF;
126925
126926 --
126927 -- bulk performance
126928 --
126929 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
126930 p_header_num => 0); -- 4262811
126931 --
126932 -- set accounting line options
126933 --
126934 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
126935 p_natural_side_code => 'D'
126936 , p_gain_or_loss_flag => 'N'
126937 , p_gl_transfer_mode_code => 'S'
126938 , p_acct_entry_type_code => 'A'
126939 , p_switch_side_flag => 'Y'
126940 , p_merge_duplicate_code => 'N'
126941 );
126942 --
126943 l_acc_rev_natural_side_code := 'C'; -- 4262811
126944 --
126945 --
126946 -- set accounting line type info
126947 --
126948 xla_ae_lines_pkg.SetAcctLineType
126949 (p_component_type => l_component_type
126950 ,p_event_type_code => l_event_type_code
126951 ,p_line_definition_owner_code => l_line_definition_owner_code
126952 ,p_line_definition_code => l_line_definition_code
126953 ,p_accounting_line_code => l_component_code
126954 ,p_accounting_line_type_code => l_component_type_code
126955 ,p_accounting_line_appl_id => l_component_appl_id
126956 ,p_amb_context_code => l_amb_context_code
126957 ,p_entity_code => l_entity_code
126958 ,p_event_class_code => l_event_class_code);
126959 --
126960 -- set accounting class
126961 --
126962 xla_ae_lines_pkg.SetAcctClass(
126963 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
126964 , p_ae_header_id => l_ae_header_id
126965 );
126966
126967 --
126968 -- set rounding class
126969 --
126970 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
126971 'PURCHASE_PRICE_VARIANCE';
126972
126973 --
126974 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
126975 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
126976 --
126977 -- bulk performance
126978 --
126979 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
126980
126981 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
126982 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
126983
126984 -- 4955764
126985 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
126986 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
126987
126988 -- 4458381 Public Sector Enh
126989
126990 --
126991 -- set accounting attributes for the line type
126992 --
126993 l_entered_amt_idx := 17;
126994 l_accted_amt_idx := 22;
126995 l_bflow_applied_to_amt_idx := NULL; -- 5132302
126996 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
126997 l_rec_acct_attrs.array_num_value(1) := p_source_6;
126998 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
126999 l_rec_acct_attrs.array_char_value(2) := p_source_7;
127000 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
127001 l_rec_acct_attrs.array_char_value(3) := p_source_8;
127002 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
127003 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
127004 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
127005 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_29);
127006 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
127007 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
127008 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
127009 l_rec_acct_attrs.array_char_value(7) := p_source_12;
127010 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
127011 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_30);
127012 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
127013 l_rec_acct_attrs.array_num_value(9) := p_source_14;
127014 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
127015 l_rec_acct_attrs.array_char_value(10) := p_source_15;
127016 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
127017 l_rec_acct_attrs.array_num_value(11) := p_source_16;
127018 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
127019 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_30);
127020 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
127021 l_rec_acct_attrs.array_num_value(13) := p_source_14;
127022 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
127023 l_rec_acct_attrs.array_char_value(14) := p_source_15;
127024 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
127025 l_rec_acct_attrs.array_num_value(15) := p_source_16;
127026 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
127027 l_rec_acct_attrs.array_char_value(16) := p_source_27;
127028 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
127029 l_rec_acct_attrs.array_num_value(17) := p_source_18;
127030 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
127031 l_rec_acct_attrs.array_char_value(18) := p_source_15;
127032 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
127033 l_rec_acct_attrs.array_date_value(19) := p_source_19;
127034 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
127035 l_rec_acct_attrs.array_num_value(20) := p_source_20;
127036 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
127037 l_rec_acct_attrs.array_char_value(21) := p_source_21;
127038 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
127039 l_rec_acct_attrs.array_num_value(22) := p_source_22;
127040 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
127041 l_rec_acct_attrs.array_num_value(23) := p_source_31;
127042 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
127043 l_rec_acct_attrs.array_num_value(24) := p_source_31;
127044
127045 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
127046 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
127047
127048 ---------------------------------------------------------------------------------------------------------------
127049 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
127050 ---------------------------------------------------------------------------------------------------------------
127051 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
127052
127053 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127054 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127055
127056 IF xla_accounting_cache_pkg.GetValueChar
127057 (p_source_code => 'LEDGER_CATEGORY_CODE'
127058 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
127059 AND l_bflow_method_code = 'PRIOR_ENTRY'
127060 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
127061 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
127062 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
127063 )
127064 THEN
127065 xla_ae_lines_pkg.BflowUpgEntry
127066 (p_business_method_code => l_bflow_method_code
127067 ,p_business_class_code => l_bflow_class_code
127068 ,p_balance_type => l_balance_type_code);
127069 ELSE
127070 NULL;
127071 -- No business flow processing for business flow method of NONE.
127072 END IF;
127073
127074 --
127075 -- call analytical criteria
127076 --
127077
127078 --
127079 -- call description
127080 --
127081 -- No description or it is inherited.
127082 --
127083 -- call ADRs
127084 -- Bug 4922099
127085 --
127086 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127087 (NVL(l_actual_upg_option, 'N') = 'O') OR
127088 (NVL(l_enc_upg_option, 'N') = 'O')
127089 )
127090 THEN
127091 NULL;
127092 --
127093 --
127094
127095 l_ccid := AcctDerRule_4(
127096 p_application_id => p_application_id
127097 , p_ae_header_id => l_ae_header_id
127098 , p_source_4 => p_source_4
127099 , x_transaction_coa_id => l_adr_transaction_coa_id
127100 , x_accounting_coa_id => l_adr_accounting_coa_id
127101 , x_value_type_code => l_adr_value_type_code
127102 , p_side => 'NA'
127103 );
127104
127105 xla_ae_lines_pkg.set_ccid(
127106 p_code_combination_id => l_ccid
127107 , p_value_type_code => l_adr_value_type_code
127108 , p_transaction_coa_id => l_adr_transaction_coa_id
127109 , p_accounting_coa_id => l_adr_accounting_coa_id
127110 , p_adr_code => 'CST_DEFAULT'
127111 , p_adr_type_code => 'S'
127112 , p_component_type => l_component_type
127113 , p_component_code => l_component_code
127114 , p_component_type_code => l_component_type_code
127115 , p_component_appl_id => l_component_appl_id
127116 , p_amb_context_code => l_amb_context_code
127117 , p_side => 'NA'
127118 );
127119
127120
127121 --
127122 --
127123 END IF;
127124 --
127125 -- Bug 4922099
127126 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
127127 (NVL(l_enc_upg_option, 'N') = 'O')
127128 ) AND
127129 (l_bflow_method_code = 'PRIOR_ENTRY')
127130 )
127131 THEN
127132 IF
127133 --
127134 1 = 2
127135 --
127136 THEN
127137 xla_accounting_err_pkg.build_message
127138 (p_appli_s_name => 'XLA'
127139 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127140 ,p_token_1 => 'LINE_NUMBER'
127141 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
127142 ,p_token_2 => 'LINE_TYPE_NAME'
127143 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
127144 l_component_type
127145 ,l_component_code
127146 ,l_component_type_code
127147 ,l_component_appl_id
127148 ,l_amb_context_code
127149 ,l_entity_code
127150 ,l_event_class_code
127151 )
127152 ,p_token_3 => 'OWNER'
127153 ,p_value_3 => xla_lookups_pkg.get_meaning(
127154 p_lookup_type => 'XLA_OWNER_TYPE'
127155 ,p_lookup_code => l_component_type_code
127156 )
127157 ,p_token_4 => 'PRODUCT_NAME'
127158 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
127159 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
127160 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
127161 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
127162 ,p_ae_header_id => NULL
127163 );
127164
127165 IF (C_LEVEL_ERROR>= g_log_level) THEN
127166 trace
127167 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127168 ,p_level => C_LEVEL_ERROR
127169 ,p_module => l_log_module);
127170 END IF;
127171 END IF;
127172 END IF;
127173 --
127174 --
127175 ------------------------------------------------------------------------------------------------
127176 -- 4219869 Business Flow
127177 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
127178 -- Prior Entry. Currently, the following code is always generated.
127179 ------------------------------------------------------------------------------------------------
127180 XLA_AE_LINES_PKG.ValidateCurrentLine;
127181
127182 ------------------------------------------------------------------------------------
127183 -- 4219869 Business Flow
127184 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
127185 ------------------------------------------------------------------------------------
127186 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127187
127188 ----------------------------------------------------------------------------------
127189 -- 4219869 Business Flow
127190 -- Update journal entry status -- Need to generate this within IF <condition>
127191 ----------------------------------------------------------------------------------
127192 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127193 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
127194 ,p_balance_type_code => l_balance_type_code
127195 );
127196
127197 -------------------------------------------------------------------------------------------
127198 -- 4262811 - Generate the Accrual Reversal lines
127199 -------------------------------------------------------------------------------------------
127200 BEGIN
127201 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
127202 (g_array_event(p_event_id).array_value_num('header_index'));
127203 IF l_acc_rev_flag IS NULL THEN
127204 l_acc_rev_flag := 'N';
127205 END IF;
127206 EXCEPTION
127207 WHEN OTHERS THEN
127208 l_acc_rev_flag := 'N';
127209 END;
127210 --
127211 IF (l_acc_rev_flag = 'Y') THEN
127212
127213 -- 4645092 ------------------------------------------------------------------------------
127214 -- To allow MPA report to determine if it should generate report process
127215 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
127216 ------------------------------------------------------------------------------------------
127217
127218 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
127219 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
127220 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
127221 -- call ADRs
127222 -- Bug 4922099
127223 --
127224 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127225 (NVL(l_actual_upg_option, 'N') = 'O') OR
127226 (NVL(l_enc_upg_option, 'N') = 'O')
127227 )
127228 THEN
127229 NULL;
127230 --
127231 --
127232
127233 l_ccid := AcctDerRule_4(
127234 p_application_id => p_application_id
127235 , p_ae_header_id => l_ae_header_id
127236 , p_source_4 => p_source_4
127237 , x_transaction_coa_id => l_adr_transaction_coa_id
127238 , x_accounting_coa_id => l_adr_accounting_coa_id
127239 , x_value_type_code => l_adr_value_type_code
127240 , p_side => 'NA'
127241 );
127242
127243 xla_ae_lines_pkg.set_ccid(
127244 p_code_combination_id => l_ccid
127245 , p_value_type_code => l_adr_value_type_code
127246 , p_transaction_coa_id => l_adr_transaction_coa_id
127247 , p_accounting_coa_id => l_adr_accounting_coa_id
127248 , p_adr_code => 'CST_DEFAULT'
127249 , p_adr_type_code => 'S'
127250 , p_component_type => l_component_type
127251 , p_component_code => l_component_code
127252 , p_component_type_code => l_component_type_code
127253 , p_component_appl_id => l_component_appl_id
127254 , p_amb_context_code => l_amb_context_code
127255 , p_side => 'NA'
127256 );
127257
127258
127259 --
127260 --
127261 END IF;
127262
127263 --
127264 -- Update the line information that should be overwritten
127265 --
127266 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
127267 p_header_num => 1);
127268 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
127269
127270 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
127271
127272 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
127273 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
127274 END IF;
127275
127276 --
127277 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
127278 --
127279 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
127280 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
127281 ELSE
127282 ---------------------------------------------------------------------------------------------------
127283 -- 4262811a Switch Sign
127284 ---------------------------------------------------------------------------------------------------
127285 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
127286 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127287 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127288 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127289 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127290 -- 5132302
127291 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
127292 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127293
127294 END IF;
127295
127296 -- 4955764
127297 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127298 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
127299
127300
127301 XLA_AE_LINES_PKG.ValidateCurrentLine;
127302 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127303
127304 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127305 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
127306 ,p_balance_type_code => l_balance_type_code);
127307
127308 END IF;
127309
127310 -----------------------------------------------------------------------------------------
127311 -- 4262811 Multiperiod Accounting
127312 -----------------------------------------------------------------------------------------
127313 -- No MPA option is assigned.
127314
127315
127316 END IF;
127317 END IF;
127318 --
127319
127320 --
127321 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127322 trace
127323 (p_msg => 'END of AcctLineType_230'
127324 ,p_level => C_LEVEL_PROCEDURE
127325 ,p_module => l_log_module);
127326 END IF;
127327 --
127328 EXCEPTION
127329 WHEN xla_exceptions_pkg.application_exception THEN
127330 RAISE;
127331 WHEN OTHERS THEN
127332 xla_exceptions_pkg.raise_message
127333 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_230');
127334 END AcctLineType_230;
127335 --
127336
127337 ---------------------------------------
127338 --
127339 -- PRIVATE FUNCTION
127340 -- AcctLineType_231
127341 --
127342 ---------------------------------------
127343 PROCEDURE AcctLineType_231 (
127344 p_application_id IN NUMBER
127345 ,p_event_id IN NUMBER
127346 ,p_calculate_acctd_flag IN VARCHAR2
127347 ,p_calculate_g_l_flag IN VARCHAR2
127348 ,p_actual_flag IN OUT VARCHAR2
127349 ,p_balance_type_code OUT VARCHAR2
127350 ,p_gain_or_loss_ref OUT VARCHAR2
127351
127352 --Cost Management Default Account
127353 , p_source_4 IN NUMBER
127354 --Receiving Accounting Line Type
127355 , p_source_5 IN VARCHAR2
127356 --DISTRIBUTION_IDENTIFIER
127357 , p_source_11 IN NUMBER
127358 --Distribution Type
127359 , p_source_12 IN VARCHAR2
127360 , p_source_12_meaning IN VARCHAR2
127361 --Entered Amount
127362 , p_source_18 IN NUMBER
127363 --Accounted Amount
127364 , p_source_22 IN NUMBER
127365 --Entered Currency Code
127366 , p_source_32 IN VARCHAR2
127367 --Currency Conversion Date
127368 , p_source_33 IN DATE
127369 --Currency Conversion Rate
127370 , p_source_34 IN NUMBER
127371 )
127372 IS
127373
127374 l_component_type VARCHAR2(80);
127375 l_component_code VARCHAR2(30);
127376 l_component_type_code VARCHAR2(1);
127377 l_component_appl_id INTEGER;
127378 l_amb_context_code VARCHAR2(30);
127379 l_entity_code VARCHAR2(30);
127380 l_event_class_code VARCHAR2(30);
127381 l_ae_header_id NUMBER;
127382 l_event_type_code VARCHAR2(30);
127383 l_line_definition_code VARCHAR2(30);
127384 l_line_definition_owner_code VARCHAR2(1);
127385 --
127386 -- adr variables
127387 l_segment VARCHAR2(30);
127388 l_ccid NUMBER;
127389 l_adr_transaction_coa_id NUMBER;
127390 l_adr_accounting_coa_id NUMBER;
127391 l_adr_flexfield_segment_code VARCHAR2(30);
127392 l_adr_flex_value_set_id NUMBER;
127393 l_adr_value_type_code VARCHAR2(30);
127394 l_adr_value_combination_id NUMBER;
127395 l_adr_value_segment_code VARCHAR2(30);
127396
127397 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
127398 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
127399 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
127400 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
127401
127402 -- 4262811 Variables ------------------------------------------------------------------------------------------
127403 l_entered_amt_idx NUMBER;
127404 l_accted_amt_idx NUMBER;
127405 l_acc_rev_flag VARCHAR2(1);
127406 l_accrual_line_num NUMBER;
127407 l_tmp_amt NUMBER;
127408 l_acc_rev_natural_side_code VARCHAR2(1);
127409
127410 l_num_entries NUMBER;
127411 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
127412 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
127413 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
127414 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
127415 l_recog_line_1 NUMBER;
127416 l_recog_line_2 NUMBER;
127417
127418 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
127419 l_bflow_applied_to_amt NUMBER; -- 5132302
127420 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
127421
127422 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
127423
127424 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
127425 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
127426
127427 ---------------------------------------------------------------------------------------------------------------
127428
127429
127430 --
127431 -- bulk performance
127432 --
127433 l_balance_type_code VARCHAR2(1);
127434 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
127435 l_log_module VARCHAR2(240);
127436
127437 --
127438 -- Upgrade strategy
127439 --
127440 l_actual_upg_option VARCHAR2(1);
127441 l_enc_upg_option VARCHAR2(1);
127442
127443 --
127444 BEGIN
127445 --
127446 IF g_log_enabled THEN
127447 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_231';
127448 END IF;
127449 --
127450 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127451
127452 trace
127453 (p_msg => 'BEGIN of AcctLineType_231'
127454 ,p_level => C_LEVEL_PROCEDURE
127455 ,p_module => l_log_module);
127456
127457 END IF;
127458 --
127459 l_component_type := 'AMB_JLT';
127460 l_component_code := 'PURCHASE_PRICE_VARIANCE';
127461 l_component_type_code := 'S';
127462 l_component_appl_id := 707;
127463 l_amb_context_code := 'DEFAULT';
127464 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
127465 l_event_class_code := 'LDD_COST_ADJ_DEL';
127466 l_event_type_code := 'LDD_COST_ADJ_DEL_ALL';
127467 l_line_definition_owner_code := 'S';
127468 l_line_definition_code := 'LDD_COST_ADJ_DEL';
127469 --
127470 l_balance_type_code := 'A';
127471 l_segment := NULL;
127472 l_ccid := NULL;
127473 l_adr_transaction_coa_id := NULL;
127474 l_adr_accounting_coa_id := NULL;
127475 l_adr_flexfield_segment_code := NULL;
127476 l_adr_flex_value_set_id := NULL;
127477 l_adr_value_type_code := NULL;
127478 l_adr_value_combination_id := NULL;
127479 l_adr_value_segment_code := NULL;
127480
127481 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
127482 l_bflow_class_code := ''; -- 4219869 Business Flow
127483 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
127484 l_budgetary_control_flag := 'N';
127485
127486 l_bflow_applied_to_amt_idx := NULL; -- 5132302
127487 l_bflow_applied_to_amt := NULL; -- 5132302
127488 l_entered_amt_idx := NULL; -- 4262811
127489 l_accted_amt_idx := NULL; -- 4262811
127490 l_acc_rev_flag := NULL; -- 4262811
127491 l_accrual_line_num := NULL; -- 4262811
127492 l_tmp_amt := NULL; -- 4262811
127493 --
127494
127495 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
127496 l_balance_type_code <> 'B' THEN
127497 IF NVL(p_source_5,'
127498 ') = 'Purchase Price Variance'
127499 THEN
127500
127501 --
127502 XLA_AE_LINES_PKG.SetNewLine;
127503
127504 p_balance_type_code := l_balance_type_code;
127505 -- set the flag so later we will know whether the gain loss line needs to be created
127506
127507 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
127508 p_actual_flag :='A';
127509 END IF;
127510
127511 --
127512 -- bulk performance
127513 --
127514 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
127515 p_header_num => 0); -- 4262811
127516 --
127517 -- set accounting line options
127518 --
127519 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
127520 p_natural_side_code => 'D'
127521 , p_gain_or_loss_flag => 'N'
127522 , p_gl_transfer_mode_code => 'S'
127523 , p_acct_entry_type_code => 'A'
127524 , p_switch_side_flag => 'Y'
127525 , p_merge_duplicate_code => 'N'
127526 );
127527 --
127528 l_acc_rev_natural_side_code := 'C'; -- 4262811
127529 --
127530 --
127531 -- set accounting line type info
127532 --
127533 xla_ae_lines_pkg.SetAcctLineType
127534 (p_component_type => l_component_type
127535 ,p_event_type_code => l_event_type_code
127536 ,p_line_definition_owner_code => l_line_definition_owner_code
127537 ,p_line_definition_code => l_line_definition_code
127538 ,p_accounting_line_code => l_component_code
127539 ,p_accounting_line_type_code => l_component_type_code
127540 ,p_accounting_line_appl_id => l_component_appl_id
127541 ,p_amb_context_code => l_amb_context_code
127542 ,p_entity_code => l_entity_code
127543 ,p_event_class_code => l_event_class_code);
127544 --
127545 -- set accounting class
127546 --
127547 xla_ae_lines_pkg.SetAcctClass(
127548 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
127549 , p_ae_header_id => l_ae_header_id
127550 );
127551
127552 --
127553 -- set rounding class
127554 --
127555 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
127556 'PURCHASE_PRICE_VARIANCE';
127557
127558 --
127559 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
127560 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
127561 --
127562 -- bulk performance
127563 --
127564 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
127565
127566 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
127567 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
127568
127569 -- 4955764
127570 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127571 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
127572
127573 -- 4458381 Public Sector Enh
127574
127575 --
127576 -- set accounting attributes for the line type
127577 --
127578 l_entered_amt_idx := 3;
127579 l_accted_amt_idx := 7;
127580 l_bflow_applied_to_amt_idx := NULL; -- 5132302
127581 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
127582 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
127583 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
127584 l_rec_acct_attrs.array_char_value(2) := p_source_12;
127585 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
127586 l_rec_acct_attrs.array_num_value(3) := p_source_18;
127587 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
127588 l_rec_acct_attrs.array_char_value(4) := p_source_32;
127589 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
127590 l_rec_acct_attrs.array_date_value(5) := p_source_33;
127591 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
127592 l_rec_acct_attrs.array_num_value(6) := p_source_34;
127593 l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
127594 l_rec_acct_attrs.array_num_value(7) := p_source_22;
127595
127596 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
127597 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
127598
127599 ---------------------------------------------------------------------------------------------------------------
127600 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
127601 ---------------------------------------------------------------------------------------------------------------
127602 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
127603
127604 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127605 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
127606
127607 IF xla_accounting_cache_pkg.GetValueChar
127608 (p_source_code => 'LEDGER_CATEGORY_CODE'
127609 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
127610 AND l_bflow_method_code = 'PRIOR_ENTRY'
127611 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
127612 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
127613 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
127614 )
127615 THEN
127616 xla_ae_lines_pkg.BflowUpgEntry
127617 (p_business_method_code => l_bflow_method_code
127618 ,p_business_class_code => l_bflow_class_code
127619 ,p_balance_type => l_balance_type_code);
127620 ELSE
127621 NULL;
127622 -- No business flow processing for business flow method of NONE.
127623 END IF;
127624
127625 --
127626 -- call analytical criteria
127627 --
127628
127629 --
127630 -- call description
127631 --
127632 -- No description or it is inherited.
127633 --
127634 -- call ADRs
127635 -- Bug 4922099
127636 --
127637 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127638 (NVL(l_actual_upg_option, 'N') = 'O') OR
127639 (NVL(l_enc_upg_option, 'N') = 'O')
127640 )
127641 THEN
127642 NULL;
127643 --
127644 --
127645
127646 l_ccid := AcctDerRule_4(
127647 p_application_id => p_application_id
127648 , p_ae_header_id => l_ae_header_id
127649 , p_source_4 => p_source_4
127650 , x_transaction_coa_id => l_adr_transaction_coa_id
127651 , x_accounting_coa_id => l_adr_accounting_coa_id
127652 , x_value_type_code => l_adr_value_type_code
127653 , p_side => 'NA'
127654 );
127655
127656 xla_ae_lines_pkg.set_ccid(
127657 p_code_combination_id => l_ccid
127658 , p_value_type_code => l_adr_value_type_code
127659 , p_transaction_coa_id => l_adr_transaction_coa_id
127660 , p_accounting_coa_id => l_adr_accounting_coa_id
127661 , p_adr_code => 'CST_DEFAULT'
127662 , p_adr_type_code => 'S'
127663 , p_component_type => l_component_type
127664 , p_component_code => l_component_code
127665 , p_component_type_code => l_component_type_code
127666 , p_component_appl_id => l_component_appl_id
127667 , p_amb_context_code => l_amb_context_code
127668 , p_side => 'NA'
127669 );
127670
127671
127672 --
127673 --
127674 END IF;
127675 --
127676 -- Bug 4922099
127677 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
127678 (NVL(l_enc_upg_option, 'N') = 'O')
127679 ) AND
127680 (l_bflow_method_code = 'PRIOR_ENTRY')
127681 )
127682 THEN
127683 IF
127684 --
127685 1 = 2
127686 --
127687 THEN
127688 xla_accounting_err_pkg.build_message
127689 (p_appli_s_name => 'XLA'
127690 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127691 ,p_token_1 => 'LINE_NUMBER'
127692 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
127693 ,p_token_2 => 'LINE_TYPE_NAME'
127694 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
127695 l_component_type
127696 ,l_component_code
127697 ,l_component_type_code
127698 ,l_component_appl_id
127699 ,l_amb_context_code
127700 ,l_entity_code
127701 ,l_event_class_code
127702 )
127703 ,p_token_3 => 'OWNER'
127704 ,p_value_3 => xla_lookups_pkg.get_meaning(
127705 p_lookup_type => 'XLA_OWNER_TYPE'
127706 ,p_lookup_code => l_component_type_code
127707 )
127708 ,p_token_4 => 'PRODUCT_NAME'
127709 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
127710 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
127711 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
127712 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
127713 ,p_ae_header_id => NULL
127714 );
127715
127716 IF (C_LEVEL_ERROR>= g_log_level) THEN
127717 trace
127718 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
127719 ,p_level => C_LEVEL_ERROR
127720 ,p_module => l_log_module);
127721 END IF;
127722 END IF;
127723 END IF;
127724 --
127725 --
127726 ------------------------------------------------------------------------------------------------
127727 -- 4219869 Business Flow
127728 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
127729 -- Prior Entry. Currently, the following code is always generated.
127730 ------------------------------------------------------------------------------------------------
127731 XLA_AE_LINES_PKG.ValidateCurrentLine;
127732
127733 ------------------------------------------------------------------------------------
127734 -- 4219869 Business Flow
127735 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
127736 ------------------------------------------------------------------------------------
127737 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127738
127739 ----------------------------------------------------------------------------------
127740 -- 4219869 Business Flow
127741 -- Update journal entry status -- Need to generate this within IF <condition>
127742 ----------------------------------------------------------------------------------
127743 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127744 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
127745 ,p_balance_type_code => l_balance_type_code
127746 );
127747
127748 -------------------------------------------------------------------------------------------
127749 -- 4262811 - Generate the Accrual Reversal lines
127750 -------------------------------------------------------------------------------------------
127751 BEGIN
127752 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
127753 (g_array_event(p_event_id).array_value_num('header_index'));
127754 IF l_acc_rev_flag IS NULL THEN
127755 l_acc_rev_flag := 'N';
127756 END IF;
127757 EXCEPTION
127758 WHEN OTHERS THEN
127759 l_acc_rev_flag := 'N';
127760 END;
127761 --
127762 IF (l_acc_rev_flag = 'Y') THEN
127763
127764 -- 4645092 ------------------------------------------------------------------------------
127765 -- To allow MPA report to determine if it should generate report process
127766 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
127767 ------------------------------------------------------------------------------------------
127768
127769 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
127770 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
127771 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
127772 -- call ADRs
127773 -- Bug 4922099
127774 --
127775 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
127776 (NVL(l_actual_upg_option, 'N') = 'O') OR
127777 (NVL(l_enc_upg_option, 'N') = 'O')
127778 )
127779 THEN
127780 NULL;
127781 --
127782 --
127783
127784 l_ccid := AcctDerRule_4(
127785 p_application_id => p_application_id
127786 , p_ae_header_id => l_ae_header_id
127787 , p_source_4 => p_source_4
127788 , x_transaction_coa_id => l_adr_transaction_coa_id
127789 , x_accounting_coa_id => l_adr_accounting_coa_id
127790 , x_value_type_code => l_adr_value_type_code
127791 , p_side => 'NA'
127792 );
127793
127794 xla_ae_lines_pkg.set_ccid(
127795 p_code_combination_id => l_ccid
127796 , p_value_type_code => l_adr_value_type_code
127797 , p_transaction_coa_id => l_adr_transaction_coa_id
127798 , p_accounting_coa_id => l_adr_accounting_coa_id
127799 , p_adr_code => 'CST_DEFAULT'
127800 , p_adr_type_code => 'S'
127801 , p_component_type => l_component_type
127802 , p_component_code => l_component_code
127803 , p_component_type_code => l_component_type_code
127804 , p_component_appl_id => l_component_appl_id
127805 , p_amb_context_code => l_amb_context_code
127806 , p_side => 'NA'
127807 );
127808
127809
127810 --
127811 --
127812 END IF;
127813
127814 --
127815 -- Update the line information that should be overwritten
127816 --
127817 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
127818 p_header_num => 1);
127819 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
127820
127821 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
127822
127823 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
127824 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
127825 END IF;
127826
127827 --
127828 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
127829 --
127830 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
127831 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
127832 ELSE
127833 ---------------------------------------------------------------------------------------------------
127834 -- 4262811a Switch Sign
127835 ---------------------------------------------------------------------------------------------------
127836 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
127837 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127838 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127839 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
127840 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127841 -- 5132302
127842 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
127843 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
127844
127845 END IF;
127846
127847 -- 4955764
127848 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
127849 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
127850
127851
127852 XLA_AE_LINES_PKG.ValidateCurrentLine;
127853 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
127854
127855 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
127856 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
127857 ,p_balance_type_code => l_balance_type_code);
127858
127859 END IF;
127860
127861 -----------------------------------------------------------------------------------------
127862 -- 4262811 Multiperiod Accounting
127863 -----------------------------------------------------------------------------------------
127864 -- No MPA option is assigned.
127865
127866
127867 END IF;
127868 END IF;
127869 --
127870
127871 --
127872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
127873 trace
127874 (p_msg => 'END of AcctLineType_231'
127875 ,p_level => C_LEVEL_PROCEDURE
127876 ,p_module => l_log_module);
127877 END IF;
127878 --
127879 EXCEPTION
127880 WHEN xla_exceptions_pkg.application_exception THEN
127881 RAISE;
127882 WHEN OTHERS THEN
127883 xla_exceptions_pkg.raise_message
127884 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_231');
127885 END AcctLineType_231;
127886 --
127887
127888 ---------------------------------------
127889 --
127890 -- PRIVATE FUNCTION
127891 -- AcctLineType_232
127892 --
127893 ---------------------------------------
127894 PROCEDURE AcctLineType_232 (
127895 p_application_id IN NUMBER
127896 ,p_event_id IN NUMBER
127897 ,p_calculate_acctd_flag IN VARCHAR2
127898 ,p_calculate_g_l_flag IN VARCHAR2
127899 ,p_actual_flag IN OUT VARCHAR2
127900 ,p_balance_type_code OUT VARCHAR2
127901 ,p_gain_or_loss_ref OUT VARCHAR2
127902
127903 --Cost Management Default Account
127904 , p_source_4 IN NUMBER
127905 --Applied to Application ID
127906 , p_source_6 IN NUMBER
127907 --Applied to Distribution Link Type
127908 , p_source_7 IN VARCHAR2
127909 --Applied to Entity Code
127910 , p_source_8 IN VARCHAR2
127911 --Applied To Purchase Document Identifier
127912 , p_source_10 IN NUMBER
127913 --DISTRIBUTION_IDENTIFIER
127914 , p_source_11 IN NUMBER
127915 --Distribution Type
127916 , p_source_12 IN VARCHAR2
127917 , p_source_12_meaning IN VARCHAR2
127918 --PO Budget Account
127919 , p_source_13 IN NUMBER
127920 --Encumbrance Reversal Amount Entered
127921 , p_source_14 IN NUMBER
127922 --Entered Currency Code
127923 , p_source_15 IN VARCHAR2
127924 --Transaction Encumbrance Reversal Amount
127925 , p_source_16 IN NUMBER
127926 --Entered Amount
127927 , p_source_18 IN NUMBER
127928 --Currency Conversion Date
127929 , p_source_19 IN DATE
127930 --Currency Conversion Rate
127931 , p_source_20 IN NUMBER
127932 --Currency Conversion Type
127933 , p_source_21 IN VARCHAR2
127934 --Accounted Amount
127935 , p_source_22 IN NUMBER
127936 --Purchasing Encumbrance Type Identifier
127937 , p_source_23 IN NUMBER
127938 --Accounting Line Type
127939 , p_source_24 IN NUMBER
127940 --Costing Encumbrance Upgrade Option
127941 , p_source_27 IN VARCHAR2
127942 --TXN_PO_DISTRIBUTION_ID
127943 , p_source_28 IN NUMBER
127944 )
127945 IS
127946
127947 l_component_type VARCHAR2(80);
127948 l_component_code VARCHAR2(30);
127949 l_component_type_code VARCHAR2(1);
127950 l_component_appl_id INTEGER;
127951 l_amb_context_code VARCHAR2(30);
127952 l_entity_code VARCHAR2(30);
127953 l_event_class_code VARCHAR2(30);
127954 l_ae_header_id NUMBER;
127955 l_event_type_code VARCHAR2(30);
127956 l_line_definition_code VARCHAR2(30);
127957 l_line_definition_owner_code VARCHAR2(1);
127958 --
127959 -- adr variables
127960 l_segment VARCHAR2(30);
127961 l_ccid NUMBER;
127962 l_adr_transaction_coa_id NUMBER;
127963 l_adr_accounting_coa_id NUMBER;
127964 l_adr_flexfield_segment_code VARCHAR2(30);
127965 l_adr_flex_value_set_id NUMBER;
127966 l_adr_value_type_code VARCHAR2(30);
127967 l_adr_value_combination_id NUMBER;
127968 l_adr_value_segment_code VARCHAR2(30);
127969
127970 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
127971 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
127972 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
127973 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
127974
127975 -- 4262811 Variables ------------------------------------------------------------------------------------------
127976 l_entered_amt_idx NUMBER;
127977 l_accted_amt_idx NUMBER;
127978 l_acc_rev_flag VARCHAR2(1);
127979 l_accrual_line_num NUMBER;
127980 l_tmp_amt NUMBER;
127981 l_acc_rev_natural_side_code VARCHAR2(1);
127982
127983 l_num_entries NUMBER;
127984 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
127985 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
127986 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
127987 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
127988 l_recog_line_1 NUMBER;
127989 l_recog_line_2 NUMBER;
127990
127991 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
127992 l_bflow_applied_to_amt NUMBER; -- 5132302
127993 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
127994
127995 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
127996
127997 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
127998 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
127999
128000 ---------------------------------------------------------------------------------------------------------------
128001
128002
128003 --
128004 -- bulk performance
128005 --
128006 l_balance_type_code VARCHAR2(1);
128007 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
128008 l_log_module VARCHAR2(240);
128009
128010 --
128011 -- Upgrade strategy
128012 --
128013 l_actual_upg_option VARCHAR2(1);
128014 l_enc_upg_option VARCHAR2(1);
128015
128016 --
128017 BEGIN
128018 --
128019 IF g_log_enabled THEN
128020 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_232';
128021 END IF;
128022 --
128023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128024
128025 trace
128026 (p_msg => 'BEGIN of AcctLineType_232'
128027 ,p_level => C_LEVEL_PROCEDURE
128028 ,p_module => l_log_module);
128029
128030 END IF;
128031 --
128032 l_component_type := 'AMB_JLT';
128033 l_component_code := 'PURCHASE_PRICE_VARIANCE';
128034 l_component_type_code := 'S';
128035 l_component_appl_id := 707;
128036 l_amb_context_code := 'DEFAULT';
128037 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
128038 l_event_class_code := 'PURCHASE_ORDER';
128039 l_event_type_code := 'PURCHASE_ORDER_ALL';
128040 l_line_definition_owner_code := 'S';
128041 l_line_definition_code := 'PURCHASE_ORDER';
128042 --
128043 l_balance_type_code := 'A';
128044 l_segment := NULL;
128045 l_ccid := NULL;
128046 l_adr_transaction_coa_id := NULL;
128047 l_adr_accounting_coa_id := NULL;
128048 l_adr_flexfield_segment_code := NULL;
128049 l_adr_flex_value_set_id := NULL;
128050 l_adr_value_type_code := NULL;
128051 l_adr_value_combination_id := NULL;
128052 l_adr_value_segment_code := NULL;
128053
128054 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
128055 l_bflow_class_code := ''; -- 4219869 Business Flow
128056 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
128057 l_budgetary_control_flag := 'N';
128058
128059 l_bflow_applied_to_amt_idx := NULL; -- 5132302
128060 l_bflow_applied_to_amt := NULL; -- 5132302
128061 l_entered_amt_idx := NULL; -- 4262811
128062 l_accted_amt_idx := NULL; -- 4262811
128063 l_acc_rev_flag := NULL; -- 4262811
128064 l_accrual_line_num := NULL; -- 4262811
128065 l_tmp_amt := NULL; -- 4262811
128066 --
128067
128068 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
128069 l_balance_type_code <> 'B' THEN
128070 IF NVL(p_source_24,9E125) = 6
128071 THEN
128072
128073 --
128074 XLA_AE_LINES_PKG.SetNewLine;
128075
128076 p_balance_type_code := l_balance_type_code;
128077 -- set the flag so later we will know whether the gain loss line needs to be created
128078
128079 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
128080 p_actual_flag :='A';
128081 END IF;
128082
128083 --
128084 -- bulk performance
128085 --
128086 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
128087 p_header_num => 0); -- 4262811
128088 --
128089 -- set accounting line options
128090 --
128091 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
128092 p_natural_side_code => 'D'
128093 , p_gain_or_loss_flag => 'N'
128094 , p_gl_transfer_mode_code => 'S'
128095 , p_acct_entry_type_code => 'A'
128096 , p_switch_side_flag => 'Y'
128097 , p_merge_duplicate_code => 'N'
128098 );
128099 --
128100 l_acc_rev_natural_side_code := 'C'; -- 4262811
128101 --
128102 --
128103 -- set accounting line type info
128104 --
128105 xla_ae_lines_pkg.SetAcctLineType
128106 (p_component_type => l_component_type
128107 ,p_event_type_code => l_event_type_code
128108 ,p_line_definition_owner_code => l_line_definition_owner_code
128109 ,p_line_definition_code => l_line_definition_code
128110 ,p_accounting_line_code => l_component_code
128111 ,p_accounting_line_type_code => l_component_type_code
128112 ,p_accounting_line_appl_id => l_component_appl_id
128113 ,p_amb_context_code => l_amb_context_code
128114 ,p_entity_code => l_entity_code
128115 ,p_event_class_code => l_event_class_code);
128116 --
128117 -- set accounting class
128118 --
128119 xla_ae_lines_pkg.SetAcctClass(
128120 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
128121 , p_ae_header_id => l_ae_header_id
128122 );
128123
128124 --
128125 -- set rounding class
128126 --
128127 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
128128 'PURCHASE_PRICE_VARIANCE';
128129
128130 --
128131 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
128132 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
128133 --
128134 -- bulk performance
128135 --
128136 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
128137
128138 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
128139 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
128140
128141 -- 4955764
128142 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128143 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
128144
128145 -- 4458381 Public Sector Enh
128146
128147 --
128148 -- set accounting attributes for the line type
128149 --
128150 l_entered_amt_idx := 17;
128151 l_accted_amt_idx := 22;
128152 l_bflow_applied_to_amt_idx := NULL; -- 5132302
128153 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
128154 l_rec_acct_attrs.array_num_value(1) := p_source_6;
128155 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
128156 l_rec_acct_attrs.array_char_value(2) := p_source_7;
128157 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
128158 l_rec_acct_attrs.array_char_value(3) := p_source_8;
128159 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
128160 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
128161 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
128162 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
128163 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
128164 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
128165 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
128166 l_rec_acct_attrs.array_char_value(7) := p_source_12;
128167 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
128168 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
128169 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
128170 l_rec_acct_attrs.array_num_value(9) := p_source_14;
128171 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
128172 l_rec_acct_attrs.array_char_value(10) := p_source_15;
128173 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
128174 l_rec_acct_attrs.array_num_value(11) := p_source_16;
128175 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
128176 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
128177 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
128178 l_rec_acct_attrs.array_num_value(13) := p_source_14;
128179 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
128180 l_rec_acct_attrs.array_char_value(14) := p_source_15;
128181 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
128182 l_rec_acct_attrs.array_num_value(15) := p_source_16;
128183 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
128184 l_rec_acct_attrs.array_char_value(16) := p_source_27;
128185 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
128186 l_rec_acct_attrs.array_num_value(17) := p_source_18;
128187 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
128188 l_rec_acct_attrs.array_char_value(18) := p_source_15;
128189 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
128190 l_rec_acct_attrs.array_date_value(19) := p_source_19;
128191 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
128192 l_rec_acct_attrs.array_num_value(20) := p_source_20;
128193 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
128194 l_rec_acct_attrs.array_char_value(21) := p_source_21;
128195 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
128196 l_rec_acct_attrs.array_num_value(22) := p_source_22;
128197 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
128198 l_rec_acct_attrs.array_num_value(23) := p_source_23;
128199 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
128200 l_rec_acct_attrs.array_num_value(24) := p_source_23;
128201
128202 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
128203 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
128204
128205 ---------------------------------------------------------------------------------------------------------------
128206 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
128207 ---------------------------------------------------------------------------------------------------------------
128208 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
128209
128210 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128211 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128212
128213 IF xla_accounting_cache_pkg.GetValueChar
128214 (p_source_code => 'LEDGER_CATEGORY_CODE'
128215 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
128216 AND l_bflow_method_code = 'PRIOR_ENTRY'
128217 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
128218 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
128219 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
128220 )
128221 THEN
128222 xla_ae_lines_pkg.BflowUpgEntry
128223 (p_business_method_code => l_bflow_method_code
128224 ,p_business_class_code => l_bflow_class_code
128225 ,p_balance_type => l_balance_type_code);
128226 ELSE
128227 NULL;
128228 -- No business flow processing for business flow method of NONE.
128229 END IF;
128230
128231 --
128232 -- call analytical criteria
128233 --
128234
128235 --
128236 -- call description
128237 --
128238 -- No description or it is inherited.
128239 --
128240 -- call ADRs
128241 -- Bug 4922099
128242 --
128243 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128244 (NVL(l_actual_upg_option, 'N') = 'O') OR
128245 (NVL(l_enc_upg_option, 'N') = 'O')
128246 )
128247 THEN
128248 NULL;
128249 --
128250 --
128251
128252 l_ccid := AcctDerRule_4(
128253 p_application_id => p_application_id
128254 , p_ae_header_id => l_ae_header_id
128255 , p_source_4 => p_source_4
128256 , x_transaction_coa_id => l_adr_transaction_coa_id
128257 , x_accounting_coa_id => l_adr_accounting_coa_id
128258 , x_value_type_code => l_adr_value_type_code
128259 , p_side => 'NA'
128260 );
128261
128262 xla_ae_lines_pkg.set_ccid(
128263 p_code_combination_id => l_ccid
128264 , p_value_type_code => l_adr_value_type_code
128265 , p_transaction_coa_id => l_adr_transaction_coa_id
128266 , p_accounting_coa_id => l_adr_accounting_coa_id
128267 , p_adr_code => 'CST_DEFAULT'
128268 , p_adr_type_code => 'S'
128269 , p_component_type => l_component_type
128270 , p_component_code => l_component_code
128271 , p_component_type_code => l_component_type_code
128272 , p_component_appl_id => l_component_appl_id
128273 , p_amb_context_code => l_amb_context_code
128274 , p_side => 'NA'
128275 );
128276
128277
128278 --
128279 --
128280 END IF;
128281 --
128282 -- Bug 4922099
128283 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
128284 (NVL(l_enc_upg_option, 'N') = 'O')
128285 ) AND
128286 (l_bflow_method_code = 'PRIOR_ENTRY')
128287 )
128288 THEN
128289 IF
128290 --
128291 1 = 2
128292 --
128293 THEN
128294 xla_accounting_err_pkg.build_message
128295 (p_appli_s_name => 'XLA'
128296 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128297 ,p_token_1 => 'LINE_NUMBER'
128298 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
128299 ,p_token_2 => 'LINE_TYPE_NAME'
128300 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
128301 l_component_type
128302 ,l_component_code
128303 ,l_component_type_code
128304 ,l_component_appl_id
128305 ,l_amb_context_code
128306 ,l_entity_code
128307 ,l_event_class_code
128308 )
128309 ,p_token_3 => 'OWNER'
128310 ,p_value_3 => xla_lookups_pkg.get_meaning(
128311 p_lookup_type => 'XLA_OWNER_TYPE'
128312 ,p_lookup_code => l_component_type_code
128313 )
128314 ,p_token_4 => 'PRODUCT_NAME'
128315 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
128316 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
128317 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
128318 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
128319 ,p_ae_header_id => NULL
128320 );
128321
128322 IF (C_LEVEL_ERROR>= g_log_level) THEN
128323 trace
128324 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128325 ,p_level => C_LEVEL_ERROR
128326 ,p_module => l_log_module);
128327 END IF;
128328 END IF;
128329 END IF;
128330 --
128331 --
128332 ------------------------------------------------------------------------------------------------
128333 -- 4219869 Business Flow
128334 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
128335 -- Prior Entry. Currently, the following code is always generated.
128336 ------------------------------------------------------------------------------------------------
128337 XLA_AE_LINES_PKG.ValidateCurrentLine;
128338
128339 ------------------------------------------------------------------------------------
128340 -- 4219869 Business Flow
128341 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
128342 ------------------------------------------------------------------------------------
128343 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128344
128345 ----------------------------------------------------------------------------------
128346 -- 4219869 Business Flow
128347 -- Update journal entry status -- Need to generate this within IF <condition>
128348 ----------------------------------------------------------------------------------
128349 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128350 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
128351 ,p_balance_type_code => l_balance_type_code
128352 );
128353
128354 -------------------------------------------------------------------------------------------
128355 -- 4262811 - Generate the Accrual Reversal lines
128356 -------------------------------------------------------------------------------------------
128357 BEGIN
128358 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
128359 (g_array_event(p_event_id).array_value_num('header_index'));
128360 IF l_acc_rev_flag IS NULL THEN
128361 l_acc_rev_flag := 'N';
128362 END IF;
128363 EXCEPTION
128364 WHEN OTHERS THEN
128365 l_acc_rev_flag := 'N';
128366 END;
128367 --
128368 IF (l_acc_rev_flag = 'Y') THEN
128369
128370 -- 4645092 ------------------------------------------------------------------------------
128371 -- To allow MPA report to determine if it should generate report process
128372 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
128373 ------------------------------------------------------------------------------------------
128374
128375 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
128376 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
128377 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
128378 -- call ADRs
128379 -- Bug 4922099
128380 --
128381 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128382 (NVL(l_actual_upg_option, 'N') = 'O') OR
128383 (NVL(l_enc_upg_option, 'N') = 'O')
128384 )
128385 THEN
128386 NULL;
128387 --
128388 --
128389
128390 l_ccid := AcctDerRule_4(
128391 p_application_id => p_application_id
128392 , p_ae_header_id => l_ae_header_id
128393 , p_source_4 => p_source_4
128394 , x_transaction_coa_id => l_adr_transaction_coa_id
128395 , x_accounting_coa_id => l_adr_accounting_coa_id
128396 , x_value_type_code => l_adr_value_type_code
128397 , p_side => 'NA'
128398 );
128399
128400 xla_ae_lines_pkg.set_ccid(
128401 p_code_combination_id => l_ccid
128402 , p_value_type_code => l_adr_value_type_code
128403 , p_transaction_coa_id => l_adr_transaction_coa_id
128404 , p_accounting_coa_id => l_adr_accounting_coa_id
128405 , p_adr_code => 'CST_DEFAULT'
128406 , p_adr_type_code => 'S'
128407 , p_component_type => l_component_type
128408 , p_component_code => l_component_code
128409 , p_component_type_code => l_component_type_code
128410 , p_component_appl_id => l_component_appl_id
128411 , p_amb_context_code => l_amb_context_code
128412 , p_side => 'NA'
128413 );
128414
128415
128416 --
128417 --
128418 END IF;
128419
128420 --
128421 -- Update the line information that should be overwritten
128422 --
128423 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
128424 p_header_num => 1);
128425 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
128426
128427 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
128428
128429 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
128430 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
128431 END IF;
128432
128433 --
128434 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
128435 --
128436 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
128437 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
128438 ELSE
128439 ---------------------------------------------------------------------------------------------------
128440 -- 4262811a Switch Sign
128441 ---------------------------------------------------------------------------------------------------
128442 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
128443 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128444 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128445 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128446 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128447 -- 5132302
128448 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
128449 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128450
128451 END IF;
128452
128453 -- 4955764
128454 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128455 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
128456
128457
128458 XLA_AE_LINES_PKG.ValidateCurrentLine;
128459 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128460
128461 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128462 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
128463 ,p_balance_type_code => l_balance_type_code);
128464
128465 END IF;
128466
128467 -----------------------------------------------------------------------------------------
128468 -- 4262811 Multiperiod Accounting
128469 -----------------------------------------------------------------------------------------
128470 -- No MPA option is assigned.
128471
128472
128473 END IF;
128474 END IF;
128475 --
128476
128477 --
128478 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128479 trace
128480 (p_msg => 'END of AcctLineType_232'
128481 ,p_level => C_LEVEL_PROCEDURE
128482 ,p_module => l_log_module);
128483 END IF;
128484 --
128485 EXCEPTION
128486 WHEN xla_exceptions_pkg.application_exception THEN
128487 RAISE;
128488 WHEN OTHERS THEN
128489 xla_exceptions_pkg.raise_message
128490 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_232');
128491 END AcctLineType_232;
128492 --
128493
128494 ---------------------------------------
128495 --
128496 -- PRIVATE FUNCTION
128497 -- AcctLineType_233
128498 --
128499 ---------------------------------------
128500 PROCEDURE AcctLineType_233 (
128501 p_application_id IN NUMBER
128502 ,p_event_id IN NUMBER
128503 ,p_calculate_acctd_flag IN VARCHAR2
128504 ,p_calculate_g_l_flag IN VARCHAR2
128505 ,p_actual_flag IN OUT VARCHAR2
128506 ,p_balance_type_code OUT VARCHAR2
128507 ,p_gain_or_loss_ref OUT VARCHAR2
128508
128509 --Cost Management Default Account
128510 , p_source_4 IN NUMBER
128511 --DISTRIBUTION_IDENTIFIER
128512 , p_source_11 IN NUMBER
128513 --Distribution Type
128514 , p_source_12 IN VARCHAR2
128515 , p_source_12_meaning IN VARCHAR2
128516 --Entered Currency Code
128517 , p_source_15 IN VARCHAR2
128518 --Entered Amount
128519 , p_source_18 IN NUMBER
128520 --Currency Conversion Date
128521 , p_source_19 IN DATE
128522 --Currency Conversion Rate
128523 , p_source_20 IN NUMBER
128524 --Currency Conversion Type
128525 , p_source_21 IN VARCHAR2
128526 --Accounted Amount
128527 , p_source_22 IN NUMBER
128528 --Accounting Line Type
128529 , p_source_24 IN NUMBER
128530 )
128531 IS
128532
128533 l_component_type VARCHAR2(80);
128534 l_component_code VARCHAR2(30);
128535 l_component_type_code VARCHAR2(1);
128536 l_component_appl_id INTEGER;
128537 l_amb_context_code VARCHAR2(30);
128538 l_entity_code VARCHAR2(30);
128539 l_event_class_code VARCHAR2(30);
128540 l_ae_header_id NUMBER;
128541 l_event_type_code VARCHAR2(30);
128542 l_line_definition_code VARCHAR2(30);
128543 l_line_definition_owner_code VARCHAR2(1);
128544 --
128545 -- adr variables
128546 l_segment VARCHAR2(30);
128547 l_ccid NUMBER;
128548 l_adr_transaction_coa_id NUMBER;
128549 l_adr_accounting_coa_id NUMBER;
128550 l_adr_flexfield_segment_code VARCHAR2(30);
128551 l_adr_flex_value_set_id NUMBER;
128552 l_adr_value_type_code VARCHAR2(30);
128553 l_adr_value_combination_id NUMBER;
128554 l_adr_value_segment_code VARCHAR2(30);
128555
128556 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
128557 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
128558 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
128559 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
128560
128561 -- 4262811 Variables ------------------------------------------------------------------------------------------
128562 l_entered_amt_idx NUMBER;
128563 l_accted_amt_idx NUMBER;
128564 l_acc_rev_flag VARCHAR2(1);
128565 l_accrual_line_num NUMBER;
128566 l_tmp_amt NUMBER;
128567 l_acc_rev_natural_side_code VARCHAR2(1);
128568
128569 l_num_entries NUMBER;
128570 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
128571 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
128572 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
128573 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
128574 l_recog_line_1 NUMBER;
128575 l_recog_line_2 NUMBER;
128576
128577 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
128578 l_bflow_applied_to_amt NUMBER; -- 5132302
128579 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
128580
128581 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
128582
128583 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
128584 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
128585
128586 ---------------------------------------------------------------------------------------------------------------
128587
128588
128589 --
128590 -- bulk performance
128591 --
128592 l_balance_type_code VARCHAR2(1);
128593 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
128594 l_log_module VARCHAR2(240);
128595
128596 --
128597 -- Upgrade strategy
128598 --
128599 l_actual_upg_option VARCHAR2(1);
128600 l_enc_upg_option VARCHAR2(1);
128601
128602 --
128603 BEGIN
128604 --
128605 IF g_log_enabled THEN
128606 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_233';
128607 END IF;
128608 --
128609 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
128610
128611 trace
128612 (p_msg => 'BEGIN of AcctLineType_233'
128613 ,p_level => C_LEVEL_PROCEDURE
128614 ,p_module => l_log_module);
128615
128616 END IF;
128617 --
128618 l_component_type := 'AMB_JLT';
128619 l_component_code := 'PURCHASE_PRICE_VARIANCE';
128620 l_component_type_code := 'S';
128621 l_component_appl_id := 707;
128622 l_amb_context_code := 'DEFAULT';
128623 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
128624 l_event_class_code := 'USER_DEFINE';
128625 l_event_type_code := 'UDIR_INTERORG_SHIP_TP';
128626 l_line_definition_owner_code := 'S';
128627 l_line_definition_code := 'USER_DIR_INTERORG_SHIP_TP';
128628 --
128629 l_balance_type_code := 'A';
128630 l_segment := NULL;
128631 l_ccid := NULL;
128632 l_adr_transaction_coa_id := NULL;
128633 l_adr_accounting_coa_id := NULL;
128634 l_adr_flexfield_segment_code := NULL;
128635 l_adr_flex_value_set_id := NULL;
128636 l_adr_value_type_code := NULL;
128637 l_adr_value_combination_id := NULL;
128638 l_adr_value_segment_code := NULL;
128639
128640 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
128641 l_bflow_class_code := ''; -- 4219869 Business Flow
128642 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
128643 l_budgetary_control_flag := 'N';
128644
128645 l_bflow_applied_to_amt_idx := NULL; -- 5132302
128646 l_bflow_applied_to_amt := NULL; -- 5132302
128647 l_entered_amt_idx := NULL; -- 4262811
128648 l_accted_amt_idx := NULL; -- 4262811
128649 l_acc_rev_flag := NULL; -- 4262811
128650 l_accrual_line_num := NULL; -- 4262811
128651 l_tmp_amt := NULL; -- 4262811
128652 --
128653
128654 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
128655 l_balance_type_code <> 'B' THEN
128656 IF NVL(p_source_24,9E125) = 6
128657 THEN
128658
128659 --
128660 XLA_AE_LINES_PKG.SetNewLine;
128661
128662 p_balance_type_code := l_balance_type_code;
128663 -- set the flag so later we will know whether the gain loss line needs to be created
128664
128665 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
128666 p_actual_flag :='A';
128667 END IF;
128668
128669 --
128670 -- bulk performance
128671 --
128672 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
128673 p_header_num => 0); -- 4262811
128674 --
128675 -- set accounting line options
128676 --
128677 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
128678 p_natural_side_code => 'D'
128679 , p_gain_or_loss_flag => 'N'
128680 , p_gl_transfer_mode_code => 'S'
128681 , p_acct_entry_type_code => 'A'
128682 , p_switch_side_flag => 'Y'
128683 , p_merge_duplicate_code => 'N'
128684 );
128685 --
128686 l_acc_rev_natural_side_code := 'C'; -- 4262811
128687 --
128688 --
128689 -- set accounting line type info
128690 --
128691 xla_ae_lines_pkg.SetAcctLineType
128692 (p_component_type => l_component_type
128693 ,p_event_type_code => l_event_type_code
128694 ,p_line_definition_owner_code => l_line_definition_owner_code
128695 ,p_line_definition_code => l_line_definition_code
128696 ,p_accounting_line_code => l_component_code
128697 ,p_accounting_line_type_code => l_component_type_code
128698 ,p_accounting_line_appl_id => l_component_appl_id
128699 ,p_amb_context_code => l_amb_context_code
128700 ,p_entity_code => l_entity_code
128701 ,p_event_class_code => l_event_class_code);
128702 --
128703 -- set accounting class
128704 --
128705 xla_ae_lines_pkg.SetAcctClass(
128706 p_accounting_class_code => 'PURCHASE_PRICE_VARIANCE'
128707 , p_ae_header_id => l_ae_header_id
128708 );
128709
128710 --
128711 -- set rounding class
128712 --
128713 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
128714 'PURCHASE_PRICE_VARIANCE';
128715
128716 --
128717 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
128718 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
128719 --
128720 -- bulk performance
128721 --
128722 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
128723
128724 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
128725 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
128726
128727 -- 4955764
128728 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
128729 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
128730
128731 -- 4458381 Public Sector Enh
128732
128733 --
128734 -- set accounting attributes for the line type
128735 --
128736 l_entered_amt_idx := 3;
128737 l_accted_amt_idx := 8;
128738 l_bflow_applied_to_amt_idx := NULL; -- 5132302
128739 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
128740 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
128741 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
128742 l_rec_acct_attrs.array_char_value(2) := p_source_12;
128743 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
128744 l_rec_acct_attrs.array_num_value(3) := p_source_18;
128745 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
128746 l_rec_acct_attrs.array_char_value(4) := p_source_15;
128747 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
128748 l_rec_acct_attrs.array_date_value(5) := p_source_19;
128749 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
128750 l_rec_acct_attrs.array_num_value(6) := p_source_20;
128751 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
128752 l_rec_acct_attrs.array_char_value(7) := p_source_21;
128753 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
128754 l_rec_acct_attrs.array_num_value(8) := p_source_22;
128755
128756 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
128757 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
128758
128759 ---------------------------------------------------------------------------------------------------------------
128760 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
128761 ---------------------------------------------------------------------------------------------------------------
128762 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
128763
128764 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128765 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
128766
128767 IF xla_accounting_cache_pkg.GetValueChar
128768 (p_source_code => 'LEDGER_CATEGORY_CODE'
128769 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
128770 AND l_bflow_method_code = 'PRIOR_ENTRY'
128771 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
128772 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
128773 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
128774 )
128775 THEN
128776 xla_ae_lines_pkg.BflowUpgEntry
128777 (p_business_method_code => l_bflow_method_code
128778 ,p_business_class_code => l_bflow_class_code
128779 ,p_balance_type => l_balance_type_code);
128780 ELSE
128781 NULL;
128782 -- No business flow processing for business flow method of NONE.
128783 END IF;
128784
128785 --
128786 -- call analytical criteria
128787 --
128788
128789 --
128790 -- call description
128791 --
128792 -- No description or it is inherited.
128793 --
128794 -- call ADRs
128795 -- Bug 4922099
128796 --
128797 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128798 (NVL(l_actual_upg_option, 'N') = 'O') OR
128799 (NVL(l_enc_upg_option, 'N') = 'O')
128800 )
128801 THEN
128802 NULL;
128803 --
128804 --
128805
128806 l_ccid := AcctDerRule_4(
128807 p_application_id => p_application_id
128808 , p_ae_header_id => l_ae_header_id
128809 , p_source_4 => p_source_4
128810 , x_transaction_coa_id => l_adr_transaction_coa_id
128811 , x_accounting_coa_id => l_adr_accounting_coa_id
128812 , x_value_type_code => l_adr_value_type_code
128813 , p_side => 'NA'
128814 );
128815
128816 xla_ae_lines_pkg.set_ccid(
128817 p_code_combination_id => l_ccid
128818 , p_value_type_code => l_adr_value_type_code
128819 , p_transaction_coa_id => l_adr_transaction_coa_id
128820 , p_accounting_coa_id => l_adr_accounting_coa_id
128821 , p_adr_code => 'CST_DEFAULT'
128822 , p_adr_type_code => 'S'
128823 , p_component_type => l_component_type
128824 , p_component_code => l_component_code
128825 , p_component_type_code => l_component_type_code
128826 , p_component_appl_id => l_component_appl_id
128827 , p_amb_context_code => l_amb_context_code
128828 , p_side => 'NA'
128829 );
128830
128831
128832 --
128833 --
128834 END IF;
128835 --
128836 -- Bug 4922099
128837 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
128838 (NVL(l_enc_upg_option, 'N') = 'O')
128839 ) AND
128840 (l_bflow_method_code = 'PRIOR_ENTRY')
128841 )
128842 THEN
128843 IF
128844 --
128845 1 = 2
128846 --
128847 THEN
128848 xla_accounting_err_pkg.build_message
128849 (p_appli_s_name => 'XLA'
128850 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128851 ,p_token_1 => 'LINE_NUMBER'
128852 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
128853 ,p_token_2 => 'LINE_TYPE_NAME'
128854 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
128855 l_component_type
128856 ,l_component_code
128857 ,l_component_type_code
128858 ,l_component_appl_id
128859 ,l_amb_context_code
128860 ,l_entity_code
128861 ,l_event_class_code
128862 )
128863 ,p_token_3 => 'OWNER'
128864 ,p_value_3 => xla_lookups_pkg.get_meaning(
128865 p_lookup_type => 'XLA_OWNER_TYPE'
128866 ,p_lookup_code => l_component_type_code
128867 )
128868 ,p_token_4 => 'PRODUCT_NAME'
128869 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
128870 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
128871 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
128872 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
128873 ,p_ae_header_id => NULL
128874 );
128875
128876 IF (C_LEVEL_ERROR>= g_log_level) THEN
128877 trace
128878 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
128879 ,p_level => C_LEVEL_ERROR
128880 ,p_module => l_log_module);
128881 END IF;
128882 END IF;
128883 END IF;
128884 --
128885 --
128886 ------------------------------------------------------------------------------------------------
128887 -- 4219869 Business Flow
128888 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
128889 -- Prior Entry. Currently, the following code is always generated.
128890 ------------------------------------------------------------------------------------------------
128891 XLA_AE_LINES_PKG.ValidateCurrentLine;
128892
128893 ------------------------------------------------------------------------------------
128894 -- 4219869 Business Flow
128895 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
128896 ------------------------------------------------------------------------------------
128897 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
128898
128899 ----------------------------------------------------------------------------------
128900 -- 4219869 Business Flow
128901 -- Update journal entry status -- Need to generate this within IF <condition>
128902 ----------------------------------------------------------------------------------
128903 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
128904 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
128905 ,p_balance_type_code => l_balance_type_code
128906 );
128907
128908 -------------------------------------------------------------------------------------------
128909 -- 4262811 - Generate the Accrual Reversal lines
128910 -------------------------------------------------------------------------------------------
128911 BEGIN
128912 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
128913 (g_array_event(p_event_id).array_value_num('header_index'));
128914 IF l_acc_rev_flag IS NULL THEN
128915 l_acc_rev_flag := 'N';
128916 END IF;
128917 EXCEPTION
128918 WHEN OTHERS THEN
128919 l_acc_rev_flag := 'N';
128920 END;
128921 --
128922 IF (l_acc_rev_flag = 'Y') THEN
128923
128924 -- 4645092 ------------------------------------------------------------------------------
128925 -- To allow MPA report to determine if it should generate report process
128926 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
128927 ------------------------------------------------------------------------------------------
128928
128929 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
128930 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
128931 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
128932 -- call ADRs
128933 -- Bug 4922099
128934 --
128935 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
128936 (NVL(l_actual_upg_option, 'N') = 'O') OR
128937 (NVL(l_enc_upg_option, 'N') = 'O')
128938 )
128939 THEN
128940 NULL;
128941 --
128942 --
128943
128944 l_ccid := AcctDerRule_4(
128945 p_application_id => p_application_id
128946 , p_ae_header_id => l_ae_header_id
128947 , p_source_4 => p_source_4
128948 , x_transaction_coa_id => l_adr_transaction_coa_id
128949 , x_accounting_coa_id => l_adr_accounting_coa_id
128950 , x_value_type_code => l_adr_value_type_code
128951 , p_side => 'NA'
128952 );
128953
128954 xla_ae_lines_pkg.set_ccid(
128955 p_code_combination_id => l_ccid
128956 , p_value_type_code => l_adr_value_type_code
128957 , p_transaction_coa_id => l_adr_transaction_coa_id
128958 , p_accounting_coa_id => l_adr_accounting_coa_id
128959 , p_adr_code => 'CST_DEFAULT'
128960 , p_adr_type_code => 'S'
128961 , p_component_type => l_component_type
128962 , p_component_code => l_component_code
128963 , p_component_type_code => l_component_type_code
128964 , p_component_appl_id => l_component_appl_id
128965 , p_amb_context_code => l_amb_context_code
128966 , p_side => 'NA'
128967 );
128968
128969
128970 --
128971 --
128972 END IF;
128973
128974 --
128975 -- Update the line information that should be overwritten
128976 --
128977 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
128978 p_header_num => 1);
128979 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
128980
128981 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
128982
128983 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
128984 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
128985 END IF;
128986
128987 --
128988 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
128989 --
128990 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
128991 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
128992 ELSE
128993 ---------------------------------------------------------------------------------------------------
128994 -- 4262811a Switch Sign
128995 ---------------------------------------------------------------------------------------------------
128996 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
128997 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
128998 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
128999 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129000 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129001 -- 5132302
129002 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
129003 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129004
129005 END IF;
129006
129007 -- 4955764
129008 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129009 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
129010
129011
129012 XLA_AE_LINES_PKG.ValidateCurrentLine;
129013 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129014
129015 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129016 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
129017 ,p_balance_type_code => l_balance_type_code);
129018
129019 END IF;
129020
129021 -----------------------------------------------------------------------------------------
129022 -- 4262811 Multiperiod Accounting
129023 -----------------------------------------------------------------------------------------
129024 -- No MPA option is assigned.
129025
129026
129027 END IF;
129028 END IF;
129029 --
129030
129031 --
129032 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129033 trace
129034 (p_msg => 'END of AcctLineType_233'
129035 ,p_level => C_LEVEL_PROCEDURE
129036 ,p_module => l_log_module);
129037 END IF;
129038 --
129039 EXCEPTION
129040 WHEN xla_exceptions_pkg.application_exception THEN
129041 RAISE;
129042 WHEN OTHERS THEN
129043 xla_exceptions_pkg.raise_message
129044 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_233');
129045 END AcctLineType_233;
129046 --
129047
129048 ---------------------------------------
129049 --
129050 -- PRIVATE FUNCTION
129051 -- AcctLineType_234
129052 --
129053 ---------------------------------------
129054 PROCEDURE AcctLineType_234 (
129055 p_application_id IN NUMBER
129056 ,p_event_id IN NUMBER
129057 ,p_calculate_acctd_flag IN VARCHAR2
129058 ,p_calculate_g_l_flag IN VARCHAR2
129059 ,p_actual_flag IN OUT VARCHAR2
129060 ,p_balance_type_code OUT VARCHAR2
129061 ,p_gain_or_loss_ref OUT VARCHAR2
129062
129063 --Cost Management Default Account
129064 , p_source_4 IN NUMBER
129065 --DISTRIBUTION_IDENTIFIER
129066 , p_source_11 IN NUMBER
129067 --Distribution Type
129068 , p_source_12 IN VARCHAR2
129069 , p_source_12_meaning IN VARCHAR2
129070 --Entered Currency Code
129071 , p_source_15 IN VARCHAR2
129072 --Entered Amount
129073 , p_source_18 IN NUMBER
129074 --Currency Conversion Date
129075 , p_source_19 IN DATE
129076 --Currency Conversion Rate
129077 , p_source_20 IN NUMBER
129078 --Accounted Amount
129079 , p_source_22 IN NUMBER
129080 --Accounting Line Type
129081 , p_source_24 IN NUMBER
129082 )
129083 IS
129084
129085 l_component_type VARCHAR2(80);
129086 l_component_code VARCHAR2(30);
129087 l_component_type_code VARCHAR2(1);
129088 l_component_appl_id INTEGER;
129089 l_amb_context_code VARCHAR2(30);
129090 l_entity_code VARCHAR2(30);
129091 l_event_class_code VARCHAR2(30);
129092 l_ae_header_id NUMBER;
129093 l_event_type_code VARCHAR2(30);
129094 l_line_definition_code VARCHAR2(30);
129095 l_line_definition_owner_code VARCHAR2(1);
129096 --
129097 -- adr variables
129098 l_segment VARCHAR2(30);
129099 l_ccid NUMBER;
129100 l_adr_transaction_coa_id NUMBER;
129101 l_adr_accounting_coa_id NUMBER;
129102 l_adr_flexfield_segment_code VARCHAR2(30);
129103 l_adr_flex_value_set_id NUMBER;
129104 l_adr_value_type_code VARCHAR2(30);
129105 l_adr_value_combination_id NUMBER;
129106 l_adr_value_segment_code VARCHAR2(30);
129107
129108 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
129109 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
129110 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
129111 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
129112
129113 -- 4262811 Variables ------------------------------------------------------------------------------------------
129114 l_entered_amt_idx NUMBER;
129115 l_accted_amt_idx NUMBER;
129116 l_acc_rev_flag VARCHAR2(1);
129117 l_accrual_line_num NUMBER;
129118 l_tmp_amt NUMBER;
129119 l_acc_rev_natural_side_code VARCHAR2(1);
129120
129121 l_num_entries NUMBER;
129122 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
129123 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
129124 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
129125 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
129126 l_recog_line_1 NUMBER;
129127 l_recog_line_2 NUMBER;
129128
129129 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
129130 l_bflow_applied_to_amt NUMBER; -- 5132302
129131 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
129132
129133 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
129134
129135 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
129136 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
129137
129138 ---------------------------------------------------------------------------------------------------------------
129139
129140
129141 --
129142 -- bulk performance
129143 --
129144 l_balance_type_code VARCHAR2(1);
129145 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
129146 l_log_module VARCHAR2(240);
129147
129148 --
129149 -- Upgrade strategy
129150 --
129151 l_actual_upg_option VARCHAR2(1);
129152 l_enc_upg_option VARCHAR2(1);
129153
129154 --
129155 BEGIN
129156 --
129157 IF g_log_enabled THEN
129158 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_234';
129159 END IF;
129160 --
129161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129162
129163 trace
129164 (p_msg => 'BEGIN of AcctLineType_234'
129165 ,p_level => C_LEVEL_PROCEDURE
129166 ,p_module => l_log_module);
129167
129168 END IF;
129169 --
129170 l_component_type := 'AMB_JLT';
129171 l_component_code := 'RECEIVING_INSPECTION';
129172 l_component_type_code := 'S';
129173 l_component_appl_id := 707;
129174 l_amb_context_code := 'DEFAULT';
129175 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
129176 l_event_class_code := 'OSP';
129177 l_event_type_code := 'OSP_ALL';
129178 l_line_definition_owner_code := 'S';
129179 l_line_definition_code := 'OUTSIDE_PROCESSING';
129180 --
129181 l_balance_type_code := 'A';
129182 l_segment := NULL;
129183 l_ccid := NULL;
129184 l_adr_transaction_coa_id := NULL;
129185 l_adr_accounting_coa_id := NULL;
129186 l_adr_flexfield_segment_code := NULL;
129187 l_adr_flex_value_set_id := NULL;
129188 l_adr_value_type_code := NULL;
129189 l_adr_value_combination_id := NULL;
129190 l_adr_value_segment_code := NULL;
129191
129192 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
129193 l_bflow_class_code := ''; -- 4219869 Business Flow
129194 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
129195 l_budgetary_control_flag := 'N';
129196
129197 l_bflow_applied_to_amt_idx := NULL; -- 5132302
129198 l_bflow_applied_to_amt := NULL; -- 5132302
129199 l_entered_amt_idx := NULL; -- 4262811
129200 l_accted_amt_idx := NULL; -- 4262811
129201 l_acc_rev_flag := NULL; -- 4262811
129202 l_accrual_line_num := NULL; -- 4262811
129203 l_tmp_amt := NULL; -- 4262811
129204 --
129205
129206 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
129207 l_balance_type_code <> 'B' THEN
129208 IF NVL(p_source_24,9E125) = 5
129209 THEN
129210
129211 --
129212 XLA_AE_LINES_PKG.SetNewLine;
129213
129214 p_balance_type_code := l_balance_type_code;
129215 -- set the flag so later we will know whether the gain loss line needs to be created
129216
129217 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
129218 p_actual_flag :='A';
129219 END IF;
129220
129221 --
129222 -- bulk performance
129223 --
129224 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
129225 p_header_num => 0); -- 4262811
129226 --
129227 -- set accounting line options
129228 --
129229 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
129230 p_natural_side_code => 'D'
129231 , p_gain_or_loss_flag => 'N'
129232 , p_gl_transfer_mode_code => 'S'
129233 , p_acct_entry_type_code => 'A'
129234 , p_switch_side_flag => 'Y'
129235 , p_merge_duplicate_code => 'N'
129236 );
129237 --
129238 l_acc_rev_natural_side_code := 'C'; -- 4262811
129239 --
129240 --
129241 -- set accounting line type info
129242 --
129243 xla_ae_lines_pkg.SetAcctLineType
129244 (p_component_type => l_component_type
129245 ,p_event_type_code => l_event_type_code
129246 ,p_line_definition_owner_code => l_line_definition_owner_code
129247 ,p_line_definition_code => l_line_definition_code
129248 ,p_accounting_line_code => l_component_code
129249 ,p_accounting_line_type_code => l_component_type_code
129250 ,p_accounting_line_appl_id => l_component_appl_id
129251 ,p_amb_context_code => l_amb_context_code
129252 ,p_entity_code => l_entity_code
129253 ,p_event_class_code => l_event_class_code);
129254 --
129255 -- set accounting class
129256 --
129257 xla_ae_lines_pkg.SetAcctClass(
129258 p_accounting_class_code => 'RECEIVING_INSPECTION'
129259 , p_ae_header_id => l_ae_header_id
129260 );
129261
129262 --
129263 -- set rounding class
129264 --
129265 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
129266 'RECEIVING_INSPECTION';
129267
129268 --
129269 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
129270 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
129271 --
129272 -- bulk performance
129273 --
129274 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
129275
129276 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
129277 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
129278
129279 -- 4955764
129280 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129281 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
129282
129283 -- 4458381 Public Sector Enh
129284
129285 --
129286 -- set accounting attributes for the line type
129287 --
129288 l_entered_amt_idx := 3;
129289 l_accted_amt_idx := 8;
129290 l_bflow_applied_to_amt_idx := NULL; -- 5132302
129291 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
129292 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
129293 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
129294 l_rec_acct_attrs.array_char_value(2) := p_source_12;
129295 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
129296 l_rec_acct_attrs.array_num_value(3) := p_source_18;
129297 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
129298 l_rec_acct_attrs.array_char_value(4) := p_source_15;
129299 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
129300 l_rec_acct_attrs.array_date_value(5) := p_source_19;
129301 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
129302 l_rec_acct_attrs.array_num_value(6) := p_source_20;
129303 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
129304 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
129305 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
129306 l_rec_acct_attrs.array_num_value(8) := p_source_22;
129307
129308 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
129309 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
129310
129311 ---------------------------------------------------------------------------------------------------------------
129312 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
129313 ---------------------------------------------------------------------------------------------------------------
129314 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
129315
129316 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129317 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129318
129319 IF xla_accounting_cache_pkg.GetValueChar
129320 (p_source_code => 'LEDGER_CATEGORY_CODE'
129321 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
129322 AND l_bflow_method_code = 'PRIOR_ENTRY'
129323 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
129324 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
129325 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
129326 )
129327 THEN
129328 xla_ae_lines_pkg.BflowUpgEntry
129329 (p_business_method_code => l_bflow_method_code
129330 ,p_business_class_code => l_bflow_class_code
129331 ,p_balance_type => l_balance_type_code);
129332 ELSE
129333 NULL;
129334 -- No business flow processing for business flow method of NONE.
129335 END IF;
129336
129337 --
129338 -- call analytical criteria
129339 --
129340
129341 --
129342 -- call description
129343 --
129344 -- No description or it is inherited.
129345 --
129346 -- call ADRs
129347 -- Bug 4922099
129348 --
129349 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129350 (NVL(l_actual_upg_option, 'N') = 'O') OR
129351 (NVL(l_enc_upg_option, 'N') = 'O')
129352 )
129353 THEN
129354 NULL;
129355 --
129356 --
129357
129358 l_ccid := AcctDerRule_4(
129359 p_application_id => p_application_id
129360 , p_ae_header_id => l_ae_header_id
129361 , p_source_4 => p_source_4
129362 , x_transaction_coa_id => l_adr_transaction_coa_id
129363 , x_accounting_coa_id => l_adr_accounting_coa_id
129364 , x_value_type_code => l_adr_value_type_code
129365 , p_side => 'NA'
129366 );
129367
129368 xla_ae_lines_pkg.set_ccid(
129369 p_code_combination_id => l_ccid
129370 , p_value_type_code => l_adr_value_type_code
129371 , p_transaction_coa_id => l_adr_transaction_coa_id
129372 , p_accounting_coa_id => l_adr_accounting_coa_id
129373 , p_adr_code => 'CST_DEFAULT'
129374 , p_adr_type_code => 'S'
129375 , p_component_type => l_component_type
129376 , p_component_code => l_component_code
129377 , p_component_type_code => l_component_type_code
129378 , p_component_appl_id => l_component_appl_id
129379 , p_amb_context_code => l_amb_context_code
129380 , p_side => 'NA'
129381 );
129382
129383
129384 --
129385 --
129386 END IF;
129387 --
129388 -- Bug 4922099
129389 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
129390 (NVL(l_enc_upg_option, 'N') = 'O')
129391 ) AND
129392 (l_bflow_method_code = 'PRIOR_ENTRY')
129393 )
129394 THEN
129395 IF
129396 --
129397 1 = 2
129398 --
129399 THEN
129400 xla_accounting_err_pkg.build_message
129401 (p_appli_s_name => 'XLA'
129402 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129403 ,p_token_1 => 'LINE_NUMBER'
129404 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
129405 ,p_token_2 => 'LINE_TYPE_NAME'
129406 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
129407 l_component_type
129408 ,l_component_code
129409 ,l_component_type_code
129410 ,l_component_appl_id
129411 ,l_amb_context_code
129412 ,l_entity_code
129413 ,l_event_class_code
129414 )
129415 ,p_token_3 => 'OWNER'
129416 ,p_value_3 => xla_lookups_pkg.get_meaning(
129417 p_lookup_type => 'XLA_OWNER_TYPE'
129418 ,p_lookup_code => l_component_type_code
129419 )
129420 ,p_token_4 => 'PRODUCT_NAME'
129421 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
129422 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
129423 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
129424 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
129425 ,p_ae_header_id => NULL
129426 );
129427
129428 IF (C_LEVEL_ERROR>= g_log_level) THEN
129429 trace
129430 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
129431 ,p_level => C_LEVEL_ERROR
129432 ,p_module => l_log_module);
129433 END IF;
129434 END IF;
129435 END IF;
129436 --
129437 --
129438 ------------------------------------------------------------------------------------------------
129439 -- 4219869 Business Flow
129440 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
129441 -- Prior Entry. Currently, the following code is always generated.
129442 ------------------------------------------------------------------------------------------------
129443 XLA_AE_LINES_PKG.ValidateCurrentLine;
129444
129445 ------------------------------------------------------------------------------------
129446 -- 4219869 Business Flow
129447 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
129448 ------------------------------------------------------------------------------------
129449 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129450
129451 ----------------------------------------------------------------------------------
129452 -- 4219869 Business Flow
129453 -- Update journal entry status -- Need to generate this within IF <condition>
129454 ----------------------------------------------------------------------------------
129455 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129456 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
129457 ,p_balance_type_code => l_balance_type_code
129458 );
129459
129460 -------------------------------------------------------------------------------------------
129461 -- 4262811 - Generate the Accrual Reversal lines
129462 -------------------------------------------------------------------------------------------
129463 BEGIN
129464 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
129465 (g_array_event(p_event_id).array_value_num('header_index'));
129466 IF l_acc_rev_flag IS NULL THEN
129467 l_acc_rev_flag := 'N';
129468 END IF;
129469 EXCEPTION
129470 WHEN OTHERS THEN
129471 l_acc_rev_flag := 'N';
129472 END;
129473 --
129474 IF (l_acc_rev_flag = 'Y') THEN
129475
129476 -- 4645092 ------------------------------------------------------------------------------
129477 -- To allow MPA report to determine if it should generate report process
129478 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
129479 ------------------------------------------------------------------------------------------
129480
129481 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
129482 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
129483 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
129484 -- call ADRs
129485 -- Bug 4922099
129486 --
129487 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129488 (NVL(l_actual_upg_option, 'N') = 'O') OR
129489 (NVL(l_enc_upg_option, 'N') = 'O')
129490 )
129491 THEN
129492 NULL;
129493 --
129494 --
129495
129496 l_ccid := AcctDerRule_4(
129497 p_application_id => p_application_id
129498 , p_ae_header_id => l_ae_header_id
129499 , p_source_4 => p_source_4
129500 , x_transaction_coa_id => l_adr_transaction_coa_id
129501 , x_accounting_coa_id => l_adr_accounting_coa_id
129502 , x_value_type_code => l_adr_value_type_code
129503 , p_side => 'NA'
129504 );
129505
129506 xla_ae_lines_pkg.set_ccid(
129507 p_code_combination_id => l_ccid
129508 , p_value_type_code => l_adr_value_type_code
129509 , p_transaction_coa_id => l_adr_transaction_coa_id
129510 , p_accounting_coa_id => l_adr_accounting_coa_id
129511 , p_adr_code => 'CST_DEFAULT'
129512 , p_adr_type_code => 'S'
129513 , p_component_type => l_component_type
129514 , p_component_code => l_component_code
129515 , p_component_type_code => l_component_type_code
129516 , p_component_appl_id => l_component_appl_id
129517 , p_amb_context_code => l_amb_context_code
129518 , p_side => 'NA'
129519 );
129520
129521
129522 --
129523 --
129524 END IF;
129525
129526 --
129527 -- Update the line information that should be overwritten
129528 --
129529 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
129530 p_header_num => 1);
129531 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
129532
129533 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
129534
129535 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
129536 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
129537 END IF;
129538
129539 --
129540 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
129541 --
129542 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
129543 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
129544 ELSE
129545 ---------------------------------------------------------------------------------------------------
129546 -- 4262811a Switch Sign
129547 ---------------------------------------------------------------------------------------------------
129548 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
129549 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129550 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129551 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
129552 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129553 -- 5132302
129554 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
129555 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
129556
129557 END IF;
129558
129559 -- 4955764
129560 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129561 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
129562
129563
129564 XLA_AE_LINES_PKG.ValidateCurrentLine;
129565 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
129566
129567 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
129568 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
129569 ,p_balance_type_code => l_balance_type_code);
129570
129571 END IF;
129572
129573 -----------------------------------------------------------------------------------------
129574 -- 4262811 Multiperiod Accounting
129575 -----------------------------------------------------------------------------------------
129576 -- No MPA option is assigned.
129577
129578
129579 END IF;
129580 END IF;
129581 --
129582
129583 --
129584 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129585 trace
129586 (p_msg => 'END of AcctLineType_234'
129587 ,p_level => C_LEVEL_PROCEDURE
129588 ,p_module => l_log_module);
129589 END IF;
129590 --
129591 EXCEPTION
129592 WHEN xla_exceptions_pkg.application_exception THEN
129593 RAISE;
129594 WHEN OTHERS THEN
129595 xla_exceptions_pkg.raise_message
129596 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_234');
129597 END AcctLineType_234;
129598 --
129599
129600 ---------------------------------------
129601 --
129602 -- PRIVATE FUNCTION
129603 -- AcctLineType_235
129604 --
129605 ---------------------------------------
129606 PROCEDURE AcctLineType_235 (
129607 p_application_id IN NUMBER
129608 ,p_event_id IN NUMBER
129609 ,p_calculate_acctd_flag IN VARCHAR2
129610 ,p_calculate_g_l_flag IN VARCHAR2
129611 ,p_actual_flag IN OUT VARCHAR2
129612 ,p_balance_type_code OUT VARCHAR2
129613 ,p_gain_or_loss_ref OUT VARCHAR2
129614
129615 --Cost Management Default Account
129616 , p_source_4 IN NUMBER
129617 --Applied to Application ID
129618 , p_source_6 IN NUMBER
129619 --Applied to Distribution Link Type
129620 , p_source_7 IN VARCHAR2
129621 --Applied to Entity Code
129622 , p_source_8 IN VARCHAR2
129623 --Applied To Purchase Document Identifier
129624 , p_source_10 IN NUMBER
129625 --DISTRIBUTION_IDENTIFIER
129626 , p_source_11 IN NUMBER
129627 --Distribution Type
129628 , p_source_12 IN VARCHAR2
129629 , p_source_12_meaning IN VARCHAR2
129630 --PO Budget Account
129631 , p_source_13 IN NUMBER
129632 --Encumbrance Reversal Amount Entered
129633 , p_source_14 IN NUMBER
129634 --Entered Currency Code
129635 , p_source_15 IN VARCHAR2
129636 --Transaction Encumbrance Reversal Amount
129637 , p_source_16 IN NUMBER
129638 --Entered Amount
129639 , p_source_18 IN NUMBER
129640 --Currency Conversion Date
129641 , p_source_19 IN DATE
129642 --Currency Conversion Rate
129643 , p_source_20 IN NUMBER
129644 --Currency Conversion Type
129645 , p_source_21 IN VARCHAR2
129646 --Accounted Amount
129647 , p_source_22 IN NUMBER
129648 --Purchasing Encumbrance Type Identifier
129649 , p_source_23 IN NUMBER
129650 --Accounting Line Type
129651 , p_source_24 IN NUMBER
129652 --Costing Encumbrance Upgrade Option
129653 , p_source_27 IN VARCHAR2
129654 --TXN_PO_DISTRIBUTION_ID
129655 , p_source_28 IN NUMBER
129656 )
129657 IS
129658
129659 l_component_type VARCHAR2(80);
129660 l_component_code VARCHAR2(30);
129661 l_component_type_code VARCHAR2(1);
129662 l_component_appl_id INTEGER;
129663 l_amb_context_code VARCHAR2(30);
129664 l_entity_code VARCHAR2(30);
129665 l_event_class_code VARCHAR2(30);
129666 l_ae_header_id NUMBER;
129667 l_event_type_code VARCHAR2(30);
129668 l_line_definition_code VARCHAR2(30);
129669 l_line_definition_owner_code VARCHAR2(1);
129670 --
129671 -- adr variables
129672 l_segment VARCHAR2(30);
129673 l_ccid NUMBER;
129674 l_adr_transaction_coa_id NUMBER;
129675 l_adr_accounting_coa_id NUMBER;
129676 l_adr_flexfield_segment_code VARCHAR2(30);
129677 l_adr_flex_value_set_id NUMBER;
129678 l_adr_value_type_code VARCHAR2(30);
129679 l_adr_value_combination_id NUMBER;
129680 l_adr_value_segment_code VARCHAR2(30);
129681
129682 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
129683 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
129684 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
129685 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
129686
129687 -- 4262811 Variables ------------------------------------------------------------------------------------------
129688 l_entered_amt_idx NUMBER;
129689 l_accted_amt_idx NUMBER;
129690 l_acc_rev_flag VARCHAR2(1);
129691 l_accrual_line_num NUMBER;
129692 l_tmp_amt NUMBER;
129693 l_acc_rev_natural_side_code VARCHAR2(1);
129694
129695 l_num_entries NUMBER;
129696 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
129697 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
129698 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
129699 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
129700 l_recog_line_1 NUMBER;
129701 l_recog_line_2 NUMBER;
129702
129703 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
129704 l_bflow_applied_to_amt NUMBER; -- 5132302
129705 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
129706
129707 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
129708
129709 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
129710 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
129711
129712 ---------------------------------------------------------------------------------------------------------------
129713
129714
129715 --
129716 -- bulk performance
129717 --
129718 l_balance_type_code VARCHAR2(1);
129719 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
129720 l_log_module VARCHAR2(240);
129721
129722 --
129723 -- Upgrade strategy
129724 --
129725 l_actual_upg_option VARCHAR2(1);
129726 l_enc_upg_option VARCHAR2(1);
129727
129728 --
129729 BEGIN
129730 --
129731 IF g_log_enabled THEN
129732 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_235';
129733 END IF;
129734 --
129735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
129736
129737 trace
129738 (p_msg => 'BEGIN of AcctLineType_235'
129739 ,p_level => C_LEVEL_PROCEDURE
129740 ,p_module => l_log_module);
129741
129742 END IF;
129743 --
129744 l_component_type := 'AMB_JLT';
129745 l_component_code := 'RECEIVING_INSPECTION';
129746 l_component_type_code := 'S';
129747 l_component_appl_id := 707;
129748 l_amb_context_code := 'DEFAULT';
129749 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
129750 l_event_class_code := 'PURCHASE_ORDER';
129751 l_event_type_code := 'PURCHASE_ORDER_ALL';
129752 l_line_definition_owner_code := 'S';
129753 l_line_definition_code := 'PURCHASE_ORDER';
129754 --
129755 l_balance_type_code := 'A';
129756 l_segment := NULL;
129757 l_ccid := NULL;
129758 l_adr_transaction_coa_id := NULL;
129759 l_adr_accounting_coa_id := NULL;
129760 l_adr_flexfield_segment_code := NULL;
129761 l_adr_flex_value_set_id := NULL;
129762 l_adr_value_type_code := NULL;
129763 l_adr_value_combination_id := NULL;
129764 l_adr_value_segment_code := NULL;
129765
129766 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
129767 l_bflow_class_code := ''; -- 4219869 Business Flow
129768 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
129769 l_budgetary_control_flag := 'N';
129770
129771 l_bflow_applied_to_amt_idx := NULL; -- 5132302
129772 l_bflow_applied_to_amt := NULL; -- 5132302
129773 l_entered_amt_idx := NULL; -- 4262811
129774 l_accted_amt_idx := NULL; -- 4262811
129775 l_acc_rev_flag := NULL; -- 4262811
129776 l_accrual_line_num := NULL; -- 4262811
129777 l_tmp_amt := NULL; -- 4262811
129778 --
129779
129780 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
129781 l_balance_type_code <> 'B' THEN
129782 IF NVL(p_source_24,9E125) = 5
129783 THEN
129784
129785 --
129786 XLA_AE_LINES_PKG.SetNewLine;
129787
129788 p_balance_type_code := l_balance_type_code;
129789 -- set the flag so later we will know whether the gain loss line needs to be created
129790
129791 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
129792 p_actual_flag :='A';
129793 END IF;
129794
129795 --
129796 -- bulk performance
129797 --
129798 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
129799 p_header_num => 0); -- 4262811
129800 --
129801 -- set accounting line options
129802 --
129803 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
129804 p_natural_side_code => 'D'
129805 , p_gain_or_loss_flag => 'N'
129806 , p_gl_transfer_mode_code => 'S'
129807 , p_acct_entry_type_code => 'A'
129808 , p_switch_side_flag => 'Y'
129809 , p_merge_duplicate_code => 'N'
129810 );
129811 --
129812 l_acc_rev_natural_side_code := 'C'; -- 4262811
129813 --
129814 --
129815 -- set accounting line type info
129816 --
129817 xla_ae_lines_pkg.SetAcctLineType
129818 (p_component_type => l_component_type
129819 ,p_event_type_code => l_event_type_code
129820 ,p_line_definition_owner_code => l_line_definition_owner_code
129821 ,p_line_definition_code => l_line_definition_code
129822 ,p_accounting_line_code => l_component_code
129823 ,p_accounting_line_type_code => l_component_type_code
129824 ,p_accounting_line_appl_id => l_component_appl_id
129825 ,p_amb_context_code => l_amb_context_code
129826 ,p_entity_code => l_entity_code
129827 ,p_event_class_code => l_event_class_code);
129828 --
129829 -- set accounting class
129830 --
129831 xla_ae_lines_pkg.SetAcctClass(
129832 p_accounting_class_code => 'RECEIVING_INSPECTION'
129833 , p_ae_header_id => l_ae_header_id
129834 );
129835
129836 --
129837 -- set rounding class
129838 --
129839 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
129840 'RECEIVING_INSPECTION';
129841
129842 --
129843 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
129844 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
129845 --
129846 -- bulk performance
129847 --
129848 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
129849
129850 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
129851 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
129852
129853 -- 4955764
129854 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
129855 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
129856
129857 -- 4458381 Public Sector Enh
129858
129859 --
129860 -- set accounting attributes for the line type
129861 --
129862 l_entered_amt_idx := 17;
129863 l_accted_amt_idx := 22;
129864 l_bflow_applied_to_amt_idx := NULL; -- 5132302
129865 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
129866 l_rec_acct_attrs.array_num_value(1) := p_source_6;
129867 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
129868 l_rec_acct_attrs.array_char_value(2) := p_source_7;
129869 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
129870 l_rec_acct_attrs.array_char_value(3) := p_source_8;
129871 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
129872 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
129873 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
129874 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
129875 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
129876 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
129877 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
129878 l_rec_acct_attrs.array_char_value(7) := p_source_12;
129879 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
129880 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
129881 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
129882 l_rec_acct_attrs.array_num_value(9) := p_source_14;
129883 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
129884 l_rec_acct_attrs.array_char_value(10) := p_source_15;
129885 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
129886 l_rec_acct_attrs.array_num_value(11) := p_source_16;
129887 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
129888 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
129889 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
129890 l_rec_acct_attrs.array_num_value(13) := p_source_14;
129891 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
129892 l_rec_acct_attrs.array_char_value(14) := p_source_15;
129893 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
129894 l_rec_acct_attrs.array_num_value(15) := p_source_16;
129895 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
129896 l_rec_acct_attrs.array_char_value(16) := p_source_27;
129897 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
129898 l_rec_acct_attrs.array_num_value(17) := p_source_18;
129899 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
129900 l_rec_acct_attrs.array_char_value(18) := p_source_15;
129901 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
129902 l_rec_acct_attrs.array_date_value(19) := p_source_19;
129903 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
129904 l_rec_acct_attrs.array_num_value(20) := p_source_20;
129905 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
129906 l_rec_acct_attrs.array_char_value(21) := p_source_21;
129907 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
129908 l_rec_acct_attrs.array_num_value(22) := p_source_22;
129909 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
129910 l_rec_acct_attrs.array_num_value(23) := p_source_23;
129911 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
129912 l_rec_acct_attrs.array_num_value(24) := p_source_23;
129913
129914 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
129915 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
129916
129917 ---------------------------------------------------------------------------------------------------------------
129918 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
129919 ---------------------------------------------------------------------------------------------------------------
129920 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
129921
129922 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129923 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
129924
129925 IF xla_accounting_cache_pkg.GetValueChar
129926 (p_source_code => 'LEDGER_CATEGORY_CODE'
129927 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
129928 AND l_bflow_method_code = 'PRIOR_ENTRY'
129929 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
129930 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
129931 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
129932 )
129933 THEN
129934 xla_ae_lines_pkg.BflowUpgEntry
129935 (p_business_method_code => l_bflow_method_code
129936 ,p_business_class_code => l_bflow_class_code
129937 ,p_balance_type => l_balance_type_code);
129938 ELSE
129939 NULL;
129940 -- No business flow processing for business flow method of NONE.
129941 END IF;
129942
129943 --
129944 -- call analytical criteria
129945 --
129946
129947 --
129948 -- call description
129949 --
129950 -- No description or it is inherited.
129951 --
129952 -- call ADRs
129953 -- Bug 4922099
129954 --
129955 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
129956 (NVL(l_actual_upg_option, 'N') = 'O') OR
129957 (NVL(l_enc_upg_option, 'N') = 'O')
129958 )
129959 THEN
129960 NULL;
129961 --
129962 --
129963
129964 l_ccid := AcctDerRule_4(
129965 p_application_id => p_application_id
129966 , p_ae_header_id => l_ae_header_id
129967 , p_source_4 => p_source_4
129968 , x_transaction_coa_id => l_adr_transaction_coa_id
129969 , x_accounting_coa_id => l_adr_accounting_coa_id
129970 , x_value_type_code => l_adr_value_type_code
129971 , p_side => 'NA'
129972 );
129973
129974 xla_ae_lines_pkg.set_ccid(
129975 p_code_combination_id => l_ccid
129976 , p_value_type_code => l_adr_value_type_code
129977 , p_transaction_coa_id => l_adr_transaction_coa_id
129978 , p_accounting_coa_id => l_adr_accounting_coa_id
129979 , p_adr_code => 'CST_DEFAULT'
129980 , p_adr_type_code => 'S'
129981 , p_component_type => l_component_type
129982 , p_component_code => l_component_code
129983 , p_component_type_code => l_component_type_code
129984 , p_component_appl_id => l_component_appl_id
129985 , p_amb_context_code => l_amb_context_code
129986 , p_side => 'NA'
129987 );
129988
129989
129990 --
129991 --
129992 END IF;
129993 --
129994 -- Bug 4922099
129995 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
129996 (NVL(l_enc_upg_option, 'N') = 'O')
129997 ) AND
129998 (l_bflow_method_code = 'PRIOR_ENTRY')
129999 )
130000 THEN
130001 IF
130002 --
130003 1 = 2
130004 --
130005 THEN
130006 xla_accounting_err_pkg.build_message
130007 (p_appli_s_name => 'XLA'
130008 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130009 ,p_token_1 => 'LINE_NUMBER'
130010 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
130011 ,p_token_2 => 'LINE_TYPE_NAME'
130012 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
130013 l_component_type
130014 ,l_component_code
130015 ,l_component_type_code
130016 ,l_component_appl_id
130017 ,l_amb_context_code
130018 ,l_entity_code
130019 ,l_event_class_code
130020 )
130021 ,p_token_3 => 'OWNER'
130022 ,p_value_3 => xla_lookups_pkg.get_meaning(
130023 p_lookup_type => 'XLA_OWNER_TYPE'
130024 ,p_lookup_code => l_component_type_code
130025 )
130026 ,p_token_4 => 'PRODUCT_NAME'
130027 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
130028 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
130029 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
130030 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
130031 ,p_ae_header_id => NULL
130032 );
130033
130034 IF (C_LEVEL_ERROR>= g_log_level) THEN
130035 trace
130036 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130037 ,p_level => C_LEVEL_ERROR
130038 ,p_module => l_log_module);
130039 END IF;
130040 END IF;
130041 END IF;
130042 --
130043 --
130044 ------------------------------------------------------------------------------------------------
130045 -- 4219869 Business Flow
130046 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
130047 -- Prior Entry. Currently, the following code is always generated.
130048 ------------------------------------------------------------------------------------------------
130049 XLA_AE_LINES_PKG.ValidateCurrentLine;
130050
130051 ------------------------------------------------------------------------------------
130052 -- 4219869 Business Flow
130053 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
130054 ------------------------------------------------------------------------------------
130055 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130056
130057 ----------------------------------------------------------------------------------
130058 -- 4219869 Business Flow
130059 -- Update journal entry status -- Need to generate this within IF <condition>
130060 ----------------------------------------------------------------------------------
130061 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130062 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
130063 ,p_balance_type_code => l_balance_type_code
130064 );
130065
130066 -------------------------------------------------------------------------------------------
130067 -- 4262811 - Generate the Accrual Reversal lines
130068 -------------------------------------------------------------------------------------------
130069 BEGIN
130070 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
130071 (g_array_event(p_event_id).array_value_num('header_index'));
130072 IF l_acc_rev_flag IS NULL THEN
130073 l_acc_rev_flag := 'N';
130074 END IF;
130075 EXCEPTION
130076 WHEN OTHERS THEN
130077 l_acc_rev_flag := 'N';
130078 END;
130079 --
130080 IF (l_acc_rev_flag = 'Y') THEN
130081
130082 -- 4645092 ------------------------------------------------------------------------------
130083 -- To allow MPA report to determine if it should generate report process
130084 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
130085 ------------------------------------------------------------------------------------------
130086
130087 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
130088 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
130089 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
130090 -- call ADRs
130091 -- Bug 4922099
130092 --
130093 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130094 (NVL(l_actual_upg_option, 'N') = 'O') OR
130095 (NVL(l_enc_upg_option, 'N') = 'O')
130096 )
130097 THEN
130098 NULL;
130099 --
130100 --
130101
130102 l_ccid := AcctDerRule_4(
130103 p_application_id => p_application_id
130104 , p_ae_header_id => l_ae_header_id
130105 , p_source_4 => p_source_4
130106 , x_transaction_coa_id => l_adr_transaction_coa_id
130107 , x_accounting_coa_id => l_adr_accounting_coa_id
130108 , x_value_type_code => l_adr_value_type_code
130109 , p_side => 'NA'
130110 );
130111
130112 xla_ae_lines_pkg.set_ccid(
130113 p_code_combination_id => l_ccid
130114 , p_value_type_code => l_adr_value_type_code
130115 , p_transaction_coa_id => l_adr_transaction_coa_id
130116 , p_accounting_coa_id => l_adr_accounting_coa_id
130117 , p_adr_code => 'CST_DEFAULT'
130118 , p_adr_type_code => 'S'
130119 , p_component_type => l_component_type
130120 , p_component_code => l_component_code
130121 , p_component_type_code => l_component_type_code
130122 , p_component_appl_id => l_component_appl_id
130123 , p_amb_context_code => l_amb_context_code
130124 , p_side => 'NA'
130125 );
130126
130127
130128 --
130129 --
130130 END IF;
130131
130132 --
130133 -- Update the line information that should be overwritten
130134 --
130135 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
130136 p_header_num => 1);
130137 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
130138
130139 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
130140
130141 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
130142 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
130143 END IF;
130144
130145 --
130146 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
130147 --
130148 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
130149 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
130150 ELSE
130151 ---------------------------------------------------------------------------------------------------
130152 -- 4262811a Switch Sign
130153 ---------------------------------------------------------------------------------------------------
130154 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
130155 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130156 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130157 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130158 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130159 -- 5132302
130160 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
130161 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130162
130163 END IF;
130164
130165 -- 4955764
130166 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130167 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
130168
130169
130170 XLA_AE_LINES_PKG.ValidateCurrentLine;
130171 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130172
130173 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130174 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
130175 ,p_balance_type_code => l_balance_type_code);
130176
130177 END IF;
130178
130179 -----------------------------------------------------------------------------------------
130180 -- 4262811 Multiperiod Accounting
130181 -----------------------------------------------------------------------------------------
130182 -- No MPA option is assigned.
130183
130184
130185 END IF;
130186 END IF;
130187 --
130188
130189 --
130190 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130191 trace
130192 (p_msg => 'END of AcctLineType_235'
130193 ,p_level => C_LEVEL_PROCEDURE
130194 ,p_module => l_log_module);
130195 END IF;
130196 --
130197 EXCEPTION
130198 WHEN xla_exceptions_pkg.application_exception THEN
130199 RAISE;
130200 WHEN OTHERS THEN
130201 xla_exceptions_pkg.raise_message
130202 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_235');
130203 END AcctLineType_235;
130204 --
130205
130206 ---------------------------------------
130207 --
130208 -- PRIVATE FUNCTION
130209 -- AcctLineType_236
130210 --
130211 ---------------------------------------
130212 PROCEDURE AcctLineType_236 (
130213 p_application_id IN NUMBER
130214 ,p_event_id IN NUMBER
130215 ,p_calculate_acctd_flag IN VARCHAR2
130216 ,p_calculate_g_l_flag IN VARCHAR2
130217 ,p_actual_flag IN OUT VARCHAR2
130218 ,p_balance_type_code OUT VARCHAR2
130219 ,p_gain_or_loss_ref OUT VARCHAR2
130220
130221 --Cost Management Default Account
130222 , p_source_4 IN NUMBER
130223 --Receiving Accounting Line Type
130224 , p_source_5 IN VARCHAR2
130225 --DISTRIBUTION_IDENTIFIER
130226 , p_source_11 IN NUMBER
130227 --Distribution Type
130228 , p_source_12 IN VARCHAR2
130229 , p_source_12_meaning IN VARCHAR2
130230 --Entered Amount
130231 , p_source_18 IN NUMBER
130232 --Accounted Amount
130233 , p_source_22 IN NUMBER
130234 --Entered Currency Code
130235 , p_source_32 IN VARCHAR2
130236 --Currency Conversion Date
130237 , p_source_33 IN DATE
130238 --Currency Conversion Rate
130239 , p_source_34 IN NUMBER
130240 )
130241 IS
130242
130243 l_component_type VARCHAR2(80);
130244 l_component_code VARCHAR2(30);
130245 l_component_type_code VARCHAR2(1);
130246 l_component_appl_id INTEGER;
130247 l_amb_context_code VARCHAR2(30);
130248 l_entity_code VARCHAR2(30);
130249 l_event_class_code VARCHAR2(30);
130250 l_ae_header_id NUMBER;
130251 l_event_type_code VARCHAR2(30);
130252 l_line_definition_code VARCHAR2(30);
130253 l_line_definition_owner_code VARCHAR2(1);
130254 --
130255 -- adr variables
130256 l_segment VARCHAR2(30);
130257 l_ccid NUMBER;
130258 l_adr_transaction_coa_id NUMBER;
130259 l_adr_accounting_coa_id NUMBER;
130260 l_adr_flexfield_segment_code VARCHAR2(30);
130261 l_adr_flex_value_set_id NUMBER;
130262 l_adr_value_type_code VARCHAR2(30);
130263 l_adr_value_combination_id NUMBER;
130264 l_adr_value_segment_code VARCHAR2(30);
130265
130266 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
130267 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
130268 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
130269 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
130270
130271 -- 4262811 Variables ------------------------------------------------------------------------------------------
130272 l_entered_amt_idx NUMBER;
130273 l_accted_amt_idx NUMBER;
130274 l_acc_rev_flag VARCHAR2(1);
130275 l_accrual_line_num NUMBER;
130276 l_tmp_amt NUMBER;
130277 l_acc_rev_natural_side_code VARCHAR2(1);
130278
130279 l_num_entries NUMBER;
130280 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
130281 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
130282 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
130283 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
130284 l_recog_line_1 NUMBER;
130285 l_recog_line_2 NUMBER;
130286
130287 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
130288 l_bflow_applied_to_amt NUMBER; -- 5132302
130289 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
130290
130291 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
130292
130293 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
130294 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
130295
130296 ---------------------------------------------------------------------------------------------------------------
130297
130298
130299 --
130300 -- bulk performance
130301 --
130302 l_balance_type_code VARCHAR2(1);
130303 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
130304 l_log_module VARCHAR2(240);
130305
130306 --
130307 -- Upgrade strategy
130308 --
130309 l_actual_upg_option VARCHAR2(1);
130310 l_enc_upg_option VARCHAR2(1);
130311
130312 --
130313 BEGIN
130314 --
130315 IF g_log_enabled THEN
130316 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_236';
130317 END IF;
130318 --
130319 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130320
130321 trace
130322 (p_msg => 'BEGIN of AcctLineType_236'
130323 ,p_level => C_LEVEL_PROCEDURE
130324 ,p_module => l_log_module);
130325
130326 END IF;
130327 --
130328 l_component_type := 'AMB_JLT';
130329 l_component_code := 'RECEIVING_INSPECTION';
130330 l_component_type_code := 'S';
130331 l_component_appl_id := 707;
130332 l_amb_context_code := 'DEFAULT';
130333 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
130334 l_event_class_code := 'LDD_COST_ADJ_DEL';
130335 l_event_type_code := 'LDD_COST_ADJ_DEL_ALL';
130336 l_line_definition_owner_code := 'S';
130337 l_line_definition_code := 'LDD_COST_ADJ_DEL';
130338 --
130339 l_balance_type_code := 'A';
130340 l_segment := NULL;
130341 l_ccid := NULL;
130342 l_adr_transaction_coa_id := NULL;
130343 l_adr_accounting_coa_id := NULL;
130344 l_adr_flexfield_segment_code := NULL;
130345 l_adr_flex_value_set_id := NULL;
130346 l_adr_value_type_code := NULL;
130347 l_adr_value_combination_id := NULL;
130348 l_adr_value_segment_code := NULL;
130349
130350 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
130351 l_bflow_class_code := ''; -- 4219869 Business Flow
130352 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
130353 l_budgetary_control_flag := 'N';
130354
130355 l_bflow_applied_to_amt_idx := NULL; -- 5132302
130356 l_bflow_applied_to_amt := NULL; -- 5132302
130357 l_entered_amt_idx := NULL; -- 4262811
130358 l_accted_amt_idx := NULL; -- 4262811
130359 l_acc_rev_flag := NULL; -- 4262811
130360 l_accrual_line_num := NULL; -- 4262811
130361 l_tmp_amt := NULL; -- 4262811
130362 --
130363
130364 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
130365 l_balance_type_code <> 'B' THEN
130366 IF NVL(p_source_5,'
130367 ') = 'Receiving Inspection'
130368 THEN
130369
130370 --
130371 XLA_AE_LINES_PKG.SetNewLine;
130372
130373 p_balance_type_code := l_balance_type_code;
130374 -- set the flag so later we will know whether the gain loss line needs to be created
130375
130376 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
130377 p_actual_flag :='A';
130378 END IF;
130379
130380 --
130381 -- bulk performance
130382 --
130383 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
130384 p_header_num => 0); -- 4262811
130385 --
130386 -- set accounting line options
130387 --
130388 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
130389 p_natural_side_code => 'D'
130390 , p_gain_or_loss_flag => 'N'
130391 , p_gl_transfer_mode_code => 'S'
130392 , p_acct_entry_type_code => 'A'
130393 , p_switch_side_flag => 'Y'
130394 , p_merge_duplicate_code => 'N'
130395 );
130396 --
130397 l_acc_rev_natural_side_code := 'C'; -- 4262811
130398 --
130399 --
130400 -- set accounting line type info
130401 --
130402 xla_ae_lines_pkg.SetAcctLineType
130403 (p_component_type => l_component_type
130404 ,p_event_type_code => l_event_type_code
130405 ,p_line_definition_owner_code => l_line_definition_owner_code
130406 ,p_line_definition_code => l_line_definition_code
130407 ,p_accounting_line_code => l_component_code
130408 ,p_accounting_line_type_code => l_component_type_code
130409 ,p_accounting_line_appl_id => l_component_appl_id
130410 ,p_amb_context_code => l_amb_context_code
130411 ,p_entity_code => l_entity_code
130412 ,p_event_class_code => l_event_class_code);
130413 --
130414 -- set accounting class
130415 --
130416 xla_ae_lines_pkg.SetAcctClass(
130417 p_accounting_class_code => 'RECEIVING_INSPECTION'
130418 , p_ae_header_id => l_ae_header_id
130419 );
130420
130421 --
130422 -- set rounding class
130423 --
130424 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
130425 'RECEIVING_INSPECTION';
130426
130427 --
130428 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
130429 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
130430 --
130431 -- bulk performance
130432 --
130433 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
130434
130435 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
130436 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
130437
130438 -- 4955764
130439 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130440 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
130441
130442 -- 4458381 Public Sector Enh
130443
130444 --
130445 -- set accounting attributes for the line type
130446 --
130447 l_entered_amt_idx := 3;
130448 l_accted_amt_idx := 7;
130449 l_bflow_applied_to_amt_idx := NULL; -- 5132302
130450 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
130451 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
130452 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
130453 l_rec_acct_attrs.array_char_value(2) := p_source_12;
130454 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
130455 l_rec_acct_attrs.array_num_value(3) := p_source_18;
130456 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
130457 l_rec_acct_attrs.array_char_value(4) := p_source_32;
130458 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
130459 l_rec_acct_attrs.array_date_value(5) := p_source_33;
130460 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
130461 l_rec_acct_attrs.array_num_value(6) := p_source_34;
130462 l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
130463 l_rec_acct_attrs.array_num_value(7) := p_source_22;
130464
130465 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
130466 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
130467
130468 ---------------------------------------------------------------------------------------------------------------
130469 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
130470 ---------------------------------------------------------------------------------------------------------------
130471 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
130472
130473 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130474 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
130475
130476 IF xla_accounting_cache_pkg.GetValueChar
130477 (p_source_code => 'LEDGER_CATEGORY_CODE'
130478 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
130479 AND l_bflow_method_code = 'PRIOR_ENTRY'
130480 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
130481 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
130482 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
130483 )
130484 THEN
130485 xla_ae_lines_pkg.BflowUpgEntry
130486 (p_business_method_code => l_bflow_method_code
130487 ,p_business_class_code => l_bflow_class_code
130488 ,p_balance_type => l_balance_type_code);
130489 ELSE
130490 NULL;
130491 -- No business flow processing for business flow method of NONE.
130492 END IF;
130493
130494 --
130495 -- call analytical criteria
130496 --
130497
130498 --
130499 -- call description
130500 --
130501 -- No description or it is inherited.
130502 --
130503 -- call ADRs
130504 -- Bug 4922099
130505 --
130506 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130507 (NVL(l_actual_upg_option, 'N') = 'O') OR
130508 (NVL(l_enc_upg_option, 'N') = 'O')
130509 )
130510 THEN
130511 NULL;
130512 --
130513 --
130514
130515 l_ccid := AcctDerRule_4(
130516 p_application_id => p_application_id
130517 , p_ae_header_id => l_ae_header_id
130518 , p_source_4 => p_source_4
130519 , x_transaction_coa_id => l_adr_transaction_coa_id
130520 , x_accounting_coa_id => l_adr_accounting_coa_id
130521 , x_value_type_code => l_adr_value_type_code
130522 , p_side => 'NA'
130523 );
130524
130525 xla_ae_lines_pkg.set_ccid(
130526 p_code_combination_id => l_ccid
130527 , p_value_type_code => l_adr_value_type_code
130528 , p_transaction_coa_id => l_adr_transaction_coa_id
130529 , p_accounting_coa_id => l_adr_accounting_coa_id
130530 , p_adr_code => 'CST_DEFAULT'
130531 , p_adr_type_code => 'S'
130532 , p_component_type => l_component_type
130533 , p_component_code => l_component_code
130534 , p_component_type_code => l_component_type_code
130535 , p_component_appl_id => l_component_appl_id
130536 , p_amb_context_code => l_amb_context_code
130537 , p_side => 'NA'
130538 );
130539
130540
130541 --
130542 --
130543 END IF;
130544 --
130545 -- Bug 4922099
130546 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
130547 (NVL(l_enc_upg_option, 'N') = 'O')
130548 ) AND
130549 (l_bflow_method_code = 'PRIOR_ENTRY')
130550 )
130551 THEN
130552 IF
130553 --
130554 1 = 2
130555 --
130556 THEN
130557 xla_accounting_err_pkg.build_message
130558 (p_appli_s_name => 'XLA'
130559 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130560 ,p_token_1 => 'LINE_NUMBER'
130561 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
130562 ,p_token_2 => 'LINE_TYPE_NAME'
130563 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
130564 l_component_type
130565 ,l_component_code
130566 ,l_component_type_code
130567 ,l_component_appl_id
130568 ,l_amb_context_code
130569 ,l_entity_code
130570 ,l_event_class_code
130571 )
130572 ,p_token_3 => 'OWNER'
130573 ,p_value_3 => xla_lookups_pkg.get_meaning(
130574 p_lookup_type => 'XLA_OWNER_TYPE'
130575 ,p_lookup_code => l_component_type_code
130576 )
130577 ,p_token_4 => 'PRODUCT_NAME'
130578 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
130579 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
130580 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
130581 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
130582 ,p_ae_header_id => NULL
130583 );
130584
130585 IF (C_LEVEL_ERROR>= g_log_level) THEN
130586 trace
130587 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
130588 ,p_level => C_LEVEL_ERROR
130589 ,p_module => l_log_module);
130590 END IF;
130591 END IF;
130592 END IF;
130593 --
130594 --
130595 ------------------------------------------------------------------------------------------------
130596 -- 4219869 Business Flow
130597 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
130598 -- Prior Entry. Currently, the following code is always generated.
130599 ------------------------------------------------------------------------------------------------
130600 XLA_AE_LINES_PKG.ValidateCurrentLine;
130601
130602 ------------------------------------------------------------------------------------
130603 -- 4219869 Business Flow
130604 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
130605 ------------------------------------------------------------------------------------
130606 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130607
130608 ----------------------------------------------------------------------------------
130609 -- 4219869 Business Flow
130610 -- Update journal entry status -- Need to generate this within IF <condition>
130611 ----------------------------------------------------------------------------------
130612 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130613 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
130614 ,p_balance_type_code => l_balance_type_code
130615 );
130616
130617 -------------------------------------------------------------------------------------------
130618 -- 4262811 - Generate the Accrual Reversal lines
130619 -------------------------------------------------------------------------------------------
130620 BEGIN
130621 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
130622 (g_array_event(p_event_id).array_value_num('header_index'));
130623 IF l_acc_rev_flag IS NULL THEN
130624 l_acc_rev_flag := 'N';
130625 END IF;
130626 EXCEPTION
130627 WHEN OTHERS THEN
130628 l_acc_rev_flag := 'N';
130629 END;
130630 --
130631 IF (l_acc_rev_flag = 'Y') THEN
130632
130633 -- 4645092 ------------------------------------------------------------------------------
130634 -- To allow MPA report to determine if it should generate report process
130635 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
130636 ------------------------------------------------------------------------------------------
130637
130638 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
130639 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
130640 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
130641 -- call ADRs
130642 -- Bug 4922099
130643 --
130644 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
130645 (NVL(l_actual_upg_option, 'N') = 'O') OR
130646 (NVL(l_enc_upg_option, 'N') = 'O')
130647 )
130648 THEN
130649 NULL;
130650 --
130651 --
130652
130653 l_ccid := AcctDerRule_4(
130654 p_application_id => p_application_id
130655 , p_ae_header_id => l_ae_header_id
130656 , p_source_4 => p_source_4
130657 , x_transaction_coa_id => l_adr_transaction_coa_id
130658 , x_accounting_coa_id => l_adr_accounting_coa_id
130659 , x_value_type_code => l_adr_value_type_code
130660 , p_side => 'NA'
130661 );
130662
130663 xla_ae_lines_pkg.set_ccid(
130664 p_code_combination_id => l_ccid
130665 , p_value_type_code => l_adr_value_type_code
130666 , p_transaction_coa_id => l_adr_transaction_coa_id
130667 , p_accounting_coa_id => l_adr_accounting_coa_id
130668 , p_adr_code => 'CST_DEFAULT'
130669 , p_adr_type_code => 'S'
130670 , p_component_type => l_component_type
130671 , p_component_code => l_component_code
130672 , p_component_type_code => l_component_type_code
130673 , p_component_appl_id => l_component_appl_id
130674 , p_amb_context_code => l_amb_context_code
130675 , p_side => 'NA'
130676 );
130677
130678
130679 --
130680 --
130681 END IF;
130682
130683 --
130684 -- Update the line information that should be overwritten
130685 --
130686 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
130687 p_header_num => 1);
130688 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
130689
130690 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
130691
130692 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
130693 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
130694 END IF;
130695
130696 --
130697 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
130698 --
130699 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
130700 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
130701 ELSE
130702 ---------------------------------------------------------------------------------------------------
130703 -- 4262811a Switch Sign
130704 ---------------------------------------------------------------------------------------------------
130705 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
130706 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130707 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130708 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
130709 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130710 -- 5132302
130711 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
130712 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
130713
130714 END IF;
130715
130716 -- 4955764
130717 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130718 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
130719
130720
130721 XLA_AE_LINES_PKG.ValidateCurrentLine;
130722 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
130723
130724 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
130725 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
130726 ,p_balance_type_code => l_balance_type_code);
130727
130728 END IF;
130729
130730 -----------------------------------------------------------------------------------------
130731 -- 4262811 Multiperiod Accounting
130732 -----------------------------------------------------------------------------------------
130733 -- No MPA option is assigned.
130734
130735
130736 END IF;
130737 END IF;
130738 --
130739
130740 --
130741 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130742 trace
130743 (p_msg => 'END of AcctLineType_236'
130744 ,p_level => C_LEVEL_PROCEDURE
130745 ,p_module => l_log_module);
130746 END IF;
130747 --
130748 EXCEPTION
130749 WHEN xla_exceptions_pkg.application_exception THEN
130750 RAISE;
130751 WHEN OTHERS THEN
130752 xla_exceptions_pkg.raise_message
130753 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_236');
130754 END AcctLineType_236;
130755 --
130756
130757 ---------------------------------------
130758 --
130759 -- PRIVATE FUNCTION
130760 -- AcctLineType_237
130761 --
130762 ---------------------------------------
130763 PROCEDURE AcctLineType_237 (
130764 p_application_id IN NUMBER
130765 ,p_event_id IN NUMBER
130766 ,p_calculate_acctd_flag IN VARCHAR2
130767 ,p_calculate_g_l_flag IN VARCHAR2
130768 ,p_actual_flag IN OUT VARCHAR2
130769 ,p_balance_type_code OUT VARCHAR2
130770 ,p_gain_or_loss_ref OUT VARCHAR2
130771
130772 --Cost Management Default Account
130773 , p_source_4 IN NUMBER
130774 --Receiving Accounting Line Type
130775 , p_source_5 IN VARCHAR2
130776 --DISTRIBUTION_IDENTIFIER
130777 , p_source_11 IN NUMBER
130778 --Distribution Type
130779 , p_source_12 IN VARCHAR2
130780 , p_source_12_meaning IN VARCHAR2
130781 --Entered Amount
130782 , p_source_18 IN NUMBER
130783 --Accounted Amount
130784 , p_source_22 IN NUMBER
130785 --Entered Currency Code
130786 , p_source_32 IN VARCHAR2
130787 --Currency Conversion Date
130788 , p_source_33 IN DATE
130789 --Currency Conversion Rate
130790 , p_source_34 IN NUMBER
130791 --Currency Conversion Type
130792 , p_source_36 IN VARCHAR2
130793 )
130794 IS
130795
130796 l_component_type VARCHAR2(80);
130797 l_component_code VARCHAR2(30);
130798 l_component_type_code VARCHAR2(1);
130799 l_component_appl_id INTEGER;
130800 l_amb_context_code VARCHAR2(30);
130801 l_entity_code VARCHAR2(30);
130802 l_event_class_code VARCHAR2(30);
130803 l_ae_header_id NUMBER;
130804 l_event_type_code VARCHAR2(30);
130805 l_line_definition_code VARCHAR2(30);
130806 l_line_definition_owner_code VARCHAR2(1);
130807 --
130808 -- adr variables
130809 l_segment VARCHAR2(30);
130810 l_ccid NUMBER;
130811 l_adr_transaction_coa_id NUMBER;
130812 l_adr_accounting_coa_id NUMBER;
130813 l_adr_flexfield_segment_code VARCHAR2(30);
130814 l_adr_flex_value_set_id NUMBER;
130815 l_adr_value_type_code VARCHAR2(30);
130816 l_adr_value_combination_id NUMBER;
130817 l_adr_value_segment_code VARCHAR2(30);
130818
130819 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
130820 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
130821 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
130822 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
130823
130824 -- 4262811 Variables ------------------------------------------------------------------------------------------
130825 l_entered_amt_idx NUMBER;
130826 l_accted_amt_idx NUMBER;
130827 l_acc_rev_flag VARCHAR2(1);
130828 l_accrual_line_num NUMBER;
130829 l_tmp_amt NUMBER;
130830 l_acc_rev_natural_side_code VARCHAR2(1);
130831
130832 l_num_entries NUMBER;
130833 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
130834 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
130835 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
130836 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
130837 l_recog_line_1 NUMBER;
130838 l_recog_line_2 NUMBER;
130839
130840 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
130841 l_bflow_applied_to_amt NUMBER; -- 5132302
130842 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
130843
130844 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
130845
130846 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
130847 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
130848
130849 ---------------------------------------------------------------------------------------------------------------
130850
130851
130852 --
130853 -- bulk performance
130854 --
130855 l_balance_type_code VARCHAR2(1);
130856 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
130857 l_log_module VARCHAR2(240);
130858
130859 --
130860 -- Upgrade strategy
130861 --
130862 l_actual_upg_option VARCHAR2(1);
130863 l_enc_upg_option VARCHAR2(1);
130864
130865 --
130866 BEGIN
130867 --
130868 IF g_log_enabled THEN
130869 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_237';
130870 END IF;
130871 --
130872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
130873
130874 trace
130875 (p_msg => 'BEGIN of AcctLineType_237'
130876 ,p_level => C_LEVEL_PROCEDURE
130877 ,p_module => l_log_module);
130878
130879 END IF;
130880 --
130881 l_component_type := 'AMB_JLT';
130882 l_component_code := 'RECEIVING_INSPECTION';
130883 l_component_type_code := 'S';
130884 l_component_appl_id := 707;
130885 l_amb_context_code := 'DEFAULT';
130886 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
130887 l_event_class_code := 'LDD_COST_ADJ_RCV';
130888 l_event_type_code := 'LDD_COST_ADJ_RCV_ALL';
130889 l_line_definition_owner_code := 'S';
130890 l_line_definition_code := 'LDD_COST_ADJ_RCV';
130891 --
130892 l_balance_type_code := 'A';
130893 l_segment := NULL;
130894 l_ccid := NULL;
130895 l_adr_transaction_coa_id := NULL;
130896 l_adr_accounting_coa_id := NULL;
130897 l_adr_flexfield_segment_code := NULL;
130898 l_adr_flex_value_set_id := NULL;
130899 l_adr_value_type_code := NULL;
130900 l_adr_value_combination_id := NULL;
130901 l_adr_value_segment_code := NULL;
130902
130903 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
130904 l_bflow_class_code := ''; -- 4219869 Business Flow
130905 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
130906 l_budgetary_control_flag := 'N';
130907
130908 l_bflow_applied_to_amt_idx := NULL; -- 5132302
130909 l_bflow_applied_to_amt := NULL; -- 5132302
130910 l_entered_amt_idx := NULL; -- 4262811
130911 l_accted_amt_idx := NULL; -- 4262811
130912 l_acc_rev_flag := NULL; -- 4262811
130913 l_accrual_line_num := NULL; -- 4262811
130914 l_tmp_amt := NULL; -- 4262811
130915 --
130916
130917 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
130918 l_balance_type_code <> 'B' THEN
130919 IF NVL(p_source_5,'
130920 ') = 'Receiving Inspection'
130921 THEN
130922
130923 --
130924 XLA_AE_LINES_PKG.SetNewLine;
130925
130926 p_balance_type_code := l_balance_type_code;
130927 -- set the flag so later we will know whether the gain loss line needs to be created
130928
130929 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
130930 p_actual_flag :='A';
130931 END IF;
130932
130933 --
130934 -- bulk performance
130935 --
130936 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
130937 p_header_num => 0); -- 4262811
130938 --
130939 -- set accounting line options
130940 --
130941 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
130942 p_natural_side_code => 'D'
130943 , p_gain_or_loss_flag => 'N'
130944 , p_gl_transfer_mode_code => 'S'
130945 , p_acct_entry_type_code => 'A'
130946 , p_switch_side_flag => 'Y'
130947 , p_merge_duplicate_code => 'N'
130948 );
130949 --
130950 l_acc_rev_natural_side_code := 'C'; -- 4262811
130951 --
130952 --
130953 -- set accounting line type info
130954 --
130955 xla_ae_lines_pkg.SetAcctLineType
130956 (p_component_type => l_component_type
130957 ,p_event_type_code => l_event_type_code
130958 ,p_line_definition_owner_code => l_line_definition_owner_code
130959 ,p_line_definition_code => l_line_definition_code
130960 ,p_accounting_line_code => l_component_code
130961 ,p_accounting_line_type_code => l_component_type_code
130962 ,p_accounting_line_appl_id => l_component_appl_id
130963 ,p_amb_context_code => l_amb_context_code
130964 ,p_entity_code => l_entity_code
130965 ,p_event_class_code => l_event_class_code);
130966 --
130967 -- set accounting class
130968 --
130969 xla_ae_lines_pkg.SetAcctClass(
130970 p_accounting_class_code => 'RECEIVING_INSPECTION'
130971 , p_ae_header_id => l_ae_header_id
130972 );
130973
130974 --
130975 -- set rounding class
130976 --
130977 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
130978 'RECEIVING_INSPECTION';
130979
130980 --
130981 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
130982 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
130983 --
130984 -- bulk performance
130985 --
130986 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
130987
130988 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
130989 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
130990
130991 -- 4955764
130992 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
130993 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
130994
130995 -- 4458381 Public Sector Enh
130996
130997 --
130998 -- set accounting attributes for the line type
130999 --
131000 l_entered_amt_idx := 3;
131001 l_accted_amt_idx := 8;
131002 l_bflow_applied_to_amt_idx := NULL; -- 5132302
131003 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
131004 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
131005 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
131006 l_rec_acct_attrs.array_char_value(2) := p_source_12;
131007 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
131008 l_rec_acct_attrs.array_num_value(3) := p_source_18;
131009 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
131010 l_rec_acct_attrs.array_char_value(4) := p_source_32;
131011 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
131012 l_rec_acct_attrs.array_date_value(5) := p_source_33;
131013 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
131014 l_rec_acct_attrs.array_num_value(6) := p_source_34;
131015 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
131016 l_rec_acct_attrs.array_char_value(7) := p_source_36;
131017 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
131018 l_rec_acct_attrs.array_num_value(8) := p_source_22;
131019
131020 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
131021 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
131022
131023 ---------------------------------------------------------------------------------------------------------------
131024 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
131025 ---------------------------------------------------------------------------------------------------------------
131026 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
131027
131028 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131029 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131030
131031 IF xla_accounting_cache_pkg.GetValueChar
131032 (p_source_code => 'LEDGER_CATEGORY_CODE'
131033 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
131034 AND l_bflow_method_code = 'PRIOR_ENTRY'
131035 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
131036 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
131037 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
131038 )
131039 THEN
131040 xla_ae_lines_pkg.BflowUpgEntry
131041 (p_business_method_code => l_bflow_method_code
131042 ,p_business_class_code => l_bflow_class_code
131043 ,p_balance_type => l_balance_type_code);
131044 ELSE
131045 NULL;
131046 -- No business flow processing for business flow method of NONE.
131047 END IF;
131048
131049 --
131050 -- call analytical criteria
131051 --
131052
131053 --
131054 -- call description
131055 --
131056 -- No description or it is inherited.
131057 --
131058 -- call ADRs
131059 -- Bug 4922099
131060 --
131061 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131062 (NVL(l_actual_upg_option, 'N') = 'O') OR
131063 (NVL(l_enc_upg_option, 'N') = 'O')
131064 )
131065 THEN
131066 NULL;
131067 --
131068 --
131069
131070 l_ccid := AcctDerRule_4(
131071 p_application_id => p_application_id
131072 , p_ae_header_id => l_ae_header_id
131073 , p_source_4 => p_source_4
131074 , x_transaction_coa_id => l_adr_transaction_coa_id
131075 , x_accounting_coa_id => l_adr_accounting_coa_id
131076 , x_value_type_code => l_adr_value_type_code
131077 , p_side => 'NA'
131078 );
131079
131080 xla_ae_lines_pkg.set_ccid(
131081 p_code_combination_id => l_ccid
131082 , p_value_type_code => l_adr_value_type_code
131083 , p_transaction_coa_id => l_adr_transaction_coa_id
131084 , p_accounting_coa_id => l_adr_accounting_coa_id
131085 , p_adr_code => 'CST_DEFAULT'
131086 , p_adr_type_code => 'S'
131087 , p_component_type => l_component_type
131088 , p_component_code => l_component_code
131089 , p_component_type_code => l_component_type_code
131090 , p_component_appl_id => l_component_appl_id
131091 , p_amb_context_code => l_amb_context_code
131092 , p_side => 'NA'
131093 );
131094
131095
131096 --
131097 --
131098 END IF;
131099 --
131100 -- Bug 4922099
131101 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
131102 (NVL(l_enc_upg_option, 'N') = 'O')
131103 ) AND
131104 (l_bflow_method_code = 'PRIOR_ENTRY')
131105 )
131106 THEN
131107 IF
131108 --
131109 1 = 2
131110 --
131111 THEN
131112 xla_accounting_err_pkg.build_message
131113 (p_appli_s_name => 'XLA'
131114 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131115 ,p_token_1 => 'LINE_NUMBER'
131116 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
131117 ,p_token_2 => 'LINE_TYPE_NAME'
131118 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
131119 l_component_type
131120 ,l_component_code
131121 ,l_component_type_code
131122 ,l_component_appl_id
131123 ,l_amb_context_code
131124 ,l_entity_code
131125 ,l_event_class_code
131126 )
131127 ,p_token_3 => 'OWNER'
131128 ,p_value_3 => xla_lookups_pkg.get_meaning(
131129 p_lookup_type => 'XLA_OWNER_TYPE'
131130 ,p_lookup_code => l_component_type_code
131131 )
131132 ,p_token_4 => 'PRODUCT_NAME'
131133 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
131134 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
131135 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
131136 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
131137 ,p_ae_header_id => NULL
131138 );
131139
131140 IF (C_LEVEL_ERROR>= g_log_level) THEN
131141 trace
131142 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131143 ,p_level => C_LEVEL_ERROR
131144 ,p_module => l_log_module);
131145 END IF;
131146 END IF;
131147 END IF;
131148 --
131149 --
131150 ------------------------------------------------------------------------------------------------
131151 -- 4219869 Business Flow
131152 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
131153 -- Prior Entry. Currently, the following code is always generated.
131154 ------------------------------------------------------------------------------------------------
131155 XLA_AE_LINES_PKG.ValidateCurrentLine;
131156
131157 ------------------------------------------------------------------------------------
131158 -- 4219869 Business Flow
131159 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
131160 ------------------------------------------------------------------------------------
131161 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131162
131163 ----------------------------------------------------------------------------------
131164 -- 4219869 Business Flow
131165 -- Update journal entry status -- Need to generate this within IF <condition>
131166 ----------------------------------------------------------------------------------
131167 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131168 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
131169 ,p_balance_type_code => l_balance_type_code
131170 );
131171
131172 -------------------------------------------------------------------------------------------
131173 -- 4262811 - Generate the Accrual Reversal lines
131174 -------------------------------------------------------------------------------------------
131175 BEGIN
131176 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
131177 (g_array_event(p_event_id).array_value_num('header_index'));
131178 IF l_acc_rev_flag IS NULL THEN
131179 l_acc_rev_flag := 'N';
131180 END IF;
131181 EXCEPTION
131182 WHEN OTHERS THEN
131183 l_acc_rev_flag := 'N';
131184 END;
131185 --
131186 IF (l_acc_rev_flag = 'Y') THEN
131187
131188 -- 4645092 ------------------------------------------------------------------------------
131189 -- To allow MPA report to determine if it should generate report process
131190 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
131191 ------------------------------------------------------------------------------------------
131192
131193 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
131194 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
131195 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
131196 -- call ADRs
131197 -- Bug 4922099
131198 --
131199 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131200 (NVL(l_actual_upg_option, 'N') = 'O') OR
131201 (NVL(l_enc_upg_option, 'N') = 'O')
131202 )
131203 THEN
131204 NULL;
131205 --
131206 --
131207
131208 l_ccid := AcctDerRule_4(
131209 p_application_id => p_application_id
131210 , p_ae_header_id => l_ae_header_id
131211 , p_source_4 => p_source_4
131212 , x_transaction_coa_id => l_adr_transaction_coa_id
131213 , x_accounting_coa_id => l_adr_accounting_coa_id
131214 , x_value_type_code => l_adr_value_type_code
131215 , p_side => 'NA'
131216 );
131217
131218 xla_ae_lines_pkg.set_ccid(
131219 p_code_combination_id => l_ccid
131220 , p_value_type_code => l_adr_value_type_code
131221 , p_transaction_coa_id => l_adr_transaction_coa_id
131222 , p_accounting_coa_id => l_adr_accounting_coa_id
131223 , p_adr_code => 'CST_DEFAULT'
131224 , p_adr_type_code => 'S'
131225 , p_component_type => l_component_type
131226 , p_component_code => l_component_code
131227 , p_component_type_code => l_component_type_code
131228 , p_component_appl_id => l_component_appl_id
131229 , p_amb_context_code => l_amb_context_code
131230 , p_side => 'NA'
131231 );
131232
131233
131234 --
131235 --
131236 END IF;
131237
131238 --
131239 -- Update the line information that should be overwritten
131240 --
131241 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
131242 p_header_num => 1);
131243 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
131244
131245 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
131246
131247 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
131248 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
131249 END IF;
131250
131251 --
131252 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
131253 --
131254 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
131255 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
131256 ELSE
131257 ---------------------------------------------------------------------------------------------------
131258 -- 4262811a Switch Sign
131259 ---------------------------------------------------------------------------------------------------
131260 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
131261 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131262 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131263 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131264 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131265 -- 5132302
131266 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
131267 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131268
131269 END IF;
131270
131271 -- 4955764
131272 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131273 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
131274
131275
131276 XLA_AE_LINES_PKG.ValidateCurrentLine;
131277 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131278
131279 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131280 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
131281 ,p_balance_type_code => l_balance_type_code);
131282
131283 END IF;
131284
131285 -----------------------------------------------------------------------------------------
131286 -- 4262811 Multiperiod Accounting
131287 -----------------------------------------------------------------------------------------
131288 -- No MPA option is assigned.
131289
131290
131291 END IF;
131292 END IF;
131293 --
131294
131295 --
131296 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131297 trace
131298 (p_msg => 'END of AcctLineType_237'
131299 ,p_level => C_LEVEL_PROCEDURE
131300 ,p_module => l_log_module);
131301 END IF;
131302 --
131303 EXCEPTION
131304 WHEN xla_exceptions_pkg.application_exception THEN
131305 RAISE;
131306 WHEN OTHERS THEN
131307 xla_exceptions_pkg.raise_message
131308 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_237');
131309 END AcctLineType_237;
131310 --
131311
131312 ---------------------------------------
131313 --
131314 -- PRIVATE FUNCTION
131315 -- AcctLineType_238
131316 --
131317 ---------------------------------------
131318 PROCEDURE AcctLineType_238 (
131319 p_application_id IN NUMBER
131320 ,p_event_id IN NUMBER
131321 ,p_calculate_acctd_flag IN VARCHAR2
131322 ,p_calculate_g_l_flag IN VARCHAR2
131323 ,p_actual_flag IN OUT VARCHAR2
131324 ,p_balance_type_code OUT VARCHAR2
131325 ,p_gain_or_loss_ref OUT VARCHAR2
131326
131327 --Cost Management Default Account
131328 , p_source_4 IN NUMBER
131329 --Receiving Accounting Line Type
131330 , p_source_5 IN VARCHAR2
131331 --DISTRIBUTION_IDENTIFIER
131332 , p_source_11 IN NUMBER
131333 --Distribution Type
131334 , p_source_12 IN VARCHAR2
131335 , p_source_12_meaning IN VARCHAR2
131336 --Entered Currency Code
131337 , p_source_15 IN VARCHAR2
131338 --Entered Amount
131339 , p_source_18 IN NUMBER
131340 --Currency Conversion Date
131341 , p_source_19 IN DATE
131342 --Currency Conversion Rate
131343 , p_source_20 IN NUMBER
131344 --Currency Conversion Type
131345 , p_source_21 IN VARCHAR2
131346 --Accounted Amount
131347 , p_source_22 IN NUMBER
131348 )
131349 IS
131350
131351 l_component_type VARCHAR2(80);
131352 l_component_code VARCHAR2(30);
131353 l_component_type_code VARCHAR2(1);
131354 l_component_appl_id INTEGER;
131355 l_amb_context_code VARCHAR2(30);
131356 l_entity_code VARCHAR2(30);
131357 l_event_class_code VARCHAR2(30);
131358 l_ae_header_id NUMBER;
131359 l_event_type_code VARCHAR2(30);
131360 l_line_definition_code VARCHAR2(30);
131361 l_line_definition_owner_code VARCHAR2(1);
131362 --
131363 -- adr variables
131364 l_segment VARCHAR2(30);
131365 l_ccid NUMBER;
131366 l_adr_transaction_coa_id NUMBER;
131367 l_adr_accounting_coa_id NUMBER;
131368 l_adr_flexfield_segment_code VARCHAR2(30);
131369 l_adr_flex_value_set_id NUMBER;
131370 l_adr_value_type_code VARCHAR2(30);
131371 l_adr_value_combination_id NUMBER;
131372 l_adr_value_segment_code VARCHAR2(30);
131373
131374 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
131375 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
131376 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
131377 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
131378
131379 -- 4262811 Variables ------------------------------------------------------------------------------------------
131380 l_entered_amt_idx NUMBER;
131381 l_accted_amt_idx NUMBER;
131382 l_acc_rev_flag VARCHAR2(1);
131383 l_accrual_line_num NUMBER;
131384 l_tmp_amt NUMBER;
131385 l_acc_rev_natural_side_code VARCHAR2(1);
131386
131387 l_num_entries NUMBER;
131388 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
131389 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
131390 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
131391 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
131392 l_recog_line_1 NUMBER;
131393 l_recog_line_2 NUMBER;
131394
131395 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
131396 l_bflow_applied_to_amt NUMBER; -- 5132302
131397 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
131398
131399 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
131400
131401 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
131402 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
131403
131404 ---------------------------------------------------------------------------------------------------------------
131405
131406
131407 --
131408 -- bulk performance
131409 --
131410 l_balance_type_code VARCHAR2(1);
131411 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
131412 l_log_module VARCHAR2(240);
131413
131414 --
131415 -- Upgrade strategy
131416 --
131417 l_actual_upg_option VARCHAR2(1);
131418 l_enc_upg_option VARCHAR2(1);
131419
131420 --
131421 BEGIN
131422 --
131423 IF g_log_enabled THEN
131424 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_238';
131425 END IF;
131426 --
131427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131428
131429 trace
131430 (p_msg => 'BEGIN of AcctLineType_238'
131431 ,p_level => C_LEVEL_PROCEDURE
131432 ,p_module => l_log_module);
131433
131434 END IF;
131435 --
131436 l_component_type := 'AMB_JLT';
131437 l_component_code := 'RECEIVING_INSPECTION';
131438 l_component_type_code := 'S';
131439 l_component_appl_id := 707;
131440 l_amb_context_code := 'DEFAULT';
131441 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
131442 l_event_class_code := 'RCPT_REC_INSP';
131443 l_event_type_code := 'RCPT_REC_INSP_ALL';
131444 l_line_definition_owner_code := 'S';
131445 l_line_definition_code := 'RCPT_REC_INSP';
131446 --
131447 l_balance_type_code := 'A';
131448 l_segment := NULL;
131449 l_ccid := NULL;
131450 l_adr_transaction_coa_id := NULL;
131451 l_adr_accounting_coa_id := NULL;
131452 l_adr_flexfield_segment_code := NULL;
131453 l_adr_flex_value_set_id := NULL;
131454 l_adr_value_type_code := NULL;
131455 l_adr_value_combination_id := NULL;
131456 l_adr_value_segment_code := NULL;
131457
131458 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
131459 l_bflow_class_code := ''; -- 4219869 Business Flow
131460 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
131461 l_budgetary_control_flag := 'N';
131462
131463 l_bflow_applied_to_amt_idx := NULL; -- 5132302
131464 l_bflow_applied_to_amt := NULL; -- 5132302
131465 l_entered_amt_idx := NULL; -- 4262811
131466 l_accted_amt_idx := NULL; -- 4262811
131467 l_acc_rev_flag := NULL; -- 4262811
131468 l_accrual_line_num := NULL; -- 4262811
131469 l_tmp_amt := NULL; -- 4262811
131470 --
131471
131472 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
131473 l_balance_type_code <> 'B' THEN
131474 IF NVL(p_source_5,'
131475 ') = 'Receiving Inspection'
131476 THEN
131477
131478 --
131479 XLA_AE_LINES_PKG.SetNewLine;
131480
131481 p_balance_type_code := l_balance_type_code;
131482 -- set the flag so later we will know whether the gain loss line needs to be created
131483
131484 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
131485 p_actual_flag :='A';
131486 END IF;
131487
131488 --
131489 -- bulk performance
131490 --
131491 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
131492 p_header_num => 0); -- 4262811
131493 --
131494 -- set accounting line options
131495 --
131496 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
131497 p_natural_side_code => 'D'
131498 , p_gain_or_loss_flag => 'N'
131499 , p_gl_transfer_mode_code => 'S'
131500 , p_acct_entry_type_code => 'A'
131501 , p_switch_side_flag => 'Y'
131502 , p_merge_duplicate_code => 'N'
131503 );
131504 --
131505 l_acc_rev_natural_side_code := 'C'; -- 4262811
131506 --
131507 --
131508 -- set accounting line type info
131509 --
131510 xla_ae_lines_pkg.SetAcctLineType
131511 (p_component_type => l_component_type
131512 ,p_event_type_code => l_event_type_code
131513 ,p_line_definition_owner_code => l_line_definition_owner_code
131514 ,p_line_definition_code => l_line_definition_code
131515 ,p_accounting_line_code => l_component_code
131516 ,p_accounting_line_type_code => l_component_type_code
131517 ,p_accounting_line_appl_id => l_component_appl_id
131518 ,p_amb_context_code => l_amb_context_code
131519 ,p_entity_code => l_entity_code
131520 ,p_event_class_code => l_event_class_code);
131521 --
131522 -- set accounting class
131523 --
131524 xla_ae_lines_pkg.SetAcctClass(
131525 p_accounting_class_code => 'RECEIVING_INSPECTION'
131526 , p_ae_header_id => l_ae_header_id
131527 );
131528
131529 --
131530 -- set rounding class
131531 --
131532 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
131533 'RECEIVING_INSPECTION';
131534
131535 --
131536 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
131537 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
131538 --
131539 -- bulk performance
131540 --
131541 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
131542
131543 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
131544 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
131545
131546 -- 4955764
131547 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131548 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
131549
131550 -- 4458381 Public Sector Enh
131551
131552 --
131553 -- set accounting attributes for the line type
131554 --
131555 l_entered_amt_idx := 3;
131556 l_accted_amt_idx := 8;
131557 l_bflow_applied_to_amt_idx := NULL; -- 5132302
131558 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
131559 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
131560 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
131561 l_rec_acct_attrs.array_char_value(2) := p_source_12;
131562 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
131563 l_rec_acct_attrs.array_num_value(3) := p_source_18;
131564 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
131565 l_rec_acct_attrs.array_char_value(4) := p_source_15;
131566 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
131567 l_rec_acct_attrs.array_date_value(5) := p_source_19;
131568 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
131569 l_rec_acct_attrs.array_num_value(6) := p_source_20;
131570 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
131571 l_rec_acct_attrs.array_char_value(7) := p_source_21;
131572 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
131573 l_rec_acct_attrs.array_num_value(8) := p_source_22;
131574
131575 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
131576 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
131577
131578 ---------------------------------------------------------------------------------------------------------------
131579 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
131580 ---------------------------------------------------------------------------------------------------------------
131581 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
131582
131583 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131584 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
131585
131586 IF xla_accounting_cache_pkg.GetValueChar
131587 (p_source_code => 'LEDGER_CATEGORY_CODE'
131588 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
131589 AND l_bflow_method_code = 'PRIOR_ENTRY'
131590 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
131591 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
131592 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
131593 )
131594 THEN
131595 xla_ae_lines_pkg.BflowUpgEntry
131596 (p_business_method_code => l_bflow_method_code
131597 ,p_business_class_code => l_bflow_class_code
131598 ,p_balance_type => l_balance_type_code);
131599 ELSE
131600 NULL;
131601 -- No business flow processing for business flow method of NONE.
131602 END IF;
131603
131604 --
131605 -- call analytical criteria
131606 --
131607
131608 --
131609 -- call description
131610 --
131611 -- No description or it is inherited.
131612 --
131613 -- call ADRs
131614 -- Bug 4922099
131615 --
131616 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131617 (NVL(l_actual_upg_option, 'N') = 'O') OR
131618 (NVL(l_enc_upg_option, 'N') = 'O')
131619 )
131620 THEN
131621 NULL;
131622 --
131623 --
131624
131625 l_ccid := AcctDerRule_4(
131626 p_application_id => p_application_id
131627 , p_ae_header_id => l_ae_header_id
131628 , p_source_4 => p_source_4
131629 , x_transaction_coa_id => l_adr_transaction_coa_id
131630 , x_accounting_coa_id => l_adr_accounting_coa_id
131631 , x_value_type_code => l_adr_value_type_code
131632 , p_side => 'NA'
131633 );
131634
131635 xla_ae_lines_pkg.set_ccid(
131636 p_code_combination_id => l_ccid
131637 , p_value_type_code => l_adr_value_type_code
131638 , p_transaction_coa_id => l_adr_transaction_coa_id
131639 , p_accounting_coa_id => l_adr_accounting_coa_id
131640 , p_adr_code => 'CST_DEFAULT'
131641 , p_adr_type_code => 'S'
131642 , p_component_type => l_component_type
131643 , p_component_code => l_component_code
131644 , p_component_type_code => l_component_type_code
131645 , p_component_appl_id => l_component_appl_id
131646 , p_amb_context_code => l_amb_context_code
131647 , p_side => 'NA'
131648 );
131649
131650
131651 --
131652 --
131653 END IF;
131654 --
131655 -- Bug 4922099
131656 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
131657 (NVL(l_enc_upg_option, 'N') = 'O')
131658 ) AND
131659 (l_bflow_method_code = 'PRIOR_ENTRY')
131660 )
131661 THEN
131662 IF
131663 --
131664 1 = 2
131665 --
131666 THEN
131667 xla_accounting_err_pkg.build_message
131668 (p_appli_s_name => 'XLA'
131669 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131670 ,p_token_1 => 'LINE_NUMBER'
131671 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
131672 ,p_token_2 => 'LINE_TYPE_NAME'
131673 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
131674 l_component_type
131675 ,l_component_code
131676 ,l_component_type_code
131677 ,l_component_appl_id
131678 ,l_amb_context_code
131679 ,l_entity_code
131680 ,l_event_class_code
131681 )
131682 ,p_token_3 => 'OWNER'
131683 ,p_value_3 => xla_lookups_pkg.get_meaning(
131684 p_lookup_type => 'XLA_OWNER_TYPE'
131685 ,p_lookup_code => l_component_type_code
131686 )
131687 ,p_token_4 => 'PRODUCT_NAME'
131688 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
131689 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
131690 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
131691 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
131692 ,p_ae_header_id => NULL
131693 );
131694
131695 IF (C_LEVEL_ERROR>= g_log_level) THEN
131696 trace
131697 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
131698 ,p_level => C_LEVEL_ERROR
131699 ,p_module => l_log_module);
131700 END IF;
131701 END IF;
131702 END IF;
131703 --
131704 --
131705 ------------------------------------------------------------------------------------------------
131706 -- 4219869 Business Flow
131707 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
131708 -- Prior Entry. Currently, the following code is always generated.
131709 ------------------------------------------------------------------------------------------------
131710 XLA_AE_LINES_PKG.ValidateCurrentLine;
131711
131712 ------------------------------------------------------------------------------------
131713 -- 4219869 Business Flow
131714 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
131715 ------------------------------------------------------------------------------------
131716 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131717
131718 ----------------------------------------------------------------------------------
131719 -- 4219869 Business Flow
131720 -- Update journal entry status -- Need to generate this within IF <condition>
131721 ----------------------------------------------------------------------------------
131722 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131723 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
131724 ,p_balance_type_code => l_balance_type_code
131725 );
131726
131727 -------------------------------------------------------------------------------------------
131728 -- 4262811 - Generate the Accrual Reversal lines
131729 -------------------------------------------------------------------------------------------
131730 BEGIN
131731 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
131732 (g_array_event(p_event_id).array_value_num('header_index'));
131733 IF l_acc_rev_flag IS NULL THEN
131734 l_acc_rev_flag := 'N';
131735 END IF;
131736 EXCEPTION
131737 WHEN OTHERS THEN
131738 l_acc_rev_flag := 'N';
131739 END;
131740 --
131741 IF (l_acc_rev_flag = 'Y') THEN
131742
131743 -- 4645092 ------------------------------------------------------------------------------
131744 -- To allow MPA report to determine if it should generate report process
131745 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
131746 ------------------------------------------------------------------------------------------
131747
131748 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
131749 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
131750 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
131751 -- call ADRs
131752 -- Bug 4922099
131753 --
131754 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
131755 (NVL(l_actual_upg_option, 'N') = 'O') OR
131756 (NVL(l_enc_upg_option, 'N') = 'O')
131757 )
131758 THEN
131759 NULL;
131760 --
131761 --
131762
131763 l_ccid := AcctDerRule_4(
131764 p_application_id => p_application_id
131765 , p_ae_header_id => l_ae_header_id
131766 , p_source_4 => p_source_4
131767 , x_transaction_coa_id => l_adr_transaction_coa_id
131768 , x_accounting_coa_id => l_adr_accounting_coa_id
131769 , x_value_type_code => l_adr_value_type_code
131770 , p_side => 'NA'
131771 );
131772
131773 xla_ae_lines_pkg.set_ccid(
131774 p_code_combination_id => l_ccid
131775 , p_value_type_code => l_adr_value_type_code
131776 , p_transaction_coa_id => l_adr_transaction_coa_id
131777 , p_accounting_coa_id => l_adr_accounting_coa_id
131778 , p_adr_code => 'CST_DEFAULT'
131779 , p_adr_type_code => 'S'
131780 , p_component_type => l_component_type
131781 , p_component_code => l_component_code
131782 , p_component_type_code => l_component_type_code
131783 , p_component_appl_id => l_component_appl_id
131784 , p_amb_context_code => l_amb_context_code
131785 , p_side => 'NA'
131786 );
131787
131788
131789 --
131790 --
131791 END IF;
131792
131793 --
131794 -- Update the line information that should be overwritten
131795 --
131796 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
131797 p_header_num => 1);
131798 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
131799
131800 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
131801
131802 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
131803 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
131804 END IF;
131805
131806 --
131807 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
131808 --
131809 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
131810 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
131811 ELSE
131812 ---------------------------------------------------------------------------------------------------
131813 -- 4262811a Switch Sign
131814 ---------------------------------------------------------------------------------------------------
131815 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
131816 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131817 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131818 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
131819 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131820 -- 5132302
131821 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
131822 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
131823
131824 END IF;
131825
131826 -- 4955764
131827 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
131828 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
131829
131830
131831 XLA_AE_LINES_PKG.ValidateCurrentLine;
131832 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
131833
131834 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
131835 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
131836 ,p_balance_type_code => l_balance_type_code);
131837
131838 END IF;
131839
131840 -----------------------------------------------------------------------------------------
131841 -- 4262811 Multiperiod Accounting
131842 -----------------------------------------------------------------------------------------
131843 -- No MPA option is assigned.
131844
131845
131846 END IF;
131847 END IF;
131848 --
131849
131850 --
131851 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131852 trace
131853 (p_msg => 'END of AcctLineType_238'
131854 ,p_level => C_LEVEL_PROCEDURE
131855 ,p_module => l_log_module);
131856 END IF;
131857 --
131858 EXCEPTION
131859 WHEN xla_exceptions_pkg.application_exception THEN
131860 RAISE;
131861 WHEN OTHERS THEN
131862 xla_exceptions_pkg.raise_message
131863 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_238');
131864 END AcctLineType_238;
131865 --
131866
131867 ---------------------------------------
131868 --
131869 -- PRIVATE FUNCTION
131870 -- AcctLineType_239
131871 --
131872 ---------------------------------------
131873 PROCEDURE AcctLineType_239 (
131874 p_application_id IN NUMBER
131875 ,p_event_id IN NUMBER
131876 ,p_calculate_acctd_flag IN VARCHAR2
131877 ,p_calculate_g_l_flag IN VARCHAR2
131878 ,p_actual_flag IN OUT VARCHAR2
131879 ,p_balance_type_code OUT VARCHAR2
131880 ,p_gain_or_loss_ref OUT VARCHAR2
131881
131882 --Cost Management Default Account
131883 , p_source_4 IN NUMBER
131884 --Receiving Accounting Line Type
131885 , p_source_5 IN VARCHAR2
131886 --DISTRIBUTION_IDENTIFIER
131887 , p_source_11 IN NUMBER
131888 --Distribution Type
131889 , p_source_12 IN VARCHAR2
131890 , p_source_12_meaning IN VARCHAR2
131891 --Entered Currency Code
131892 , p_source_15 IN VARCHAR2
131893 --Entered Amount
131894 , p_source_18 IN NUMBER
131895 --Currency Conversion Date
131896 , p_source_19 IN DATE
131897 --Currency Conversion Rate
131898 , p_source_20 IN NUMBER
131899 --Currency Conversion Type
131900 , p_source_21 IN VARCHAR2
131901 --Accounted Amount
131902 , p_source_22 IN NUMBER
131903 )
131904 IS
131905
131906 l_component_type VARCHAR2(80);
131907 l_component_code VARCHAR2(30);
131908 l_component_type_code VARCHAR2(1);
131909 l_component_appl_id INTEGER;
131910 l_amb_context_code VARCHAR2(30);
131911 l_entity_code VARCHAR2(30);
131912 l_event_class_code VARCHAR2(30);
131913 l_ae_header_id NUMBER;
131914 l_event_type_code VARCHAR2(30);
131915 l_line_definition_code VARCHAR2(30);
131916 l_line_definition_owner_code VARCHAR2(1);
131917 --
131918 -- adr variables
131919 l_segment VARCHAR2(30);
131920 l_ccid NUMBER;
131921 l_adr_transaction_coa_id NUMBER;
131922 l_adr_accounting_coa_id NUMBER;
131923 l_adr_flexfield_segment_code VARCHAR2(30);
131924 l_adr_flex_value_set_id NUMBER;
131925 l_adr_value_type_code VARCHAR2(30);
131926 l_adr_value_combination_id NUMBER;
131927 l_adr_value_segment_code VARCHAR2(30);
131928
131929 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
131930 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
131931 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
131932 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
131933
131934 -- 4262811 Variables ------------------------------------------------------------------------------------------
131935 l_entered_amt_idx NUMBER;
131936 l_accted_amt_idx NUMBER;
131937 l_acc_rev_flag VARCHAR2(1);
131938 l_accrual_line_num NUMBER;
131939 l_tmp_amt NUMBER;
131940 l_acc_rev_natural_side_code VARCHAR2(1);
131941
131942 l_num_entries NUMBER;
131943 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
131944 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
131945 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
131946 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
131947 l_recog_line_1 NUMBER;
131948 l_recog_line_2 NUMBER;
131949
131950 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
131951 l_bflow_applied_to_amt NUMBER; -- 5132302
131952 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
131953
131954 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
131955
131956 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
131957 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
131958
131959 ---------------------------------------------------------------------------------------------------------------
131960
131961
131962 --
131963 -- bulk performance
131964 --
131965 l_balance_type_code VARCHAR2(1);
131966 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
131967 l_log_module VARCHAR2(240);
131968
131969 --
131970 -- Upgrade strategy
131971 --
131972 l_actual_upg_option VARCHAR2(1);
131973 l_enc_upg_option VARCHAR2(1);
131974
131975 --
131976 BEGIN
131977 --
131978 IF g_log_enabled THEN
131979 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_239';
131980 END IF;
131981 --
131982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
131983
131984 trace
131985 (p_msg => 'BEGIN of AcctLineType_239'
131986 ,p_level => C_LEVEL_PROCEDURE
131987 ,p_module => l_log_module);
131988
131989 END IF;
131990 --
131991 l_component_type := 'AMB_JLT';
131992 l_component_code := 'RECEIVING_INSPECTION';
131993 l_component_type_code := 'S';
131994 l_component_appl_id := 707;
131995 l_amb_context_code := 'DEFAULT';
131996 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
131997 l_event_class_code := 'RETR_PRICE_ADJ_RCV';
131998 l_event_type_code := 'RETR_PRICE_ADJ_RCV_ALL';
131999 l_line_definition_owner_code := 'S';
132000 l_line_definition_code := 'RETR_PRICE_ADJ_RCV';
132001 --
132002 l_balance_type_code := 'A';
132003 l_segment := NULL;
132004 l_ccid := NULL;
132005 l_adr_transaction_coa_id := NULL;
132006 l_adr_accounting_coa_id := NULL;
132007 l_adr_flexfield_segment_code := NULL;
132008 l_adr_flex_value_set_id := NULL;
132009 l_adr_value_type_code := NULL;
132010 l_adr_value_combination_id := NULL;
132011 l_adr_value_segment_code := NULL;
132012
132013 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
132014 l_bflow_class_code := ''; -- 4219869 Business Flow
132015 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
132016 l_budgetary_control_flag := 'N';
132017
132018 l_bflow_applied_to_amt_idx := NULL; -- 5132302
132019 l_bflow_applied_to_amt := NULL; -- 5132302
132020 l_entered_amt_idx := NULL; -- 4262811
132021 l_accted_amt_idx := NULL; -- 4262811
132022 l_acc_rev_flag := NULL; -- 4262811
132023 l_accrual_line_num := NULL; -- 4262811
132024 l_tmp_amt := NULL; -- 4262811
132025 --
132026
132027 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
132028 l_balance_type_code <> 'B' THEN
132029 IF NVL(p_source_5,'
132030 ') = 'Receiving Inspection'
132031 THEN
132032
132033 --
132034 XLA_AE_LINES_PKG.SetNewLine;
132035
132036 p_balance_type_code := l_balance_type_code;
132037 -- set the flag so later we will know whether the gain loss line needs to be created
132038
132039 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
132040 p_actual_flag :='A';
132041 END IF;
132042
132043 --
132044 -- bulk performance
132045 --
132046 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
132047 p_header_num => 0); -- 4262811
132048 --
132049 -- set accounting line options
132050 --
132051 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
132052 p_natural_side_code => 'D'
132053 , p_gain_or_loss_flag => 'N'
132054 , p_gl_transfer_mode_code => 'S'
132055 , p_acct_entry_type_code => 'A'
132056 , p_switch_side_flag => 'Y'
132057 , p_merge_duplicate_code => 'N'
132058 );
132059 --
132060 l_acc_rev_natural_side_code := 'C'; -- 4262811
132061 --
132062 --
132063 -- set accounting line type info
132064 --
132065 xla_ae_lines_pkg.SetAcctLineType
132066 (p_component_type => l_component_type
132067 ,p_event_type_code => l_event_type_code
132068 ,p_line_definition_owner_code => l_line_definition_owner_code
132069 ,p_line_definition_code => l_line_definition_code
132070 ,p_accounting_line_code => l_component_code
132071 ,p_accounting_line_type_code => l_component_type_code
132072 ,p_accounting_line_appl_id => l_component_appl_id
132073 ,p_amb_context_code => l_amb_context_code
132074 ,p_entity_code => l_entity_code
132075 ,p_event_class_code => l_event_class_code);
132076 --
132077 -- set accounting class
132078 --
132079 xla_ae_lines_pkg.SetAcctClass(
132080 p_accounting_class_code => 'RECEIVING_INSPECTION'
132081 , p_ae_header_id => l_ae_header_id
132082 );
132083
132084 --
132085 -- set rounding class
132086 --
132087 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
132088 'RECEIVING_INSPECTION';
132089
132090 --
132091 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
132092 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
132093 --
132094 -- bulk performance
132095 --
132096 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
132097
132098 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
132099 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
132100
132101 -- 4955764
132102 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132103 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
132104
132105 -- 4458381 Public Sector Enh
132106
132107 --
132108 -- set accounting attributes for the line type
132109 --
132110 l_entered_amt_idx := 3;
132111 l_accted_amt_idx := 8;
132112 l_bflow_applied_to_amt_idx := NULL; -- 5132302
132113 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
132114 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
132115 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
132116 l_rec_acct_attrs.array_char_value(2) := p_source_12;
132117 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
132118 l_rec_acct_attrs.array_num_value(3) := p_source_18;
132119 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
132120 l_rec_acct_attrs.array_char_value(4) := p_source_15;
132121 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
132122 l_rec_acct_attrs.array_date_value(5) := p_source_19;
132123 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
132124 l_rec_acct_attrs.array_num_value(6) := p_source_20;
132125 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
132126 l_rec_acct_attrs.array_char_value(7) := p_source_21;
132127 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
132128 l_rec_acct_attrs.array_num_value(8) := p_source_22;
132129
132130 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
132131 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
132132
132133 ---------------------------------------------------------------------------------------------------------------
132134 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
132135 ---------------------------------------------------------------------------------------------------------------
132136 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
132137
132138 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132139 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132140
132141 IF xla_accounting_cache_pkg.GetValueChar
132142 (p_source_code => 'LEDGER_CATEGORY_CODE'
132143 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
132144 AND l_bflow_method_code = 'PRIOR_ENTRY'
132145 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
132146 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
132147 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
132148 )
132149 THEN
132150 xla_ae_lines_pkg.BflowUpgEntry
132151 (p_business_method_code => l_bflow_method_code
132152 ,p_business_class_code => l_bflow_class_code
132153 ,p_balance_type => l_balance_type_code);
132154 ELSE
132155 NULL;
132156 -- No business flow processing for business flow method of NONE.
132157 END IF;
132158
132159 --
132160 -- call analytical criteria
132161 --
132162
132163 --
132164 -- call description
132165 --
132166 -- No description or it is inherited.
132167 --
132168 -- call ADRs
132169 -- Bug 4922099
132170 --
132171 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132172 (NVL(l_actual_upg_option, 'N') = 'O') OR
132173 (NVL(l_enc_upg_option, 'N') = 'O')
132174 )
132175 THEN
132176 NULL;
132177 --
132178 --
132179
132180 l_ccid := AcctDerRule_4(
132181 p_application_id => p_application_id
132182 , p_ae_header_id => l_ae_header_id
132183 , p_source_4 => p_source_4
132184 , x_transaction_coa_id => l_adr_transaction_coa_id
132185 , x_accounting_coa_id => l_adr_accounting_coa_id
132186 , x_value_type_code => l_adr_value_type_code
132187 , p_side => 'NA'
132188 );
132189
132190 xla_ae_lines_pkg.set_ccid(
132191 p_code_combination_id => l_ccid
132192 , p_value_type_code => l_adr_value_type_code
132193 , p_transaction_coa_id => l_adr_transaction_coa_id
132194 , p_accounting_coa_id => l_adr_accounting_coa_id
132195 , p_adr_code => 'CST_DEFAULT'
132196 , p_adr_type_code => 'S'
132197 , p_component_type => l_component_type
132198 , p_component_code => l_component_code
132199 , p_component_type_code => l_component_type_code
132200 , p_component_appl_id => l_component_appl_id
132201 , p_amb_context_code => l_amb_context_code
132202 , p_side => 'NA'
132203 );
132204
132205
132206 --
132207 --
132208 END IF;
132209 --
132210 -- Bug 4922099
132211 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
132212 (NVL(l_enc_upg_option, 'N') = 'O')
132213 ) AND
132214 (l_bflow_method_code = 'PRIOR_ENTRY')
132215 )
132216 THEN
132217 IF
132218 --
132219 1 = 2
132220 --
132221 THEN
132222 xla_accounting_err_pkg.build_message
132223 (p_appli_s_name => 'XLA'
132224 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132225 ,p_token_1 => 'LINE_NUMBER'
132226 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
132227 ,p_token_2 => 'LINE_TYPE_NAME'
132228 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
132229 l_component_type
132230 ,l_component_code
132231 ,l_component_type_code
132232 ,l_component_appl_id
132233 ,l_amb_context_code
132234 ,l_entity_code
132235 ,l_event_class_code
132236 )
132237 ,p_token_3 => 'OWNER'
132238 ,p_value_3 => xla_lookups_pkg.get_meaning(
132239 p_lookup_type => 'XLA_OWNER_TYPE'
132240 ,p_lookup_code => l_component_type_code
132241 )
132242 ,p_token_4 => 'PRODUCT_NAME'
132243 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
132244 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
132245 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
132246 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
132247 ,p_ae_header_id => NULL
132248 );
132249
132250 IF (C_LEVEL_ERROR>= g_log_level) THEN
132251 trace
132252 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132253 ,p_level => C_LEVEL_ERROR
132254 ,p_module => l_log_module);
132255 END IF;
132256 END IF;
132257 END IF;
132258 --
132259 --
132260 ------------------------------------------------------------------------------------------------
132261 -- 4219869 Business Flow
132262 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
132263 -- Prior Entry. Currently, the following code is always generated.
132264 ------------------------------------------------------------------------------------------------
132265 XLA_AE_LINES_PKG.ValidateCurrentLine;
132266
132267 ------------------------------------------------------------------------------------
132268 -- 4219869 Business Flow
132269 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
132270 ------------------------------------------------------------------------------------
132271 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132272
132273 ----------------------------------------------------------------------------------
132274 -- 4219869 Business Flow
132275 -- Update journal entry status -- Need to generate this within IF <condition>
132276 ----------------------------------------------------------------------------------
132277 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132278 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
132279 ,p_balance_type_code => l_balance_type_code
132280 );
132281
132282 -------------------------------------------------------------------------------------------
132283 -- 4262811 - Generate the Accrual Reversal lines
132284 -------------------------------------------------------------------------------------------
132285 BEGIN
132286 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
132287 (g_array_event(p_event_id).array_value_num('header_index'));
132288 IF l_acc_rev_flag IS NULL THEN
132289 l_acc_rev_flag := 'N';
132290 END IF;
132291 EXCEPTION
132292 WHEN OTHERS THEN
132293 l_acc_rev_flag := 'N';
132294 END;
132295 --
132296 IF (l_acc_rev_flag = 'Y') THEN
132297
132298 -- 4645092 ------------------------------------------------------------------------------
132299 -- To allow MPA report to determine if it should generate report process
132300 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
132301 ------------------------------------------------------------------------------------------
132302
132303 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
132304 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
132305 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
132306 -- call ADRs
132307 -- Bug 4922099
132308 --
132309 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132310 (NVL(l_actual_upg_option, 'N') = 'O') OR
132311 (NVL(l_enc_upg_option, 'N') = 'O')
132312 )
132313 THEN
132314 NULL;
132315 --
132316 --
132317
132318 l_ccid := AcctDerRule_4(
132319 p_application_id => p_application_id
132320 , p_ae_header_id => l_ae_header_id
132321 , p_source_4 => p_source_4
132322 , x_transaction_coa_id => l_adr_transaction_coa_id
132323 , x_accounting_coa_id => l_adr_accounting_coa_id
132324 , x_value_type_code => l_adr_value_type_code
132325 , p_side => 'NA'
132326 );
132327
132328 xla_ae_lines_pkg.set_ccid(
132329 p_code_combination_id => l_ccid
132330 , p_value_type_code => l_adr_value_type_code
132331 , p_transaction_coa_id => l_adr_transaction_coa_id
132332 , p_accounting_coa_id => l_adr_accounting_coa_id
132333 , p_adr_code => 'CST_DEFAULT'
132334 , p_adr_type_code => 'S'
132335 , p_component_type => l_component_type
132336 , p_component_code => l_component_code
132337 , p_component_type_code => l_component_type_code
132338 , p_component_appl_id => l_component_appl_id
132339 , p_amb_context_code => l_amb_context_code
132340 , p_side => 'NA'
132341 );
132342
132343
132344 --
132345 --
132346 END IF;
132347
132348 --
132349 -- Update the line information that should be overwritten
132350 --
132351 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
132352 p_header_num => 1);
132353 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
132354
132355 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
132356
132357 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
132358 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
132359 END IF;
132360
132361 --
132362 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
132363 --
132364 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
132365 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
132366 ELSE
132367 ---------------------------------------------------------------------------------------------------
132368 -- 4262811a Switch Sign
132369 ---------------------------------------------------------------------------------------------------
132370 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
132371 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132372 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132373 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132374 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132375 -- 5132302
132376 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
132377 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132378
132379 END IF;
132380
132381 -- 4955764
132382 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132383 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
132384
132385
132386 XLA_AE_LINES_PKG.ValidateCurrentLine;
132387 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132388
132389 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132390 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
132391 ,p_balance_type_code => l_balance_type_code);
132392
132393 END IF;
132394
132395 -----------------------------------------------------------------------------------------
132396 -- 4262811 Multiperiod Accounting
132397 -----------------------------------------------------------------------------------------
132398 -- No MPA option is assigned.
132399
132400
132401 END IF;
132402 END IF;
132403 --
132404
132405 --
132406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132407 trace
132408 (p_msg => 'END of AcctLineType_239'
132409 ,p_level => C_LEVEL_PROCEDURE
132410 ,p_module => l_log_module);
132411 END IF;
132412 --
132413 EXCEPTION
132414 WHEN xla_exceptions_pkg.application_exception THEN
132415 RAISE;
132416 WHEN OTHERS THEN
132417 xla_exceptions_pkg.raise_message
132418 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_239');
132419 END AcctLineType_239;
132420 --
132421
132422 ---------------------------------------
132423 --
132424 -- PRIVATE FUNCTION
132425 -- AcctLineType_240
132426 --
132427 ---------------------------------------
132428 PROCEDURE AcctLineType_240 (
132429 p_application_id IN NUMBER
132430 ,p_event_id IN NUMBER
132431 ,p_calculate_acctd_flag IN VARCHAR2
132432 ,p_calculate_g_l_flag IN VARCHAR2
132433 ,p_actual_flag IN OUT VARCHAR2
132434 ,p_balance_type_code OUT VARCHAR2
132435 ,p_gain_or_loss_ref OUT VARCHAR2
132436
132437 --Cost Management Default Account
132438 , p_source_4 IN NUMBER
132439 --Receiving Accounting Line Type
132440 , p_source_5 IN VARCHAR2
132441 --DISTRIBUTION_IDENTIFIER
132442 , p_source_11 IN NUMBER
132443 --Distribution Type
132444 , p_source_12 IN VARCHAR2
132445 , p_source_12_meaning IN VARCHAR2
132446 --Entered Currency Code
132447 , p_source_15 IN VARCHAR2
132448 --Entered Amount
132449 , p_source_18 IN NUMBER
132450 --Currency Conversion Date
132451 , p_source_19 IN DATE
132452 --Currency Conversion Rate
132453 , p_source_20 IN NUMBER
132454 --Accounted Amount
132455 , p_source_22 IN NUMBER
132456 )
132457 IS
132458
132459 l_component_type VARCHAR2(80);
132460 l_component_code VARCHAR2(30);
132461 l_component_type_code VARCHAR2(1);
132462 l_component_appl_id INTEGER;
132463 l_amb_context_code VARCHAR2(30);
132464 l_entity_code VARCHAR2(30);
132465 l_event_class_code VARCHAR2(30);
132466 l_ae_header_id NUMBER;
132467 l_event_type_code VARCHAR2(30);
132468 l_line_definition_code VARCHAR2(30);
132469 l_line_definition_owner_code VARCHAR2(1);
132470 --
132471 -- adr variables
132472 l_segment VARCHAR2(30);
132473 l_ccid NUMBER;
132474 l_adr_transaction_coa_id NUMBER;
132475 l_adr_accounting_coa_id NUMBER;
132476 l_adr_flexfield_segment_code VARCHAR2(30);
132477 l_adr_flex_value_set_id NUMBER;
132478 l_adr_value_type_code VARCHAR2(30);
132479 l_adr_value_combination_id NUMBER;
132480 l_adr_value_segment_code VARCHAR2(30);
132481
132482 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
132483 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
132484 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
132485 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
132486
132487 -- 4262811 Variables ------------------------------------------------------------------------------------------
132488 l_entered_amt_idx NUMBER;
132489 l_accted_amt_idx NUMBER;
132490 l_acc_rev_flag VARCHAR2(1);
132491 l_accrual_line_num NUMBER;
132492 l_tmp_amt NUMBER;
132493 l_acc_rev_natural_side_code VARCHAR2(1);
132494
132495 l_num_entries NUMBER;
132496 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
132497 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
132498 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
132499 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
132500 l_recog_line_1 NUMBER;
132501 l_recog_line_2 NUMBER;
132502
132503 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
132504 l_bflow_applied_to_amt NUMBER; -- 5132302
132505 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
132506
132507 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
132508
132509 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
132510 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
132511
132512 ---------------------------------------------------------------------------------------------------------------
132513
132514
132515 --
132516 -- bulk performance
132517 --
132518 l_balance_type_code VARCHAR2(1);
132519 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
132520 l_log_module VARCHAR2(240);
132521
132522 --
132523 -- Upgrade strategy
132524 --
132525 l_actual_upg_option VARCHAR2(1);
132526 l_enc_upg_option VARCHAR2(1);
132527
132528 --
132529 BEGIN
132530 --
132531 IF g_log_enabled THEN
132532 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_240';
132533 END IF;
132534 --
132535 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132536
132537 trace
132538 (p_msg => 'BEGIN of AcctLineType_240'
132539 ,p_level => C_LEVEL_PROCEDURE
132540 ,p_module => l_log_module);
132541
132542 END IF;
132543 --
132544 l_component_type := 'AMB_JLT';
132545 l_component_code := 'RECEIVING_INSPECTION';
132546 l_component_type_code := 'S';
132547 l_component_appl_id := 707;
132548 l_amb_context_code := 'DEFAULT';
132549 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
132550 l_event_class_code := 'RETR_PRICE_ADJ_DEL';
132551 l_event_type_code := 'RETR_PRICE_ADJ_DEL_ALL';
132552 l_line_definition_owner_code := 'S';
132553 l_line_definition_code := 'RETR_PRICE_ADJ_DEL';
132554 --
132555 l_balance_type_code := 'A';
132556 l_segment := NULL;
132557 l_ccid := NULL;
132558 l_adr_transaction_coa_id := NULL;
132559 l_adr_accounting_coa_id := NULL;
132560 l_adr_flexfield_segment_code := NULL;
132561 l_adr_flex_value_set_id := NULL;
132562 l_adr_value_type_code := NULL;
132563 l_adr_value_combination_id := NULL;
132564 l_adr_value_segment_code := NULL;
132565
132566 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
132567 l_bflow_class_code := ''; -- 4219869 Business Flow
132568 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
132569 l_budgetary_control_flag := 'N';
132570
132571 l_bflow_applied_to_amt_idx := NULL; -- 5132302
132572 l_bflow_applied_to_amt := NULL; -- 5132302
132573 l_entered_amt_idx := NULL; -- 4262811
132574 l_accted_amt_idx := NULL; -- 4262811
132575 l_acc_rev_flag := NULL; -- 4262811
132576 l_accrual_line_num := NULL; -- 4262811
132577 l_tmp_amt := NULL; -- 4262811
132578 --
132579
132580 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
132581 l_balance_type_code <> 'B' THEN
132582 IF NVL(p_source_5,'
132583 ') = 'Receiving Inspection'
132584 THEN
132585
132586 --
132587 XLA_AE_LINES_PKG.SetNewLine;
132588
132589 p_balance_type_code := l_balance_type_code;
132590 -- set the flag so later we will know whether the gain loss line needs to be created
132591
132592 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
132593 p_actual_flag :='A';
132594 END IF;
132595
132596 --
132597 -- bulk performance
132598 --
132599 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
132600 p_header_num => 0); -- 4262811
132601 --
132602 -- set accounting line options
132603 --
132604 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
132605 p_natural_side_code => 'D'
132606 , p_gain_or_loss_flag => 'N'
132607 , p_gl_transfer_mode_code => 'S'
132608 , p_acct_entry_type_code => 'A'
132609 , p_switch_side_flag => 'Y'
132610 , p_merge_duplicate_code => 'N'
132611 );
132612 --
132613 l_acc_rev_natural_side_code := 'C'; -- 4262811
132614 --
132615 --
132616 -- set accounting line type info
132617 --
132618 xla_ae_lines_pkg.SetAcctLineType
132619 (p_component_type => l_component_type
132620 ,p_event_type_code => l_event_type_code
132621 ,p_line_definition_owner_code => l_line_definition_owner_code
132622 ,p_line_definition_code => l_line_definition_code
132623 ,p_accounting_line_code => l_component_code
132624 ,p_accounting_line_type_code => l_component_type_code
132625 ,p_accounting_line_appl_id => l_component_appl_id
132626 ,p_amb_context_code => l_amb_context_code
132627 ,p_entity_code => l_entity_code
132628 ,p_event_class_code => l_event_class_code);
132629 --
132630 -- set accounting class
132631 --
132632 xla_ae_lines_pkg.SetAcctClass(
132633 p_accounting_class_code => 'RECEIVING_INSPECTION'
132634 , p_ae_header_id => l_ae_header_id
132635 );
132636
132637 --
132638 -- set rounding class
132639 --
132640 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
132641 'RECEIVING_INSPECTION';
132642
132643 --
132644 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
132645 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
132646 --
132647 -- bulk performance
132648 --
132649 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
132650
132651 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
132652 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
132653
132654 -- 4955764
132655 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132656 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
132657
132658 -- 4458381 Public Sector Enh
132659
132660 --
132661 -- set accounting attributes for the line type
132662 --
132663 l_entered_amt_idx := 3;
132664 l_accted_amt_idx := 8;
132665 l_bflow_applied_to_amt_idx := NULL; -- 5132302
132666 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
132667 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
132668 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
132669 l_rec_acct_attrs.array_char_value(2) := p_source_12;
132670 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
132671 l_rec_acct_attrs.array_num_value(3) := p_source_18;
132672 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
132673 l_rec_acct_attrs.array_char_value(4) := p_source_15;
132674 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
132675 l_rec_acct_attrs.array_date_value(5) := p_source_19;
132676 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
132677 l_rec_acct_attrs.array_num_value(6) := p_source_20;
132678 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
132679 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
132680 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
132681 l_rec_acct_attrs.array_num_value(8) := p_source_22;
132682
132683 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
132684 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
132685
132686 ---------------------------------------------------------------------------------------------------------------
132687 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
132688 ---------------------------------------------------------------------------------------------------------------
132689 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
132690
132691 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132692 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
132693
132694 IF xla_accounting_cache_pkg.GetValueChar
132695 (p_source_code => 'LEDGER_CATEGORY_CODE'
132696 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
132697 AND l_bflow_method_code = 'PRIOR_ENTRY'
132698 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
132699 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
132700 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
132701 )
132702 THEN
132703 xla_ae_lines_pkg.BflowUpgEntry
132704 (p_business_method_code => l_bflow_method_code
132705 ,p_business_class_code => l_bflow_class_code
132706 ,p_balance_type => l_balance_type_code);
132707 ELSE
132708 NULL;
132709 -- No business flow processing for business flow method of NONE.
132710 END IF;
132711
132712 --
132713 -- call analytical criteria
132714 --
132715
132716 --
132717 -- call description
132718 --
132719 -- No description or it is inherited.
132720 --
132721 -- call ADRs
132722 -- Bug 4922099
132723 --
132724 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132725 (NVL(l_actual_upg_option, 'N') = 'O') OR
132726 (NVL(l_enc_upg_option, 'N') = 'O')
132727 )
132728 THEN
132729 NULL;
132730 --
132731 --
132732
132733 l_ccid := AcctDerRule_4(
132734 p_application_id => p_application_id
132735 , p_ae_header_id => l_ae_header_id
132736 , p_source_4 => p_source_4
132737 , x_transaction_coa_id => l_adr_transaction_coa_id
132738 , x_accounting_coa_id => l_adr_accounting_coa_id
132739 , x_value_type_code => l_adr_value_type_code
132740 , p_side => 'NA'
132741 );
132742
132743 xla_ae_lines_pkg.set_ccid(
132744 p_code_combination_id => l_ccid
132745 , p_value_type_code => l_adr_value_type_code
132746 , p_transaction_coa_id => l_adr_transaction_coa_id
132747 , p_accounting_coa_id => l_adr_accounting_coa_id
132748 , p_adr_code => 'CST_DEFAULT'
132749 , p_adr_type_code => 'S'
132750 , p_component_type => l_component_type
132751 , p_component_code => l_component_code
132752 , p_component_type_code => l_component_type_code
132753 , p_component_appl_id => l_component_appl_id
132754 , p_amb_context_code => l_amb_context_code
132755 , p_side => 'NA'
132756 );
132757
132758
132759 --
132760 --
132761 END IF;
132762 --
132763 -- Bug 4922099
132764 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
132765 (NVL(l_enc_upg_option, 'N') = 'O')
132766 ) AND
132767 (l_bflow_method_code = 'PRIOR_ENTRY')
132768 )
132769 THEN
132770 IF
132771 --
132772 1 = 2
132773 --
132774 THEN
132775 xla_accounting_err_pkg.build_message
132776 (p_appli_s_name => 'XLA'
132777 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132778 ,p_token_1 => 'LINE_NUMBER'
132779 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
132780 ,p_token_2 => 'LINE_TYPE_NAME'
132781 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
132782 l_component_type
132783 ,l_component_code
132784 ,l_component_type_code
132785 ,l_component_appl_id
132786 ,l_amb_context_code
132787 ,l_entity_code
132788 ,l_event_class_code
132789 )
132790 ,p_token_3 => 'OWNER'
132791 ,p_value_3 => xla_lookups_pkg.get_meaning(
132792 p_lookup_type => 'XLA_OWNER_TYPE'
132793 ,p_lookup_code => l_component_type_code
132794 )
132795 ,p_token_4 => 'PRODUCT_NAME'
132796 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
132797 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
132798 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
132799 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
132800 ,p_ae_header_id => NULL
132801 );
132802
132803 IF (C_LEVEL_ERROR>= g_log_level) THEN
132804 trace
132805 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
132806 ,p_level => C_LEVEL_ERROR
132807 ,p_module => l_log_module);
132808 END IF;
132809 END IF;
132810 END IF;
132811 --
132812 --
132813 ------------------------------------------------------------------------------------------------
132814 -- 4219869 Business Flow
132815 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
132816 -- Prior Entry. Currently, the following code is always generated.
132817 ------------------------------------------------------------------------------------------------
132818 XLA_AE_LINES_PKG.ValidateCurrentLine;
132819
132820 ------------------------------------------------------------------------------------
132821 -- 4219869 Business Flow
132822 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
132823 ------------------------------------------------------------------------------------
132824 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132825
132826 ----------------------------------------------------------------------------------
132827 -- 4219869 Business Flow
132828 -- Update journal entry status -- Need to generate this within IF <condition>
132829 ----------------------------------------------------------------------------------
132830 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132831 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
132832 ,p_balance_type_code => l_balance_type_code
132833 );
132834
132835 -------------------------------------------------------------------------------------------
132836 -- 4262811 - Generate the Accrual Reversal lines
132837 -------------------------------------------------------------------------------------------
132838 BEGIN
132839 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
132840 (g_array_event(p_event_id).array_value_num('header_index'));
132841 IF l_acc_rev_flag IS NULL THEN
132842 l_acc_rev_flag := 'N';
132843 END IF;
132844 EXCEPTION
132845 WHEN OTHERS THEN
132846 l_acc_rev_flag := 'N';
132847 END;
132848 --
132849 IF (l_acc_rev_flag = 'Y') THEN
132850
132851 -- 4645092 ------------------------------------------------------------------------------
132852 -- To allow MPA report to determine if it should generate report process
132853 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
132854 ------------------------------------------------------------------------------------------
132855
132856 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
132857 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
132858 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
132859 -- call ADRs
132860 -- Bug 4922099
132861 --
132862 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
132863 (NVL(l_actual_upg_option, 'N') = 'O') OR
132864 (NVL(l_enc_upg_option, 'N') = 'O')
132865 )
132866 THEN
132867 NULL;
132868 --
132869 --
132870
132871 l_ccid := AcctDerRule_4(
132872 p_application_id => p_application_id
132873 , p_ae_header_id => l_ae_header_id
132874 , p_source_4 => p_source_4
132875 , x_transaction_coa_id => l_adr_transaction_coa_id
132876 , x_accounting_coa_id => l_adr_accounting_coa_id
132877 , x_value_type_code => l_adr_value_type_code
132878 , p_side => 'NA'
132879 );
132880
132881 xla_ae_lines_pkg.set_ccid(
132882 p_code_combination_id => l_ccid
132883 , p_value_type_code => l_adr_value_type_code
132884 , p_transaction_coa_id => l_adr_transaction_coa_id
132885 , p_accounting_coa_id => l_adr_accounting_coa_id
132886 , p_adr_code => 'CST_DEFAULT'
132887 , p_adr_type_code => 'S'
132888 , p_component_type => l_component_type
132889 , p_component_code => l_component_code
132890 , p_component_type_code => l_component_type_code
132891 , p_component_appl_id => l_component_appl_id
132892 , p_amb_context_code => l_amb_context_code
132893 , p_side => 'NA'
132894 );
132895
132896
132897 --
132898 --
132899 END IF;
132900
132901 --
132902 -- Update the line information that should be overwritten
132903 --
132904 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
132905 p_header_num => 1);
132906 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
132907
132908 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
132909
132910 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
132911 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
132912 END IF;
132913
132914 --
132915 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
132916 --
132917 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
132918 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
132919 ELSE
132920 ---------------------------------------------------------------------------------------------------
132921 -- 4262811a Switch Sign
132922 ---------------------------------------------------------------------------------------------------
132923 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
132924 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132925 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132926 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
132927 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132928 -- 5132302
132929 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
132930 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
132931
132932 END IF;
132933
132934 -- 4955764
132935 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
132936 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
132937
132938
132939 XLA_AE_LINES_PKG.ValidateCurrentLine;
132940 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
132941
132942 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
132943 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
132944 ,p_balance_type_code => l_balance_type_code);
132945
132946 END IF;
132947
132948 -----------------------------------------------------------------------------------------
132949 -- 4262811 Multiperiod Accounting
132950 -----------------------------------------------------------------------------------------
132951 -- No MPA option is assigned.
132952
132953
132954 END IF;
132955 END IF;
132956 --
132957
132958 --
132959 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
132960 trace
132961 (p_msg => 'END of AcctLineType_240'
132962 ,p_level => C_LEVEL_PROCEDURE
132963 ,p_module => l_log_module);
132964 END IF;
132965 --
132966 EXCEPTION
132967 WHEN xla_exceptions_pkg.application_exception THEN
132968 RAISE;
132969 WHEN OTHERS THEN
132970 xla_exceptions_pkg.raise_message
132971 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_240');
132972 END AcctLineType_240;
132973 --
132974
132975 ---------------------------------------
132976 --
132977 -- PRIVATE FUNCTION
132978 -- AcctLineType_241
132979 --
132980 ---------------------------------------
132981 PROCEDURE AcctLineType_241 (
132982 p_application_id IN NUMBER
132983 ,p_event_id IN NUMBER
132984 ,p_calculate_acctd_flag IN VARCHAR2
132985 ,p_calculate_g_l_flag IN VARCHAR2
132986 ,p_actual_flag IN OUT VARCHAR2
132987 ,p_balance_type_code OUT VARCHAR2
132988 ,p_gain_or_loss_ref OUT VARCHAR2
132989
132990 --Cost Management Default Account
132991 , p_source_4 IN NUMBER
132992 --Receiving Accounting Line Type
132993 , p_source_5 IN VARCHAR2
132994 --Applied to Application ID
132995 , p_source_6 IN NUMBER
132996 --Applied to Distribution Link Type
132997 , p_source_7 IN VARCHAR2
132998 --Applied to Entity Code
132999 , p_source_8 IN VARCHAR2
133000 --PO_DISTRIBUTION_ID
133001 , p_source_9 IN NUMBER
133002 --Applied To Purchase Document Identifier
133003 , p_source_10 IN NUMBER
133004 --DISTRIBUTION_IDENTIFIER
133005 , p_source_11 IN NUMBER
133006 --Distribution Type
133007 , p_source_12 IN VARCHAR2
133008 , p_source_12_meaning IN VARCHAR2
133009 --PO Budget Account
133010 , p_source_13 IN NUMBER
133011 --Encumbrance Reversal Amount Entered
133012 , p_source_14 IN NUMBER
133013 --Entered Currency Code
133014 , p_source_15 IN VARCHAR2
133015 --Transaction Encumbrance Reversal Amount
133016 , p_source_16 IN NUMBER
133017 --Entered Amount
133018 , p_source_18 IN NUMBER
133019 --Currency Conversion Date
133020 , p_source_19 IN DATE
133021 --Currency Conversion Rate
133022 , p_source_20 IN NUMBER
133023 --Currency Conversion Type
133024 , p_source_21 IN VARCHAR2
133025 --Accounted Amount
133026 , p_source_22 IN NUMBER
133027 --Purchasing Encumbrance Type Identifier
133028 , p_source_23 IN NUMBER
133029 --Costing Encumbrance Upgrade Option
133030 , p_source_27 IN VARCHAR2
133031 )
133032 IS
133033
133034 l_component_type VARCHAR2(80);
133035 l_component_code VARCHAR2(30);
133036 l_component_type_code VARCHAR2(1);
133037 l_component_appl_id INTEGER;
133038 l_amb_context_code VARCHAR2(30);
133039 l_entity_code VARCHAR2(30);
133040 l_event_class_code VARCHAR2(30);
133041 l_ae_header_id NUMBER;
133042 l_event_type_code VARCHAR2(30);
133043 l_line_definition_code VARCHAR2(30);
133044 l_line_definition_owner_code VARCHAR2(1);
133045 --
133046 -- adr variables
133047 l_segment VARCHAR2(30);
133048 l_ccid NUMBER;
133049 l_adr_transaction_coa_id NUMBER;
133050 l_adr_accounting_coa_id NUMBER;
133051 l_adr_flexfield_segment_code VARCHAR2(30);
133052 l_adr_flex_value_set_id NUMBER;
133053 l_adr_value_type_code VARCHAR2(30);
133054 l_adr_value_combination_id NUMBER;
133055 l_adr_value_segment_code VARCHAR2(30);
133056
133057 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
133058 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
133059 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
133060 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
133061
133062 -- 4262811 Variables ------------------------------------------------------------------------------------------
133063 l_entered_amt_idx NUMBER;
133064 l_accted_amt_idx NUMBER;
133065 l_acc_rev_flag VARCHAR2(1);
133066 l_accrual_line_num NUMBER;
133067 l_tmp_amt NUMBER;
133068 l_acc_rev_natural_side_code VARCHAR2(1);
133069
133070 l_num_entries NUMBER;
133071 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
133072 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
133073 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
133074 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
133075 l_recog_line_1 NUMBER;
133076 l_recog_line_2 NUMBER;
133077
133078 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
133079 l_bflow_applied_to_amt NUMBER; -- 5132302
133080 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
133081
133082 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
133083
133084 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
133085 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
133086
133087 ---------------------------------------------------------------------------------------------------------------
133088
133089
133090 --
133091 -- bulk performance
133092 --
133093 l_balance_type_code VARCHAR2(1);
133094 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
133095 l_log_module VARCHAR2(240);
133096
133097 --
133098 -- Upgrade strategy
133099 --
133100 l_actual_upg_option VARCHAR2(1);
133101 l_enc_upg_option VARCHAR2(1);
133102
133103 --
133104 BEGIN
133105 --
133106 IF g_log_enabled THEN
133107 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_241';
133108 END IF;
133109 --
133110 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133111
133112 trace
133113 (p_msg => 'BEGIN of AcctLineType_241'
133114 ,p_level => C_LEVEL_PROCEDURE
133115 ,p_module => l_log_module);
133116
133117 END IF;
133118 --
133119 l_component_type := 'AMB_JLT';
133120 l_component_code := 'RECEIVING_INSPECTION';
133121 l_component_type_code := 'S';
133122 l_component_appl_id := 707;
133123 l_amb_context_code := 'DEFAULT';
133124 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
133125 l_event_class_code := 'DELIVER_EXPENSE';
133126 l_event_type_code := 'DELIVER_EXPENSE_ALL';
133127 l_line_definition_owner_code := 'S';
133128 l_line_definition_code := 'DELIVER_EXPENSE';
133129 --
133130 l_balance_type_code := 'A';
133131 l_segment := NULL;
133132 l_ccid := NULL;
133133 l_adr_transaction_coa_id := NULL;
133134 l_adr_accounting_coa_id := NULL;
133135 l_adr_flexfield_segment_code := NULL;
133136 l_adr_flex_value_set_id := NULL;
133137 l_adr_value_type_code := NULL;
133138 l_adr_value_combination_id := NULL;
133139 l_adr_value_segment_code := NULL;
133140
133141 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
133142 l_bflow_class_code := ''; -- 4219869 Business Flow
133143 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
133144 l_budgetary_control_flag := 'N';
133145
133146 l_bflow_applied_to_amt_idx := NULL; -- 5132302
133147 l_bflow_applied_to_amt := NULL; -- 5132302
133148 l_entered_amt_idx := NULL; -- 4262811
133149 l_accted_amt_idx := NULL; -- 4262811
133150 l_acc_rev_flag := NULL; -- 4262811
133151 l_accrual_line_num := NULL; -- 4262811
133152 l_tmp_amt := NULL; -- 4262811
133153 --
133154
133155 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
133156 l_balance_type_code <> 'B' THEN
133157 IF NVL(p_source_5,'
133158 ') = 'Receiving Inspection'
133159 THEN
133160
133161 --
133162 XLA_AE_LINES_PKG.SetNewLine;
133163
133164 p_balance_type_code := l_balance_type_code;
133165 -- set the flag so later we will know whether the gain loss line needs to be created
133166
133167 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
133168 p_actual_flag :='A';
133169 END IF;
133170
133171 --
133172 -- bulk performance
133173 --
133174 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
133175 p_header_num => 0); -- 4262811
133176 --
133177 -- set accounting line options
133178 --
133179 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
133180 p_natural_side_code => 'D'
133181 , p_gain_or_loss_flag => 'N'
133182 , p_gl_transfer_mode_code => 'S'
133183 , p_acct_entry_type_code => 'A'
133184 , p_switch_side_flag => 'Y'
133185 , p_merge_duplicate_code => 'N'
133186 );
133187 --
133188 l_acc_rev_natural_side_code := 'C'; -- 4262811
133189 --
133190 --
133191 -- set accounting line type info
133192 --
133193 xla_ae_lines_pkg.SetAcctLineType
133194 (p_component_type => l_component_type
133195 ,p_event_type_code => l_event_type_code
133196 ,p_line_definition_owner_code => l_line_definition_owner_code
133197 ,p_line_definition_code => l_line_definition_code
133198 ,p_accounting_line_code => l_component_code
133199 ,p_accounting_line_type_code => l_component_type_code
133200 ,p_accounting_line_appl_id => l_component_appl_id
133201 ,p_amb_context_code => l_amb_context_code
133202 ,p_entity_code => l_entity_code
133203 ,p_event_class_code => l_event_class_code);
133204 --
133205 -- set accounting class
133206 --
133207 xla_ae_lines_pkg.SetAcctClass(
133208 p_accounting_class_code => 'RECEIVING_INSPECTION'
133209 , p_ae_header_id => l_ae_header_id
133210 );
133211
133212 --
133213 -- set rounding class
133214 --
133215 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
133216 'RECEIVING_INSPECTION';
133217
133218 --
133219 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
133220 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
133221 --
133222 -- bulk performance
133223 --
133224 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
133225
133226 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
133227 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
133228
133229 -- 4955764
133230 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133231 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
133232
133233 -- 4458381 Public Sector Enh
133234
133235 --
133236 -- set accounting attributes for the line type
133237 --
133238 l_entered_amt_idx := 17;
133239 l_accted_amt_idx := 22;
133240 l_bflow_applied_to_amt_idx := NULL; -- 5132302
133241 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
133242 l_rec_acct_attrs.array_num_value(1) := p_source_6;
133243 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
133244 l_rec_acct_attrs.array_char_value(2) := p_source_7;
133245 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
133246 l_rec_acct_attrs.array_char_value(3) := p_source_8;
133247 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
133248 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_9);
133249 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
133250 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
133251 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
133252 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
133253 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
133254 l_rec_acct_attrs.array_char_value(7) := p_source_12;
133255 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
133256 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
133257 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
133258 l_rec_acct_attrs.array_num_value(9) := p_source_14;
133259 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
133260 l_rec_acct_attrs.array_char_value(10) := p_source_15;
133261 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
133262 l_rec_acct_attrs.array_num_value(11) := p_source_16;
133263 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
133264 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
133265 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
133266 l_rec_acct_attrs.array_num_value(13) := p_source_14;
133267 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
133268 l_rec_acct_attrs.array_char_value(14) := p_source_15;
133269 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
133270 l_rec_acct_attrs.array_num_value(15) := p_source_16;
133271 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
133272 l_rec_acct_attrs.array_char_value(16) := p_source_27;
133273 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
133274 l_rec_acct_attrs.array_num_value(17) := p_source_18;
133275 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
133276 l_rec_acct_attrs.array_char_value(18) := p_source_15;
133277 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
133278 l_rec_acct_attrs.array_date_value(19) := p_source_19;
133279 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
133280 l_rec_acct_attrs.array_num_value(20) := p_source_20;
133281 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
133282 l_rec_acct_attrs.array_char_value(21) := p_source_21;
133283 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
133284 l_rec_acct_attrs.array_num_value(22) := p_source_22;
133285 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
133286 l_rec_acct_attrs.array_num_value(23) := p_source_23;
133287 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
133288 l_rec_acct_attrs.array_num_value(24) := p_source_23;
133289
133290 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
133291 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
133292
133293 ---------------------------------------------------------------------------------------------------------------
133294 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
133295 ---------------------------------------------------------------------------------------------------------------
133296 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
133297
133298 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133299 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133300
133301 IF xla_accounting_cache_pkg.GetValueChar
133302 (p_source_code => 'LEDGER_CATEGORY_CODE'
133303 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
133304 AND l_bflow_method_code = 'PRIOR_ENTRY'
133305 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
133306 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
133307 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
133308 )
133309 THEN
133310 xla_ae_lines_pkg.BflowUpgEntry
133311 (p_business_method_code => l_bflow_method_code
133312 ,p_business_class_code => l_bflow_class_code
133313 ,p_balance_type => l_balance_type_code);
133314 ELSE
133315 NULL;
133316 -- No business flow processing for business flow method of NONE.
133317 END IF;
133318
133319 --
133320 -- call analytical criteria
133321 --
133322
133323 --
133324 -- call description
133325 --
133326 -- No description or it is inherited.
133327 --
133328 -- call ADRs
133329 -- Bug 4922099
133330 --
133331 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133332 (NVL(l_actual_upg_option, 'N') = 'O') OR
133333 (NVL(l_enc_upg_option, 'N') = 'O')
133334 )
133335 THEN
133336 NULL;
133337 --
133338 --
133339
133340 l_ccid := AcctDerRule_4(
133341 p_application_id => p_application_id
133342 , p_ae_header_id => l_ae_header_id
133343 , p_source_4 => p_source_4
133344 , x_transaction_coa_id => l_adr_transaction_coa_id
133345 , x_accounting_coa_id => l_adr_accounting_coa_id
133346 , x_value_type_code => l_adr_value_type_code
133347 , p_side => 'NA'
133348 );
133349
133350 xla_ae_lines_pkg.set_ccid(
133351 p_code_combination_id => l_ccid
133352 , p_value_type_code => l_adr_value_type_code
133353 , p_transaction_coa_id => l_adr_transaction_coa_id
133354 , p_accounting_coa_id => l_adr_accounting_coa_id
133355 , p_adr_code => 'CST_DEFAULT'
133356 , p_adr_type_code => 'S'
133357 , p_component_type => l_component_type
133358 , p_component_code => l_component_code
133359 , p_component_type_code => l_component_type_code
133360 , p_component_appl_id => l_component_appl_id
133361 , p_amb_context_code => l_amb_context_code
133362 , p_side => 'NA'
133363 );
133364
133365
133366 --
133367 --
133368 END IF;
133369 --
133370 -- Bug 4922099
133371 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
133372 (NVL(l_enc_upg_option, 'N') = 'O')
133373 ) AND
133374 (l_bflow_method_code = 'PRIOR_ENTRY')
133375 )
133376 THEN
133377 IF
133378 --
133379 1 = 2
133380 --
133381 THEN
133382 xla_accounting_err_pkg.build_message
133383 (p_appli_s_name => 'XLA'
133384 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133385 ,p_token_1 => 'LINE_NUMBER'
133386 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
133387 ,p_token_2 => 'LINE_TYPE_NAME'
133388 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
133389 l_component_type
133390 ,l_component_code
133391 ,l_component_type_code
133392 ,l_component_appl_id
133393 ,l_amb_context_code
133394 ,l_entity_code
133395 ,l_event_class_code
133396 )
133397 ,p_token_3 => 'OWNER'
133398 ,p_value_3 => xla_lookups_pkg.get_meaning(
133399 p_lookup_type => 'XLA_OWNER_TYPE'
133400 ,p_lookup_code => l_component_type_code
133401 )
133402 ,p_token_4 => 'PRODUCT_NAME'
133403 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
133404 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
133405 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
133406 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
133407 ,p_ae_header_id => NULL
133408 );
133409
133410 IF (C_LEVEL_ERROR>= g_log_level) THEN
133411 trace
133412 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133413 ,p_level => C_LEVEL_ERROR
133414 ,p_module => l_log_module);
133415 END IF;
133416 END IF;
133417 END IF;
133418 --
133419 --
133420 ------------------------------------------------------------------------------------------------
133421 -- 4219869 Business Flow
133422 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
133423 -- Prior Entry. Currently, the following code is always generated.
133424 ------------------------------------------------------------------------------------------------
133425 XLA_AE_LINES_PKG.ValidateCurrentLine;
133426
133427 ------------------------------------------------------------------------------------
133428 -- 4219869 Business Flow
133429 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
133430 ------------------------------------------------------------------------------------
133431 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133432
133433 ----------------------------------------------------------------------------------
133434 -- 4219869 Business Flow
133435 -- Update journal entry status -- Need to generate this within IF <condition>
133436 ----------------------------------------------------------------------------------
133437 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133438 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
133439 ,p_balance_type_code => l_balance_type_code
133440 );
133441
133442 -------------------------------------------------------------------------------------------
133443 -- 4262811 - Generate the Accrual Reversal lines
133444 -------------------------------------------------------------------------------------------
133445 BEGIN
133446 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
133447 (g_array_event(p_event_id).array_value_num('header_index'));
133448 IF l_acc_rev_flag IS NULL THEN
133449 l_acc_rev_flag := 'N';
133450 END IF;
133451 EXCEPTION
133452 WHEN OTHERS THEN
133453 l_acc_rev_flag := 'N';
133454 END;
133455 --
133456 IF (l_acc_rev_flag = 'Y') THEN
133457
133458 -- 4645092 ------------------------------------------------------------------------------
133459 -- To allow MPA report to determine if it should generate report process
133460 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
133461 ------------------------------------------------------------------------------------------
133462
133463 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
133464 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
133465 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
133466 -- call ADRs
133467 -- Bug 4922099
133468 --
133469 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133470 (NVL(l_actual_upg_option, 'N') = 'O') OR
133471 (NVL(l_enc_upg_option, 'N') = 'O')
133472 )
133473 THEN
133474 NULL;
133475 --
133476 --
133477
133478 l_ccid := AcctDerRule_4(
133479 p_application_id => p_application_id
133480 , p_ae_header_id => l_ae_header_id
133481 , p_source_4 => p_source_4
133482 , x_transaction_coa_id => l_adr_transaction_coa_id
133483 , x_accounting_coa_id => l_adr_accounting_coa_id
133484 , x_value_type_code => l_adr_value_type_code
133485 , p_side => 'NA'
133486 );
133487
133488 xla_ae_lines_pkg.set_ccid(
133489 p_code_combination_id => l_ccid
133490 , p_value_type_code => l_adr_value_type_code
133491 , p_transaction_coa_id => l_adr_transaction_coa_id
133492 , p_accounting_coa_id => l_adr_accounting_coa_id
133493 , p_adr_code => 'CST_DEFAULT'
133494 , p_adr_type_code => 'S'
133495 , p_component_type => l_component_type
133496 , p_component_code => l_component_code
133497 , p_component_type_code => l_component_type_code
133498 , p_component_appl_id => l_component_appl_id
133499 , p_amb_context_code => l_amb_context_code
133500 , p_side => 'NA'
133501 );
133502
133503
133504 --
133505 --
133506 END IF;
133507
133508 --
133509 -- Update the line information that should be overwritten
133510 --
133511 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
133512 p_header_num => 1);
133513 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
133514
133515 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
133516
133517 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
133518 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
133519 END IF;
133520
133521 --
133522 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
133523 --
133524 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
133525 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
133526 ELSE
133527 ---------------------------------------------------------------------------------------------------
133528 -- 4262811a Switch Sign
133529 ---------------------------------------------------------------------------------------------------
133530 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
133531 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133532 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133533 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
133534 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133535 -- 5132302
133536 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
133537 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
133538
133539 END IF;
133540
133541 -- 4955764
133542 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133543 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
133544
133545
133546 XLA_AE_LINES_PKG.ValidateCurrentLine;
133547 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133548
133549 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133550 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
133551 ,p_balance_type_code => l_balance_type_code);
133552
133553 END IF;
133554
133555 -----------------------------------------------------------------------------------------
133556 -- 4262811 Multiperiod Accounting
133557 -----------------------------------------------------------------------------------------
133558 -- No MPA option is assigned.
133559
133560
133561 END IF;
133562 END IF;
133563 --
133564
133565 --
133566 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133567 trace
133568 (p_msg => 'END of AcctLineType_241'
133569 ,p_level => C_LEVEL_PROCEDURE
133570 ,p_module => l_log_module);
133571 END IF;
133572 --
133573 EXCEPTION
133574 WHEN xla_exceptions_pkg.application_exception THEN
133575 RAISE;
133576 WHEN OTHERS THEN
133577 xla_exceptions_pkg.raise_message
133578 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_241');
133579 END AcctLineType_241;
133580 --
133581
133582 ---------------------------------------
133583 --
133584 -- PRIVATE FUNCTION
133585 -- AcctLineType_242
133586 --
133587 ---------------------------------------
133588 PROCEDURE AcctLineType_242 (
133589 p_application_id IN NUMBER
133590 ,p_event_id IN NUMBER
133591 ,p_calculate_acctd_flag IN VARCHAR2
133592 ,p_calculate_g_l_flag IN VARCHAR2
133593 ,p_actual_flag IN OUT VARCHAR2
133594 ,p_balance_type_code OUT VARCHAR2
133595 ,p_gain_or_loss_ref OUT VARCHAR2
133596
133597 --Cost Management Default Account
133598 , p_source_4 IN NUMBER
133599 --DISTRIBUTION_IDENTIFIER
133600 , p_source_11 IN NUMBER
133601 --Distribution Type
133602 , p_source_12 IN VARCHAR2
133603 , p_source_12_meaning IN VARCHAR2
133604 --Entered Currency Code
133605 , p_source_15 IN VARCHAR2
133606 --Entered Amount
133607 , p_source_18 IN NUMBER
133608 --Currency Conversion Date
133609 , p_source_19 IN DATE
133610 --Currency Conversion Rate
133611 , p_source_20 IN NUMBER
133612 --Accounted Amount
133613 , p_source_22 IN NUMBER
133614 --Accounting Line Type
133615 , p_source_24 IN NUMBER
133616 )
133617 IS
133618
133619 l_component_type VARCHAR2(80);
133620 l_component_code VARCHAR2(30);
133621 l_component_type_code VARCHAR2(1);
133622 l_component_appl_id INTEGER;
133623 l_amb_context_code VARCHAR2(30);
133624 l_entity_code VARCHAR2(30);
133625 l_event_class_code VARCHAR2(30);
133626 l_ae_header_id NUMBER;
133627 l_event_type_code VARCHAR2(30);
133628 l_line_definition_code VARCHAR2(30);
133629 l_line_definition_owner_code VARCHAR2(1);
133630 --
133631 -- adr variables
133632 l_segment VARCHAR2(30);
133633 l_ccid NUMBER;
133634 l_adr_transaction_coa_id NUMBER;
133635 l_adr_accounting_coa_id NUMBER;
133636 l_adr_flexfield_segment_code VARCHAR2(30);
133637 l_adr_flex_value_set_id NUMBER;
133638 l_adr_value_type_code VARCHAR2(30);
133639 l_adr_value_combination_id NUMBER;
133640 l_adr_value_segment_code VARCHAR2(30);
133641
133642 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
133643 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
133644 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
133645 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
133646
133647 -- 4262811 Variables ------------------------------------------------------------------------------------------
133648 l_entered_amt_idx NUMBER;
133649 l_accted_amt_idx NUMBER;
133650 l_acc_rev_flag VARCHAR2(1);
133651 l_accrual_line_num NUMBER;
133652 l_tmp_amt NUMBER;
133653 l_acc_rev_natural_side_code VARCHAR2(1);
133654
133655 l_num_entries NUMBER;
133656 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
133657 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
133658 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
133659 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
133660 l_recog_line_1 NUMBER;
133661 l_recog_line_2 NUMBER;
133662
133663 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
133664 l_bflow_applied_to_amt NUMBER; -- 5132302
133665 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
133666
133667 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
133668
133669 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
133670 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
133671
133672 ---------------------------------------------------------------------------------------------------------------
133673
133674
133675 --
133676 -- bulk performance
133677 --
133678 l_balance_type_code VARCHAR2(1);
133679 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
133680 l_log_module VARCHAR2(240);
133681
133682 --
133683 -- Upgrade strategy
133684 --
133685 l_actual_upg_option VARCHAR2(1);
133686 l_enc_upg_option VARCHAR2(1);
133687
133688 --
133689 BEGIN
133690 --
133691 IF g_log_enabled THEN
133692 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_242';
133693 END IF;
133694 --
133695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
133696
133697 trace
133698 (p_msg => 'BEGIN of AcctLineType_242'
133699 ,p_level => C_LEVEL_PROCEDURE
133700 ,p_module => l_log_module);
133701
133702 END IF;
133703 --
133704 l_component_type := 'AMB_JLT';
133705 l_component_code := 'RESOURCE_ABSORPTION';
133706 l_component_type_code := 'S';
133707 l_component_appl_id := 707;
133708 l_amb_context_code := 'DEFAULT';
133709 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
133710 l_event_class_code := 'OSP';
133711 l_event_type_code := 'OSP_ALL';
133712 l_line_definition_owner_code := 'S';
133713 l_line_definition_code := 'OUTSIDE_PROCESSING';
133714 --
133715 l_balance_type_code := 'A';
133716 l_segment := NULL;
133717 l_ccid := NULL;
133718 l_adr_transaction_coa_id := NULL;
133719 l_adr_accounting_coa_id := NULL;
133720 l_adr_flexfield_segment_code := NULL;
133721 l_adr_flex_value_set_id := NULL;
133722 l_adr_value_type_code := NULL;
133723 l_adr_value_combination_id := NULL;
133724 l_adr_value_segment_code := NULL;
133725
133726 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
133727 l_bflow_class_code := ''; -- 4219869 Business Flow
133728 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
133729 l_budgetary_control_flag := 'N';
133730
133731 l_bflow_applied_to_amt_idx := NULL; -- 5132302
133732 l_bflow_applied_to_amt := NULL; -- 5132302
133733 l_entered_amt_idx := NULL; -- 4262811
133734 l_accted_amt_idx := NULL; -- 4262811
133735 l_acc_rev_flag := NULL; -- 4262811
133736 l_accrual_line_num := NULL; -- 4262811
133737 l_tmp_amt := NULL; -- 4262811
133738 --
133739
133740 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
133741 l_balance_type_code <> 'B' THEN
133742 IF NVL(p_source_24,9E125) = 4
133743 THEN
133744
133745 --
133746 XLA_AE_LINES_PKG.SetNewLine;
133747
133748 p_balance_type_code := l_balance_type_code;
133749 -- set the flag so later we will know whether the gain loss line needs to be created
133750
133751 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
133752 p_actual_flag :='A';
133753 END IF;
133754
133755 --
133756 -- bulk performance
133757 --
133758 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
133759 p_header_num => 0); -- 4262811
133760 --
133761 -- set accounting line options
133762 --
133763 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
133764 p_natural_side_code => 'D'
133765 , p_gain_or_loss_flag => 'N'
133766 , p_gl_transfer_mode_code => 'S'
133767 , p_acct_entry_type_code => 'A'
133768 , p_switch_side_flag => 'Y'
133769 , p_merge_duplicate_code => 'N'
133770 );
133771 --
133772 l_acc_rev_natural_side_code := 'C'; -- 4262811
133773 --
133774 --
133775 -- set accounting line type info
133776 --
133777 xla_ae_lines_pkg.SetAcctLineType
133778 (p_component_type => l_component_type
133779 ,p_event_type_code => l_event_type_code
133780 ,p_line_definition_owner_code => l_line_definition_owner_code
133781 ,p_line_definition_code => l_line_definition_code
133782 ,p_accounting_line_code => l_component_code
133783 ,p_accounting_line_type_code => l_component_type_code
133784 ,p_accounting_line_appl_id => l_component_appl_id
133785 ,p_amb_context_code => l_amb_context_code
133786 ,p_entity_code => l_entity_code
133787 ,p_event_class_code => l_event_class_code);
133788 --
133789 -- set accounting class
133790 --
133791 xla_ae_lines_pkg.SetAcctClass(
133792 p_accounting_class_code => 'RESOURCE_ABSORPTION'
133793 , p_ae_header_id => l_ae_header_id
133794 );
133795
133796 --
133797 -- set rounding class
133798 --
133799 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
133800 'RESOURCE_ABSORPTION';
133801
133802 --
133803 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
133804 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
133805 --
133806 -- bulk performance
133807 --
133808 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
133809
133810 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
133811 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
133812
133813 -- 4955764
133814 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
133815 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
133816
133817 -- 4458381 Public Sector Enh
133818
133819 --
133820 -- set accounting attributes for the line type
133821 --
133822 l_entered_amt_idx := 3;
133823 l_accted_amt_idx := 8;
133824 l_bflow_applied_to_amt_idx := NULL; -- 5132302
133825 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
133826 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
133827 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
133828 l_rec_acct_attrs.array_char_value(2) := p_source_12;
133829 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
133830 l_rec_acct_attrs.array_num_value(3) := p_source_18;
133831 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
133832 l_rec_acct_attrs.array_char_value(4) := p_source_15;
133833 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
133834 l_rec_acct_attrs.array_date_value(5) := p_source_19;
133835 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
133836 l_rec_acct_attrs.array_num_value(6) := p_source_20;
133837 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
133838 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
133839 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
133840 l_rec_acct_attrs.array_num_value(8) := p_source_22;
133841
133842 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
133843 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
133844
133845 ---------------------------------------------------------------------------------------------------------------
133846 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
133847 ---------------------------------------------------------------------------------------------------------------
133848 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
133849
133850 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133851 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
133852
133853 IF xla_accounting_cache_pkg.GetValueChar
133854 (p_source_code => 'LEDGER_CATEGORY_CODE'
133855 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
133856 AND l_bflow_method_code = 'PRIOR_ENTRY'
133857 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
133858 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
133859 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
133860 )
133861 THEN
133862 xla_ae_lines_pkg.BflowUpgEntry
133863 (p_business_method_code => l_bflow_method_code
133864 ,p_business_class_code => l_bflow_class_code
133865 ,p_balance_type => l_balance_type_code);
133866 ELSE
133867 NULL;
133868 -- No business flow processing for business flow method of NONE.
133869 END IF;
133870
133871 --
133872 -- call analytical criteria
133873 --
133874
133875 --
133876 -- call description
133877 --
133878 -- No description or it is inherited.
133879 --
133880 -- call ADRs
133881 -- Bug 4922099
133882 --
133883 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
133884 (NVL(l_actual_upg_option, 'N') = 'O') OR
133885 (NVL(l_enc_upg_option, 'N') = 'O')
133886 )
133887 THEN
133888 NULL;
133889 --
133890 --
133891
133892 l_ccid := AcctDerRule_4(
133893 p_application_id => p_application_id
133894 , p_ae_header_id => l_ae_header_id
133895 , p_source_4 => p_source_4
133896 , x_transaction_coa_id => l_adr_transaction_coa_id
133897 , x_accounting_coa_id => l_adr_accounting_coa_id
133898 , x_value_type_code => l_adr_value_type_code
133899 , p_side => 'NA'
133900 );
133901
133902 xla_ae_lines_pkg.set_ccid(
133903 p_code_combination_id => l_ccid
133904 , p_value_type_code => l_adr_value_type_code
133905 , p_transaction_coa_id => l_adr_transaction_coa_id
133906 , p_accounting_coa_id => l_adr_accounting_coa_id
133907 , p_adr_code => 'CST_DEFAULT'
133908 , p_adr_type_code => 'S'
133909 , p_component_type => l_component_type
133910 , p_component_code => l_component_code
133911 , p_component_type_code => l_component_type_code
133912 , p_component_appl_id => l_component_appl_id
133913 , p_amb_context_code => l_amb_context_code
133914 , p_side => 'NA'
133915 );
133916
133917
133918 --
133919 --
133920 END IF;
133921 --
133922 -- Bug 4922099
133923 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
133924 (NVL(l_enc_upg_option, 'N') = 'O')
133925 ) AND
133926 (l_bflow_method_code = 'PRIOR_ENTRY')
133927 )
133928 THEN
133929 IF
133930 --
133931 1 = 2
133932 --
133933 THEN
133934 xla_accounting_err_pkg.build_message
133935 (p_appli_s_name => 'XLA'
133936 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133937 ,p_token_1 => 'LINE_NUMBER'
133938 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
133939 ,p_token_2 => 'LINE_TYPE_NAME'
133940 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
133941 l_component_type
133942 ,l_component_code
133943 ,l_component_type_code
133944 ,l_component_appl_id
133945 ,l_amb_context_code
133946 ,l_entity_code
133947 ,l_event_class_code
133948 )
133949 ,p_token_3 => 'OWNER'
133950 ,p_value_3 => xla_lookups_pkg.get_meaning(
133951 p_lookup_type => 'XLA_OWNER_TYPE'
133952 ,p_lookup_code => l_component_type_code
133953 )
133954 ,p_token_4 => 'PRODUCT_NAME'
133955 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
133956 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
133957 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
133958 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
133959 ,p_ae_header_id => NULL
133960 );
133961
133962 IF (C_LEVEL_ERROR>= g_log_level) THEN
133963 trace
133964 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
133965 ,p_level => C_LEVEL_ERROR
133966 ,p_module => l_log_module);
133967 END IF;
133968 END IF;
133969 END IF;
133970 --
133971 --
133972 ------------------------------------------------------------------------------------------------
133973 -- 4219869 Business Flow
133974 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
133975 -- Prior Entry. Currently, the following code is always generated.
133976 ------------------------------------------------------------------------------------------------
133977 XLA_AE_LINES_PKG.ValidateCurrentLine;
133978
133979 ------------------------------------------------------------------------------------
133980 -- 4219869 Business Flow
133981 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
133982 ------------------------------------------------------------------------------------
133983 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
133984
133985 ----------------------------------------------------------------------------------
133986 -- 4219869 Business Flow
133987 -- Update journal entry status -- Need to generate this within IF <condition>
133988 ----------------------------------------------------------------------------------
133989 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
133990 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
133991 ,p_balance_type_code => l_balance_type_code
133992 );
133993
133994 -------------------------------------------------------------------------------------------
133995 -- 4262811 - Generate the Accrual Reversal lines
133996 -------------------------------------------------------------------------------------------
133997 BEGIN
133998 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
133999 (g_array_event(p_event_id).array_value_num('header_index'));
134000 IF l_acc_rev_flag IS NULL THEN
134001 l_acc_rev_flag := 'N';
134002 END IF;
134003 EXCEPTION
134004 WHEN OTHERS THEN
134005 l_acc_rev_flag := 'N';
134006 END;
134007 --
134008 IF (l_acc_rev_flag = 'Y') THEN
134009
134010 -- 4645092 ------------------------------------------------------------------------------
134011 -- To allow MPA report to determine if it should generate report process
134012 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
134013 ------------------------------------------------------------------------------------------
134014
134015 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
134016 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
134017 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
134018 -- call ADRs
134019 -- Bug 4922099
134020 --
134021 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134022 (NVL(l_actual_upg_option, 'N') = 'O') OR
134023 (NVL(l_enc_upg_option, 'N') = 'O')
134024 )
134025 THEN
134026 NULL;
134027 --
134028 --
134029
134030 l_ccid := AcctDerRule_4(
134031 p_application_id => p_application_id
134032 , p_ae_header_id => l_ae_header_id
134033 , p_source_4 => p_source_4
134034 , x_transaction_coa_id => l_adr_transaction_coa_id
134035 , x_accounting_coa_id => l_adr_accounting_coa_id
134036 , x_value_type_code => l_adr_value_type_code
134037 , p_side => 'NA'
134038 );
134039
134040 xla_ae_lines_pkg.set_ccid(
134041 p_code_combination_id => l_ccid
134042 , p_value_type_code => l_adr_value_type_code
134043 , p_transaction_coa_id => l_adr_transaction_coa_id
134044 , p_accounting_coa_id => l_adr_accounting_coa_id
134045 , p_adr_code => 'CST_DEFAULT'
134046 , p_adr_type_code => 'S'
134047 , p_component_type => l_component_type
134048 , p_component_code => l_component_code
134049 , p_component_type_code => l_component_type_code
134050 , p_component_appl_id => l_component_appl_id
134051 , p_amb_context_code => l_amb_context_code
134052 , p_side => 'NA'
134053 );
134054
134055
134056 --
134057 --
134058 END IF;
134059
134060 --
134061 -- Update the line information that should be overwritten
134062 --
134063 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
134064 p_header_num => 1);
134065 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
134066
134067 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
134068
134069 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
134070 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
134071 END IF;
134072
134073 --
134074 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
134075 --
134076 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
134077 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
134078 ELSE
134079 ---------------------------------------------------------------------------------------------------
134080 -- 4262811a Switch Sign
134081 ---------------------------------------------------------------------------------------------------
134082 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
134083 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134084 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134085 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134086 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134087 -- 5132302
134088 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
134089 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134090
134091 END IF;
134092
134093 -- 4955764
134094 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134095 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
134096
134097
134098 XLA_AE_LINES_PKG.ValidateCurrentLine;
134099 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134100
134101 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134102 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
134103 ,p_balance_type_code => l_balance_type_code);
134104
134105 END IF;
134106
134107 -----------------------------------------------------------------------------------------
134108 -- 4262811 Multiperiod Accounting
134109 -----------------------------------------------------------------------------------------
134110 -- No MPA option is assigned.
134111
134112
134113 END IF;
134114 END IF;
134115 --
134116
134117 --
134118 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134119 trace
134120 (p_msg => 'END of AcctLineType_242'
134121 ,p_level => C_LEVEL_PROCEDURE
134122 ,p_module => l_log_module);
134123 END IF;
134124 --
134125 EXCEPTION
134126 WHEN xla_exceptions_pkg.application_exception THEN
134127 RAISE;
134128 WHEN OTHERS THEN
134129 xla_exceptions_pkg.raise_message
134130 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_242');
134131 END AcctLineType_242;
134132 --
134133
134134 ---------------------------------------
134135 --
134136 -- PRIVATE FUNCTION
134137 -- AcctLineType_243
134138 --
134139 ---------------------------------------
134140 PROCEDURE AcctLineType_243 (
134141 p_application_id IN NUMBER
134142 ,p_event_id IN NUMBER
134143 ,p_calculate_acctd_flag IN VARCHAR2
134144 ,p_calculate_g_l_flag IN VARCHAR2
134145 ,p_actual_flag IN OUT VARCHAR2
134146 ,p_balance_type_code OUT VARCHAR2
134147 ,p_gain_or_loss_ref OUT VARCHAR2
134148
134149 --Cost Management Default Account
134150 , p_source_4 IN NUMBER
134151 --DISTRIBUTION_IDENTIFIER
134152 , p_source_11 IN NUMBER
134153 --Distribution Type
134154 , p_source_12 IN VARCHAR2
134155 , p_source_12_meaning IN VARCHAR2
134156 --Entered Currency Code
134157 , p_source_15 IN VARCHAR2
134158 --Entered Amount
134159 , p_source_18 IN NUMBER
134160 --Currency Conversion Date
134161 , p_source_19 IN DATE
134162 --Currency Conversion Rate
134163 , p_source_20 IN NUMBER
134164 --Currency Conversion Type
134165 , p_source_21 IN VARCHAR2
134166 --Accounted Amount
134167 , p_source_22 IN NUMBER
134168 --Accounting Line Type
134169 , p_source_24 IN NUMBER
134170 )
134171 IS
134172
134173 l_component_type VARCHAR2(80);
134174 l_component_code VARCHAR2(30);
134175 l_component_type_code VARCHAR2(1);
134176 l_component_appl_id INTEGER;
134177 l_amb_context_code VARCHAR2(30);
134178 l_entity_code VARCHAR2(30);
134179 l_event_class_code VARCHAR2(30);
134180 l_ae_header_id NUMBER;
134181 l_event_type_code VARCHAR2(30);
134182 l_line_definition_code VARCHAR2(30);
134183 l_line_definition_owner_code VARCHAR2(1);
134184 --
134185 -- adr variables
134186 l_segment VARCHAR2(30);
134187 l_ccid NUMBER;
134188 l_adr_transaction_coa_id NUMBER;
134189 l_adr_accounting_coa_id NUMBER;
134190 l_adr_flexfield_segment_code VARCHAR2(30);
134191 l_adr_flex_value_set_id NUMBER;
134192 l_adr_value_type_code VARCHAR2(30);
134193 l_adr_value_combination_id NUMBER;
134194 l_adr_value_segment_code VARCHAR2(30);
134195
134196 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
134197 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
134198 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
134199 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
134200
134201 -- 4262811 Variables ------------------------------------------------------------------------------------------
134202 l_entered_amt_idx NUMBER;
134203 l_accted_amt_idx NUMBER;
134204 l_acc_rev_flag VARCHAR2(1);
134205 l_accrual_line_num NUMBER;
134206 l_tmp_amt NUMBER;
134207 l_acc_rev_natural_side_code VARCHAR2(1);
134208
134209 l_num_entries NUMBER;
134210 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
134211 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
134212 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
134213 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
134214 l_recog_line_1 NUMBER;
134215 l_recog_line_2 NUMBER;
134216
134217 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
134218 l_bflow_applied_to_amt NUMBER; -- 5132302
134219 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
134220
134221 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
134222
134223 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
134224 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
134225
134226 ---------------------------------------------------------------------------------------------------------------
134227
134228
134229 --
134230 -- bulk performance
134231 --
134232 l_balance_type_code VARCHAR2(1);
134233 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
134234 l_log_module VARCHAR2(240);
134235
134236 --
134237 -- Upgrade strategy
134238 --
134239 l_actual_upg_option VARCHAR2(1);
134240 l_enc_upg_option VARCHAR2(1);
134241
134242 --
134243 BEGIN
134244 --
134245 IF g_log_enabled THEN
134246 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_243';
134247 END IF;
134248 --
134249 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134250
134251 trace
134252 (p_msg => 'BEGIN of AcctLineType_243'
134253 ,p_level => C_LEVEL_PROCEDURE
134254 ,p_module => l_log_module);
134255
134256 END IF;
134257 --
134258 l_component_type := 'AMB_JLT';
134259 l_component_code := 'RESOURCE_ABSORPTION';
134260 l_component_type_code := 'S';
134261 l_component_appl_id := 707;
134262 l_amb_context_code := 'DEFAULT';
134263 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
134264 l_event_class_code := 'ABSORPTION';
134265 l_event_type_code := 'ABSORPTION_ALL';
134266 l_line_definition_owner_code := 'S';
134267 l_line_definition_code := 'ABSORPTION';
134268 --
134269 l_balance_type_code := 'A';
134270 l_segment := NULL;
134271 l_ccid := NULL;
134272 l_adr_transaction_coa_id := NULL;
134273 l_adr_accounting_coa_id := NULL;
134274 l_adr_flexfield_segment_code := NULL;
134275 l_adr_flex_value_set_id := NULL;
134276 l_adr_value_type_code := NULL;
134277 l_adr_value_combination_id := NULL;
134278 l_adr_value_segment_code := NULL;
134279
134280 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
134281 l_bflow_class_code := ''; -- 4219869 Business Flow
134282 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
134283 l_budgetary_control_flag := 'N';
134284
134285 l_bflow_applied_to_amt_idx := NULL; -- 5132302
134286 l_bflow_applied_to_amt := NULL; -- 5132302
134287 l_entered_amt_idx := NULL; -- 4262811
134288 l_accted_amt_idx := NULL; -- 4262811
134289 l_acc_rev_flag := NULL; -- 4262811
134290 l_accrual_line_num := NULL; -- 4262811
134291 l_tmp_amt := NULL; -- 4262811
134292 --
134293
134294 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
134295 l_balance_type_code <> 'B' THEN
134296 IF NVL(p_source_24,9E125) = 4
134297 THEN
134298
134299 --
134300 XLA_AE_LINES_PKG.SetNewLine;
134301
134302 p_balance_type_code := l_balance_type_code;
134303 -- set the flag so later we will know whether the gain loss line needs to be created
134304
134305 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
134306 p_actual_flag :='A';
134307 END IF;
134308
134309 --
134310 -- bulk performance
134311 --
134312 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
134313 p_header_num => 0); -- 4262811
134314 --
134315 -- set accounting line options
134316 --
134317 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
134318 p_natural_side_code => 'D'
134319 , p_gain_or_loss_flag => 'N'
134320 , p_gl_transfer_mode_code => 'S'
134321 , p_acct_entry_type_code => 'A'
134322 , p_switch_side_flag => 'Y'
134323 , p_merge_duplicate_code => 'N'
134324 );
134325 --
134326 l_acc_rev_natural_side_code := 'C'; -- 4262811
134327 --
134328 --
134329 -- set accounting line type info
134330 --
134331 xla_ae_lines_pkg.SetAcctLineType
134332 (p_component_type => l_component_type
134333 ,p_event_type_code => l_event_type_code
134334 ,p_line_definition_owner_code => l_line_definition_owner_code
134335 ,p_line_definition_code => l_line_definition_code
134336 ,p_accounting_line_code => l_component_code
134337 ,p_accounting_line_type_code => l_component_type_code
134338 ,p_accounting_line_appl_id => l_component_appl_id
134339 ,p_amb_context_code => l_amb_context_code
134340 ,p_entity_code => l_entity_code
134341 ,p_event_class_code => l_event_class_code);
134342 --
134343 -- set accounting class
134344 --
134345 xla_ae_lines_pkg.SetAcctClass(
134346 p_accounting_class_code => 'RESOURCE_ABSORPTION'
134347 , p_ae_header_id => l_ae_header_id
134348 );
134349
134350 --
134351 -- set rounding class
134352 --
134353 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
134354 'RESOURCE_ABSORPTION';
134355
134356 --
134357 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
134358 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
134359 --
134360 -- bulk performance
134361 --
134362 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
134363
134364 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
134365 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
134366
134367 -- 4955764
134368 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134369 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
134370
134371 -- 4458381 Public Sector Enh
134372
134373 --
134374 -- set accounting attributes for the line type
134375 --
134376 l_entered_amt_idx := 3;
134377 l_accted_amt_idx := 8;
134378 l_bflow_applied_to_amt_idx := NULL; -- 5132302
134379 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
134380 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
134381 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
134382 l_rec_acct_attrs.array_char_value(2) := p_source_12;
134383 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
134384 l_rec_acct_attrs.array_num_value(3) := p_source_18;
134385 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
134386 l_rec_acct_attrs.array_char_value(4) := p_source_15;
134387 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
134388 l_rec_acct_attrs.array_date_value(5) := p_source_19;
134389 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
134390 l_rec_acct_attrs.array_num_value(6) := p_source_20;
134391 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
134392 l_rec_acct_attrs.array_char_value(7) := p_source_21;
134393 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
134394 l_rec_acct_attrs.array_num_value(8) := p_source_22;
134395
134396 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
134397 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
134398
134399 ---------------------------------------------------------------------------------------------------------------
134400 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
134401 ---------------------------------------------------------------------------------------------------------------
134402 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
134403
134404 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134405 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134406
134407 IF xla_accounting_cache_pkg.GetValueChar
134408 (p_source_code => 'LEDGER_CATEGORY_CODE'
134409 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
134410 AND l_bflow_method_code = 'PRIOR_ENTRY'
134411 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
134412 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
134413 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
134414 )
134415 THEN
134416 xla_ae_lines_pkg.BflowUpgEntry
134417 (p_business_method_code => l_bflow_method_code
134418 ,p_business_class_code => l_bflow_class_code
134419 ,p_balance_type => l_balance_type_code);
134420 ELSE
134421 NULL;
134422 -- No business flow processing for business flow method of NONE.
134423 END IF;
134424
134425 --
134426 -- call analytical criteria
134427 --
134428
134429 --
134430 -- call description
134431 --
134432 -- No description or it is inherited.
134433 --
134434 -- call ADRs
134435 -- Bug 4922099
134436 --
134437 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134438 (NVL(l_actual_upg_option, 'N') = 'O') OR
134439 (NVL(l_enc_upg_option, 'N') = 'O')
134440 )
134441 THEN
134442 NULL;
134443 --
134444 --
134445
134446 l_ccid := AcctDerRule_4(
134447 p_application_id => p_application_id
134448 , p_ae_header_id => l_ae_header_id
134449 , p_source_4 => p_source_4
134450 , x_transaction_coa_id => l_adr_transaction_coa_id
134451 , x_accounting_coa_id => l_adr_accounting_coa_id
134452 , x_value_type_code => l_adr_value_type_code
134453 , p_side => 'NA'
134454 );
134455
134456 xla_ae_lines_pkg.set_ccid(
134457 p_code_combination_id => l_ccid
134458 , p_value_type_code => l_adr_value_type_code
134459 , p_transaction_coa_id => l_adr_transaction_coa_id
134460 , p_accounting_coa_id => l_adr_accounting_coa_id
134461 , p_adr_code => 'CST_DEFAULT'
134462 , p_adr_type_code => 'S'
134463 , p_component_type => l_component_type
134464 , p_component_code => l_component_code
134465 , p_component_type_code => l_component_type_code
134466 , p_component_appl_id => l_component_appl_id
134467 , p_amb_context_code => l_amb_context_code
134468 , p_side => 'NA'
134469 );
134470
134471
134472 --
134473 --
134474 END IF;
134475 --
134476 -- Bug 4922099
134477 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
134478 (NVL(l_enc_upg_option, 'N') = 'O')
134479 ) AND
134480 (l_bflow_method_code = 'PRIOR_ENTRY')
134481 )
134482 THEN
134483 IF
134484 --
134485 1 = 2
134486 --
134487 THEN
134488 xla_accounting_err_pkg.build_message
134489 (p_appli_s_name => 'XLA'
134490 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134491 ,p_token_1 => 'LINE_NUMBER'
134492 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
134493 ,p_token_2 => 'LINE_TYPE_NAME'
134494 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
134495 l_component_type
134496 ,l_component_code
134497 ,l_component_type_code
134498 ,l_component_appl_id
134499 ,l_amb_context_code
134500 ,l_entity_code
134501 ,l_event_class_code
134502 )
134503 ,p_token_3 => 'OWNER'
134504 ,p_value_3 => xla_lookups_pkg.get_meaning(
134505 p_lookup_type => 'XLA_OWNER_TYPE'
134506 ,p_lookup_code => l_component_type_code
134507 )
134508 ,p_token_4 => 'PRODUCT_NAME'
134509 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
134510 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
134511 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
134512 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
134513 ,p_ae_header_id => NULL
134514 );
134515
134516 IF (C_LEVEL_ERROR>= g_log_level) THEN
134517 trace
134518 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
134519 ,p_level => C_LEVEL_ERROR
134520 ,p_module => l_log_module);
134521 END IF;
134522 END IF;
134523 END IF;
134524 --
134525 --
134526 ------------------------------------------------------------------------------------------------
134527 -- 4219869 Business Flow
134528 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
134529 -- Prior Entry. Currently, the following code is always generated.
134530 ------------------------------------------------------------------------------------------------
134531 XLA_AE_LINES_PKG.ValidateCurrentLine;
134532
134533 ------------------------------------------------------------------------------------
134534 -- 4219869 Business Flow
134535 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
134536 ------------------------------------------------------------------------------------
134537 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134538
134539 ----------------------------------------------------------------------------------
134540 -- 4219869 Business Flow
134541 -- Update journal entry status -- Need to generate this within IF <condition>
134542 ----------------------------------------------------------------------------------
134543 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134544 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
134545 ,p_balance_type_code => l_balance_type_code
134546 );
134547
134548 -------------------------------------------------------------------------------------------
134549 -- 4262811 - Generate the Accrual Reversal lines
134550 -------------------------------------------------------------------------------------------
134551 BEGIN
134552 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
134553 (g_array_event(p_event_id).array_value_num('header_index'));
134554 IF l_acc_rev_flag IS NULL THEN
134555 l_acc_rev_flag := 'N';
134556 END IF;
134557 EXCEPTION
134558 WHEN OTHERS THEN
134559 l_acc_rev_flag := 'N';
134560 END;
134561 --
134562 IF (l_acc_rev_flag = 'Y') THEN
134563
134564 -- 4645092 ------------------------------------------------------------------------------
134565 -- To allow MPA report to determine if it should generate report process
134566 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
134567 ------------------------------------------------------------------------------------------
134568
134569 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
134570 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
134571 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
134572 -- call ADRs
134573 -- Bug 4922099
134574 --
134575 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134576 (NVL(l_actual_upg_option, 'N') = 'O') OR
134577 (NVL(l_enc_upg_option, 'N') = 'O')
134578 )
134579 THEN
134580 NULL;
134581 --
134582 --
134583
134584 l_ccid := AcctDerRule_4(
134585 p_application_id => p_application_id
134586 , p_ae_header_id => l_ae_header_id
134587 , p_source_4 => p_source_4
134588 , x_transaction_coa_id => l_adr_transaction_coa_id
134589 , x_accounting_coa_id => l_adr_accounting_coa_id
134590 , x_value_type_code => l_adr_value_type_code
134591 , p_side => 'NA'
134592 );
134593
134594 xla_ae_lines_pkg.set_ccid(
134595 p_code_combination_id => l_ccid
134596 , p_value_type_code => l_adr_value_type_code
134597 , p_transaction_coa_id => l_adr_transaction_coa_id
134598 , p_accounting_coa_id => l_adr_accounting_coa_id
134599 , p_adr_code => 'CST_DEFAULT'
134600 , p_adr_type_code => 'S'
134601 , p_component_type => l_component_type
134602 , p_component_code => l_component_code
134603 , p_component_type_code => l_component_type_code
134604 , p_component_appl_id => l_component_appl_id
134605 , p_amb_context_code => l_amb_context_code
134606 , p_side => 'NA'
134607 );
134608
134609
134610 --
134611 --
134612 END IF;
134613
134614 --
134615 -- Update the line information that should be overwritten
134616 --
134617 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
134618 p_header_num => 1);
134619 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
134620
134621 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
134622
134623 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
134624 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
134625 END IF;
134626
134627 --
134628 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
134629 --
134630 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
134631 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
134632 ELSE
134633 ---------------------------------------------------------------------------------------------------
134634 -- 4262811a Switch Sign
134635 ---------------------------------------------------------------------------------------------------
134636 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
134637 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134638 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134639 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
134640 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134641 -- 5132302
134642 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
134643 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
134644
134645 END IF;
134646
134647 -- 4955764
134648 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134649 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
134650
134651
134652 XLA_AE_LINES_PKG.ValidateCurrentLine;
134653 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
134654
134655 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
134656 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
134657 ,p_balance_type_code => l_balance_type_code);
134658
134659 END IF;
134660
134661 -----------------------------------------------------------------------------------------
134662 -- 4262811 Multiperiod Accounting
134663 -----------------------------------------------------------------------------------------
134664 -- No MPA option is assigned.
134665
134666
134667 END IF;
134668 END IF;
134669 --
134670
134671 --
134672 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134673 trace
134674 (p_msg => 'END of AcctLineType_243'
134675 ,p_level => C_LEVEL_PROCEDURE
134676 ,p_module => l_log_module);
134677 END IF;
134678 --
134679 EXCEPTION
134680 WHEN xla_exceptions_pkg.application_exception THEN
134681 RAISE;
134682 WHEN OTHERS THEN
134683 xla_exceptions_pkg.raise_message
134684 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_243');
134685 END AcctLineType_243;
134686 --
134687
134688 ---------------------------------------
134689 --
134690 -- PRIVATE FUNCTION
134691 -- AcctLineType_244
134692 --
134693 ---------------------------------------
134694 PROCEDURE AcctLineType_244 (
134695 p_application_id IN NUMBER
134696 ,p_event_id IN NUMBER
134697 ,p_calculate_acctd_flag IN VARCHAR2
134698 ,p_calculate_g_l_flag IN VARCHAR2
134699 ,p_actual_flag IN OUT VARCHAR2
134700 ,p_balance_type_code OUT VARCHAR2
134701 ,p_gain_or_loss_ref OUT VARCHAR2
134702
134703 --Cost Management Default Account
134704 , p_source_4 IN NUMBER
134705 --DISTRIBUTION_IDENTIFIER
134706 , p_source_11 IN NUMBER
134707 --Distribution Type
134708 , p_source_12 IN VARCHAR2
134709 , p_source_12_meaning IN VARCHAR2
134710 --Entered Currency Code
134711 , p_source_15 IN VARCHAR2
134712 --Entered Amount
134713 , p_source_18 IN NUMBER
134714 --Currency Conversion Date
134715 , p_source_19 IN DATE
134716 --Currency Conversion Rate
134717 , p_source_20 IN NUMBER
134718 --Currency Conversion Type
134719 , p_source_21 IN VARCHAR2
134720 --Accounted Amount
134721 , p_source_22 IN NUMBER
134722 --Accounting Line Type
134723 , p_source_24 IN NUMBER
134724 )
134725 IS
134726
134727 l_component_type VARCHAR2(80);
134728 l_component_code VARCHAR2(30);
134729 l_component_type_code VARCHAR2(1);
134730 l_component_appl_id INTEGER;
134731 l_amb_context_code VARCHAR2(30);
134732 l_entity_code VARCHAR2(30);
134733 l_event_class_code VARCHAR2(30);
134734 l_ae_header_id NUMBER;
134735 l_event_type_code VARCHAR2(30);
134736 l_line_definition_code VARCHAR2(30);
134737 l_line_definition_owner_code VARCHAR2(1);
134738 --
134739 -- adr variables
134740 l_segment VARCHAR2(30);
134741 l_ccid NUMBER;
134742 l_adr_transaction_coa_id NUMBER;
134743 l_adr_accounting_coa_id NUMBER;
134744 l_adr_flexfield_segment_code VARCHAR2(30);
134745 l_adr_flex_value_set_id NUMBER;
134746 l_adr_value_type_code VARCHAR2(30);
134747 l_adr_value_combination_id NUMBER;
134748 l_adr_value_segment_code VARCHAR2(30);
134749
134750 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
134751 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
134752 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
134753 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
134754
134755 -- 4262811 Variables ------------------------------------------------------------------------------------------
134756 l_entered_amt_idx NUMBER;
134757 l_accted_amt_idx NUMBER;
134758 l_acc_rev_flag VARCHAR2(1);
134759 l_accrual_line_num NUMBER;
134760 l_tmp_amt NUMBER;
134761 l_acc_rev_natural_side_code VARCHAR2(1);
134762
134763 l_num_entries NUMBER;
134764 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
134765 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
134766 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
134767 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
134768 l_recog_line_1 NUMBER;
134769 l_recog_line_2 NUMBER;
134770
134771 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
134772 l_bflow_applied_to_amt NUMBER; -- 5132302
134773 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
134774
134775 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
134776
134777 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
134778 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
134779
134780 ---------------------------------------------------------------------------------------------------------------
134781
134782
134783 --
134784 -- bulk performance
134785 --
134786 l_balance_type_code VARCHAR2(1);
134787 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
134788 l_log_module VARCHAR2(240);
134789
134790 --
134791 -- Upgrade strategy
134792 --
134793 l_actual_upg_option VARCHAR2(1);
134794 l_enc_upg_option VARCHAR2(1);
134795
134796 --
134797 BEGIN
134798 --
134799 IF g_log_enabled THEN
134800 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_244';
134801 END IF;
134802 --
134803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
134804
134805 trace
134806 (p_msg => 'BEGIN of AcctLineType_244'
134807 ,p_level => C_LEVEL_PROCEDURE
134808 ,p_module => l_log_module);
134809
134810 END IF;
134811 --
134812 l_component_type := 'AMB_JLT';
134813 l_component_code := 'RESOURCE_RATE_VARIANCE';
134814 l_component_type_code := 'S';
134815 l_component_appl_id := 707;
134816 l_amb_context_code := 'DEFAULT';
134817 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
134818 l_event_class_code := 'ABSORPTION';
134819 l_event_type_code := 'ABSORPTION_ALL';
134820 l_line_definition_owner_code := 'S';
134821 l_line_definition_code := 'ABSORPTION';
134822 --
134823 l_balance_type_code := 'A';
134824 l_segment := NULL;
134825 l_ccid := NULL;
134826 l_adr_transaction_coa_id := NULL;
134827 l_adr_accounting_coa_id := NULL;
134828 l_adr_flexfield_segment_code := NULL;
134829 l_adr_flex_value_set_id := NULL;
134830 l_adr_value_type_code := NULL;
134831 l_adr_value_combination_id := NULL;
134832 l_adr_value_segment_code := NULL;
134833
134834 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
134835 l_bflow_class_code := ''; -- 4219869 Business Flow
134836 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
134837 l_budgetary_control_flag := 'N';
134838
134839 l_bflow_applied_to_amt_idx := NULL; -- 5132302
134840 l_bflow_applied_to_amt := NULL; -- 5132302
134841 l_entered_amt_idx := NULL; -- 4262811
134842 l_accted_amt_idx := NULL; -- 4262811
134843 l_acc_rev_flag := NULL; -- 4262811
134844 l_accrual_line_num := NULL; -- 4262811
134845 l_tmp_amt := NULL; -- 4262811
134846 --
134847
134848 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
134849 l_balance_type_code <> 'B' THEN
134850 IF NVL(p_source_24,9E125) = 6
134851 THEN
134852
134853 --
134854 XLA_AE_LINES_PKG.SetNewLine;
134855
134856 p_balance_type_code := l_balance_type_code;
134857 -- set the flag so later we will know whether the gain loss line needs to be created
134858
134859 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
134860 p_actual_flag :='A';
134861 END IF;
134862
134863 --
134864 -- bulk performance
134865 --
134866 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
134867 p_header_num => 0); -- 4262811
134868 --
134869 -- set accounting line options
134870 --
134871 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
134872 p_natural_side_code => 'D'
134873 , p_gain_or_loss_flag => 'N'
134874 , p_gl_transfer_mode_code => 'S'
134875 , p_acct_entry_type_code => 'A'
134876 , p_switch_side_flag => 'Y'
134877 , p_merge_duplicate_code => 'N'
134878 );
134879 --
134880 l_acc_rev_natural_side_code := 'C'; -- 4262811
134881 --
134882 --
134883 -- set accounting line type info
134884 --
134885 xla_ae_lines_pkg.SetAcctLineType
134886 (p_component_type => l_component_type
134887 ,p_event_type_code => l_event_type_code
134888 ,p_line_definition_owner_code => l_line_definition_owner_code
134889 ,p_line_definition_code => l_line_definition_code
134890 ,p_accounting_line_code => l_component_code
134891 ,p_accounting_line_type_code => l_component_type_code
134892 ,p_accounting_line_appl_id => l_component_appl_id
134893 ,p_amb_context_code => l_amb_context_code
134894 ,p_entity_code => l_entity_code
134895 ,p_event_class_code => l_event_class_code);
134896 --
134897 -- set accounting class
134898 --
134899 xla_ae_lines_pkg.SetAcctClass(
134900 p_accounting_class_code => 'RESOURCE_RATE_VARIANCE'
134901 , p_ae_header_id => l_ae_header_id
134902 );
134903
134904 --
134905 -- set rounding class
134906 --
134907 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
134908 'RESOURCE_RATE_VARIANCE';
134909
134910 --
134911 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
134912 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
134913 --
134914 -- bulk performance
134915 --
134916 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
134917
134918 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
134919 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
134920
134921 -- 4955764
134922 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
134923 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
134924
134925 -- 4458381 Public Sector Enh
134926
134927 --
134928 -- set accounting attributes for the line type
134929 --
134930 l_entered_amt_idx := 3;
134931 l_accted_amt_idx := 8;
134932 l_bflow_applied_to_amt_idx := NULL; -- 5132302
134933 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
134934 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
134935 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
134936 l_rec_acct_attrs.array_char_value(2) := p_source_12;
134937 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
134938 l_rec_acct_attrs.array_num_value(3) := p_source_18;
134939 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
134940 l_rec_acct_attrs.array_char_value(4) := p_source_15;
134941 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
134942 l_rec_acct_attrs.array_date_value(5) := p_source_19;
134943 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
134944 l_rec_acct_attrs.array_num_value(6) := p_source_20;
134945 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
134946 l_rec_acct_attrs.array_char_value(7) := p_source_21;
134947 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
134948 l_rec_acct_attrs.array_num_value(8) := p_source_22;
134949
134950 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
134951 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
134952
134953 ---------------------------------------------------------------------------------------------------------------
134954 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
134955 ---------------------------------------------------------------------------------------------------------------
134956 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
134957
134958 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134959 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
134960
134961 IF xla_accounting_cache_pkg.GetValueChar
134962 (p_source_code => 'LEDGER_CATEGORY_CODE'
134963 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
134964 AND l_bflow_method_code = 'PRIOR_ENTRY'
134965 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
134966 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
134967 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
134968 )
134969 THEN
134970 xla_ae_lines_pkg.BflowUpgEntry
134971 (p_business_method_code => l_bflow_method_code
134972 ,p_business_class_code => l_bflow_class_code
134973 ,p_balance_type => l_balance_type_code);
134974 ELSE
134975 NULL;
134976 -- No business flow processing for business flow method of NONE.
134977 END IF;
134978
134979 --
134980 -- call analytical criteria
134981 --
134982
134983 --
134984 -- call description
134985 --
134986 -- No description or it is inherited.
134987 --
134988 -- call ADRs
134989 -- Bug 4922099
134990 --
134991 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
134992 (NVL(l_actual_upg_option, 'N') = 'O') OR
134993 (NVL(l_enc_upg_option, 'N') = 'O')
134994 )
134995 THEN
134996 NULL;
134997 --
134998 --
134999
135000 l_ccid := AcctDerRule_4(
135001 p_application_id => p_application_id
135002 , p_ae_header_id => l_ae_header_id
135003 , p_source_4 => p_source_4
135004 , x_transaction_coa_id => l_adr_transaction_coa_id
135005 , x_accounting_coa_id => l_adr_accounting_coa_id
135006 , x_value_type_code => l_adr_value_type_code
135007 , p_side => 'NA'
135008 );
135009
135010 xla_ae_lines_pkg.set_ccid(
135011 p_code_combination_id => l_ccid
135012 , p_value_type_code => l_adr_value_type_code
135013 , p_transaction_coa_id => l_adr_transaction_coa_id
135014 , p_accounting_coa_id => l_adr_accounting_coa_id
135015 , p_adr_code => 'CST_DEFAULT'
135016 , p_adr_type_code => 'S'
135017 , p_component_type => l_component_type
135018 , p_component_code => l_component_code
135019 , p_component_type_code => l_component_type_code
135020 , p_component_appl_id => l_component_appl_id
135021 , p_amb_context_code => l_amb_context_code
135022 , p_side => 'NA'
135023 );
135024
135025
135026 --
135027 --
135028 END IF;
135029 --
135030 -- Bug 4922099
135031 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
135032 (NVL(l_enc_upg_option, 'N') = 'O')
135033 ) AND
135034 (l_bflow_method_code = 'PRIOR_ENTRY')
135035 )
135036 THEN
135037 IF
135038 --
135039 1 = 2
135040 --
135041 THEN
135042 xla_accounting_err_pkg.build_message
135043 (p_appli_s_name => 'XLA'
135044 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135045 ,p_token_1 => 'LINE_NUMBER'
135046 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
135047 ,p_token_2 => 'LINE_TYPE_NAME'
135048 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
135049 l_component_type
135050 ,l_component_code
135051 ,l_component_type_code
135052 ,l_component_appl_id
135053 ,l_amb_context_code
135054 ,l_entity_code
135055 ,l_event_class_code
135056 )
135057 ,p_token_3 => 'OWNER'
135058 ,p_value_3 => xla_lookups_pkg.get_meaning(
135059 p_lookup_type => 'XLA_OWNER_TYPE'
135060 ,p_lookup_code => l_component_type_code
135061 )
135062 ,p_token_4 => 'PRODUCT_NAME'
135063 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
135064 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
135065 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
135066 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
135067 ,p_ae_header_id => NULL
135068 );
135069
135070 IF (C_LEVEL_ERROR>= g_log_level) THEN
135071 trace
135072 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135073 ,p_level => C_LEVEL_ERROR
135074 ,p_module => l_log_module);
135075 END IF;
135076 END IF;
135077 END IF;
135078 --
135079 --
135080 ------------------------------------------------------------------------------------------------
135081 -- 4219869 Business Flow
135082 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
135083 -- Prior Entry. Currently, the following code is always generated.
135084 ------------------------------------------------------------------------------------------------
135085 XLA_AE_LINES_PKG.ValidateCurrentLine;
135086
135087 ------------------------------------------------------------------------------------
135088 -- 4219869 Business Flow
135089 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
135090 ------------------------------------------------------------------------------------
135091 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135092
135093 ----------------------------------------------------------------------------------
135094 -- 4219869 Business Flow
135095 -- Update journal entry status -- Need to generate this within IF <condition>
135096 ----------------------------------------------------------------------------------
135097 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135098 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
135099 ,p_balance_type_code => l_balance_type_code
135100 );
135101
135102 -------------------------------------------------------------------------------------------
135103 -- 4262811 - Generate the Accrual Reversal lines
135104 -------------------------------------------------------------------------------------------
135105 BEGIN
135106 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
135107 (g_array_event(p_event_id).array_value_num('header_index'));
135108 IF l_acc_rev_flag IS NULL THEN
135109 l_acc_rev_flag := 'N';
135110 END IF;
135111 EXCEPTION
135112 WHEN OTHERS THEN
135113 l_acc_rev_flag := 'N';
135114 END;
135115 --
135116 IF (l_acc_rev_flag = 'Y') THEN
135117
135118 -- 4645092 ------------------------------------------------------------------------------
135119 -- To allow MPA report to determine if it should generate report process
135120 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
135121 ------------------------------------------------------------------------------------------
135122
135123 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
135124 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
135125 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
135126 -- call ADRs
135127 -- Bug 4922099
135128 --
135129 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135130 (NVL(l_actual_upg_option, 'N') = 'O') OR
135131 (NVL(l_enc_upg_option, 'N') = 'O')
135132 )
135133 THEN
135134 NULL;
135135 --
135136 --
135137
135138 l_ccid := AcctDerRule_4(
135139 p_application_id => p_application_id
135140 , p_ae_header_id => l_ae_header_id
135141 , p_source_4 => p_source_4
135142 , x_transaction_coa_id => l_adr_transaction_coa_id
135143 , x_accounting_coa_id => l_adr_accounting_coa_id
135144 , x_value_type_code => l_adr_value_type_code
135145 , p_side => 'NA'
135146 );
135147
135148 xla_ae_lines_pkg.set_ccid(
135149 p_code_combination_id => l_ccid
135150 , p_value_type_code => l_adr_value_type_code
135151 , p_transaction_coa_id => l_adr_transaction_coa_id
135152 , p_accounting_coa_id => l_adr_accounting_coa_id
135153 , p_adr_code => 'CST_DEFAULT'
135154 , p_adr_type_code => 'S'
135155 , p_component_type => l_component_type
135156 , p_component_code => l_component_code
135157 , p_component_type_code => l_component_type_code
135158 , p_component_appl_id => l_component_appl_id
135159 , p_amb_context_code => l_amb_context_code
135160 , p_side => 'NA'
135161 );
135162
135163
135164 --
135165 --
135166 END IF;
135167
135168 --
135169 -- Update the line information that should be overwritten
135170 --
135171 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
135172 p_header_num => 1);
135173 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
135174
135175 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
135176
135177 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
135178 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
135179 END IF;
135180
135181 --
135182 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
135183 --
135184 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
135185 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
135186 ELSE
135187 ---------------------------------------------------------------------------------------------------
135188 -- 4262811a Switch Sign
135189 ---------------------------------------------------------------------------------------------------
135190 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
135191 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135192 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135193 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135194 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135195 -- 5132302
135196 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
135197 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135198
135199 END IF;
135200
135201 -- 4955764
135202 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135203 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
135204
135205
135206 XLA_AE_LINES_PKG.ValidateCurrentLine;
135207 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135208
135209 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135210 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
135211 ,p_balance_type_code => l_balance_type_code);
135212
135213 END IF;
135214
135215 -----------------------------------------------------------------------------------------
135216 -- 4262811 Multiperiod Accounting
135217 -----------------------------------------------------------------------------------------
135218 -- No MPA option is assigned.
135219
135220
135221 END IF;
135222 END IF;
135223 --
135224
135225 --
135226 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135227 trace
135228 (p_msg => 'END of AcctLineType_244'
135229 ,p_level => C_LEVEL_PROCEDURE
135230 ,p_module => l_log_module);
135231 END IF;
135232 --
135233 EXCEPTION
135234 WHEN xla_exceptions_pkg.application_exception THEN
135235 RAISE;
135236 WHEN OTHERS THEN
135237 xla_exceptions_pkg.raise_message
135238 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_244');
135239 END AcctLineType_244;
135240 --
135241
135242 ---------------------------------------
135243 --
135244 -- PRIVATE FUNCTION
135245 -- AcctLineType_245
135246 --
135247 ---------------------------------------
135248 PROCEDURE AcctLineType_245 (
135249 p_application_id IN NUMBER
135250 ,p_event_id IN NUMBER
135251 ,p_calculate_acctd_flag IN VARCHAR2
135252 ,p_calculate_g_l_flag IN VARCHAR2
135253 ,p_actual_flag IN OUT VARCHAR2
135254 ,p_balance_type_code OUT VARCHAR2
135255 ,p_gain_or_loss_ref OUT VARCHAR2
135256
135257 --Cost Management Default Account
135258 , p_source_4 IN NUMBER
135259 --DISTRIBUTION_IDENTIFIER
135260 , p_source_11 IN NUMBER
135261 --Distribution Type
135262 , p_source_12 IN VARCHAR2
135263 , p_source_12_meaning IN VARCHAR2
135264 --Entered Currency Code
135265 , p_source_15 IN VARCHAR2
135266 --Entered Amount
135267 , p_source_18 IN NUMBER
135268 --Currency Conversion Date
135269 , p_source_19 IN DATE
135270 --Currency Conversion Rate
135271 , p_source_20 IN NUMBER
135272 --Currency Conversion Type
135273 , p_source_21 IN VARCHAR2
135274 --Accounted Amount
135275 , p_source_22 IN NUMBER
135276 --Accounting Line Type
135277 , p_source_24 IN NUMBER
135278 )
135279 IS
135280
135281 l_component_type VARCHAR2(80);
135282 l_component_code VARCHAR2(30);
135283 l_component_type_code VARCHAR2(1);
135284 l_component_appl_id INTEGER;
135285 l_amb_context_code VARCHAR2(30);
135286 l_entity_code VARCHAR2(30);
135287 l_event_class_code VARCHAR2(30);
135288 l_ae_header_id NUMBER;
135289 l_event_type_code VARCHAR2(30);
135290 l_line_definition_code VARCHAR2(30);
135291 l_line_definition_owner_code VARCHAR2(1);
135292 --
135293 -- adr variables
135294 l_segment VARCHAR2(30);
135295 l_ccid NUMBER;
135296 l_adr_transaction_coa_id NUMBER;
135297 l_adr_accounting_coa_id NUMBER;
135298 l_adr_flexfield_segment_code VARCHAR2(30);
135299 l_adr_flex_value_set_id NUMBER;
135300 l_adr_value_type_code VARCHAR2(30);
135301 l_adr_value_combination_id NUMBER;
135302 l_adr_value_segment_code VARCHAR2(30);
135303
135304 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
135305 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
135306 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
135307 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
135308
135309 -- 4262811 Variables ------------------------------------------------------------------------------------------
135310 l_entered_amt_idx NUMBER;
135311 l_accted_amt_idx NUMBER;
135312 l_acc_rev_flag VARCHAR2(1);
135313 l_accrual_line_num NUMBER;
135314 l_tmp_amt NUMBER;
135315 l_acc_rev_natural_side_code VARCHAR2(1);
135316
135317 l_num_entries NUMBER;
135318 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
135319 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
135320 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
135321 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
135322 l_recog_line_1 NUMBER;
135323 l_recog_line_2 NUMBER;
135324
135325 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
135326 l_bflow_applied_to_amt NUMBER; -- 5132302
135327 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
135328
135329 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
135330
135331 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
135332 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
135333
135334 ---------------------------------------------------------------------------------------------------------------
135335
135336
135337 --
135338 -- bulk performance
135339 --
135340 l_balance_type_code VARCHAR2(1);
135341 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
135342 l_log_module VARCHAR2(240);
135343
135344 --
135345 -- Upgrade strategy
135346 --
135347 l_actual_upg_option VARCHAR2(1);
135348 l_enc_upg_option VARCHAR2(1);
135349
135350 --
135351 BEGIN
135352 --
135353 IF g_log_enabled THEN
135354 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_245';
135355 END IF;
135356 --
135357 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135358
135359 trace
135360 (p_msg => 'BEGIN of AcctLineType_245'
135361 ,p_level => C_LEVEL_PROCEDURE
135362 ,p_module => l_log_module);
135363
135364 END IF;
135365 --
135366 l_component_type := 'AMB_JLT';
135367 l_component_code := 'RETROACTIVE_PRICE_ADJ';
135368 l_component_type_code := 'S';
135369 l_component_appl_id := 707;
135370 l_amb_context_code := 'DEFAULT';
135371 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
135372 l_event_class_code := 'RETR_PRICE_ADJ';
135373 l_event_type_code := 'RETR_PRICE_ADJ_ALL';
135374 l_line_definition_owner_code := 'S';
135375 l_line_definition_code := 'RETR_PRICE_ADJ';
135376 --
135377 l_balance_type_code := 'A';
135378 l_segment := NULL;
135379 l_ccid := NULL;
135380 l_adr_transaction_coa_id := NULL;
135381 l_adr_accounting_coa_id := NULL;
135382 l_adr_flexfield_segment_code := NULL;
135383 l_adr_flex_value_set_id := NULL;
135384 l_adr_value_type_code := NULL;
135385 l_adr_value_combination_id := NULL;
135386 l_adr_value_segment_code := NULL;
135387
135388 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
135389 l_bflow_class_code := ''; -- 4219869 Business Flow
135390 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
135391 l_budgetary_control_flag := 'N';
135392
135393 l_bflow_applied_to_amt_idx := NULL; -- 5132302
135394 l_bflow_applied_to_amt := NULL; -- 5132302
135395 l_entered_amt_idx := NULL; -- 4262811
135396 l_accted_amt_idx := NULL; -- 4262811
135397 l_acc_rev_flag := NULL; -- 4262811
135398 l_accrual_line_num := NULL; -- 4262811
135399 l_tmp_amt := NULL; -- 4262811
135400 --
135401
135402 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
135403 l_balance_type_code <> 'B' THEN
135404 IF NVL(p_source_24,9E125) = 32
135405 THEN
135406
135407 --
135408 XLA_AE_LINES_PKG.SetNewLine;
135409
135410 p_balance_type_code := l_balance_type_code;
135411 -- set the flag so later we will know whether the gain loss line needs to be created
135412
135413 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
135414 p_actual_flag :='A';
135415 END IF;
135416
135417 --
135418 -- bulk performance
135419 --
135420 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
135421 p_header_num => 0); -- 4262811
135422 --
135423 -- set accounting line options
135424 --
135425 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
135426 p_natural_side_code => 'D'
135427 , p_gain_or_loss_flag => 'N'
135428 , p_gl_transfer_mode_code => 'S'
135429 , p_acct_entry_type_code => 'A'
135430 , p_switch_side_flag => 'Y'
135431 , p_merge_duplicate_code => 'N'
135432 );
135433 --
135434 l_acc_rev_natural_side_code := 'C'; -- 4262811
135435 --
135436 --
135437 -- set accounting line type info
135438 --
135439 xla_ae_lines_pkg.SetAcctLineType
135440 (p_component_type => l_component_type
135441 ,p_event_type_code => l_event_type_code
135442 ,p_line_definition_owner_code => l_line_definition_owner_code
135443 ,p_line_definition_code => l_line_definition_code
135444 ,p_accounting_line_code => l_component_code
135445 ,p_accounting_line_type_code => l_component_type_code
135446 ,p_accounting_line_appl_id => l_component_appl_id
135447 ,p_amb_context_code => l_amb_context_code
135448 ,p_entity_code => l_entity_code
135449 ,p_event_class_code => l_event_class_code);
135450 --
135451 -- set accounting class
135452 --
135453 xla_ae_lines_pkg.SetAcctClass(
135454 p_accounting_class_code => 'RETROACTIVE_PRICE_ADJUSTMENT'
135455 , p_ae_header_id => l_ae_header_id
135456 );
135457
135458 --
135459 -- set rounding class
135460 --
135461 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
135462 'RETROACTIVE_PRICE_ADJUSTMENT';
135463
135464 --
135465 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
135466 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
135467 --
135468 -- bulk performance
135469 --
135470 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
135471
135472 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
135473 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
135474
135475 -- 4955764
135476 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135477 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
135478
135479 -- 4458381 Public Sector Enh
135480
135481 --
135482 -- set accounting attributes for the line type
135483 --
135484 l_entered_amt_idx := 3;
135485 l_accted_amt_idx := 8;
135486 l_bflow_applied_to_amt_idx := NULL; -- 5132302
135487 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
135488 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
135489 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
135490 l_rec_acct_attrs.array_char_value(2) := p_source_12;
135491 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
135492 l_rec_acct_attrs.array_num_value(3) := p_source_18;
135493 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
135494 l_rec_acct_attrs.array_char_value(4) := p_source_15;
135495 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
135496 l_rec_acct_attrs.array_date_value(5) := p_source_19;
135497 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
135498 l_rec_acct_attrs.array_num_value(6) := p_source_20;
135499 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
135500 l_rec_acct_attrs.array_char_value(7) := p_source_21;
135501 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
135502 l_rec_acct_attrs.array_num_value(8) := p_source_22;
135503
135504 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
135505 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
135506
135507 ---------------------------------------------------------------------------------------------------------------
135508 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
135509 ---------------------------------------------------------------------------------------------------------------
135510 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
135511
135512 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135513 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
135514
135515 IF xla_accounting_cache_pkg.GetValueChar
135516 (p_source_code => 'LEDGER_CATEGORY_CODE'
135517 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
135518 AND l_bflow_method_code = 'PRIOR_ENTRY'
135519 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
135520 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
135521 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
135522 )
135523 THEN
135524 xla_ae_lines_pkg.BflowUpgEntry
135525 (p_business_method_code => l_bflow_method_code
135526 ,p_business_class_code => l_bflow_class_code
135527 ,p_balance_type => l_balance_type_code);
135528 ELSE
135529 NULL;
135530 -- No business flow processing for business flow method of NONE.
135531 END IF;
135532
135533 --
135534 -- call analytical criteria
135535 --
135536
135537 --
135538 -- call description
135539 --
135540 -- No description or it is inherited.
135541 --
135542 -- call ADRs
135543 -- Bug 4922099
135544 --
135545 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135546 (NVL(l_actual_upg_option, 'N') = 'O') OR
135547 (NVL(l_enc_upg_option, 'N') = 'O')
135548 )
135549 THEN
135550 NULL;
135551 --
135552 --
135553
135554 l_ccid := AcctDerRule_4(
135555 p_application_id => p_application_id
135556 , p_ae_header_id => l_ae_header_id
135557 , p_source_4 => p_source_4
135558 , x_transaction_coa_id => l_adr_transaction_coa_id
135559 , x_accounting_coa_id => l_adr_accounting_coa_id
135560 , x_value_type_code => l_adr_value_type_code
135561 , p_side => 'NA'
135562 );
135563
135564 xla_ae_lines_pkg.set_ccid(
135565 p_code_combination_id => l_ccid
135566 , p_value_type_code => l_adr_value_type_code
135567 , p_transaction_coa_id => l_adr_transaction_coa_id
135568 , p_accounting_coa_id => l_adr_accounting_coa_id
135569 , p_adr_code => 'CST_DEFAULT'
135570 , p_adr_type_code => 'S'
135571 , p_component_type => l_component_type
135572 , p_component_code => l_component_code
135573 , p_component_type_code => l_component_type_code
135574 , p_component_appl_id => l_component_appl_id
135575 , p_amb_context_code => l_amb_context_code
135576 , p_side => 'NA'
135577 );
135578
135579
135580 --
135581 --
135582 END IF;
135583 --
135584 -- Bug 4922099
135585 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
135586 (NVL(l_enc_upg_option, 'N') = 'O')
135587 ) AND
135588 (l_bflow_method_code = 'PRIOR_ENTRY')
135589 )
135590 THEN
135591 IF
135592 --
135593 1 = 2
135594 --
135595 THEN
135596 xla_accounting_err_pkg.build_message
135597 (p_appli_s_name => 'XLA'
135598 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135599 ,p_token_1 => 'LINE_NUMBER'
135600 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
135601 ,p_token_2 => 'LINE_TYPE_NAME'
135602 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
135603 l_component_type
135604 ,l_component_code
135605 ,l_component_type_code
135606 ,l_component_appl_id
135607 ,l_amb_context_code
135608 ,l_entity_code
135609 ,l_event_class_code
135610 )
135611 ,p_token_3 => 'OWNER'
135612 ,p_value_3 => xla_lookups_pkg.get_meaning(
135613 p_lookup_type => 'XLA_OWNER_TYPE'
135614 ,p_lookup_code => l_component_type_code
135615 )
135616 ,p_token_4 => 'PRODUCT_NAME'
135617 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
135618 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
135619 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
135620 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
135621 ,p_ae_header_id => NULL
135622 );
135623
135624 IF (C_LEVEL_ERROR>= g_log_level) THEN
135625 trace
135626 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
135627 ,p_level => C_LEVEL_ERROR
135628 ,p_module => l_log_module);
135629 END IF;
135630 END IF;
135631 END IF;
135632 --
135633 --
135634 ------------------------------------------------------------------------------------------------
135635 -- 4219869 Business Flow
135636 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
135637 -- Prior Entry. Currently, the following code is always generated.
135638 ------------------------------------------------------------------------------------------------
135639 XLA_AE_LINES_PKG.ValidateCurrentLine;
135640
135641 ------------------------------------------------------------------------------------
135642 -- 4219869 Business Flow
135643 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
135644 ------------------------------------------------------------------------------------
135645 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135646
135647 ----------------------------------------------------------------------------------
135648 -- 4219869 Business Flow
135649 -- Update journal entry status -- Need to generate this within IF <condition>
135650 ----------------------------------------------------------------------------------
135651 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135652 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
135653 ,p_balance_type_code => l_balance_type_code
135654 );
135655
135656 -------------------------------------------------------------------------------------------
135657 -- 4262811 - Generate the Accrual Reversal lines
135658 -------------------------------------------------------------------------------------------
135659 BEGIN
135660 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
135661 (g_array_event(p_event_id).array_value_num('header_index'));
135662 IF l_acc_rev_flag IS NULL THEN
135663 l_acc_rev_flag := 'N';
135664 END IF;
135665 EXCEPTION
135666 WHEN OTHERS THEN
135667 l_acc_rev_flag := 'N';
135668 END;
135669 --
135670 IF (l_acc_rev_flag = 'Y') THEN
135671
135672 -- 4645092 ------------------------------------------------------------------------------
135673 -- To allow MPA report to determine if it should generate report process
135674 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
135675 ------------------------------------------------------------------------------------------
135676
135677 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
135678 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
135679 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
135680 -- call ADRs
135681 -- Bug 4922099
135682 --
135683 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
135684 (NVL(l_actual_upg_option, 'N') = 'O') OR
135685 (NVL(l_enc_upg_option, 'N') = 'O')
135686 )
135687 THEN
135688 NULL;
135689 --
135690 --
135691
135692 l_ccid := AcctDerRule_4(
135693 p_application_id => p_application_id
135694 , p_ae_header_id => l_ae_header_id
135695 , p_source_4 => p_source_4
135696 , x_transaction_coa_id => l_adr_transaction_coa_id
135697 , x_accounting_coa_id => l_adr_accounting_coa_id
135698 , x_value_type_code => l_adr_value_type_code
135699 , p_side => 'NA'
135700 );
135701
135702 xla_ae_lines_pkg.set_ccid(
135703 p_code_combination_id => l_ccid
135704 , p_value_type_code => l_adr_value_type_code
135705 , p_transaction_coa_id => l_adr_transaction_coa_id
135706 , p_accounting_coa_id => l_adr_accounting_coa_id
135707 , p_adr_code => 'CST_DEFAULT'
135708 , p_adr_type_code => 'S'
135709 , p_component_type => l_component_type
135710 , p_component_code => l_component_code
135711 , p_component_type_code => l_component_type_code
135712 , p_component_appl_id => l_component_appl_id
135713 , p_amb_context_code => l_amb_context_code
135714 , p_side => 'NA'
135715 );
135716
135717
135718 --
135719 --
135720 END IF;
135721
135722 --
135723 -- Update the line information that should be overwritten
135724 --
135725 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
135726 p_header_num => 1);
135727 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
135728
135729 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
135730
135731 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
135732 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
135733 END IF;
135734
135735 --
135736 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
135737 --
135738 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
135739 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
135740 ELSE
135741 ---------------------------------------------------------------------------------------------------
135742 -- 4262811a Switch Sign
135743 ---------------------------------------------------------------------------------------------------
135744 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
135745 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135746 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135747 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
135748 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135749 -- 5132302
135750 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
135751 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
135752
135753 END IF;
135754
135755 -- 4955764
135756 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
135757 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
135758
135759
135760 XLA_AE_LINES_PKG.ValidateCurrentLine;
135761 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
135762
135763 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
135764 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
135765 ,p_balance_type_code => l_balance_type_code);
135766
135767 END IF;
135768
135769 -----------------------------------------------------------------------------------------
135770 -- 4262811 Multiperiod Accounting
135771 -----------------------------------------------------------------------------------------
135772 -- No MPA option is assigned.
135773
135774
135775 END IF;
135776 END IF;
135777 --
135778
135779 --
135780 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135781 trace
135782 (p_msg => 'END of AcctLineType_245'
135783 ,p_level => C_LEVEL_PROCEDURE
135784 ,p_module => l_log_module);
135785 END IF;
135786 --
135787 EXCEPTION
135788 WHEN xla_exceptions_pkg.application_exception THEN
135789 RAISE;
135790 WHEN OTHERS THEN
135791 xla_exceptions_pkg.raise_message
135792 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_245');
135793 END AcctLineType_245;
135794 --
135795
135796 ---------------------------------------
135797 --
135798 -- PRIVATE FUNCTION
135799 -- AcctLineType_246
135800 --
135801 ---------------------------------------
135802 PROCEDURE AcctLineType_246 (
135803 p_application_id IN NUMBER
135804 ,p_event_id IN NUMBER
135805 ,p_calculate_acctd_flag IN VARCHAR2
135806 ,p_calculate_g_l_flag IN VARCHAR2
135807 ,p_actual_flag IN OUT VARCHAR2
135808 ,p_balance_type_code OUT VARCHAR2
135809 ,p_gain_or_loss_ref OUT VARCHAR2
135810
135811 --Cost Management Default Account
135812 , p_source_4 IN NUMBER
135813 --Receiving Accounting Line Type
135814 , p_source_5 IN VARCHAR2
135815 --DISTRIBUTION_IDENTIFIER
135816 , p_source_11 IN NUMBER
135817 --Distribution Type
135818 , p_source_12 IN VARCHAR2
135819 , p_source_12_meaning IN VARCHAR2
135820 --Entered Currency Code
135821 , p_source_15 IN VARCHAR2
135822 --Entered Amount
135823 , p_source_18 IN NUMBER
135824 --Currency Conversion Date
135825 , p_source_19 IN DATE
135826 --Currency Conversion Rate
135827 , p_source_20 IN NUMBER
135828 --Accounted Amount
135829 , p_source_22 IN NUMBER
135830 )
135831 IS
135832
135833 l_component_type VARCHAR2(80);
135834 l_component_code VARCHAR2(30);
135835 l_component_type_code VARCHAR2(1);
135836 l_component_appl_id INTEGER;
135837 l_amb_context_code VARCHAR2(30);
135838 l_entity_code VARCHAR2(30);
135839 l_event_class_code VARCHAR2(30);
135840 l_ae_header_id NUMBER;
135841 l_event_type_code VARCHAR2(30);
135842 l_line_definition_code VARCHAR2(30);
135843 l_line_definition_owner_code VARCHAR2(1);
135844 --
135845 -- adr variables
135846 l_segment VARCHAR2(30);
135847 l_ccid NUMBER;
135848 l_adr_transaction_coa_id NUMBER;
135849 l_adr_accounting_coa_id NUMBER;
135850 l_adr_flexfield_segment_code VARCHAR2(30);
135851 l_adr_flex_value_set_id NUMBER;
135852 l_adr_value_type_code VARCHAR2(30);
135853 l_adr_value_combination_id NUMBER;
135854 l_adr_value_segment_code VARCHAR2(30);
135855
135856 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
135857 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
135858 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
135859 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
135860
135861 -- 4262811 Variables ------------------------------------------------------------------------------------------
135862 l_entered_amt_idx NUMBER;
135863 l_accted_amt_idx NUMBER;
135864 l_acc_rev_flag VARCHAR2(1);
135865 l_accrual_line_num NUMBER;
135866 l_tmp_amt NUMBER;
135867 l_acc_rev_natural_side_code VARCHAR2(1);
135868
135869 l_num_entries NUMBER;
135870 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
135871 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
135872 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
135873 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
135874 l_recog_line_1 NUMBER;
135875 l_recog_line_2 NUMBER;
135876
135877 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
135878 l_bflow_applied_to_amt NUMBER; -- 5132302
135879 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
135880
135881 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
135882
135883 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
135884 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
135885
135886 ---------------------------------------------------------------------------------------------------------------
135887
135888
135889 --
135890 -- bulk performance
135891 --
135892 l_balance_type_code VARCHAR2(1);
135893 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
135894 l_log_module VARCHAR2(240);
135895
135896 --
135897 -- Upgrade strategy
135898 --
135899 l_actual_upg_option VARCHAR2(1);
135900 l_enc_upg_option VARCHAR2(1);
135901
135902 --
135903 BEGIN
135904 --
135905 IF g_log_enabled THEN
135906 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_246';
135907 END IF;
135908 --
135909 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
135910
135911 trace
135912 (p_msg => 'BEGIN of AcctLineType_246'
135913 ,p_level => C_LEVEL_PROCEDURE
135914 ,p_module => l_log_module);
135915
135916 END IF;
135917 --
135918 l_component_type := 'AMB_JLT';
135919 l_component_code := 'RETROACTIVE_PRICE_ADJ';
135920 l_component_type_code := 'S';
135921 l_component_appl_id := 707;
135922 l_amb_context_code := 'DEFAULT';
135923 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
135924 l_event_class_code := 'RETR_PRICE_ADJ_DEL';
135925 l_event_type_code := 'RETR_PRICE_ADJ_DEL_ALL';
135926 l_line_definition_owner_code := 'S';
135927 l_line_definition_code := 'RETR_PRICE_ADJ_DEL';
135928 --
135929 l_balance_type_code := 'A';
135930 l_segment := NULL;
135931 l_ccid := NULL;
135932 l_adr_transaction_coa_id := NULL;
135933 l_adr_accounting_coa_id := NULL;
135934 l_adr_flexfield_segment_code := NULL;
135935 l_adr_flex_value_set_id := NULL;
135936 l_adr_value_type_code := NULL;
135937 l_adr_value_combination_id := NULL;
135938 l_adr_value_segment_code := NULL;
135939
135940 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
135941 l_bflow_class_code := ''; -- 4219869 Business Flow
135942 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
135943 l_budgetary_control_flag := 'N';
135944
135945 l_bflow_applied_to_amt_idx := NULL; -- 5132302
135946 l_bflow_applied_to_amt := NULL; -- 5132302
135947 l_entered_amt_idx := NULL; -- 4262811
135948 l_accted_amt_idx := NULL; -- 4262811
135949 l_acc_rev_flag := NULL; -- 4262811
135950 l_accrual_line_num := NULL; -- 4262811
135951 l_tmp_amt := NULL; -- 4262811
135952 --
135953
135954 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
135955 l_balance_type_code <> 'B' THEN
135956 IF NVL(p_source_5,'
135957 ') = 'Retroprice Adjustment'
135958 THEN
135959
135960 --
135961 XLA_AE_LINES_PKG.SetNewLine;
135962
135963 p_balance_type_code := l_balance_type_code;
135964 -- set the flag so later we will know whether the gain loss line needs to be created
135965
135966 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
135967 p_actual_flag :='A';
135968 END IF;
135969
135970 --
135971 -- bulk performance
135972 --
135973 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
135974 p_header_num => 0); -- 4262811
135975 --
135976 -- set accounting line options
135977 --
135978 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
135979 p_natural_side_code => 'D'
135980 , p_gain_or_loss_flag => 'N'
135981 , p_gl_transfer_mode_code => 'S'
135982 , p_acct_entry_type_code => 'A'
135983 , p_switch_side_flag => 'Y'
135984 , p_merge_duplicate_code => 'N'
135985 );
135986 --
135987 l_acc_rev_natural_side_code := 'C'; -- 4262811
135988 --
135989 --
135990 -- set accounting line type info
135991 --
135992 xla_ae_lines_pkg.SetAcctLineType
135993 (p_component_type => l_component_type
135994 ,p_event_type_code => l_event_type_code
135995 ,p_line_definition_owner_code => l_line_definition_owner_code
135996 ,p_line_definition_code => l_line_definition_code
135997 ,p_accounting_line_code => l_component_code
135998 ,p_accounting_line_type_code => l_component_type_code
135999 ,p_accounting_line_appl_id => l_component_appl_id
136000 ,p_amb_context_code => l_amb_context_code
136001 ,p_entity_code => l_entity_code
136002 ,p_event_class_code => l_event_class_code);
136003 --
136004 -- set accounting class
136005 --
136006 xla_ae_lines_pkg.SetAcctClass(
136007 p_accounting_class_code => 'RETROACTIVE_PRICE_ADJUSTMENT'
136008 , p_ae_header_id => l_ae_header_id
136009 );
136010
136011 --
136012 -- set rounding class
136013 --
136014 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
136015 'RETROACTIVE_PRICE_ADJUSTMENT';
136016
136017 --
136018 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
136019 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
136020 --
136021 -- bulk performance
136022 --
136023 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
136024
136025 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
136026 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
136027
136028 -- 4955764
136029 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136030 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
136031
136032 -- 4458381 Public Sector Enh
136033
136034 --
136035 -- set accounting attributes for the line type
136036 --
136037 l_entered_amt_idx := 3;
136038 l_accted_amt_idx := 8;
136039 l_bflow_applied_to_amt_idx := NULL; -- 5132302
136040 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
136041 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
136042 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
136043 l_rec_acct_attrs.array_char_value(2) := p_source_12;
136044 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
136045 l_rec_acct_attrs.array_num_value(3) := p_source_18;
136046 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
136047 l_rec_acct_attrs.array_char_value(4) := p_source_15;
136048 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
136049 l_rec_acct_attrs.array_date_value(5) := p_source_19;
136050 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
136051 l_rec_acct_attrs.array_num_value(6) := p_source_20;
136052 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
136053 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
136054 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
136055 l_rec_acct_attrs.array_num_value(8) := p_source_22;
136056
136057 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
136058 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
136059
136060 ---------------------------------------------------------------------------------------------------------------
136061 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
136062 ---------------------------------------------------------------------------------------------------------------
136063 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
136064
136065 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136066 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136067
136068 IF xla_accounting_cache_pkg.GetValueChar
136069 (p_source_code => 'LEDGER_CATEGORY_CODE'
136070 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
136071 AND l_bflow_method_code = 'PRIOR_ENTRY'
136072 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
136073 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
136074 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
136075 )
136076 THEN
136077 xla_ae_lines_pkg.BflowUpgEntry
136078 (p_business_method_code => l_bflow_method_code
136079 ,p_business_class_code => l_bflow_class_code
136080 ,p_balance_type => l_balance_type_code);
136081 ELSE
136082 NULL;
136083 -- No business flow processing for business flow method of NONE.
136084 END IF;
136085
136086 --
136087 -- call analytical criteria
136088 --
136089
136090 --
136091 -- call description
136092 --
136093 -- No description or it is inherited.
136094 --
136095 -- call ADRs
136096 -- Bug 4922099
136097 --
136098 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136099 (NVL(l_actual_upg_option, 'N') = 'O') OR
136100 (NVL(l_enc_upg_option, 'N') = 'O')
136101 )
136102 THEN
136103 NULL;
136104 --
136105 --
136106
136107 l_ccid := AcctDerRule_4(
136108 p_application_id => p_application_id
136109 , p_ae_header_id => l_ae_header_id
136110 , p_source_4 => p_source_4
136111 , x_transaction_coa_id => l_adr_transaction_coa_id
136112 , x_accounting_coa_id => l_adr_accounting_coa_id
136113 , x_value_type_code => l_adr_value_type_code
136114 , p_side => 'NA'
136115 );
136116
136117 xla_ae_lines_pkg.set_ccid(
136118 p_code_combination_id => l_ccid
136119 , p_value_type_code => l_adr_value_type_code
136120 , p_transaction_coa_id => l_adr_transaction_coa_id
136121 , p_accounting_coa_id => l_adr_accounting_coa_id
136122 , p_adr_code => 'CST_DEFAULT'
136123 , p_adr_type_code => 'S'
136124 , p_component_type => l_component_type
136125 , p_component_code => l_component_code
136126 , p_component_type_code => l_component_type_code
136127 , p_component_appl_id => l_component_appl_id
136128 , p_amb_context_code => l_amb_context_code
136129 , p_side => 'NA'
136130 );
136131
136132
136133 --
136134 --
136135 END IF;
136136 --
136137 -- Bug 4922099
136138 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
136139 (NVL(l_enc_upg_option, 'N') = 'O')
136140 ) AND
136141 (l_bflow_method_code = 'PRIOR_ENTRY')
136142 )
136143 THEN
136144 IF
136145 --
136146 1 = 2
136147 --
136148 THEN
136149 xla_accounting_err_pkg.build_message
136150 (p_appli_s_name => 'XLA'
136151 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136152 ,p_token_1 => 'LINE_NUMBER'
136153 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
136154 ,p_token_2 => 'LINE_TYPE_NAME'
136155 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
136156 l_component_type
136157 ,l_component_code
136158 ,l_component_type_code
136159 ,l_component_appl_id
136160 ,l_amb_context_code
136161 ,l_entity_code
136162 ,l_event_class_code
136163 )
136164 ,p_token_3 => 'OWNER'
136165 ,p_value_3 => xla_lookups_pkg.get_meaning(
136166 p_lookup_type => 'XLA_OWNER_TYPE'
136167 ,p_lookup_code => l_component_type_code
136168 )
136169 ,p_token_4 => 'PRODUCT_NAME'
136170 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
136171 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
136172 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
136173 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
136174 ,p_ae_header_id => NULL
136175 );
136176
136177 IF (C_LEVEL_ERROR>= g_log_level) THEN
136178 trace
136179 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136180 ,p_level => C_LEVEL_ERROR
136181 ,p_module => l_log_module);
136182 END IF;
136183 END IF;
136184 END IF;
136185 --
136186 --
136187 ------------------------------------------------------------------------------------------------
136188 -- 4219869 Business Flow
136189 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
136190 -- Prior Entry. Currently, the following code is always generated.
136191 ------------------------------------------------------------------------------------------------
136192 XLA_AE_LINES_PKG.ValidateCurrentLine;
136193
136194 ------------------------------------------------------------------------------------
136195 -- 4219869 Business Flow
136196 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
136197 ------------------------------------------------------------------------------------
136198 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136199
136200 ----------------------------------------------------------------------------------
136201 -- 4219869 Business Flow
136202 -- Update journal entry status -- Need to generate this within IF <condition>
136203 ----------------------------------------------------------------------------------
136204 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136205 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
136206 ,p_balance_type_code => l_balance_type_code
136207 );
136208
136209 -------------------------------------------------------------------------------------------
136210 -- 4262811 - Generate the Accrual Reversal lines
136211 -------------------------------------------------------------------------------------------
136212 BEGIN
136213 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
136214 (g_array_event(p_event_id).array_value_num('header_index'));
136215 IF l_acc_rev_flag IS NULL THEN
136216 l_acc_rev_flag := 'N';
136217 END IF;
136218 EXCEPTION
136219 WHEN OTHERS THEN
136220 l_acc_rev_flag := 'N';
136221 END;
136222 --
136223 IF (l_acc_rev_flag = 'Y') THEN
136224
136225 -- 4645092 ------------------------------------------------------------------------------
136226 -- To allow MPA report to determine if it should generate report process
136227 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
136228 ------------------------------------------------------------------------------------------
136229
136230 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
136231 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
136232 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
136233 -- call ADRs
136234 -- Bug 4922099
136235 --
136236 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136237 (NVL(l_actual_upg_option, 'N') = 'O') OR
136238 (NVL(l_enc_upg_option, 'N') = 'O')
136239 )
136240 THEN
136241 NULL;
136242 --
136243 --
136244
136245 l_ccid := AcctDerRule_4(
136246 p_application_id => p_application_id
136247 , p_ae_header_id => l_ae_header_id
136248 , p_source_4 => p_source_4
136249 , x_transaction_coa_id => l_adr_transaction_coa_id
136250 , x_accounting_coa_id => l_adr_accounting_coa_id
136251 , x_value_type_code => l_adr_value_type_code
136252 , p_side => 'NA'
136253 );
136254
136255 xla_ae_lines_pkg.set_ccid(
136256 p_code_combination_id => l_ccid
136257 , p_value_type_code => l_adr_value_type_code
136258 , p_transaction_coa_id => l_adr_transaction_coa_id
136259 , p_accounting_coa_id => l_adr_accounting_coa_id
136260 , p_adr_code => 'CST_DEFAULT'
136261 , p_adr_type_code => 'S'
136262 , p_component_type => l_component_type
136263 , p_component_code => l_component_code
136264 , p_component_type_code => l_component_type_code
136265 , p_component_appl_id => l_component_appl_id
136266 , p_amb_context_code => l_amb_context_code
136267 , p_side => 'NA'
136268 );
136269
136270
136271 --
136272 --
136273 END IF;
136274
136275 --
136276 -- Update the line information that should be overwritten
136277 --
136278 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
136279 p_header_num => 1);
136280 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
136281
136282 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
136283
136284 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
136285 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
136286 END IF;
136287
136288 --
136289 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
136290 --
136291 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
136292 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
136293 ELSE
136294 ---------------------------------------------------------------------------------------------------
136295 -- 4262811a Switch Sign
136296 ---------------------------------------------------------------------------------------------------
136297 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
136298 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136299 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136300 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136301 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136302 -- 5132302
136303 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
136304 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136305
136306 END IF;
136307
136308 -- 4955764
136309 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136310 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
136311
136312
136313 XLA_AE_LINES_PKG.ValidateCurrentLine;
136314 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136315
136316 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136317 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
136318 ,p_balance_type_code => l_balance_type_code);
136319
136320 END IF;
136321
136322 -----------------------------------------------------------------------------------------
136323 -- 4262811 Multiperiod Accounting
136324 -----------------------------------------------------------------------------------------
136325 -- No MPA option is assigned.
136326
136327
136328 END IF;
136329 END IF;
136330 --
136331
136332 --
136333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136334 trace
136335 (p_msg => 'END of AcctLineType_246'
136336 ,p_level => C_LEVEL_PROCEDURE
136337 ,p_module => l_log_module);
136338 END IF;
136339 --
136340 EXCEPTION
136341 WHEN xla_exceptions_pkg.application_exception THEN
136342 RAISE;
136343 WHEN OTHERS THEN
136344 xla_exceptions_pkg.raise_message
136345 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_246');
136346 END AcctLineType_246;
136347 --
136348
136349 ---------------------------------------
136350 --
136351 -- PRIVATE FUNCTION
136352 -- AcctLineType_247
136353 --
136354 ---------------------------------------
136355 PROCEDURE AcctLineType_247 (
136356 p_application_id IN NUMBER
136357 ,p_event_id IN NUMBER
136358 ,p_calculate_acctd_flag IN VARCHAR2
136359 ,p_calculate_g_l_flag IN VARCHAR2
136360 ,p_actual_flag IN OUT VARCHAR2
136361 ,p_balance_type_code OUT VARCHAR2
136362 ,p_gain_or_loss_ref OUT VARCHAR2
136363
136364 --Cost Management Default Account
136365 , p_source_4 IN NUMBER
136366 --Receiving Accounting Line Type
136367 , p_source_5 IN VARCHAR2
136368 --DISTRIBUTION_IDENTIFIER
136369 , p_source_11 IN NUMBER
136370 --Distribution Type
136371 , p_source_12 IN VARCHAR2
136372 , p_source_12_meaning IN VARCHAR2
136373 --Entered Currency Code
136374 , p_source_15 IN VARCHAR2
136375 --Entered Amount
136376 , p_source_18 IN NUMBER
136377 --Currency Conversion Date
136378 , p_source_19 IN DATE
136379 --Currency Conversion Rate
136380 , p_source_20 IN NUMBER
136381 --Currency Conversion Type
136382 , p_source_21 IN VARCHAR2
136383 --Accounted Amount
136384 , p_source_22 IN NUMBER
136385 )
136386 IS
136387
136388 l_component_type VARCHAR2(80);
136389 l_component_code VARCHAR2(30);
136390 l_component_type_code VARCHAR2(1);
136391 l_component_appl_id INTEGER;
136392 l_amb_context_code VARCHAR2(30);
136393 l_entity_code VARCHAR2(30);
136394 l_event_class_code VARCHAR2(30);
136395 l_ae_header_id NUMBER;
136396 l_event_type_code VARCHAR2(30);
136397 l_line_definition_code VARCHAR2(30);
136398 l_line_definition_owner_code VARCHAR2(1);
136399 --
136400 -- adr variables
136401 l_segment VARCHAR2(30);
136402 l_ccid NUMBER;
136403 l_adr_transaction_coa_id NUMBER;
136404 l_adr_accounting_coa_id NUMBER;
136405 l_adr_flexfield_segment_code VARCHAR2(30);
136406 l_adr_flex_value_set_id NUMBER;
136407 l_adr_value_type_code VARCHAR2(30);
136408 l_adr_value_combination_id NUMBER;
136409 l_adr_value_segment_code VARCHAR2(30);
136410
136411 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
136412 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
136413 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
136414 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
136415
136416 -- 4262811 Variables ------------------------------------------------------------------------------------------
136417 l_entered_amt_idx NUMBER;
136418 l_accted_amt_idx NUMBER;
136419 l_acc_rev_flag VARCHAR2(1);
136420 l_accrual_line_num NUMBER;
136421 l_tmp_amt NUMBER;
136422 l_acc_rev_natural_side_code VARCHAR2(1);
136423
136424 l_num_entries NUMBER;
136425 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
136426 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
136427 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
136428 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
136429 l_recog_line_1 NUMBER;
136430 l_recog_line_2 NUMBER;
136431
136432 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
136433 l_bflow_applied_to_amt NUMBER; -- 5132302
136434 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
136435
136436 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
136437
136438 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
136439 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
136440
136441 ---------------------------------------------------------------------------------------------------------------
136442
136443
136444 --
136445 -- bulk performance
136446 --
136447 l_balance_type_code VARCHAR2(1);
136448 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
136449 l_log_module VARCHAR2(240);
136450
136451 --
136452 -- Upgrade strategy
136453 --
136454 l_actual_upg_option VARCHAR2(1);
136455 l_enc_upg_option VARCHAR2(1);
136456
136457 --
136458 BEGIN
136459 --
136460 IF g_log_enabled THEN
136461 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_247';
136462 END IF;
136463 --
136464 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136465
136466 trace
136467 (p_msg => 'BEGIN of AcctLineType_247'
136468 ,p_level => C_LEVEL_PROCEDURE
136469 ,p_module => l_log_module);
136470
136471 END IF;
136472 --
136473 l_component_type := 'AMB_JLT';
136474 l_component_code := 'RETROACTIVE_PRICE_ADJ';
136475 l_component_type_code := 'S';
136476 l_component_appl_id := 707;
136477 l_amb_context_code := 'DEFAULT';
136478 l_entity_code := 'RCV_ACCOUNTING_EVENTS';
136479 l_event_class_code := 'RETR_PRICE_ADJ_RCV';
136480 l_event_type_code := 'RETR_PRICE_ADJ_RCV_ALL';
136481 l_line_definition_owner_code := 'S';
136482 l_line_definition_code := 'RETR_PRICE_ADJ_RCV';
136483 --
136484 l_balance_type_code := 'A';
136485 l_segment := NULL;
136486 l_ccid := NULL;
136487 l_adr_transaction_coa_id := NULL;
136488 l_adr_accounting_coa_id := NULL;
136489 l_adr_flexfield_segment_code := NULL;
136490 l_adr_flex_value_set_id := NULL;
136491 l_adr_value_type_code := NULL;
136492 l_adr_value_combination_id := NULL;
136493 l_adr_value_segment_code := NULL;
136494
136495 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
136496 l_bflow_class_code := ''; -- 4219869 Business Flow
136497 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
136498 l_budgetary_control_flag := 'N';
136499
136500 l_bflow_applied_to_amt_idx := NULL; -- 5132302
136501 l_bflow_applied_to_amt := NULL; -- 5132302
136502 l_entered_amt_idx := NULL; -- 4262811
136503 l_accted_amt_idx := NULL; -- 4262811
136504 l_acc_rev_flag := NULL; -- 4262811
136505 l_accrual_line_num := NULL; -- 4262811
136506 l_tmp_amt := NULL; -- 4262811
136507 --
136508
136509 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
136510 l_balance_type_code <> 'B' THEN
136511 IF NVL(p_source_5,'
136512 ') = 'Retroprice Adjustment'
136513 THEN
136514
136515 --
136516 XLA_AE_LINES_PKG.SetNewLine;
136517
136518 p_balance_type_code := l_balance_type_code;
136519 -- set the flag so later we will know whether the gain loss line needs to be created
136520
136521 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
136522 p_actual_flag :='A';
136523 END IF;
136524
136525 --
136526 -- bulk performance
136527 --
136528 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
136529 p_header_num => 0); -- 4262811
136530 --
136531 -- set accounting line options
136532 --
136533 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
136534 p_natural_side_code => 'D'
136535 , p_gain_or_loss_flag => 'N'
136536 , p_gl_transfer_mode_code => 'S'
136537 , p_acct_entry_type_code => 'A'
136538 , p_switch_side_flag => 'Y'
136539 , p_merge_duplicate_code => 'N'
136540 );
136541 --
136542 l_acc_rev_natural_side_code := 'C'; -- 4262811
136543 --
136544 --
136545 -- set accounting line type info
136546 --
136547 xla_ae_lines_pkg.SetAcctLineType
136548 (p_component_type => l_component_type
136549 ,p_event_type_code => l_event_type_code
136550 ,p_line_definition_owner_code => l_line_definition_owner_code
136551 ,p_line_definition_code => l_line_definition_code
136552 ,p_accounting_line_code => l_component_code
136553 ,p_accounting_line_type_code => l_component_type_code
136554 ,p_accounting_line_appl_id => l_component_appl_id
136555 ,p_amb_context_code => l_amb_context_code
136556 ,p_entity_code => l_entity_code
136557 ,p_event_class_code => l_event_class_code);
136558 --
136559 -- set accounting class
136560 --
136561 xla_ae_lines_pkg.SetAcctClass(
136562 p_accounting_class_code => 'RETROACTIVE_PRICE_ADJUSTMENT'
136563 , p_ae_header_id => l_ae_header_id
136564 );
136565
136566 --
136567 -- set rounding class
136568 --
136569 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
136570 'RETROACTIVE_PRICE_ADJUSTMENT';
136571
136572 --
136573 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
136574 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
136575 --
136576 -- bulk performance
136577 --
136578 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
136579
136580 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
136581 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
136582
136583 -- 4955764
136584 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136585 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
136586
136587 -- 4458381 Public Sector Enh
136588
136589 --
136590 -- set accounting attributes for the line type
136591 --
136592 l_entered_amt_idx := 3;
136593 l_accted_amt_idx := 8;
136594 l_bflow_applied_to_amt_idx := NULL; -- 5132302
136595 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
136596 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
136597 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
136598 l_rec_acct_attrs.array_char_value(2) := p_source_12;
136599 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
136600 l_rec_acct_attrs.array_num_value(3) := p_source_18;
136601 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
136602 l_rec_acct_attrs.array_char_value(4) := p_source_15;
136603 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
136604 l_rec_acct_attrs.array_date_value(5) := p_source_19;
136605 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
136606 l_rec_acct_attrs.array_num_value(6) := p_source_20;
136607 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
136608 l_rec_acct_attrs.array_char_value(7) := p_source_21;
136609 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
136610 l_rec_acct_attrs.array_num_value(8) := p_source_22;
136611
136612 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
136613 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
136614
136615 ---------------------------------------------------------------------------------------------------------------
136616 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
136617 ---------------------------------------------------------------------------------------------------------------
136618 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
136619
136620 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136621 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
136622
136623 IF xla_accounting_cache_pkg.GetValueChar
136624 (p_source_code => 'LEDGER_CATEGORY_CODE'
136625 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
136626 AND l_bflow_method_code = 'PRIOR_ENTRY'
136627 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
136628 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
136629 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
136630 )
136631 THEN
136632 xla_ae_lines_pkg.BflowUpgEntry
136633 (p_business_method_code => l_bflow_method_code
136634 ,p_business_class_code => l_bflow_class_code
136635 ,p_balance_type => l_balance_type_code);
136636 ELSE
136637 NULL;
136638 -- No business flow processing for business flow method of NONE.
136639 END IF;
136640
136641 --
136642 -- call analytical criteria
136643 --
136644
136645 --
136646 -- call description
136647 --
136648 -- No description or it is inherited.
136649 --
136650 -- call ADRs
136651 -- Bug 4922099
136652 --
136653 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136654 (NVL(l_actual_upg_option, 'N') = 'O') OR
136655 (NVL(l_enc_upg_option, 'N') = 'O')
136656 )
136657 THEN
136658 NULL;
136659 --
136660 --
136661
136662 l_ccid := AcctDerRule_4(
136663 p_application_id => p_application_id
136664 , p_ae_header_id => l_ae_header_id
136665 , p_source_4 => p_source_4
136666 , x_transaction_coa_id => l_adr_transaction_coa_id
136667 , x_accounting_coa_id => l_adr_accounting_coa_id
136668 , x_value_type_code => l_adr_value_type_code
136669 , p_side => 'NA'
136670 );
136671
136672 xla_ae_lines_pkg.set_ccid(
136673 p_code_combination_id => l_ccid
136674 , p_value_type_code => l_adr_value_type_code
136675 , p_transaction_coa_id => l_adr_transaction_coa_id
136676 , p_accounting_coa_id => l_adr_accounting_coa_id
136677 , p_adr_code => 'CST_DEFAULT'
136678 , p_adr_type_code => 'S'
136679 , p_component_type => l_component_type
136680 , p_component_code => l_component_code
136681 , p_component_type_code => l_component_type_code
136682 , p_component_appl_id => l_component_appl_id
136683 , p_amb_context_code => l_amb_context_code
136684 , p_side => 'NA'
136685 );
136686
136687
136688 --
136689 --
136690 END IF;
136691 --
136692 -- Bug 4922099
136693 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
136694 (NVL(l_enc_upg_option, 'N') = 'O')
136695 ) AND
136696 (l_bflow_method_code = 'PRIOR_ENTRY')
136697 )
136698 THEN
136699 IF
136700 --
136701 1 = 2
136702 --
136703 THEN
136704 xla_accounting_err_pkg.build_message
136705 (p_appli_s_name => 'XLA'
136706 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136707 ,p_token_1 => 'LINE_NUMBER'
136708 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
136709 ,p_token_2 => 'LINE_TYPE_NAME'
136710 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
136711 l_component_type
136712 ,l_component_code
136713 ,l_component_type_code
136714 ,l_component_appl_id
136715 ,l_amb_context_code
136716 ,l_entity_code
136717 ,l_event_class_code
136718 )
136719 ,p_token_3 => 'OWNER'
136720 ,p_value_3 => xla_lookups_pkg.get_meaning(
136721 p_lookup_type => 'XLA_OWNER_TYPE'
136722 ,p_lookup_code => l_component_type_code
136723 )
136724 ,p_token_4 => 'PRODUCT_NAME'
136725 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
136726 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
136727 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
136728 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
136729 ,p_ae_header_id => NULL
136730 );
136731
136732 IF (C_LEVEL_ERROR>= g_log_level) THEN
136733 trace
136734 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
136735 ,p_level => C_LEVEL_ERROR
136736 ,p_module => l_log_module);
136737 END IF;
136738 END IF;
136739 END IF;
136740 --
136741 --
136742 ------------------------------------------------------------------------------------------------
136743 -- 4219869 Business Flow
136744 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
136745 -- Prior Entry. Currently, the following code is always generated.
136746 ------------------------------------------------------------------------------------------------
136747 XLA_AE_LINES_PKG.ValidateCurrentLine;
136748
136749 ------------------------------------------------------------------------------------
136750 -- 4219869 Business Flow
136751 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
136752 ------------------------------------------------------------------------------------
136753 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136754
136755 ----------------------------------------------------------------------------------
136756 -- 4219869 Business Flow
136757 -- Update journal entry status -- Need to generate this within IF <condition>
136758 ----------------------------------------------------------------------------------
136759 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136760 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
136761 ,p_balance_type_code => l_balance_type_code
136762 );
136763
136764 -------------------------------------------------------------------------------------------
136765 -- 4262811 - Generate the Accrual Reversal lines
136766 -------------------------------------------------------------------------------------------
136767 BEGIN
136768 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
136769 (g_array_event(p_event_id).array_value_num('header_index'));
136770 IF l_acc_rev_flag IS NULL THEN
136771 l_acc_rev_flag := 'N';
136772 END IF;
136773 EXCEPTION
136774 WHEN OTHERS THEN
136775 l_acc_rev_flag := 'N';
136776 END;
136777 --
136778 IF (l_acc_rev_flag = 'Y') THEN
136779
136780 -- 4645092 ------------------------------------------------------------------------------
136781 -- To allow MPA report to determine if it should generate report process
136782 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
136783 ------------------------------------------------------------------------------------------
136784
136785 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
136786 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
136787 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
136788 -- call ADRs
136789 -- Bug 4922099
136790 --
136791 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
136792 (NVL(l_actual_upg_option, 'N') = 'O') OR
136793 (NVL(l_enc_upg_option, 'N') = 'O')
136794 )
136795 THEN
136796 NULL;
136797 --
136798 --
136799
136800 l_ccid := AcctDerRule_4(
136801 p_application_id => p_application_id
136802 , p_ae_header_id => l_ae_header_id
136803 , p_source_4 => p_source_4
136804 , x_transaction_coa_id => l_adr_transaction_coa_id
136805 , x_accounting_coa_id => l_adr_accounting_coa_id
136806 , x_value_type_code => l_adr_value_type_code
136807 , p_side => 'NA'
136808 );
136809
136810 xla_ae_lines_pkg.set_ccid(
136811 p_code_combination_id => l_ccid
136812 , p_value_type_code => l_adr_value_type_code
136813 , p_transaction_coa_id => l_adr_transaction_coa_id
136814 , p_accounting_coa_id => l_adr_accounting_coa_id
136815 , p_adr_code => 'CST_DEFAULT'
136816 , p_adr_type_code => 'S'
136817 , p_component_type => l_component_type
136818 , p_component_code => l_component_code
136819 , p_component_type_code => l_component_type_code
136820 , p_component_appl_id => l_component_appl_id
136821 , p_amb_context_code => l_amb_context_code
136822 , p_side => 'NA'
136823 );
136824
136825
136826 --
136827 --
136828 END IF;
136829
136830 --
136831 -- Update the line information that should be overwritten
136832 --
136833 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
136834 p_header_num => 1);
136835 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
136836
136837 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
136838
136839 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
136840 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
136841 END IF;
136842
136843 --
136844 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
136845 --
136846 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
136847 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
136848 ELSE
136849 ---------------------------------------------------------------------------------------------------
136850 -- 4262811a Switch Sign
136851 ---------------------------------------------------------------------------------------------------
136852 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
136853 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136854 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136855 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
136856 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136857 -- 5132302
136858 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
136859 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
136860
136861 END IF;
136862
136863 -- 4955764
136864 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
136865 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
136866
136867
136868 XLA_AE_LINES_PKG.ValidateCurrentLine;
136869 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
136870
136871 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
136872 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
136873 ,p_balance_type_code => l_balance_type_code);
136874
136875 END IF;
136876
136877 -----------------------------------------------------------------------------------------
136878 -- 4262811 Multiperiod Accounting
136879 -----------------------------------------------------------------------------------------
136880 -- No MPA option is assigned.
136881
136882
136883 END IF;
136884 END IF;
136885 --
136886
136887 --
136888 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
136889 trace
136890 (p_msg => 'END of AcctLineType_247'
136891 ,p_level => C_LEVEL_PROCEDURE
136892 ,p_module => l_log_module);
136893 END IF;
136894 --
136895 EXCEPTION
136896 WHEN xla_exceptions_pkg.application_exception THEN
136897 RAISE;
136898 WHEN OTHERS THEN
136899 xla_exceptions_pkg.raise_message
136900 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_247');
136901 END AcctLineType_247;
136902 --
136903
136904 ---------------------------------------
136905 --
136906 -- PRIVATE FUNCTION
136907 -- AcctLineType_248
136908 --
136909 ---------------------------------------
136910 PROCEDURE AcctLineType_248 (
136911 p_application_id IN NUMBER
136912 ,p_event_id IN NUMBER
136913 ,p_calculate_acctd_flag IN VARCHAR2
136914 ,p_calculate_g_l_flag IN VARCHAR2
136915 ,p_actual_flag IN OUT VARCHAR2
136916 ,p_balance_type_code OUT VARCHAR2
136917 ,p_gain_or_loss_ref OUT VARCHAR2
136918
136919 --Cost Management Default Account
136920 , p_source_4 IN NUMBER
136921 --Applied to Application ID
136922 , p_source_6 IN NUMBER
136923 --Applied to Distribution Link Type
136924 , p_source_7 IN VARCHAR2
136925 --Applied to Entity Code
136926 , p_source_8 IN VARCHAR2
136927 --Applied To Purchase Document Identifier
136928 , p_source_10 IN NUMBER
136929 --DISTRIBUTION_IDENTIFIER
136930 , p_source_11 IN NUMBER
136931 --Distribution Type
136932 , p_source_12 IN VARCHAR2
136933 , p_source_12_meaning IN VARCHAR2
136934 --PO Budget Account
136935 , p_source_13 IN NUMBER
136936 --Encumbrance Reversal Amount Entered
136937 , p_source_14 IN NUMBER
136938 --Entered Currency Code
136939 , p_source_15 IN VARCHAR2
136940 --Transaction Encumbrance Reversal Amount
136941 , p_source_16 IN NUMBER
136942 --Entered Amount
136943 , p_source_18 IN NUMBER
136944 --Currency Conversion Date
136945 , p_source_19 IN DATE
136946 --Currency Conversion Rate
136947 , p_source_20 IN NUMBER
136948 --Currency Conversion Type
136949 , p_source_21 IN VARCHAR2
136950 --Accounted Amount
136951 , p_source_22 IN NUMBER
136952 --Purchasing Encumbrance Type Identifier
136953 , p_source_23 IN NUMBER
136954 --Accounting Line Type
136955 , p_source_24 IN NUMBER
136956 --Costing Encumbrance Upgrade Option
136957 , p_source_27 IN VARCHAR2
136958 --TXN_PO_DISTRIBUTION_ID
136959 , p_source_28 IN NUMBER
136960 )
136961 IS
136962
136963 l_component_type VARCHAR2(80);
136964 l_component_code VARCHAR2(30);
136965 l_component_type_code VARCHAR2(1);
136966 l_component_appl_id INTEGER;
136967 l_amb_context_code VARCHAR2(30);
136968 l_entity_code VARCHAR2(30);
136969 l_event_class_code VARCHAR2(30);
136970 l_ae_header_id NUMBER;
136971 l_event_type_code VARCHAR2(30);
136972 l_line_definition_code VARCHAR2(30);
136973 l_line_definition_owner_code VARCHAR2(1);
136974 --
136975 -- adr variables
136976 l_segment VARCHAR2(30);
136977 l_ccid NUMBER;
136978 l_adr_transaction_coa_id NUMBER;
136979 l_adr_accounting_coa_id NUMBER;
136980 l_adr_flexfield_segment_code VARCHAR2(30);
136981 l_adr_flex_value_set_id NUMBER;
136982 l_adr_value_type_code VARCHAR2(30);
136983 l_adr_value_combination_id NUMBER;
136984 l_adr_value_segment_code VARCHAR2(30);
136985
136986 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
136987 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
136988 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
136989 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
136990
136991 -- 4262811 Variables ------------------------------------------------------------------------------------------
136992 l_entered_amt_idx NUMBER;
136993 l_accted_amt_idx NUMBER;
136994 l_acc_rev_flag VARCHAR2(1);
136995 l_accrual_line_num NUMBER;
136996 l_tmp_amt NUMBER;
136997 l_acc_rev_natural_side_code VARCHAR2(1);
136998
136999 l_num_entries NUMBER;
137000 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
137001 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
137002 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
137003 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
137004 l_recog_line_1 NUMBER;
137005 l_recog_line_2 NUMBER;
137006
137007 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
137008 l_bflow_applied_to_amt NUMBER; -- 5132302
137009 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
137010
137011 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
137012
137013 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
137014 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
137015
137016 ---------------------------------------------------------------------------------------------------------------
137017
137018
137019 --
137020 -- bulk performance
137021 --
137022 l_balance_type_code VARCHAR2(1);
137023 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
137024 l_log_module VARCHAR2(240);
137025
137026 --
137027 -- Upgrade strategy
137028 --
137029 l_actual_upg_option VARCHAR2(1);
137030 l_enc_upg_option VARCHAR2(1);
137031
137032 --
137033 BEGIN
137034 --
137035 IF g_log_enabled THEN
137036 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_248';
137037 END IF;
137038 --
137039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137040
137041 trace
137042 (p_msg => 'BEGIN of AcctLineType_248'
137043 ,p_level => C_LEVEL_PROCEDURE
137044 ,p_module => l_log_module);
137045
137046 END IF;
137047 --
137048 l_component_type := 'AMB_JLT';
137049 l_component_code := 'SHIKYU_VARIANCE';
137050 l_component_type_code := 'S';
137051 l_component_appl_id := 707;
137052 l_amb_context_code := 'DEFAULT';
137053 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
137054 l_event_class_code := 'PURCHASE_ORDER';
137055 l_event_type_code := 'PURCHASE_ORDER_ALL';
137056 l_line_definition_owner_code := 'S';
137057 l_line_definition_code := 'PURCHASE_ORDER';
137058 --
137059 l_balance_type_code := 'A';
137060 l_segment := NULL;
137061 l_ccid := NULL;
137062 l_adr_transaction_coa_id := NULL;
137063 l_adr_accounting_coa_id := NULL;
137064 l_adr_flexfield_segment_code := NULL;
137065 l_adr_flex_value_set_id := NULL;
137066 l_adr_value_type_code := NULL;
137067 l_adr_value_combination_id := NULL;
137068 l_adr_value_segment_code := NULL;
137069
137070 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
137071 l_bflow_class_code := ''; -- 4219869 Business Flow
137072 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
137073 l_budgetary_control_flag := 'N';
137074
137075 l_bflow_applied_to_amt_idx := NULL; -- 5132302
137076 l_bflow_applied_to_amt := NULL; -- 5132302
137077 l_entered_amt_idx := NULL; -- 4262811
137078 l_accted_amt_idx := NULL; -- 4262811
137079 l_acc_rev_flag := NULL; -- 4262811
137080 l_accrual_line_num := NULL; -- 4262811
137081 l_tmp_amt := NULL; -- 4262811
137082 --
137083
137084 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
137085 l_balance_type_code <> 'B' THEN
137086 IF NVL(p_source_24,9E125) = 33
137087 THEN
137088
137089 --
137090 XLA_AE_LINES_PKG.SetNewLine;
137091
137092 p_balance_type_code := l_balance_type_code;
137093 -- set the flag so later we will know whether the gain loss line needs to be created
137094
137095 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
137096 p_actual_flag :='A';
137097 END IF;
137098
137099 --
137100 -- bulk performance
137101 --
137102 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
137103 p_header_num => 0); -- 4262811
137104 --
137105 -- set accounting line options
137106 --
137107 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
137108 p_natural_side_code => 'D'
137109 , p_gain_or_loss_flag => 'N'
137110 , p_gl_transfer_mode_code => 'S'
137111 , p_acct_entry_type_code => 'A'
137112 , p_switch_side_flag => 'Y'
137113 , p_merge_duplicate_code => 'N'
137114 );
137115 --
137116 l_acc_rev_natural_side_code := 'C'; -- 4262811
137117 --
137118 --
137119 -- set accounting line type info
137120 --
137121 xla_ae_lines_pkg.SetAcctLineType
137122 (p_component_type => l_component_type
137123 ,p_event_type_code => l_event_type_code
137124 ,p_line_definition_owner_code => l_line_definition_owner_code
137125 ,p_line_definition_code => l_line_definition_code
137126 ,p_accounting_line_code => l_component_code
137127 ,p_accounting_line_type_code => l_component_type_code
137128 ,p_accounting_line_appl_id => l_component_appl_id
137129 ,p_amb_context_code => l_amb_context_code
137130 ,p_entity_code => l_entity_code
137131 ,p_event_class_code => l_event_class_code);
137132 --
137133 -- set accounting class
137134 --
137135 xla_ae_lines_pkg.SetAcctClass(
137136 p_accounting_class_code => 'SHIKYU_VARIANCE'
137137 , p_ae_header_id => l_ae_header_id
137138 );
137139
137140 --
137141 -- set rounding class
137142 --
137143 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
137144 'SHIKYU_VARIANCE';
137145
137146 --
137147 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
137148 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
137149 --
137150 -- bulk performance
137151 --
137152 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
137153
137154 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
137155 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
137156
137157 -- 4955764
137158 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137159 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
137160
137161 -- 4458381 Public Sector Enh
137162
137163 --
137164 -- set accounting attributes for the line type
137165 --
137166 l_entered_amt_idx := 17;
137167 l_accted_amt_idx := 22;
137168 l_bflow_applied_to_amt_idx := NULL; -- 5132302
137169 l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
137170 l_rec_acct_attrs.array_num_value(1) := p_source_6;
137171 l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
137172 l_rec_acct_attrs.array_char_value(2) := p_source_7;
137173 l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
137174 l_rec_acct_attrs.array_char_value(3) := p_source_8;
137175 l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
137176 l_rec_acct_attrs.array_num_value(4) := to_char(p_source_28);
137177 l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
137178 l_rec_acct_attrs.array_num_value(5) := to_char(p_source_10);
137179 l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
137180 l_rec_acct_attrs.array_num_value(6) := to_char(p_source_11);
137181 l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
137182 l_rec_acct_attrs.array_char_value(7) := p_source_12;
137183 l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
137184 l_rec_acct_attrs.array_num_value(8) := TO_NUMBER(p_source_13);
137185 l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
137186 l_rec_acct_attrs.array_num_value(9) := p_source_14;
137187 l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
137188 l_rec_acct_attrs.array_char_value(10) := p_source_15;
137189 l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
137190 l_rec_acct_attrs.array_num_value(11) := p_source_16;
137191 l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
137192 l_rec_acct_attrs.array_num_value(12) := TO_NUMBER(p_source_13);
137193 l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
137194 l_rec_acct_attrs.array_num_value(13) := p_source_14;
137195 l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
137196 l_rec_acct_attrs.array_char_value(14) := p_source_15;
137197 l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
137198 l_rec_acct_attrs.array_num_value(15) := p_source_16;
137199 l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
137200 l_rec_acct_attrs.array_char_value(16) := p_source_27;
137201 l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
137202 l_rec_acct_attrs.array_num_value(17) := p_source_18;
137203 l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
137204 l_rec_acct_attrs.array_char_value(18) := p_source_15;
137205 l_rec_acct_attrs.array_acct_attr_code(19) := 'EXCHANGE_DATE';
137206 l_rec_acct_attrs.array_date_value(19) := p_source_19;
137207 l_rec_acct_attrs.array_acct_attr_code(20) := 'EXCHANGE_RATE';
137208 l_rec_acct_attrs.array_num_value(20) := p_source_20;
137209 l_rec_acct_attrs.array_acct_attr_code(21) := 'EXCHANGE_RATE_TYPE';
137210 l_rec_acct_attrs.array_char_value(21) := p_source_21;
137211 l_rec_acct_attrs.array_acct_attr_code(22) := 'LEDGER_AMOUNT';
137212 l_rec_acct_attrs.array_num_value(22) := p_source_22;
137213 l_rec_acct_attrs.array_acct_attr_code(23) := 'UPG_CR_ENC_TYPE_ID';
137214 l_rec_acct_attrs.array_num_value(23) := p_source_23;
137215 l_rec_acct_attrs.array_acct_attr_code(24) := 'UPG_DR_ENC_TYPE_ID';
137216 l_rec_acct_attrs.array_num_value(24) := p_source_23;
137217
137218 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
137219 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
137220
137221 ---------------------------------------------------------------------------------------------------------------
137222 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
137223 ---------------------------------------------------------------------------------------------------------------
137224 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
137225
137226 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137227 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137228
137229 IF xla_accounting_cache_pkg.GetValueChar
137230 (p_source_code => 'LEDGER_CATEGORY_CODE'
137231 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
137232 AND l_bflow_method_code = 'PRIOR_ENTRY'
137233 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
137234 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
137235 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
137236 )
137237 THEN
137238 xla_ae_lines_pkg.BflowUpgEntry
137239 (p_business_method_code => l_bflow_method_code
137240 ,p_business_class_code => l_bflow_class_code
137241 ,p_balance_type => l_balance_type_code);
137242 ELSE
137243 NULL;
137244 -- No business flow processing for business flow method of NONE.
137245 END IF;
137246
137247 --
137248 -- call analytical criteria
137249 --
137250
137251 --
137252 -- call description
137253 --
137254 -- No description or it is inherited.
137255 --
137256 -- call ADRs
137257 -- Bug 4922099
137258 --
137259 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137260 (NVL(l_actual_upg_option, 'N') = 'O') OR
137261 (NVL(l_enc_upg_option, 'N') = 'O')
137262 )
137263 THEN
137264 NULL;
137265 --
137266 --
137267
137268 l_ccid := AcctDerRule_4(
137269 p_application_id => p_application_id
137270 , p_ae_header_id => l_ae_header_id
137271 , p_source_4 => p_source_4
137272 , x_transaction_coa_id => l_adr_transaction_coa_id
137273 , x_accounting_coa_id => l_adr_accounting_coa_id
137274 , x_value_type_code => l_adr_value_type_code
137275 , p_side => 'NA'
137276 );
137277
137278 xla_ae_lines_pkg.set_ccid(
137279 p_code_combination_id => l_ccid
137280 , p_value_type_code => l_adr_value_type_code
137281 , p_transaction_coa_id => l_adr_transaction_coa_id
137282 , p_accounting_coa_id => l_adr_accounting_coa_id
137283 , p_adr_code => 'CST_DEFAULT'
137284 , p_adr_type_code => 'S'
137285 , p_component_type => l_component_type
137286 , p_component_code => l_component_code
137287 , p_component_type_code => l_component_type_code
137288 , p_component_appl_id => l_component_appl_id
137289 , p_amb_context_code => l_amb_context_code
137290 , p_side => 'NA'
137291 );
137292
137293
137294 --
137295 --
137296 END IF;
137297 --
137298 -- Bug 4922099
137299 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
137300 (NVL(l_enc_upg_option, 'N') = 'O')
137301 ) AND
137302 (l_bflow_method_code = 'PRIOR_ENTRY')
137303 )
137304 THEN
137305 IF
137306 --
137307 1 = 2
137308 --
137309 THEN
137310 xla_accounting_err_pkg.build_message
137311 (p_appli_s_name => 'XLA'
137312 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137313 ,p_token_1 => 'LINE_NUMBER'
137314 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
137315 ,p_token_2 => 'LINE_TYPE_NAME'
137316 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
137317 l_component_type
137318 ,l_component_code
137319 ,l_component_type_code
137320 ,l_component_appl_id
137321 ,l_amb_context_code
137322 ,l_entity_code
137323 ,l_event_class_code
137324 )
137325 ,p_token_3 => 'OWNER'
137326 ,p_value_3 => xla_lookups_pkg.get_meaning(
137327 p_lookup_type => 'XLA_OWNER_TYPE'
137328 ,p_lookup_code => l_component_type_code
137329 )
137330 ,p_token_4 => 'PRODUCT_NAME'
137331 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
137332 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
137333 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
137334 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
137335 ,p_ae_header_id => NULL
137336 );
137337
137338 IF (C_LEVEL_ERROR>= g_log_level) THEN
137339 trace
137340 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137341 ,p_level => C_LEVEL_ERROR
137342 ,p_module => l_log_module);
137343 END IF;
137344 END IF;
137345 END IF;
137346 --
137347 --
137348 ------------------------------------------------------------------------------------------------
137349 -- 4219869 Business Flow
137350 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
137351 -- Prior Entry. Currently, the following code is always generated.
137352 ------------------------------------------------------------------------------------------------
137353 XLA_AE_LINES_PKG.ValidateCurrentLine;
137354
137355 ------------------------------------------------------------------------------------
137356 -- 4219869 Business Flow
137357 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
137358 ------------------------------------------------------------------------------------
137359 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137360
137361 ----------------------------------------------------------------------------------
137362 -- 4219869 Business Flow
137363 -- Update journal entry status -- Need to generate this within IF <condition>
137364 ----------------------------------------------------------------------------------
137365 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137366 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
137367 ,p_balance_type_code => l_balance_type_code
137368 );
137369
137370 -------------------------------------------------------------------------------------------
137371 -- 4262811 - Generate the Accrual Reversal lines
137372 -------------------------------------------------------------------------------------------
137373 BEGIN
137374 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
137375 (g_array_event(p_event_id).array_value_num('header_index'));
137376 IF l_acc_rev_flag IS NULL THEN
137377 l_acc_rev_flag := 'N';
137378 END IF;
137379 EXCEPTION
137380 WHEN OTHERS THEN
137381 l_acc_rev_flag := 'N';
137382 END;
137383 --
137384 IF (l_acc_rev_flag = 'Y') THEN
137385
137386 -- 4645092 ------------------------------------------------------------------------------
137387 -- To allow MPA report to determine if it should generate report process
137388 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
137389 ------------------------------------------------------------------------------------------
137390
137391 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
137392 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
137393 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
137394 -- call ADRs
137395 -- Bug 4922099
137396 --
137397 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137398 (NVL(l_actual_upg_option, 'N') = 'O') OR
137399 (NVL(l_enc_upg_option, 'N') = 'O')
137400 )
137401 THEN
137402 NULL;
137403 --
137404 --
137405
137406 l_ccid := AcctDerRule_4(
137407 p_application_id => p_application_id
137408 , p_ae_header_id => l_ae_header_id
137409 , p_source_4 => p_source_4
137410 , x_transaction_coa_id => l_adr_transaction_coa_id
137411 , x_accounting_coa_id => l_adr_accounting_coa_id
137412 , x_value_type_code => l_adr_value_type_code
137413 , p_side => 'NA'
137414 );
137415
137416 xla_ae_lines_pkg.set_ccid(
137417 p_code_combination_id => l_ccid
137418 , p_value_type_code => l_adr_value_type_code
137419 , p_transaction_coa_id => l_adr_transaction_coa_id
137420 , p_accounting_coa_id => l_adr_accounting_coa_id
137421 , p_adr_code => 'CST_DEFAULT'
137422 , p_adr_type_code => 'S'
137423 , p_component_type => l_component_type
137424 , p_component_code => l_component_code
137425 , p_component_type_code => l_component_type_code
137426 , p_component_appl_id => l_component_appl_id
137427 , p_amb_context_code => l_amb_context_code
137428 , p_side => 'NA'
137429 );
137430
137431
137432 --
137433 --
137434 END IF;
137435
137436 --
137437 -- Update the line information that should be overwritten
137438 --
137439 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
137440 p_header_num => 1);
137441 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
137442
137443 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
137444
137445 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
137446 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
137447 END IF;
137448
137449 --
137450 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
137451 --
137452 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
137453 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
137454 ELSE
137455 ---------------------------------------------------------------------------------------------------
137456 -- 4262811a Switch Sign
137457 ---------------------------------------------------------------------------------------------------
137458 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
137459 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137460 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137461 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
137462 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137463 -- 5132302
137464 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
137465 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
137466
137467 END IF;
137468
137469 -- 4955764
137470 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137471 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
137472
137473
137474 XLA_AE_LINES_PKG.ValidateCurrentLine;
137475 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137476
137477 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137478 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
137479 ,p_balance_type_code => l_balance_type_code);
137480
137481 END IF;
137482
137483 -----------------------------------------------------------------------------------------
137484 -- 4262811 Multiperiod Accounting
137485 -----------------------------------------------------------------------------------------
137486 -- No MPA option is assigned.
137487
137488
137489 END IF;
137490 END IF;
137491 --
137492
137493 --
137494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137495 trace
137496 (p_msg => 'END of AcctLineType_248'
137497 ,p_level => C_LEVEL_PROCEDURE
137498 ,p_module => l_log_module);
137499 END IF;
137500 --
137501 EXCEPTION
137502 WHEN xla_exceptions_pkg.application_exception THEN
137503 RAISE;
137504 WHEN OTHERS THEN
137505 xla_exceptions_pkg.raise_message
137506 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_248');
137507 END AcctLineType_248;
137508 --
137509
137510 ---------------------------------------
137511 --
137512 -- PRIVATE FUNCTION
137513 -- AcctLineType_249
137514 --
137515 ---------------------------------------
137516 PROCEDURE AcctLineType_249 (
137517 p_application_id IN NUMBER
137518 ,p_event_id IN NUMBER
137519 ,p_calculate_acctd_flag IN VARCHAR2
137520 ,p_calculate_g_l_flag IN VARCHAR2
137521 ,p_actual_flag IN OUT VARCHAR2
137522 ,p_balance_type_code OUT VARCHAR2
137523 ,p_gain_or_loss_ref OUT VARCHAR2
137524
137525 --Cost Management Default Account
137526 , p_source_4 IN NUMBER
137527 --DISTRIBUTION_IDENTIFIER
137528 , p_source_11 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 --Accounting Line Type
137545 , p_source_24 IN NUMBER
137546 )
137547 IS
137548
137549 l_component_type VARCHAR2(80);
137550 l_component_code VARCHAR2(30);
137551 l_component_type_code VARCHAR2(1);
137552 l_component_appl_id INTEGER;
137553 l_amb_context_code VARCHAR2(30);
137554 l_entity_code VARCHAR2(30);
137555 l_event_class_code VARCHAR2(30);
137556 l_ae_header_id NUMBER;
137557 l_event_type_code VARCHAR2(30);
137558 l_line_definition_code VARCHAR2(30);
137559 l_line_definition_owner_code VARCHAR2(1);
137560 --
137561 -- adr variables
137562 l_segment VARCHAR2(30);
137563 l_ccid NUMBER;
137564 l_adr_transaction_coa_id NUMBER;
137565 l_adr_accounting_coa_id NUMBER;
137566 l_adr_flexfield_segment_code VARCHAR2(30);
137567 l_adr_flex_value_set_id NUMBER;
137568 l_adr_value_type_code VARCHAR2(30);
137569 l_adr_value_combination_id NUMBER;
137570 l_adr_value_segment_code VARCHAR2(30);
137571
137572 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
137573 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
137574 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
137575 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
137576
137577 -- 4262811 Variables ------------------------------------------------------------------------------------------
137578 l_entered_amt_idx NUMBER;
137579 l_accted_amt_idx NUMBER;
137580 l_acc_rev_flag VARCHAR2(1);
137581 l_accrual_line_num NUMBER;
137582 l_tmp_amt NUMBER;
137583 l_acc_rev_natural_side_code VARCHAR2(1);
137584
137585 l_num_entries NUMBER;
137586 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
137587 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
137588 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
137589 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
137590 l_recog_line_1 NUMBER;
137591 l_recog_line_2 NUMBER;
137592
137593 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
137594 l_bflow_applied_to_amt NUMBER; -- 5132302
137595 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
137596
137597 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
137598
137599 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
137600 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
137601
137602 ---------------------------------------------------------------------------------------------------------------
137603
137604
137605 --
137606 -- bulk performance
137607 --
137608 l_balance_type_code VARCHAR2(1);
137609 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
137610 l_log_module VARCHAR2(240);
137611
137612 --
137613 -- Upgrade strategy
137614 --
137615 l_actual_upg_option VARCHAR2(1);
137616 l_enc_upg_option VARCHAR2(1);
137617
137618 --
137619 BEGIN
137620 --
137621 IF g_log_enabled THEN
137622 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_249';
137623 END IF;
137624 --
137625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
137626
137627 trace
137628 (p_msg => 'BEGIN of AcctLineType_249'
137629 ,p_level => C_LEVEL_PROCEDURE
137630 ,p_module => l_log_module);
137631
137632 END IF;
137633 --
137634 l_component_type := 'AMB_JLT';
137635 l_component_code := 'WIP_VALUATION';
137636 l_component_type_code := 'S';
137637 l_component_appl_id := 707;
137638 l_amb_context_code := 'DEFAULT';
137639 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
137640 l_event_class_code := 'ABSORPTION';
137641 l_event_type_code := 'ABSORPTION_ALL';
137642 l_line_definition_owner_code := 'S';
137643 l_line_definition_code := 'ABSORPTION';
137644 --
137645 l_balance_type_code := 'A';
137646 l_segment := NULL;
137647 l_ccid := NULL;
137648 l_adr_transaction_coa_id := NULL;
137649 l_adr_accounting_coa_id := NULL;
137650 l_adr_flexfield_segment_code := NULL;
137651 l_adr_flex_value_set_id := NULL;
137652 l_adr_value_type_code := NULL;
137653 l_adr_value_combination_id := NULL;
137654 l_adr_value_segment_code := NULL;
137655
137656 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
137657 l_bflow_class_code := ''; -- 4219869 Business Flow
137658 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
137659 l_budgetary_control_flag := 'N';
137660
137661 l_bflow_applied_to_amt_idx := NULL; -- 5132302
137662 l_bflow_applied_to_amt := NULL; -- 5132302
137663 l_entered_amt_idx := NULL; -- 4262811
137664 l_accted_amt_idx := NULL; -- 4262811
137665 l_acc_rev_flag := NULL; -- 4262811
137666 l_accrual_line_num := NULL; -- 4262811
137667 l_tmp_amt := NULL; -- 4262811
137668 --
137669
137670 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
137671 l_balance_type_code <> 'B' THEN
137672 IF NVL(p_source_24,9E125) = 7
137673 THEN
137674
137675 --
137676 XLA_AE_LINES_PKG.SetNewLine;
137677
137678 p_balance_type_code := l_balance_type_code;
137679 -- set the flag so later we will know whether the gain loss line needs to be created
137680
137681 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
137682 p_actual_flag :='A';
137683 END IF;
137684
137685 --
137686 -- bulk performance
137687 --
137688 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
137689 p_header_num => 0); -- 4262811
137690 --
137691 -- set accounting line options
137692 --
137693 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
137694 p_natural_side_code => 'D'
137695 , p_gain_or_loss_flag => 'N'
137696 , p_gl_transfer_mode_code => 'S'
137697 , p_acct_entry_type_code => 'A'
137698 , p_switch_side_flag => 'Y'
137699 , p_merge_duplicate_code => 'N'
137700 );
137701 --
137702 l_acc_rev_natural_side_code := 'C'; -- 4262811
137703 --
137704 --
137705 -- set accounting line type info
137706 --
137707 xla_ae_lines_pkg.SetAcctLineType
137708 (p_component_type => l_component_type
137709 ,p_event_type_code => l_event_type_code
137710 ,p_line_definition_owner_code => l_line_definition_owner_code
137711 ,p_line_definition_code => l_line_definition_code
137712 ,p_accounting_line_code => l_component_code
137713 ,p_accounting_line_type_code => l_component_type_code
137714 ,p_accounting_line_appl_id => l_component_appl_id
137715 ,p_amb_context_code => l_amb_context_code
137716 ,p_entity_code => l_entity_code
137717 ,p_event_class_code => l_event_class_code);
137718 --
137719 -- set accounting class
137720 --
137721 xla_ae_lines_pkg.SetAcctClass(
137722 p_accounting_class_code => 'WIP_VALUATION'
137723 , p_ae_header_id => l_ae_header_id
137724 );
137725
137726 --
137727 -- set rounding class
137728 --
137729 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
137730 'WIP_VALUATION';
137731
137732 --
137733 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
137734 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
137735 --
137736 -- bulk performance
137737 --
137738 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
137739
137740 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
137741 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
137742
137743 -- 4955764
137744 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
137745 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
137746
137747 -- 4458381 Public Sector Enh
137748
137749 --
137750 -- set accounting attributes for the line type
137751 --
137752 l_entered_amt_idx := 3;
137753 l_accted_amt_idx := 8;
137754 l_bflow_applied_to_amt_idx := NULL; -- 5132302
137755 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
137756 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
137757 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
137758 l_rec_acct_attrs.array_char_value(2) := p_source_12;
137759 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
137760 l_rec_acct_attrs.array_num_value(3) := p_source_18;
137761 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
137762 l_rec_acct_attrs.array_char_value(4) := p_source_15;
137763 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
137764 l_rec_acct_attrs.array_date_value(5) := p_source_19;
137765 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
137766 l_rec_acct_attrs.array_num_value(6) := p_source_20;
137767 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
137768 l_rec_acct_attrs.array_char_value(7) := p_source_21;
137769 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
137770 l_rec_acct_attrs.array_num_value(8) := p_source_22;
137771
137772 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
137773 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
137774
137775 ---------------------------------------------------------------------------------------------------------------
137776 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
137777 ---------------------------------------------------------------------------------------------------------------
137778 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
137779
137780 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137781 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
137782
137783 IF xla_accounting_cache_pkg.GetValueChar
137784 (p_source_code => 'LEDGER_CATEGORY_CODE'
137785 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
137786 AND l_bflow_method_code = 'PRIOR_ENTRY'
137787 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
137788 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
137789 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
137790 )
137791 THEN
137792 xla_ae_lines_pkg.BflowUpgEntry
137793 (p_business_method_code => l_bflow_method_code
137794 ,p_business_class_code => l_bflow_class_code
137795 ,p_balance_type => l_balance_type_code);
137796 ELSE
137797 NULL;
137798 -- No business flow processing for business flow method of NONE.
137799 END IF;
137800
137801 --
137802 -- call analytical criteria
137803 --
137804
137805 --
137806 -- call description
137807 --
137808 -- No description or it is inherited.
137809 --
137810 -- call ADRs
137811 -- Bug 4922099
137812 --
137813 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137814 (NVL(l_actual_upg_option, 'N') = 'O') OR
137815 (NVL(l_enc_upg_option, 'N') = 'O')
137816 )
137817 THEN
137818 NULL;
137819 --
137820 --
137821
137822 l_ccid := AcctDerRule_4(
137823 p_application_id => p_application_id
137824 , p_ae_header_id => l_ae_header_id
137825 , p_source_4 => p_source_4
137826 , x_transaction_coa_id => l_adr_transaction_coa_id
137827 , x_accounting_coa_id => l_adr_accounting_coa_id
137828 , x_value_type_code => l_adr_value_type_code
137829 , p_side => 'NA'
137830 );
137831
137832 xla_ae_lines_pkg.set_ccid(
137833 p_code_combination_id => l_ccid
137834 , p_value_type_code => l_adr_value_type_code
137835 , p_transaction_coa_id => l_adr_transaction_coa_id
137836 , p_accounting_coa_id => l_adr_accounting_coa_id
137837 , p_adr_code => 'CST_DEFAULT'
137838 , p_adr_type_code => 'S'
137839 , p_component_type => l_component_type
137840 , p_component_code => l_component_code
137841 , p_component_type_code => l_component_type_code
137842 , p_component_appl_id => l_component_appl_id
137843 , p_amb_context_code => l_amb_context_code
137844 , p_side => 'NA'
137845 );
137846
137847
137848 --
137849 --
137850 END IF;
137851 --
137852 -- Bug 4922099
137853 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
137854 (NVL(l_enc_upg_option, 'N') = 'O')
137855 ) AND
137856 (l_bflow_method_code = 'PRIOR_ENTRY')
137857 )
137858 THEN
137859 IF
137860 --
137861 1 = 2
137862 --
137863 THEN
137864 xla_accounting_err_pkg.build_message
137865 (p_appli_s_name => 'XLA'
137866 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137867 ,p_token_1 => 'LINE_NUMBER'
137868 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
137869 ,p_token_2 => 'LINE_TYPE_NAME'
137870 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
137871 l_component_type
137872 ,l_component_code
137873 ,l_component_type_code
137874 ,l_component_appl_id
137875 ,l_amb_context_code
137876 ,l_entity_code
137877 ,l_event_class_code
137878 )
137879 ,p_token_3 => 'OWNER'
137880 ,p_value_3 => xla_lookups_pkg.get_meaning(
137881 p_lookup_type => 'XLA_OWNER_TYPE'
137882 ,p_lookup_code => l_component_type_code
137883 )
137884 ,p_token_4 => 'PRODUCT_NAME'
137885 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
137886 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
137887 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
137888 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
137889 ,p_ae_header_id => NULL
137890 );
137891
137892 IF (C_LEVEL_ERROR>= g_log_level) THEN
137893 trace
137894 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
137895 ,p_level => C_LEVEL_ERROR
137896 ,p_module => l_log_module);
137897 END IF;
137898 END IF;
137899 END IF;
137900 --
137901 --
137902 ------------------------------------------------------------------------------------------------
137903 -- 4219869 Business Flow
137904 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
137905 -- Prior Entry. Currently, the following code is always generated.
137906 ------------------------------------------------------------------------------------------------
137907 XLA_AE_LINES_PKG.ValidateCurrentLine;
137908
137909 ------------------------------------------------------------------------------------
137910 -- 4219869 Business Flow
137911 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
137912 ------------------------------------------------------------------------------------
137913 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
137914
137915 ----------------------------------------------------------------------------------
137916 -- 4219869 Business Flow
137917 -- Update journal entry status -- Need to generate this within IF <condition>
137918 ----------------------------------------------------------------------------------
137919 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
137920 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
137921 ,p_balance_type_code => l_balance_type_code
137922 );
137923
137924 -------------------------------------------------------------------------------------------
137925 -- 4262811 - Generate the Accrual Reversal lines
137926 -------------------------------------------------------------------------------------------
137927 BEGIN
137928 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
137929 (g_array_event(p_event_id).array_value_num('header_index'));
137930 IF l_acc_rev_flag IS NULL THEN
137931 l_acc_rev_flag := 'N';
137932 END IF;
137933 EXCEPTION
137934 WHEN OTHERS THEN
137935 l_acc_rev_flag := 'N';
137936 END;
137937 --
137938 IF (l_acc_rev_flag = 'Y') THEN
137939
137940 -- 4645092 ------------------------------------------------------------------------------
137941 -- To allow MPA report to determine if it should generate report process
137942 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
137943 ------------------------------------------------------------------------------------------
137944
137945 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
137946 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
137947 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
137948 -- call ADRs
137949 -- Bug 4922099
137950 --
137951 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
137952 (NVL(l_actual_upg_option, 'N') = 'O') OR
137953 (NVL(l_enc_upg_option, 'N') = 'O')
137954 )
137955 THEN
137956 NULL;
137957 --
137958 --
137959
137960 l_ccid := AcctDerRule_4(
137961 p_application_id => p_application_id
137962 , p_ae_header_id => l_ae_header_id
137963 , p_source_4 => p_source_4
137964 , x_transaction_coa_id => l_adr_transaction_coa_id
137965 , x_accounting_coa_id => l_adr_accounting_coa_id
137966 , x_value_type_code => l_adr_value_type_code
137967 , p_side => 'NA'
137968 );
137969
137970 xla_ae_lines_pkg.set_ccid(
137971 p_code_combination_id => l_ccid
137972 , p_value_type_code => l_adr_value_type_code
137973 , p_transaction_coa_id => l_adr_transaction_coa_id
137974 , p_accounting_coa_id => l_adr_accounting_coa_id
137975 , p_adr_code => 'CST_DEFAULT'
137976 , p_adr_type_code => 'S'
137977 , p_component_type => l_component_type
137978 , p_component_code => l_component_code
137979 , p_component_type_code => l_component_type_code
137980 , p_component_appl_id => l_component_appl_id
137981 , p_amb_context_code => l_amb_context_code
137982 , p_side => 'NA'
137983 );
137984
137985
137986 --
137987 --
137988 END IF;
137989
137990 --
137991 -- Update the line information that should be overwritten
137992 --
137993 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
137994 p_header_num => 1);
137995 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
137996
137997 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
137998
137999 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
138000 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
138001 END IF;
138002
138003 --
138004 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
138005 --
138006 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
138007 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
138008 ELSE
138009 ---------------------------------------------------------------------------------------------------
138010 -- 4262811a Switch Sign
138011 ---------------------------------------------------------------------------------------------------
138012 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
138013 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138014 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138015 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138016 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138017 -- 5132302
138018 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
138019 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138020
138021 END IF;
138022
138023 -- 4955764
138024 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138025 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
138026
138027
138028 XLA_AE_LINES_PKG.ValidateCurrentLine;
138029 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138030
138031 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138032 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
138033 ,p_balance_type_code => l_balance_type_code);
138034
138035 END IF;
138036
138037 -----------------------------------------------------------------------------------------
138038 -- 4262811 Multiperiod Accounting
138039 -----------------------------------------------------------------------------------------
138040 -- No MPA option is assigned.
138041
138042
138043 END IF;
138044 END IF;
138045 --
138046
138047 --
138048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138049 trace
138050 (p_msg => 'END of AcctLineType_249'
138051 ,p_level => C_LEVEL_PROCEDURE
138052 ,p_module => l_log_module);
138053 END IF;
138054 --
138055 EXCEPTION
138056 WHEN xla_exceptions_pkg.application_exception THEN
138057 RAISE;
138058 WHEN OTHERS THEN
138059 xla_exceptions_pkg.raise_message
138060 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_249');
138061 END AcctLineType_249;
138062 --
138063
138064 ---------------------------------------
138065 --
138066 -- PRIVATE FUNCTION
138067 -- AcctLineType_250
138068 --
138069 ---------------------------------------
138070 PROCEDURE AcctLineType_250 (
138071 p_application_id IN NUMBER
138072 ,p_event_id IN NUMBER
138073 ,p_calculate_acctd_flag IN VARCHAR2
138074 ,p_calculate_g_l_flag IN VARCHAR2
138075 ,p_actual_flag IN OUT VARCHAR2
138076 ,p_balance_type_code OUT VARCHAR2
138077 ,p_gain_or_loss_ref OUT VARCHAR2
138078
138079 --Cost Management Default Account
138080 , p_source_4 IN NUMBER
138081 --DISTRIBUTION_IDENTIFIER
138082 , p_source_11 IN NUMBER
138083 --Distribution Type
138084 , p_source_12 IN VARCHAR2
138085 , p_source_12_meaning IN VARCHAR2
138086 --Entered Currency Code
138087 , p_source_15 IN VARCHAR2
138088 --Entered Amount
138089 , p_source_18 IN NUMBER
138090 --Currency Conversion Date
138091 , p_source_19 IN DATE
138092 --Currency Conversion Rate
138093 , p_source_20 IN NUMBER
138094 --Currency Conversion Type
138095 , p_source_21 IN VARCHAR2
138096 --Accounted Amount
138097 , p_source_22 IN NUMBER
138098 --Accounting Line Type
138099 , p_source_24 IN NUMBER
138100 )
138101 IS
138102
138103 l_component_type VARCHAR2(80);
138104 l_component_code VARCHAR2(30);
138105 l_component_type_code VARCHAR2(1);
138106 l_component_appl_id INTEGER;
138107 l_amb_context_code VARCHAR2(30);
138108 l_entity_code VARCHAR2(30);
138109 l_event_class_code VARCHAR2(30);
138110 l_ae_header_id NUMBER;
138111 l_event_type_code VARCHAR2(30);
138112 l_line_definition_code VARCHAR2(30);
138113 l_line_definition_owner_code VARCHAR2(1);
138114 --
138115 -- adr variables
138116 l_segment VARCHAR2(30);
138117 l_ccid NUMBER;
138118 l_adr_transaction_coa_id NUMBER;
138119 l_adr_accounting_coa_id NUMBER;
138120 l_adr_flexfield_segment_code VARCHAR2(30);
138121 l_adr_flex_value_set_id NUMBER;
138122 l_adr_value_type_code VARCHAR2(30);
138123 l_adr_value_combination_id NUMBER;
138124 l_adr_value_segment_code VARCHAR2(30);
138125
138126 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
138127 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
138128 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
138129 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
138130
138131 -- 4262811 Variables ------------------------------------------------------------------------------------------
138132 l_entered_amt_idx NUMBER;
138133 l_accted_amt_idx NUMBER;
138134 l_acc_rev_flag VARCHAR2(1);
138135 l_accrual_line_num NUMBER;
138136 l_tmp_amt NUMBER;
138137 l_acc_rev_natural_side_code VARCHAR2(1);
138138
138139 l_num_entries NUMBER;
138140 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
138141 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
138142 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
138143 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
138144 l_recog_line_1 NUMBER;
138145 l_recog_line_2 NUMBER;
138146
138147 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
138148 l_bflow_applied_to_amt NUMBER; -- 5132302
138149 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
138150
138151 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
138152
138153 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
138154 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
138155
138156 ---------------------------------------------------------------------------------------------------------------
138157
138158
138159 --
138160 -- bulk performance
138161 --
138162 l_balance_type_code VARCHAR2(1);
138163 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
138164 l_log_module VARCHAR2(240);
138165
138166 --
138167 -- Upgrade strategy
138168 --
138169 l_actual_upg_option VARCHAR2(1);
138170 l_enc_upg_option VARCHAR2(1);
138171
138172 --
138173 BEGIN
138174 --
138175 IF g_log_enabled THEN
138176 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_250';
138177 END IF;
138178 --
138179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138180
138181 trace
138182 (p_msg => 'BEGIN of AcctLineType_250'
138183 ,p_level => C_LEVEL_PROCEDURE
138184 ,p_module => l_log_module);
138185
138186 END IF;
138187 --
138188 l_component_type := 'AMB_JLT';
138189 l_component_code := 'WIP_VALUATION';
138190 l_component_type_code := 'S';
138191 l_component_appl_id := 707;
138192 l_amb_context_code := 'DEFAULT';
138193 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
138194 l_event_class_code := 'VARIANCE';
138195 l_event_type_code := 'VARIANCE_ALL';
138196 l_line_definition_owner_code := 'S';
138197 l_line_definition_code := 'VARIANCE';
138198 --
138199 l_balance_type_code := 'A';
138200 l_segment := NULL;
138201 l_ccid := NULL;
138202 l_adr_transaction_coa_id := NULL;
138203 l_adr_accounting_coa_id := NULL;
138204 l_adr_flexfield_segment_code := NULL;
138205 l_adr_flex_value_set_id := NULL;
138206 l_adr_value_type_code := NULL;
138207 l_adr_value_combination_id := NULL;
138208 l_adr_value_segment_code := NULL;
138209
138210 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
138211 l_bflow_class_code := ''; -- 4219869 Business Flow
138212 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
138213 l_budgetary_control_flag := 'N';
138214
138215 l_bflow_applied_to_amt_idx := NULL; -- 5132302
138216 l_bflow_applied_to_amt := NULL; -- 5132302
138217 l_entered_amt_idx := NULL; -- 4262811
138218 l_accted_amt_idx := NULL; -- 4262811
138219 l_acc_rev_flag := NULL; -- 4262811
138220 l_accrual_line_num := NULL; -- 4262811
138221 l_tmp_amt := NULL; -- 4262811
138222 --
138223
138224 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
138225 l_balance_type_code <> 'B' THEN
138226 IF NVL(p_source_24,9E125) = 7
138227 THEN
138228
138229 --
138230 XLA_AE_LINES_PKG.SetNewLine;
138231
138232 p_balance_type_code := l_balance_type_code;
138233 -- set the flag so later we will know whether the gain loss line needs to be created
138234
138235 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
138236 p_actual_flag :='A';
138237 END IF;
138238
138239 --
138240 -- bulk performance
138241 --
138242 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
138243 p_header_num => 0); -- 4262811
138244 --
138245 -- set accounting line options
138246 --
138247 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
138248 p_natural_side_code => 'D'
138249 , p_gain_or_loss_flag => 'N'
138250 , p_gl_transfer_mode_code => 'S'
138251 , p_acct_entry_type_code => 'A'
138252 , p_switch_side_flag => 'Y'
138253 , p_merge_duplicate_code => 'N'
138254 );
138255 --
138256 l_acc_rev_natural_side_code := 'C'; -- 4262811
138257 --
138258 --
138259 -- set accounting line type info
138260 --
138261 xla_ae_lines_pkg.SetAcctLineType
138262 (p_component_type => l_component_type
138263 ,p_event_type_code => l_event_type_code
138264 ,p_line_definition_owner_code => l_line_definition_owner_code
138265 ,p_line_definition_code => l_line_definition_code
138266 ,p_accounting_line_code => l_component_code
138267 ,p_accounting_line_type_code => l_component_type_code
138268 ,p_accounting_line_appl_id => l_component_appl_id
138269 ,p_amb_context_code => l_amb_context_code
138270 ,p_entity_code => l_entity_code
138271 ,p_event_class_code => l_event_class_code);
138272 --
138273 -- set accounting class
138274 --
138275 xla_ae_lines_pkg.SetAcctClass(
138276 p_accounting_class_code => 'WIP_VALUATION'
138277 , p_ae_header_id => l_ae_header_id
138278 );
138279
138280 --
138281 -- set rounding class
138282 --
138283 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
138284 'WIP_VALUATION';
138285
138286 --
138287 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
138288 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
138289 --
138290 -- bulk performance
138291 --
138292 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
138293
138294 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
138295 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
138296
138297 -- 4955764
138298 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138299 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
138300
138301 -- 4458381 Public Sector Enh
138302
138303 --
138304 -- set accounting attributes for the line type
138305 --
138306 l_entered_amt_idx := 3;
138307 l_accted_amt_idx := 8;
138308 l_bflow_applied_to_amt_idx := NULL; -- 5132302
138309 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
138310 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
138311 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
138312 l_rec_acct_attrs.array_char_value(2) := p_source_12;
138313 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
138314 l_rec_acct_attrs.array_num_value(3) := p_source_18;
138315 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
138316 l_rec_acct_attrs.array_char_value(4) := p_source_15;
138317 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
138318 l_rec_acct_attrs.array_date_value(5) := p_source_19;
138319 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
138320 l_rec_acct_attrs.array_num_value(6) := p_source_20;
138321 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
138322 l_rec_acct_attrs.array_char_value(7) := p_source_21;
138323 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
138324 l_rec_acct_attrs.array_num_value(8) := p_source_22;
138325
138326 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
138327 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
138328
138329 ---------------------------------------------------------------------------------------------------------------
138330 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
138331 ---------------------------------------------------------------------------------------------------------------
138332 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
138333
138334 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138335 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138336
138337 IF xla_accounting_cache_pkg.GetValueChar
138338 (p_source_code => 'LEDGER_CATEGORY_CODE'
138339 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
138340 AND l_bflow_method_code = 'PRIOR_ENTRY'
138341 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
138342 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
138343 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
138344 )
138345 THEN
138346 xla_ae_lines_pkg.BflowUpgEntry
138347 (p_business_method_code => l_bflow_method_code
138348 ,p_business_class_code => l_bflow_class_code
138349 ,p_balance_type => l_balance_type_code);
138350 ELSE
138351 NULL;
138352 -- No business flow processing for business flow method of NONE.
138353 END IF;
138354
138355 --
138356 -- call analytical criteria
138357 --
138358
138359 --
138360 -- call description
138361 --
138362 -- No description or it is inherited.
138363 --
138364 -- call ADRs
138365 -- Bug 4922099
138366 --
138367 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
138368 (NVL(l_actual_upg_option, 'N') = 'O') OR
138369 (NVL(l_enc_upg_option, 'N') = 'O')
138370 )
138371 THEN
138372 NULL;
138373 --
138374 --
138375
138376 l_ccid := AcctDerRule_4(
138377 p_application_id => p_application_id
138378 , p_ae_header_id => l_ae_header_id
138379 , p_source_4 => p_source_4
138380 , x_transaction_coa_id => l_adr_transaction_coa_id
138381 , x_accounting_coa_id => l_adr_accounting_coa_id
138382 , x_value_type_code => l_adr_value_type_code
138383 , p_side => 'NA'
138384 );
138385
138386 xla_ae_lines_pkg.set_ccid(
138387 p_code_combination_id => l_ccid
138388 , p_value_type_code => l_adr_value_type_code
138389 , p_transaction_coa_id => l_adr_transaction_coa_id
138390 , p_accounting_coa_id => l_adr_accounting_coa_id
138391 , p_adr_code => 'CST_DEFAULT'
138392 , p_adr_type_code => 'S'
138393 , p_component_type => l_component_type
138394 , p_component_code => l_component_code
138395 , p_component_type_code => l_component_type_code
138396 , p_component_appl_id => l_component_appl_id
138397 , p_amb_context_code => l_amb_context_code
138398 , p_side => 'NA'
138399 );
138400
138401
138402 --
138403 --
138404 END IF;
138405 --
138406 -- Bug 4922099
138407 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
138408 (NVL(l_enc_upg_option, 'N') = 'O')
138409 ) AND
138410 (l_bflow_method_code = 'PRIOR_ENTRY')
138411 )
138412 THEN
138413 IF
138414 --
138415 1 = 2
138416 --
138417 THEN
138418 xla_accounting_err_pkg.build_message
138419 (p_appli_s_name => 'XLA'
138420 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
138421 ,p_token_1 => 'LINE_NUMBER'
138422 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
138423 ,p_token_2 => 'LINE_TYPE_NAME'
138424 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
138425 l_component_type
138426 ,l_component_code
138427 ,l_component_type_code
138428 ,l_component_appl_id
138429 ,l_amb_context_code
138430 ,l_entity_code
138431 ,l_event_class_code
138432 )
138433 ,p_token_3 => 'OWNER'
138434 ,p_value_3 => xla_lookups_pkg.get_meaning(
138435 p_lookup_type => 'XLA_OWNER_TYPE'
138436 ,p_lookup_code => l_component_type_code
138437 )
138438 ,p_token_4 => 'PRODUCT_NAME'
138439 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
138440 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
138441 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
138442 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
138443 ,p_ae_header_id => NULL
138444 );
138445
138446 IF (C_LEVEL_ERROR>= g_log_level) THEN
138447 trace
138448 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
138449 ,p_level => C_LEVEL_ERROR
138450 ,p_module => l_log_module);
138451 END IF;
138452 END IF;
138453 END IF;
138454 --
138455 --
138456 ------------------------------------------------------------------------------------------------
138457 -- 4219869 Business Flow
138458 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
138459 -- Prior Entry. Currently, the following code is always generated.
138460 ------------------------------------------------------------------------------------------------
138461 XLA_AE_LINES_PKG.ValidateCurrentLine;
138462
138463 ------------------------------------------------------------------------------------
138464 -- 4219869 Business Flow
138465 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
138466 ------------------------------------------------------------------------------------
138467 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138468
138469 ----------------------------------------------------------------------------------
138470 -- 4219869 Business Flow
138471 -- Update journal entry status -- Need to generate this within IF <condition>
138472 ----------------------------------------------------------------------------------
138473 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138474 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
138475 ,p_balance_type_code => l_balance_type_code
138476 );
138477
138478 -------------------------------------------------------------------------------------------
138479 -- 4262811 - Generate the Accrual Reversal lines
138480 -------------------------------------------------------------------------------------------
138481 BEGIN
138482 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
138483 (g_array_event(p_event_id).array_value_num('header_index'));
138484 IF l_acc_rev_flag IS NULL THEN
138485 l_acc_rev_flag := 'N';
138486 END IF;
138487 EXCEPTION
138488 WHEN OTHERS THEN
138489 l_acc_rev_flag := 'N';
138490 END;
138491 --
138492 IF (l_acc_rev_flag = 'Y') THEN
138493
138494 -- 4645092 ------------------------------------------------------------------------------
138495 -- To allow MPA report to determine if it should generate report process
138496 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
138497 ------------------------------------------------------------------------------------------
138498
138499 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
138500 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
138501 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
138502 -- call ADRs
138503 -- Bug 4922099
138504 --
138505 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
138506 (NVL(l_actual_upg_option, 'N') = 'O') OR
138507 (NVL(l_enc_upg_option, 'N') = 'O')
138508 )
138509 THEN
138510 NULL;
138511 --
138512 --
138513
138514 l_ccid := AcctDerRule_4(
138515 p_application_id => p_application_id
138516 , p_ae_header_id => l_ae_header_id
138517 , p_source_4 => p_source_4
138518 , x_transaction_coa_id => l_adr_transaction_coa_id
138519 , x_accounting_coa_id => l_adr_accounting_coa_id
138520 , x_value_type_code => l_adr_value_type_code
138521 , p_side => 'NA'
138522 );
138523
138524 xla_ae_lines_pkg.set_ccid(
138525 p_code_combination_id => l_ccid
138526 , p_value_type_code => l_adr_value_type_code
138527 , p_transaction_coa_id => l_adr_transaction_coa_id
138528 , p_accounting_coa_id => l_adr_accounting_coa_id
138529 , p_adr_code => 'CST_DEFAULT'
138530 , p_adr_type_code => 'S'
138531 , p_component_type => l_component_type
138532 , p_component_code => l_component_code
138533 , p_component_type_code => l_component_type_code
138534 , p_component_appl_id => l_component_appl_id
138535 , p_amb_context_code => l_amb_context_code
138536 , p_side => 'NA'
138537 );
138538
138539
138540 --
138541 --
138542 END IF;
138543
138544 --
138545 -- Update the line information that should be overwritten
138546 --
138547 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
138548 p_header_num => 1);
138549 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
138550
138551 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
138552
138553 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
138554 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
138555 END IF;
138556
138557 --
138558 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
138559 --
138560 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
138561 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
138562 ELSE
138563 ---------------------------------------------------------------------------------------------------
138564 -- 4262811a Switch Sign
138565 ---------------------------------------------------------------------------------------------------
138566 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
138567 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138568 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138569 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
138570 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138571 -- 5132302
138572 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
138573 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
138574
138575 END IF;
138576
138577 -- 4955764
138578 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138579 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
138580
138581
138582 XLA_AE_LINES_PKG.ValidateCurrentLine;
138583 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
138584
138585 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
138586 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
138587 ,p_balance_type_code => l_balance_type_code);
138588
138589 END IF;
138590
138591 -----------------------------------------------------------------------------------------
138592 -- 4262811 Multiperiod Accounting
138593 -----------------------------------------------------------------------------------------
138594 -- No MPA option is assigned.
138595
138596
138597 END IF;
138598 END IF;
138599 --
138600
138601 --
138602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138603 trace
138604 (p_msg => 'END of AcctLineType_250'
138605 ,p_level => C_LEVEL_PROCEDURE
138606 ,p_module => l_log_module);
138607 END IF;
138608 --
138609 EXCEPTION
138610 WHEN xla_exceptions_pkg.application_exception THEN
138611 RAISE;
138612 WHEN OTHERS THEN
138613 xla_exceptions_pkg.raise_message
138614 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_250');
138615 END AcctLineType_250;
138616 --
138617
138618 ---------------------------------------
138619 --
138620 -- PRIVATE FUNCTION
138621 -- AcctLineType_251
138622 --
138623 ---------------------------------------
138624 PROCEDURE AcctLineType_251 (
138625 p_application_id IN NUMBER
138626 ,p_event_id IN NUMBER
138627 ,p_calculate_acctd_flag IN VARCHAR2
138628 ,p_calculate_g_l_flag IN VARCHAR2
138629 ,p_actual_flag IN OUT VARCHAR2
138630 ,p_balance_type_code OUT VARCHAR2
138631 ,p_gain_or_loss_ref OUT VARCHAR2
138632
138633 --Cost Management Default Account
138634 , p_source_4 IN NUMBER
138635 --DISTRIBUTION_IDENTIFIER
138636 , p_source_11 IN NUMBER
138637 --Distribution Type
138638 , p_source_12 IN VARCHAR2
138639 , p_source_12_meaning IN VARCHAR2
138640 --Entered Currency Code
138641 , p_source_15 IN VARCHAR2
138642 --Entered Amount
138643 , p_source_18 IN NUMBER
138644 --Currency Conversion Date
138645 , p_source_19 IN DATE
138646 --Currency Conversion Rate
138647 , p_source_20 IN NUMBER
138648 --Currency Conversion Type
138649 , p_source_21 IN VARCHAR2
138650 --Accounted Amount
138651 , p_source_22 IN NUMBER
138652 --Accounting Line Type
138653 , p_source_24 IN NUMBER
138654 )
138655 IS
138656
138657 l_component_type VARCHAR2(80);
138658 l_component_code VARCHAR2(30);
138659 l_component_type_code VARCHAR2(1);
138660 l_component_appl_id INTEGER;
138661 l_amb_context_code VARCHAR2(30);
138662 l_entity_code VARCHAR2(30);
138663 l_event_class_code VARCHAR2(30);
138664 l_ae_header_id NUMBER;
138665 l_event_type_code VARCHAR2(30);
138666 l_line_definition_code VARCHAR2(30);
138667 l_line_definition_owner_code VARCHAR2(1);
138668 --
138669 -- adr variables
138670 l_segment VARCHAR2(30);
138671 l_ccid NUMBER;
138672 l_adr_transaction_coa_id NUMBER;
138673 l_adr_accounting_coa_id NUMBER;
138674 l_adr_flexfield_segment_code VARCHAR2(30);
138675 l_adr_flex_value_set_id NUMBER;
138676 l_adr_value_type_code VARCHAR2(30);
138677 l_adr_value_combination_id NUMBER;
138678 l_adr_value_segment_code VARCHAR2(30);
138679
138680 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
138681 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
138682 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
138683 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
138684
138685 -- 4262811 Variables ------------------------------------------------------------------------------------------
138686 l_entered_amt_idx NUMBER;
138687 l_accted_amt_idx NUMBER;
138688 l_acc_rev_flag VARCHAR2(1);
138689 l_accrual_line_num NUMBER;
138690 l_tmp_amt NUMBER;
138691 l_acc_rev_natural_side_code VARCHAR2(1);
138692
138693 l_num_entries NUMBER;
138694 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
138695 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
138696 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
138697 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
138698 l_recog_line_1 NUMBER;
138699 l_recog_line_2 NUMBER;
138700
138701 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
138702 l_bflow_applied_to_amt NUMBER; -- 5132302
138703 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
138704
138705 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
138706
138707 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
138708 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
138709
138710 ---------------------------------------------------------------------------------------------------------------
138711
138712
138713 --
138714 -- bulk performance
138715 --
138716 l_balance_type_code VARCHAR2(1);
138717 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
138718 l_log_module VARCHAR2(240);
138719
138720 --
138721 -- Upgrade strategy
138722 --
138723 l_actual_upg_option VARCHAR2(1);
138724 l_enc_upg_option VARCHAR2(1);
138725
138726 --
138727 BEGIN
138728 --
138729 IF g_log_enabled THEN
138730 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_251';
138731 END IF;
138732 --
138733 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
138734
138735 trace
138736 (p_msg => 'BEGIN of AcctLineType_251'
138737 ,p_level => C_LEVEL_PROCEDURE
138738 ,p_module => l_log_module);
138739
138740 END IF;
138741 --
138742 l_component_type := 'AMB_JLT';
138743 l_component_code := 'WIP_VALUATION';
138744 l_component_type_code := 'S';
138745 l_component_appl_id := 707;
138746 l_amb_context_code := 'DEFAULT';
138747 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
138748 l_event_class_code := 'WIP_COST_UPD';
138749 l_event_type_code := 'WIP_COST_UPD_ALL';
138750 l_line_definition_owner_code := 'S';
138751 l_line_definition_code := 'COST_UPDATE';
138752 --
138753 l_balance_type_code := 'A';
138754 l_segment := NULL;
138755 l_ccid := NULL;
138756 l_adr_transaction_coa_id := NULL;
138757 l_adr_accounting_coa_id := NULL;
138758 l_adr_flexfield_segment_code := NULL;
138759 l_adr_flex_value_set_id := NULL;
138760 l_adr_value_type_code := NULL;
138761 l_adr_value_combination_id := NULL;
138762 l_adr_value_segment_code := NULL;
138763
138764 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
138765 l_bflow_class_code := ''; -- 4219869 Business Flow
138766 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
138767 l_budgetary_control_flag := 'N';
138768
138769 l_bflow_applied_to_amt_idx := NULL; -- 5132302
138770 l_bflow_applied_to_amt := NULL; -- 5132302
138771 l_entered_amt_idx := NULL; -- 4262811
138772 l_accted_amt_idx := NULL; -- 4262811
138773 l_acc_rev_flag := NULL; -- 4262811
138774 l_accrual_line_num := NULL; -- 4262811
138775 l_tmp_amt := NULL; -- 4262811
138776 --
138777
138778 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
138779 l_balance_type_code <> 'B' THEN
138780 IF NVL(p_source_24,9E125) = 7
138781 THEN
138782
138783 --
138784 XLA_AE_LINES_PKG.SetNewLine;
138785
138786 p_balance_type_code := l_balance_type_code;
138787 -- set the flag so later we will know whether the gain loss line needs to be created
138788
138789 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
138790 p_actual_flag :='A';
138791 END IF;
138792
138793 --
138794 -- bulk performance
138795 --
138796 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
138797 p_header_num => 0); -- 4262811
138798 --
138799 -- set accounting line options
138800 --
138801 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
138802 p_natural_side_code => 'D'
138803 , p_gain_or_loss_flag => 'N'
138804 , p_gl_transfer_mode_code => 'S'
138805 , p_acct_entry_type_code => 'A'
138806 , p_switch_side_flag => 'Y'
138807 , p_merge_duplicate_code => 'N'
138808 );
138809 --
138810 l_acc_rev_natural_side_code := 'C'; -- 4262811
138811 --
138812 --
138813 -- set accounting line type info
138814 --
138815 xla_ae_lines_pkg.SetAcctLineType
138816 (p_component_type => l_component_type
138817 ,p_event_type_code => l_event_type_code
138818 ,p_line_definition_owner_code => l_line_definition_owner_code
138819 ,p_line_definition_code => l_line_definition_code
138820 ,p_accounting_line_code => l_component_code
138821 ,p_accounting_line_type_code => l_component_type_code
138822 ,p_accounting_line_appl_id => l_component_appl_id
138823 ,p_amb_context_code => l_amb_context_code
138824 ,p_entity_code => l_entity_code
138825 ,p_event_class_code => l_event_class_code);
138826 --
138827 -- set accounting class
138828 --
138829 xla_ae_lines_pkg.SetAcctClass(
138830 p_accounting_class_code => 'WIP_VALUATION'
138831 , p_ae_header_id => l_ae_header_id
138832 );
138833
138834 --
138835 -- set rounding class
138836 --
138837 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
138838 'WIP_VALUATION';
138839
138840 --
138841 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
138842 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
138843 --
138844 -- bulk performance
138845 --
138846 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
138847
138848 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
138849 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
138850
138851 -- 4955764
138852 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
138853 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
138854
138855 -- 4458381 Public Sector Enh
138856
138857 --
138858 -- set accounting attributes for the line type
138859 --
138860 l_entered_amt_idx := 3;
138861 l_accted_amt_idx := 8;
138862 l_bflow_applied_to_amt_idx := NULL; -- 5132302
138863 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
138864 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
138865 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
138866 l_rec_acct_attrs.array_char_value(2) := p_source_12;
138867 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
138868 l_rec_acct_attrs.array_num_value(3) := p_source_18;
138869 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
138870 l_rec_acct_attrs.array_char_value(4) := p_source_15;
138871 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
138872 l_rec_acct_attrs.array_date_value(5) := p_source_19;
138873 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
138874 l_rec_acct_attrs.array_num_value(6) := p_source_20;
138875 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
138876 l_rec_acct_attrs.array_char_value(7) := p_source_21;
138877 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
138878 l_rec_acct_attrs.array_num_value(8) := p_source_22;
138879
138880 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
138881 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
138882
138883 ---------------------------------------------------------------------------------------------------------------
138884 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
138885 ---------------------------------------------------------------------------------------------------------------
138886 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
138887
138888 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138889 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
138890
138891 IF xla_accounting_cache_pkg.GetValueChar
138892 (p_source_code => 'LEDGER_CATEGORY_CODE'
138893 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
138894 AND l_bflow_method_code = 'PRIOR_ENTRY'
138895 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
138896 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
138897 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
138898 )
138899 THEN
138900 xla_ae_lines_pkg.BflowUpgEntry
138901 (p_business_method_code => l_bflow_method_code
138902 ,p_business_class_code => l_bflow_class_code
138903 ,p_balance_type => l_balance_type_code);
138904 ELSE
138905 NULL;
138906 -- No business flow processing for business flow method of NONE.
138907 END IF;
138908
138909 --
138910 -- call analytical criteria
138911 --
138912
138913 --
138914 -- call description
138915 --
138916 -- No description or it is inherited.
138917 --
138918 -- call ADRs
138919 -- Bug 4922099
138920 --
138921 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
138922 (NVL(l_actual_upg_option, 'N') = 'O') OR
138923 (NVL(l_enc_upg_option, 'N') = 'O')
138924 )
138925 THEN
138926 NULL;
138927 --
138928 --
138929
138930 l_ccid := AcctDerRule_4(
138931 p_application_id => p_application_id
138932 , p_ae_header_id => l_ae_header_id
138933 , p_source_4 => p_source_4
138934 , x_transaction_coa_id => l_adr_transaction_coa_id
138935 , x_accounting_coa_id => l_adr_accounting_coa_id
138936 , x_value_type_code => l_adr_value_type_code
138937 , p_side => 'NA'
138938 );
138939
138940 xla_ae_lines_pkg.set_ccid(
138941 p_code_combination_id => l_ccid
138942 , p_value_type_code => l_adr_value_type_code
138943 , p_transaction_coa_id => l_adr_transaction_coa_id
138944 , p_accounting_coa_id => l_adr_accounting_coa_id
138945 , p_adr_code => 'CST_DEFAULT'
138946 , p_adr_type_code => 'S'
138947 , p_component_type => l_component_type
138948 , p_component_code => l_component_code
138949 , p_component_type_code => l_component_type_code
138950 , p_component_appl_id => l_component_appl_id
138951 , p_amb_context_code => l_amb_context_code
138952 , p_side => 'NA'
138953 );
138954
138955
138956 --
138957 --
138958 END IF;
138959 --
138960 -- Bug 4922099
138961 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
138962 (NVL(l_enc_upg_option, 'N') = 'O')
138963 ) AND
138964 (l_bflow_method_code = 'PRIOR_ENTRY')
138965 )
138966 THEN
138967 IF
138968 --
138969 1 = 2
138970 --
138971 THEN
138972 xla_accounting_err_pkg.build_message
138973 (p_appli_s_name => 'XLA'
138974 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
138975 ,p_token_1 => 'LINE_NUMBER'
138976 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
138977 ,p_token_2 => 'LINE_TYPE_NAME'
138978 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
138979 l_component_type
138980 ,l_component_code
138981 ,l_component_type_code
138982 ,l_component_appl_id
138983 ,l_amb_context_code
138984 ,l_entity_code
138985 ,l_event_class_code
138986 )
138987 ,p_token_3 => 'OWNER'
138988 ,p_value_3 => xla_lookups_pkg.get_meaning(
138989 p_lookup_type => 'XLA_OWNER_TYPE'
138990 ,p_lookup_code => l_component_type_code
138991 )
138992 ,p_token_4 => 'PRODUCT_NAME'
138993 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
138994 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
138995 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
138996 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
138997 ,p_ae_header_id => NULL
138998 );
138999
139000 IF (C_LEVEL_ERROR>= g_log_level) THEN
139001 trace
139002 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
139003 ,p_level => C_LEVEL_ERROR
139004 ,p_module => l_log_module);
139005 END IF;
139006 END IF;
139007 END IF;
139008 --
139009 --
139010 ------------------------------------------------------------------------------------------------
139011 -- 4219869 Business Flow
139012 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
139013 -- Prior Entry. Currently, the following code is always generated.
139014 ------------------------------------------------------------------------------------------------
139015 XLA_AE_LINES_PKG.ValidateCurrentLine;
139016
139017 ------------------------------------------------------------------------------------
139018 -- 4219869 Business Flow
139019 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
139020 ------------------------------------------------------------------------------------
139021 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139022
139023 ----------------------------------------------------------------------------------
139024 -- 4219869 Business Flow
139025 -- Update journal entry status -- Need to generate this within IF <condition>
139026 ----------------------------------------------------------------------------------
139027 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139028 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
139029 ,p_balance_type_code => l_balance_type_code
139030 );
139031
139032 -------------------------------------------------------------------------------------------
139033 -- 4262811 - Generate the Accrual Reversal lines
139034 -------------------------------------------------------------------------------------------
139035 BEGIN
139036 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
139037 (g_array_event(p_event_id).array_value_num('header_index'));
139038 IF l_acc_rev_flag IS NULL THEN
139039 l_acc_rev_flag := 'N';
139040 END IF;
139041 EXCEPTION
139042 WHEN OTHERS THEN
139043 l_acc_rev_flag := 'N';
139044 END;
139045 --
139046 IF (l_acc_rev_flag = 'Y') THEN
139047
139048 -- 4645092 ------------------------------------------------------------------------------
139049 -- To allow MPA report to determine if it should generate report process
139050 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
139051 ------------------------------------------------------------------------------------------
139052
139053 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
139054 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
139055 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
139056 -- call ADRs
139057 -- Bug 4922099
139058 --
139059 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
139060 (NVL(l_actual_upg_option, 'N') = 'O') OR
139061 (NVL(l_enc_upg_option, 'N') = 'O')
139062 )
139063 THEN
139064 NULL;
139065 --
139066 --
139067
139068 l_ccid := AcctDerRule_4(
139069 p_application_id => p_application_id
139070 , p_ae_header_id => l_ae_header_id
139071 , p_source_4 => p_source_4
139072 , x_transaction_coa_id => l_adr_transaction_coa_id
139073 , x_accounting_coa_id => l_adr_accounting_coa_id
139074 , x_value_type_code => l_adr_value_type_code
139075 , p_side => 'NA'
139076 );
139077
139078 xla_ae_lines_pkg.set_ccid(
139079 p_code_combination_id => l_ccid
139080 , p_value_type_code => l_adr_value_type_code
139081 , p_transaction_coa_id => l_adr_transaction_coa_id
139082 , p_accounting_coa_id => l_adr_accounting_coa_id
139083 , p_adr_code => 'CST_DEFAULT'
139084 , p_adr_type_code => 'S'
139085 , p_component_type => l_component_type
139086 , p_component_code => l_component_code
139087 , p_component_type_code => l_component_type_code
139088 , p_component_appl_id => l_component_appl_id
139089 , p_amb_context_code => l_amb_context_code
139090 , p_side => 'NA'
139091 );
139092
139093
139094 --
139095 --
139096 END IF;
139097
139098 --
139099 -- Update the line information that should be overwritten
139100 --
139101 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
139102 p_header_num => 1);
139103 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
139104
139105 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
139106
139107 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
139108 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
139109 END IF;
139110
139111 --
139112 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
139113 --
139114 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
139115 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
139116 ELSE
139117 ---------------------------------------------------------------------------------------------------
139118 -- 4262811a Switch Sign
139119 ---------------------------------------------------------------------------------------------------
139120 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
139121 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139122 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139123 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139124 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139125 -- 5132302
139126 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
139127 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139128
139129 END IF;
139130
139131 -- 4955764
139132 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139133 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
139134
139135
139136 XLA_AE_LINES_PKG.ValidateCurrentLine;
139137 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139138
139139 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139140 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
139141 ,p_balance_type_code => l_balance_type_code);
139142
139143 END IF;
139144
139145 -----------------------------------------------------------------------------------------
139146 -- 4262811 Multiperiod Accounting
139147 -----------------------------------------------------------------------------------------
139148 -- No MPA option is assigned.
139149
139150
139151 END IF;
139152 END IF;
139153 --
139154
139155 --
139156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139157 trace
139158 (p_msg => 'END of AcctLineType_251'
139159 ,p_level => C_LEVEL_PROCEDURE
139160 ,p_module => l_log_module);
139161 END IF;
139162 --
139163 EXCEPTION
139164 WHEN xla_exceptions_pkg.application_exception THEN
139165 RAISE;
139166 WHEN OTHERS THEN
139167 xla_exceptions_pkg.raise_message
139168 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_251');
139169 END AcctLineType_251;
139170 --
139171
139172 ---------------------------------------
139173 --
139174 -- PRIVATE FUNCTION
139175 -- AcctLineType_252
139176 --
139177 ---------------------------------------
139178 PROCEDURE AcctLineType_252 (
139179 p_application_id IN NUMBER
139180 ,p_event_id IN NUMBER
139181 ,p_calculate_acctd_flag IN VARCHAR2
139182 ,p_calculate_g_l_flag IN VARCHAR2
139183 ,p_actual_flag IN OUT VARCHAR2
139184 ,p_balance_type_code OUT VARCHAR2
139185 ,p_gain_or_loss_ref OUT VARCHAR2
139186
139187 --Cost Management Default Account
139188 , p_source_4 IN NUMBER
139189 --DISTRIBUTION_IDENTIFIER
139190 , p_source_11 IN NUMBER
139191 --Distribution Type
139192 , p_source_12 IN VARCHAR2
139193 , p_source_12_meaning IN VARCHAR2
139194 --Entered Currency Code
139195 , p_source_15 IN VARCHAR2
139196 --Entered Amount
139197 , p_source_18 IN NUMBER
139198 --Currency Conversion Date
139199 , p_source_19 IN DATE
139200 --Currency Conversion Rate
139201 , p_source_20 IN NUMBER
139202 --Currency Conversion Type
139203 , p_source_21 IN VARCHAR2
139204 --Accounted Amount
139205 , p_source_22 IN NUMBER
139206 --Accounting Line Type
139207 , p_source_24 IN NUMBER
139208 )
139209 IS
139210
139211 l_component_type VARCHAR2(80);
139212 l_component_code VARCHAR2(30);
139213 l_component_type_code VARCHAR2(1);
139214 l_component_appl_id INTEGER;
139215 l_amb_context_code VARCHAR2(30);
139216 l_entity_code VARCHAR2(30);
139217 l_event_class_code VARCHAR2(30);
139218 l_ae_header_id NUMBER;
139219 l_event_type_code VARCHAR2(30);
139220 l_line_definition_code VARCHAR2(30);
139221 l_line_definition_owner_code VARCHAR2(1);
139222 --
139223 -- adr variables
139224 l_segment VARCHAR2(30);
139225 l_ccid NUMBER;
139226 l_adr_transaction_coa_id NUMBER;
139227 l_adr_accounting_coa_id NUMBER;
139228 l_adr_flexfield_segment_code VARCHAR2(30);
139229 l_adr_flex_value_set_id NUMBER;
139230 l_adr_value_type_code VARCHAR2(30);
139231 l_adr_value_combination_id NUMBER;
139232 l_adr_value_segment_code VARCHAR2(30);
139233
139234 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
139235 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
139236 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
139237 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
139238
139239 -- 4262811 Variables ------------------------------------------------------------------------------------------
139240 l_entered_amt_idx NUMBER;
139241 l_accted_amt_idx NUMBER;
139242 l_acc_rev_flag VARCHAR2(1);
139243 l_accrual_line_num NUMBER;
139244 l_tmp_amt NUMBER;
139245 l_acc_rev_natural_side_code VARCHAR2(1);
139246
139247 l_num_entries NUMBER;
139248 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
139249 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
139250 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
139251 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
139252 l_recog_line_1 NUMBER;
139253 l_recog_line_2 NUMBER;
139254
139255 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
139256 l_bflow_applied_to_amt NUMBER; -- 5132302
139257 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
139258
139259 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
139260
139261 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
139262 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
139263
139264 ---------------------------------------------------------------------------------------------------------------
139265
139266
139267 --
139268 -- bulk performance
139269 --
139270 l_balance_type_code VARCHAR2(1);
139271 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
139272 l_log_module VARCHAR2(240);
139273
139274 --
139275 -- Upgrade strategy
139276 --
139277 l_actual_upg_option VARCHAR2(1);
139278 l_enc_upg_option VARCHAR2(1);
139279
139280 --
139281 BEGIN
139282 --
139283 IF g_log_enabled THEN
139284 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_252';
139285 END IF;
139286 --
139287 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139288
139289 trace
139290 (p_msg => 'BEGIN of AcctLineType_252'
139291 ,p_level => C_LEVEL_PROCEDURE
139292 ,p_module => l_log_module);
139293
139294 END IF;
139295 --
139296 l_component_type := 'AMB_JLT';
139297 l_component_code := 'WIP_VALUATION';
139298 l_component_type_code := 'S';
139299 l_component_appl_id := 707;
139300 l_amb_context_code := 'DEFAULT';
139301 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
139302 l_event_class_code := 'LOT';
139303 l_event_type_code := 'LOT_ALL';
139304 l_line_definition_owner_code := 'S';
139305 l_line_definition_code := 'WIP_MATERIAL_LOT';
139306 --
139307 l_balance_type_code := 'A';
139308 l_segment := NULL;
139309 l_ccid := NULL;
139310 l_adr_transaction_coa_id := NULL;
139311 l_adr_accounting_coa_id := NULL;
139312 l_adr_flexfield_segment_code := NULL;
139313 l_adr_flex_value_set_id := NULL;
139314 l_adr_value_type_code := NULL;
139315 l_adr_value_combination_id := NULL;
139316 l_adr_value_segment_code := NULL;
139317
139318 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
139319 l_bflow_class_code := ''; -- 4219869 Business Flow
139320 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
139321 l_budgetary_control_flag := 'N';
139322
139323 l_bflow_applied_to_amt_idx := NULL; -- 5132302
139324 l_bflow_applied_to_amt := NULL; -- 5132302
139325 l_entered_amt_idx := NULL; -- 4262811
139326 l_accted_amt_idx := NULL; -- 4262811
139327 l_acc_rev_flag := NULL; -- 4262811
139328 l_accrual_line_num := NULL; -- 4262811
139329 l_tmp_amt := NULL; -- 4262811
139330 --
139331
139332 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
139333 l_balance_type_code <> 'B' THEN
139334 IF NVL(p_source_24,9E125) = 21 OR
139335 NVL(p_source_24,9E125) = 22 OR
139336 NVL(p_source_24,9E125) = 23 OR
139337 NVL(p_source_24,9E125) = 24 OR
139338 NVL(p_source_24,9E125) = 26 OR
139339 NVL(p_source_24,9E125) = 28
139340 THEN
139341
139342 --
139343 XLA_AE_LINES_PKG.SetNewLine;
139344
139345 p_balance_type_code := l_balance_type_code;
139346 -- set the flag so later we will know whether the gain loss line needs to be created
139347
139348 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
139349 p_actual_flag :='A';
139350 END IF;
139351
139352 --
139353 -- bulk performance
139354 --
139355 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
139356 p_header_num => 0); -- 4262811
139357 --
139358 -- set accounting line options
139359 --
139360 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
139361 p_natural_side_code => 'D'
139362 , p_gain_or_loss_flag => 'N'
139363 , p_gl_transfer_mode_code => 'S'
139364 , p_acct_entry_type_code => 'A'
139365 , p_switch_side_flag => 'Y'
139366 , p_merge_duplicate_code => 'N'
139367 );
139368 --
139369 l_acc_rev_natural_side_code := 'C'; -- 4262811
139370 --
139371 --
139372 -- set accounting line type info
139373 --
139374 xla_ae_lines_pkg.SetAcctLineType
139375 (p_component_type => l_component_type
139376 ,p_event_type_code => l_event_type_code
139377 ,p_line_definition_owner_code => l_line_definition_owner_code
139378 ,p_line_definition_code => l_line_definition_code
139379 ,p_accounting_line_code => l_component_code
139380 ,p_accounting_line_type_code => l_component_type_code
139381 ,p_accounting_line_appl_id => l_component_appl_id
139382 ,p_amb_context_code => l_amb_context_code
139383 ,p_entity_code => l_entity_code
139384 ,p_event_class_code => l_event_class_code);
139385 --
139386 -- set accounting class
139387 --
139388 xla_ae_lines_pkg.SetAcctClass(
139389 p_accounting_class_code => 'WIP_VALUATION'
139390 , p_ae_header_id => l_ae_header_id
139391 );
139392
139393 --
139394 -- set rounding class
139395 --
139396 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
139397 'WIP_VALUATION';
139398
139399 --
139400 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
139401 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
139402 --
139403 -- bulk performance
139404 --
139405 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
139406
139407 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
139408 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
139409
139410 -- 4955764
139411 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139412 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
139413
139414 -- 4458381 Public Sector Enh
139415
139416 --
139417 -- set accounting attributes for the line type
139418 --
139419 l_entered_amt_idx := 3;
139420 l_accted_amt_idx := 8;
139421 l_bflow_applied_to_amt_idx := NULL; -- 5132302
139422 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
139423 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
139424 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
139425 l_rec_acct_attrs.array_char_value(2) := p_source_12;
139426 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
139427 l_rec_acct_attrs.array_num_value(3) := p_source_18;
139428 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
139429 l_rec_acct_attrs.array_char_value(4) := p_source_15;
139430 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
139431 l_rec_acct_attrs.array_date_value(5) := p_source_19;
139432 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
139433 l_rec_acct_attrs.array_num_value(6) := p_source_20;
139434 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
139435 l_rec_acct_attrs.array_char_value(7) := p_source_21;
139436 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
139437 l_rec_acct_attrs.array_num_value(8) := p_source_22;
139438
139439 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
139440 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
139441
139442 ---------------------------------------------------------------------------------------------------------------
139443 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
139444 ---------------------------------------------------------------------------------------------------------------
139445 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
139446
139447 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
139448 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
139449
139450 IF xla_accounting_cache_pkg.GetValueChar
139451 (p_source_code => 'LEDGER_CATEGORY_CODE'
139452 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
139453 AND l_bflow_method_code = 'PRIOR_ENTRY'
139454 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
139455 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
139456 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
139457 )
139458 THEN
139459 xla_ae_lines_pkg.BflowUpgEntry
139460 (p_business_method_code => l_bflow_method_code
139461 ,p_business_class_code => l_bflow_class_code
139462 ,p_balance_type => l_balance_type_code);
139463 ELSE
139464 NULL;
139465 -- No business flow processing for business flow method of NONE.
139466 END IF;
139467
139468 --
139469 -- call analytical criteria
139470 --
139471
139472 --
139473 -- call description
139474 --
139475 -- No description or it is inherited.
139476 --
139477 -- call ADRs
139478 -- Bug 4922099
139479 --
139480 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
139481 (NVL(l_actual_upg_option, 'N') = 'O') OR
139482 (NVL(l_enc_upg_option, 'N') = 'O')
139483 )
139484 THEN
139485 NULL;
139486 --
139487 --
139488
139489 l_ccid := AcctDerRule_4(
139490 p_application_id => p_application_id
139491 , p_ae_header_id => l_ae_header_id
139492 , p_source_4 => p_source_4
139493 , x_transaction_coa_id => l_adr_transaction_coa_id
139494 , x_accounting_coa_id => l_adr_accounting_coa_id
139495 , x_value_type_code => l_adr_value_type_code
139496 , p_side => 'NA'
139497 );
139498
139499 xla_ae_lines_pkg.set_ccid(
139500 p_code_combination_id => l_ccid
139501 , p_value_type_code => l_adr_value_type_code
139502 , p_transaction_coa_id => l_adr_transaction_coa_id
139503 , p_accounting_coa_id => l_adr_accounting_coa_id
139504 , p_adr_code => 'CST_DEFAULT'
139505 , p_adr_type_code => 'S'
139506 , p_component_type => l_component_type
139507 , p_component_code => l_component_code
139508 , p_component_type_code => l_component_type_code
139509 , p_component_appl_id => l_component_appl_id
139510 , p_amb_context_code => l_amb_context_code
139511 , p_side => 'NA'
139512 );
139513
139514
139515 --
139516 --
139517 END IF;
139518 --
139519 -- Bug 4922099
139520 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
139521 (NVL(l_enc_upg_option, 'N') = 'O')
139522 ) AND
139523 (l_bflow_method_code = 'PRIOR_ENTRY')
139524 )
139525 THEN
139526 IF
139527 --
139528 1 = 2
139529 --
139530 THEN
139531 xla_accounting_err_pkg.build_message
139532 (p_appli_s_name => 'XLA'
139533 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
139534 ,p_token_1 => 'LINE_NUMBER'
139535 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
139536 ,p_token_2 => 'LINE_TYPE_NAME'
139537 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
139538 l_component_type
139539 ,l_component_code
139540 ,l_component_type_code
139541 ,l_component_appl_id
139542 ,l_amb_context_code
139543 ,l_entity_code
139544 ,l_event_class_code
139545 )
139546 ,p_token_3 => 'OWNER'
139547 ,p_value_3 => xla_lookups_pkg.get_meaning(
139548 p_lookup_type => 'XLA_OWNER_TYPE'
139549 ,p_lookup_code => l_component_type_code
139550 )
139551 ,p_token_4 => 'PRODUCT_NAME'
139552 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
139553 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
139554 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
139555 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
139556 ,p_ae_header_id => NULL
139557 );
139558
139559 IF (C_LEVEL_ERROR>= g_log_level) THEN
139560 trace
139561 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
139562 ,p_level => C_LEVEL_ERROR
139563 ,p_module => l_log_module);
139564 END IF;
139565 END IF;
139566 END IF;
139567 --
139568 --
139569 ------------------------------------------------------------------------------------------------
139570 -- 4219869 Business Flow
139571 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
139572 -- Prior Entry. Currently, the following code is always generated.
139573 ------------------------------------------------------------------------------------------------
139574 XLA_AE_LINES_PKG.ValidateCurrentLine;
139575
139576 ------------------------------------------------------------------------------------
139577 -- 4219869 Business Flow
139578 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
139579 ------------------------------------------------------------------------------------
139580 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139581
139582 ----------------------------------------------------------------------------------
139583 -- 4219869 Business Flow
139584 -- Update journal entry status -- Need to generate this within IF <condition>
139585 ----------------------------------------------------------------------------------
139586 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139587 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
139588 ,p_balance_type_code => l_balance_type_code
139589 );
139590
139591 -------------------------------------------------------------------------------------------
139592 -- 4262811 - Generate the Accrual Reversal lines
139593 -------------------------------------------------------------------------------------------
139594 BEGIN
139595 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
139596 (g_array_event(p_event_id).array_value_num('header_index'));
139597 IF l_acc_rev_flag IS NULL THEN
139598 l_acc_rev_flag := 'N';
139599 END IF;
139600 EXCEPTION
139601 WHEN OTHERS THEN
139602 l_acc_rev_flag := 'N';
139603 END;
139604 --
139605 IF (l_acc_rev_flag = 'Y') THEN
139606
139607 -- 4645092 ------------------------------------------------------------------------------
139608 -- To allow MPA report to determine if it should generate report process
139609 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
139610 ------------------------------------------------------------------------------------------
139611
139612 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
139613 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
139614 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
139615 -- call ADRs
139616 -- Bug 4922099
139617 --
139618 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
139619 (NVL(l_actual_upg_option, 'N') = 'O') OR
139620 (NVL(l_enc_upg_option, 'N') = 'O')
139621 )
139622 THEN
139623 NULL;
139624 --
139625 --
139626
139627 l_ccid := AcctDerRule_4(
139628 p_application_id => p_application_id
139629 , p_ae_header_id => l_ae_header_id
139630 , p_source_4 => p_source_4
139631 , x_transaction_coa_id => l_adr_transaction_coa_id
139632 , x_accounting_coa_id => l_adr_accounting_coa_id
139633 , x_value_type_code => l_adr_value_type_code
139634 , p_side => 'NA'
139635 );
139636
139637 xla_ae_lines_pkg.set_ccid(
139638 p_code_combination_id => l_ccid
139639 , p_value_type_code => l_adr_value_type_code
139640 , p_transaction_coa_id => l_adr_transaction_coa_id
139641 , p_accounting_coa_id => l_adr_accounting_coa_id
139642 , p_adr_code => 'CST_DEFAULT'
139643 , p_adr_type_code => 'S'
139644 , p_component_type => l_component_type
139645 , p_component_code => l_component_code
139646 , p_component_type_code => l_component_type_code
139647 , p_component_appl_id => l_component_appl_id
139648 , p_amb_context_code => l_amb_context_code
139649 , p_side => 'NA'
139650 );
139651
139652
139653 --
139654 --
139655 END IF;
139656
139657 --
139658 -- Update the line information that should be overwritten
139659 --
139660 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
139661 p_header_num => 1);
139662 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
139663
139664 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
139665
139666 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
139667 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
139668 END IF;
139669
139670 --
139671 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
139672 --
139673 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
139674 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
139675 ELSE
139676 ---------------------------------------------------------------------------------------------------
139677 -- 4262811a Switch Sign
139678 ---------------------------------------------------------------------------------------------------
139679 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
139680 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139681 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139682 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
139683 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139684 -- 5132302
139685 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
139686 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
139687
139688 END IF;
139689
139690 -- 4955764
139691 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139692 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
139693
139694
139695 XLA_AE_LINES_PKG.ValidateCurrentLine;
139696 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
139697
139698 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
139699 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
139700 ,p_balance_type_code => l_balance_type_code);
139701
139702 END IF;
139703
139704 -----------------------------------------------------------------------------------------
139705 -- 4262811 Multiperiod Accounting
139706 -----------------------------------------------------------------------------------------
139707 -- No MPA option is assigned.
139708
139709
139710 END IF;
139711 END IF;
139712 --
139713
139714 --
139715 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139716 trace
139717 (p_msg => 'END of AcctLineType_252'
139718 ,p_level => C_LEVEL_PROCEDURE
139719 ,p_module => l_log_module);
139720 END IF;
139721 --
139722 EXCEPTION
139723 WHEN xla_exceptions_pkg.application_exception THEN
139724 RAISE;
139725 WHEN OTHERS THEN
139726 xla_exceptions_pkg.raise_message
139727 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_252');
139728 END AcctLineType_252;
139729 --
139730
139731 ---------------------------------------
139732 --
139733 -- PRIVATE FUNCTION
139734 -- AcctLineType_253
139735 --
139736 ---------------------------------------
139737 PROCEDURE AcctLineType_253 (
139738 p_application_id IN NUMBER
139739 ,p_event_id IN NUMBER
139740 ,p_calculate_acctd_flag IN VARCHAR2
139741 ,p_calculate_g_l_flag IN VARCHAR2
139742 ,p_actual_flag IN OUT VARCHAR2
139743 ,p_balance_type_code OUT VARCHAR2
139744 ,p_gain_or_loss_ref OUT VARCHAR2
139745
139746 --Cost Management Default Account
139747 , p_source_4 IN NUMBER
139748 --DISTRIBUTION_IDENTIFIER
139749 , p_source_11 IN NUMBER
139750 --Distribution Type
139751 , p_source_12 IN VARCHAR2
139752 , p_source_12_meaning IN VARCHAR2
139753 --Entered Currency Code
139754 , p_source_15 IN VARCHAR2
139755 --Entered Amount
139756 , p_source_18 IN NUMBER
139757 --Currency Conversion Date
139758 , p_source_19 IN DATE
139759 --Currency Conversion Rate
139760 , p_source_20 IN NUMBER
139761 --Currency Conversion Type
139762 , p_source_21 IN VARCHAR2
139763 --Accounted Amount
139764 , p_source_22 IN NUMBER
139765 --Accounting Line Type
139766 , p_source_24 IN NUMBER
139767 )
139768 IS
139769
139770 l_component_type VARCHAR2(80);
139771 l_component_code VARCHAR2(30);
139772 l_component_type_code VARCHAR2(1);
139773 l_component_appl_id INTEGER;
139774 l_amb_context_code VARCHAR2(30);
139775 l_entity_code VARCHAR2(30);
139776 l_event_class_code VARCHAR2(30);
139777 l_ae_header_id NUMBER;
139778 l_event_type_code VARCHAR2(30);
139779 l_line_definition_code VARCHAR2(30);
139780 l_line_definition_owner_code VARCHAR2(1);
139781 --
139782 -- adr variables
139783 l_segment VARCHAR2(30);
139784 l_ccid NUMBER;
139785 l_adr_transaction_coa_id NUMBER;
139786 l_adr_accounting_coa_id NUMBER;
139787 l_adr_flexfield_segment_code VARCHAR2(30);
139788 l_adr_flex_value_set_id NUMBER;
139789 l_adr_value_type_code VARCHAR2(30);
139790 l_adr_value_combination_id NUMBER;
139791 l_adr_value_segment_code VARCHAR2(30);
139792
139793 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
139794 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
139795 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
139796 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
139797
139798 -- 4262811 Variables ------------------------------------------------------------------------------------------
139799 l_entered_amt_idx NUMBER;
139800 l_accted_amt_idx NUMBER;
139801 l_acc_rev_flag VARCHAR2(1);
139802 l_accrual_line_num NUMBER;
139803 l_tmp_amt NUMBER;
139804 l_acc_rev_natural_side_code VARCHAR2(1);
139805
139806 l_num_entries NUMBER;
139807 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
139808 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
139809 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
139810 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
139811 l_recog_line_1 NUMBER;
139812 l_recog_line_2 NUMBER;
139813
139814 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
139815 l_bflow_applied_to_amt NUMBER; -- 5132302
139816 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
139817
139818 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
139819
139820 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
139821 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
139822
139823 ---------------------------------------------------------------------------------------------------------------
139824
139825
139826 --
139827 -- bulk performance
139828 --
139829 l_balance_type_code VARCHAR2(1);
139830 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
139831 l_log_module VARCHAR2(240);
139832
139833 --
139834 -- Upgrade strategy
139835 --
139836 l_actual_upg_option VARCHAR2(1);
139837 l_enc_upg_option VARCHAR2(1);
139838
139839 --
139840 BEGIN
139841 --
139842 IF g_log_enabled THEN
139843 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_253';
139844 END IF;
139845 --
139846 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
139847
139848 trace
139849 (p_msg => 'BEGIN of AcctLineType_253'
139850 ,p_level => C_LEVEL_PROCEDURE
139851 ,p_module => l_log_module);
139852
139853 END IF;
139854 --
139855 l_component_type := 'AMB_JLT';
139856 l_component_code := 'WIP_VALUATION';
139857 l_component_type_code := 'S';
139858 l_component_appl_id := 707;
139859 l_amb_context_code := 'DEFAULT';
139860 l_entity_code := 'MTL_ACCOUNTING_EVENTS';
139861 l_event_class_code := 'WIP_MTL';
139862 l_event_type_code := 'WIP_MTL_ALL';
139863 l_line_definition_owner_code := 'S';
139864 l_line_definition_code := 'WIP_MTL';
139865 --
139866 l_balance_type_code := 'A';
139867 l_segment := NULL;
139868 l_ccid := NULL;
139869 l_adr_transaction_coa_id := NULL;
139870 l_adr_accounting_coa_id := NULL;
139871 l_adr_flexfield_segment_code := NULL;
139872 l_adr_flex_value_set_id := NULL;
139873 l_adr_value_type_code := NULL;
139874 l_adr_value_combination_id := NULL;
139875 l_adr_value_segment_code := NULL;
139876
139877 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
139878 l_bflow_class_code := ''; -- 4219869 Business Flow
139879 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
139880 l_budgetary_control_flag := 'N';
139881
139882 l_bflow_applied_to_amt_idx := NULL; -- 5132302
139883 l_bflow_applied_to_amt := NULL; -- 5132302
139884 l_entered_amt_idx := NULL; -- 4262811
139885 l_accted_amt_idx := NULL; -- 4262811
139886 l_acc_rev_flag := NULL; -- 4262811
139887 l_accrual_line_num := NULL; -- 4262811
139888 l_tmp_amt := NULL; -- 4262811
139889 --
139890
139891 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
139892 l_balance_type_code <> 'B' THEN
139893 IF NVL(p_source_24,9E125) = 7
139894 THEN
139895
139896 --
139897 XLA_AE_LINES_PKG.SetNewLine;
139898
139899 p_balance_type_code := l_balance_type_code;
139900 -- set the flag so later we will know whether the gain loss line needs to be created
139901
139902 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
139903 p_actual_flag :='A';
139904 END IF;
139905
139906 --
139907 -- bulk performance
139908 --
139909 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
139910 p_header_num => 0); -- 4262811
139911 --
139912 -- set accounting line options
139913 --
139914 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
139915 p_natural_side_code => 'D'
139916 , p_gain_or_loss_flag => 'N'
139917 , p_gl_transfer_mode_code => 'S'
139918 , p_acct_entry_type_code => 'A'
139919 , p_switch_side_flag => 'Y'
139920 , p_merge_duplicate_code => 'N'
139921 );
139922 --
139923 l_acc_rev_natural_side_code := 'C'; -- 4262811
139924 --
139925 --
139926 -- set accounting line type info
139927 --
139928 xla_ae_lines_pkg.SetAcctLineType
139929 (p_component_type => l_component_type
139930 ,p_event_type_code => l_event_type_code
139931 ,p_line_definition_owner_code => l_line_definition_owner_code
139932 ,p_line_definition_code => l_line_definition_code
139933 ,p_accounting_line_code => l_component_code
139934 ,p_accounting_line_type_code => l_component_type_code
139935 ,p_accounting_line_appl_id => l_component_appl_id
139936 ,p_amb_context_code => l_amb_context_code
139937 ,p_entity_code => l_entity_code
139938 ,p_event_class_code => l_event_class_code);
139939 --
139940 -- set accounting class
139941 --
139942 xla_ae_lines_pkg.SetAcctClass(
139943 p_accounting_class_code => 'WIP_VALUATION'
139944 , p_ae_header_id => l_ae_header_id
139945 );
139946
139947 --
139948 -- set rounding class
139949 --
139950 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
139951 'WIP_VALUATION';
139952
139953 --
139954 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
139955 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
139956 --
139957 -- bulk performance
139958 --
139959 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
139960
139961 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
139962 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
139963
139964 -- 4955764
139965 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
139966 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
139967
139968 -- 4458381 Public Sector Enh
139969
139970 --
139971 -- set accounting attributes for the line type
139972 --
139973 l_entered_amt_idx := 3;
139974 l_accted_amt_idx := 8;
139975 l_bflow_applied_to_amt_idx := NULL; -- 5132302
139976 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
139977 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
139978 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
139979 l_rec_acct_attrs.array_char_value(2) := p_source_12;
139980 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
139981 l_rec_acct_attrs.array_num_value(3) := p_source_18;
139982 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
139983 l_rec_acct_attrs.array_char_value(4) := p_source_15;
139984 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
139985 l_rec_acct_attrs.array_date_value(5) := p_source_19;
139986 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
139987 l_rec_acct_attrs.array_num_value(6) := p_source_20;
139988 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
139989 l_rec_acct_attrs.array_char_value(7) := p_source_21;
139990 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
139991 l_rec_acct_attrs.array_num_value(8) := p_source_22;
139992
139993 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
139994 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
139995
139996 ---------------------------------------------------------------------------------------------------------------
139997 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
139998 ---------------------------------------------------------------------------------------------------------------
139999 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
140000
140001 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140002 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140003
140004 IF xla_accounting_cache_pkg.GetValueChar
140005 (p_source_code => 'LEDGER_CATEGORY_CODE'
140006 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
140007 AND l_bflow_method_code = 'PRIOR_ENTRY'
140008 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
140009 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
140010 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
140011 )
140012 THEN
140013 xla_ae_lines_pkg.BflowUpgEntry
140014 (p_business_method_code => l_bflow_method_code
140015 ,p_business_class_code => l_bflow_class_code
140016 ,p_balance_type => l_balance_type_code);
140017 ELSE
140018 NULL;
140019 -- No business flow processing for business flow method of NONE.
140020 END IF;
140021
140022 --
140023 -- call analytical criteria
140024 --
140025
140026 --
140027 -- call description
140028 --
140029 -- No description or it is inherited.
140030 --
140031 -- call ADRs
140032 -- Bug 4922099
140033 --
140034 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140035 (NVL(l_actual_upg_option, 'N') = 'O') OR
140036 (NVL(l_enc_upg_option, 'N') = 'O')
140037 )
140038 THEN
140039 NULL;
140040 --
140041 --
140042
140043 l_ccid := AcctDerRule_4(
140044 p_application_id => p_application_id
140045 , p_ae_header_id => l_ae_header_id
140046 , p_source_4 => p_source_4
140047 , x_transaction_coa_id => l_adr_transaction_coa_id
140048 , x_accounting_coa_id => l_adr_accounting_coa_id
140049 , x_value_type_code => l_adr_value_type_code
140050 , p_side => 'NA'
140051 );
140052
140053 xla_ae_lines_pkg.set_ccid(
140054 p_code_combination_id => l_ccid
140055 , p_value_type_code => l_adr_value_type_code
140056 , p_transaction_coa_id => l_adr_transaction_coa_id
140057 , p_accounting_coa_id => l_adr_accounting_coa_id
140058 , p_adr_code => 'CST_DEFAULT'
140059 , p_adr_type_code => 'S'
140060 , p_component_type => l_component_type
140061 , p_component_code => l_component_code
140062 , p_component_type_code => l_component_type_code
140063 , p_component_appl_id => l_component_appl_id
140064 , p_amb_context_code => l_amb_context_code
140065 , p_side => 'NA'
140066 );
140067
140068
140069 --
140070 --
140071 END IF;
140072 --
140073 -- Bug 4922099
140074 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
140075 (NVL(l_enc_upg_option, 'N') = 'O')
140076 ) AND
140077 (l_bflow_method_code = 'PRIOR_ENTRY')
140078 )
140079 THEN
140080 IF
140081 --
140082 1 = 2
140083 --
140084 THEN
140085 xla_accounting_err_pkg.build_message
140086 (p_appli_s_name => 'XLA'
140087 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140088 ,p_token_1 => 'LINE_NUMBER'
140089 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
140090 ,p_token_2 => 'LINE_TYPE_NAME'
140091 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
140092 l_component_type
140093 ,l_component_code
140094 ,l_component_type_code
140095 ,l_component_appl_id
140096 ,l_amb_context_code
140097 ,l_entity_code
140098 ,l_event_class_code
140099 )
140100 ,p_token_3 => 'OWNER'
140101 ,p_value_3 => xla_lookups_pkg.get_meaning(
140102 p_lookup_type => 'XLA_OWNER_TYPE'
140103 ,p_lookup_code => l_component_type_code
140104 )
140105 ,p_token_4 => 'PRODUCT_NAME'
140106 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
140107 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
140108 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
140109 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
140110 ,p_ae_header_id => NULL
140111 );
140112
140113 IF (C_LEVEL_ERROR>= g_log_level) THEN
140114 trace
140115 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140116 ,p_level => C_LEVEL_ERROR
140117 ,p_module => l_log_module);
140118 END IF;
140119 END IF;
140120 END IF;
140121 --
140122 --
140123 ------------------------------------------------------------------------------------------------
140124 -- 4219869 Business Flow
140125 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
140126 -- Prior Entry. Currently, the following code is always generated.
140127 ------------------------------------------------------------------------------------------------
140128 XLA_AE_LINES_PKG.ValidateCurrentLine;
140129
140130 ------------------------------------------------------------------------------------
140131 -- 4219869 Business Flow
140132 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
140133 ------------------------------------------------------------------------------------
140134 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140135
140136 ----------------------------------------------------------------------------------
140137 -- 4219869 Business Flow
140138 -- Update journal entry status -- Need to generate this within IF <condition>
140139 ----------------------------------------------------------------------------------
140140 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140141 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
140142 ,p_balance_type_code => l_balance_type_code
140143 );
140144
140145 -------------------------------------------------------------------------------------------
140146 -- 4262811 - Generate the Accrual Reversal lines
140147 -------------------------------------------------------------------------------------------
140148 BEGIN
140149 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
140150 (g_array_event(p_event_id).array_value_num('header_index'));
140151 IF l_acc_rev_flag IS NULL THEN
140152 l_acc_rev_flag := 'N';
140153 END IF;
140154 EXCEPTION
140155 WHEN OTHERS THEN
140156 l_acc_rev_flag := 'N';
140157 END;
140158 --
140159 IF (l_acc_rev_flag = 'Y') THEN
140160
140161 -- 4645092 ------------------------------------------------------------------------------
140162 -- To allow MPA report to determine if it should generate report process
140163 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
140164 ------------------------------------------------------------------------------------------
140165
140166 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
140167 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
140168 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
140169 -- call ADRs
140170 -- Bug 4922099
140171 --
140172 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140173 (NVL(l_actual_upg_option, 'N') = 'O') OR
140174 (NVL(l_enc_upg_option, 'N') = 'O')
140175 )
140176 THEN
140177 NULL;
140178 --
140179 --
140180
140181 l_ccid := AcctDerRule_4(
140182 p_application_id => p_application_id
140183 , p_ae_header_id => l_ae_header_id
140184 , p_source_4 => p_source_4
140185 , x_transaction_coa_id => l_adr_transaction_coa_id
140186 , x_accounting_coa_id => l_adr_accounting_coa_id
140187 , x_value_type_code => l_adr_value_type_code
140188 , p_side => 'NA'
140189 );
140190
140191 xla_ae_lines_pkg.set_ccid(
140192 p_code_combination_id => l_ccid
140193 , p_value_type_code => l_adr_value_type_code
140194 , p_transaction_coa_id => l_adr_transaction_coa_id
140195 , p_accounting_coa_id => l_adr_accounting_coa_id
140196 , p_adr_code => 'CST_DEFAULT'
140197 , p_adr_type_code => 'S'
140198 , p_component_type => l_component_type
140199 , p_component_code => l_component_code
140200 , p_component_type_code => l_component_type_code
140201 , p_component_appl_id => l_component_appl_id
140202 , p_amb_context_code => l_amb_context_code
140203 , p_side => 'NA'
140204 );
140205
140206
140207 --
140208 --
140209 END IF;
140210
140211 --
140212 -- Update the line information that should be overwritten
140213 --
140214 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
140215 p_header_num => 1);
140216 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
140217
140218 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
140219
140220 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
140221 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
140222 END IF;
140223
140224 --
140225 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
140226 --
140227 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
140228 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
140229 ELSE
140230 ---------------------------------------------------------------------------------------------------
140231 -- 4262811a Switch Sign
140232 ---------------------------------------------------------------------------------------------------
140233 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
140234 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140235 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140236 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140237 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140238 -- 5132302
140239 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
140240 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140241
140242 END IF;
140243
140244 -- 4955764
140245 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
140246 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
140247
140248
140249 XLA_AE_LINES_PKG.ValidateCurrentLine;
140250 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140251
140252 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140253 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
140254 ,p_balance_type_code => l_balance_type_code);
140255
140256 END IF;
140257
140258 -----------------------------------------------------------------------------------------
140259 -- 4262811 Multiperiod Accounting
140260 -----------------------------------------------------------------------------------------
140261 -- No MPA option is assigned.
140262
140263
140264 END IF;
140265 END IF;
140266 --
140267
140268 --
140269 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140270 trace
140271 (p_msg => 'END of AcctLineType_253'
140272 ,p_level => C_LEVEL_PROCEDURE
140273 ,p_module => l_log_module);
140274 END IF;
140275 --
140276 EXCEPTION
140277 WHEN xla_exceptions_pkg.application_exception THEN
140278 RAISE;
140279 WHEN OTHERS THEN
140280 xla_exceptions_pkg.raise_message
140281 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_253');
140282 END AcctLineType_253;
140283 --
140284
140285 ---------------------------------------
140286 --
140287 -- PRIVATE FUNCTION
140288 -- AcctLineType_254
140289 --
140290 ---------------------------------------
140291 PROCEDURE AcctLineType_254 (
140292 p_application_id IN NUMBER
140293 ,p_event_id IN NUMBER
140294 ,p_calculate_acctd_flag IN VARCHAR2
140295 ,p_calculate_g_l_flag IN VARCHAR2
140296 ,p_actual_flag IN OUT VARCHAR2
140297 ,p_balance_type_code OUT VARCHAR2
140298 ,p_gain_or_loss_ref OUT VARCHAR2
140299
140300 --Cost Management Default Account
140301 , p_source_4 IN NUMBER
140302 --DISTRIBUTION_IDENTIFIER
140303 , p_source_11 IN NUMBER
140304 --Distribution Type
140305 , p_source_12 IN VARCHAR2
140306 , p_source_12_meaning IN VARCHAR2
140307 --Entered Currency Code
140308 , p_source_15 IN VARCHAR2
140309 --Entered Amount
140310 , p_source_18 IN NUMBER
140311 --Currency Conversion Date
140312 , p_source_19 IN DATE
140313 --Currency Conversion Rate
140314 , p_source_20 IN NUMBER
140315 --Accounted Amount
140316 , p_source_22 IN NUMBER
140317 --Accounting Line Type
140318 , p_source_24 IN NUMBER
140319 )
140320 IS
140321
140322 l_component_type VARCHAR2(80);
140323 l_component_code VARCHAR2(30);
140324 l_component_type_code VARCHAR2(1);
140325 l_component_appl_id INTEGER;
140326 l_amb_context_code VARCHAR2(30);
140327 l_entity_code VARCHAR2(30);
140328 l_event_class_code VARCHAR2(30);
140329 l_ae_header_id NUMBER;
140330 l_event_type_code VARCHAR2(30);
140331 l_line_definition_code VARCHAR2(30);
140332 l_line_definition_owner_code VARCHAR2(1);
140333 --
140334 -- adr variables
140335 l_segment VARCHAR2(30);
140336 l_ccid NUMBER;
140337 l_adr_transaction_coa_id NUMBER;
140338 l_adr_accounting_coa_id NUMBER;
140339 l_adr_flexfield_segment_code VARCHAR2(30);
140340 l_adr_flex_value_set_id NUMBER;
140341 l_adr_value_type_code VARCHAR2(30);
140342 l_adr_value_combination_id NUMBER;
140343 l_adr_value_segment_code VARCHAR2(30);
140344
140345 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
140346 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
140347 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
140348 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
140349
140350 -- 4262811 Variables ------------------------------------------------------------------------------------------
140351 l_entered_amt_idx NUMBER;
140352 l_accted_amt_idx NUMBER;
140353 l_acc_rev_flag VARCHAR2(1);
140354 l_accrual_line_num NUMBER;
140355 l_tmp_amt NUMBER;
140356 l_acc_rev_natural_side_code VARCHAR2(1);
140357
140358 l_num_entries NUMBER;
140359 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
140360 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
140361 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
140362 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
140363 l_recog_line_1 NUMBER;
140364 l_recog_line_2 NUMBER;
140365
140366 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
140367 l_bflow_applied_to_amt NUMBER; -- 5132302
140368 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
140369
140370 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
140371
140372 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
140373 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
140374
140375 ---------------------------------------------------------------------------------------------------------------
140376
140377
140378 --
140379 -- bulk performance
140380 --
140381 l_balance_type_code VARCHAR2(1);
140382 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
140383 l_log_module VARCHAR2(240);
140384
140385 --
140386 -- Upgrade strategy
140387 --
140388 l_actual_upg_option VARCHAR2(1);
140389 l_enc_upg_option VARCHAR2(1);
140390
140391 --
140392 BEGIN
140393 --
140394 IF g_log_enabled THEN
140395 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_254';
140396 END IF;
140397 --
140398 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140399
140400 trace
140401 (p_msg => 'BEGIN of AcctLineType_254'
140402 ,p_level => C_LEVEL_PROCEDURE
140403 ,p_module => l_log_module);
140404
140405 END IF;
140406 --
140407 l_component_type := 'AMB_JLT';
140408 l_component_code := 'WIP_VALUATION';
140409 l_component_type_code := 'S';
140410 l_component_appl_id := 707;
140411 l_amb_context_code := 'DEFAULT';
140412 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
140413 l_event_class_code := 'OSP';
140414 l_event_type_code := 'OSP_ALL';
140415 l_line_definition_owner_code := 'S';
140416 l_line_definition_code := 'OUTSIDE_PROCESSING';
140417 --
140418 l_balance_type_code := 'A';
140419 l_segment := NULL;
140420 l_ccid := NULL;
140421 l_adr_transaction_coa_id := NULL;
140422 l_adr_accounting_coa_id := NULL;
140423 l_adr_flexfield_segment_code := NULL;
140424 l_adr_flex_value_set_id := NULL;
140425 l_adr_value_type_code := NULL;
140426 l_adr_value_combination_id := NULL;
140427 l_adr_value_segment_code := NULL;
140428
140429 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
140430 l_bflow_class_code := ''; -- 4219869 Business Flow
140431 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
140432 l_budgetary_control_flag := 'N';
140433
140434 l_bflow_applied_to_amt_idx := NULL; -- 5132302
140435 l_bflow_applied_to_amt := NULL; -- 5132302
140436 l_entered_amt_idx := NULL; -- 4262811
140437 l_accted_amt_idx := NULL; -- 4262811
140438 l_acc_rev_flag := NULL; -- 4262811
140439 l_accrual_line_num := NULL; -- 4262811
140440 l_tmp_amt := NULL; -- 4262811
140441 --
140442
140443 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
140444 l_balance_type_code <> 'B' THEN
140445 IF NVL(p_source_24,9E125) = 7
140446 THEN
140447
140448 --
140449 XLA_AE_LINES_PKG.SetNewLine;
140450
140451 p_balance_type_code := l_balance_type_code;
140452 -- set the flag so later we will know whether the gain loss line needs to be created
140453
140454 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
140455 p_actual_flag :='A';
140456 END IF;
140457
140458 --
140459 -- bulk performance
140460 --
140461 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
140462 p_header_num => 0); -- 4262811
140463 --
140464 -- set accounting line options
140465 --
140466 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
140467 p_natural_side_code => 'D'
140468 , p_gain_or_loss_flag => 'N'
140469 , p_gl_transfer_mode_code => 'S'
140470 , p_acct_entry_type_code => 'A'
140471 , p_switch_side_flag => 'Y'
140472 , p_merge_duplicate_code => 'N'
140473 );
140474 --
140475 l_acc_rev_natural_side_code := 'C'; -- 4262811
140476 --
140477 --
140478 -- set accounting line type info
140479 --
140480 xla_ae_lines_pkg.SetAcctLineType
140481 (p_component_type => l_component_type
140482 ,p_event_type_code => l_event_type_code
140483 ,p_line_definition_owner_code => l_line_definition_owner_code
140484 ,p_line_definition_code => l_line_definition_code
140485 ,p_accounting_line_code => l_component_code
140486 ,p_accounting_line_type_code => l_component_type_code
140487 ,p_accounting_line_appl_id => l_component_appl_id
140488 ,p_amb_context_code => l_amb_context_code
140489 ,p_entity_code => l_entity_code
140490 ,p_event_class_code => l_event_class_code);
140491 --
140492 -- set accounting class
140493 --
140494 xla_ae_lines_pkg.SetAcctClass(
140495 p_accounting_class_code => 'WIP_VALUATION'
140496 , p_ae_header_id => l_ae_header_id
140497 );
140498
140499 --
140500 -- set rounding class
140501 --
140502 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
140503 'WIP_VALUATION';
140504
140505 --
140506 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
140507 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
140508 --
140509 -- bulk performance
140510 --
140511 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
140512
140513 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
140514 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
140515
140516 -- 4955764
140517 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
140518 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
140519
140520 -- 4458381 Public Sector Enh
140521
140522 --
140523 -- set accounting attributes for the line type
140524 --
140525 l_entered_amt_idx := 3;
140526 l_accted_amt_idx := 8;
140527 l_bflow_applied_to_amt_idx := NULL; -- 5132302
140528 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
140529 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
140530 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
140531 l_rec_acct_attrs.array_char_value(2) := p_source_12;
140532 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
140533 l_rec_acct_attrs.array_num_value(3) := p_source_18;
140534 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
140535 l_rec_acct_attrs.array_char_value(4) := p_source_15;
140536 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
140537 l_rec_acct_attrs.array_date_value(5) := p_source_19;
140538 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
140539 l_rec_acct_attrs.array_num_value(6) := p_source_20;
140540 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
140541 l_rec_acct_attrs.array_num_value(7) := to_char(p_source_20);
140542 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
140543 l_rec_acct_attrs.array_num_value(8) := p_source_22;
140544
140545 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
140546 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
140547
140548 ---------------------------------------------------------------------------------------------------------------
140549 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
140550 ---------------------------------------------------------------------------------------------------------------
140551 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
140552
140553 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140554 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
140555
140556 IF xla_accounting_cache_pkg.GetValueChar
140557 (p_source_code => 'LEDGER_CATEGORY_CODE'
140558 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
140559 AND l_bflow_method_code = 'PRIOR_ENTRY'
140560 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
140561 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
140562 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
140563 )
140564 THEN
140565 xla_ae_lines_pkg.BflowUpgEntry
140566 (p_business_method_code => l_bflow_method_code
140567 ,p_business_class_code => l_bflow_class_code
140568 ,p_balance_type => l_balance_type_code);
140569 ELSE
140570 NULL;
140571 -- No business flow processing for business flow method of NONE.
140572 END IF;
140573
140574 --
140575 -- call analytical criteria
140576 --
140577
140578 --
140579 -- call description
140580 --
140581 -- No description or it is inherited.
140582 --
140583 -- call ADRs
140584 -- Bug 4922099
140585 --
140586 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140587 (NVL(l_actual_upg_option, 'N') = 'O') OR
140588 (NVL(l_enc_upg_option, 'N') = 'O')
140589 )
140590 THEN
140591 NULL;
140592 --
140593 --
140594
140595 l_ccid := AcctDerRule_4(
140596 p_application_id => p_application_id
140597 , p_ae_header_id => l_ae_header_id
140598 , p_source_4 => p_source_4
140599 , x_transaction_coa_id => l_adr_transaction_coa_id
140600 , x_accounting_coa_id => l_adr_accounting_coa_id
140601 , x_value_type_code => l_adr_value_type_code
140602 , p_side => 'NA'
140603 );
140604
140605 xla_ae_lines_pkg.set_ccid(
140606 p_code_combination_id => l_ccid
140607 , p_value_type_code => l_adr_value_type_code
140608 , p_transaction_coa_id => l_adr_transaction_coa_id
140609 , p_accounting_coa_id => l_adr_accounting_coa_id
140610 , p_adr_code => 'CST_DEFAULT'
140611 , p_adr_type_code => 'S'
140612 , p_component_type => l_component_type
140613 , p_component_code => l_component_code
140614 , p_component_type_code => l_component_type_code
140615 , p_component_appl_id => l_component_appl_id
140616 , p_amb_context_code => l_amb_context_code
140617 , p_side => 'NA'
140618 );
140619
140620
140621 --
140622 --
140623 END IF;
140624 --
140625 -- Bug 4922099
140626 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
140627 (NVL(l_enc_upg_option, 'N') = 'O')
140628 ) AND
140629 (l_bflow_method_code = 'PRIOR_ENTRY')
140630 )
140631 THEN
140632 IF
140633 --
140634 1 = 2
140635 --
140636 THEN
140637 xla_accounting_err_pkg.build_message
140638 (p_appli_s_name => 'XLA'
140639 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140640 ,p_token_1 => 'LINE_NUMBER'
140641 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
140642 ,p_token_2 => 'LINE_TYPE_NAME'
140643 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
140644 l_component_type
140645 ,l_component_code
140646 ,l_component_type_code
140647 ,l_component_appl_id
140648 ,l_amb_context_code
140649 ,l_entity_code
140650 ,l_event_class_code
140651 )
140652 ,p_token_3 => 'OWNER'
140653 ,p_value_3 => xla_lookups_pkg.get_meaning(
140654 p_lookup_type => 'XLA_OWNER_TYPE'
140655 ,p_lookup_code => l_component_type_code
140656 )
140657 ,p_token_4 => 'PRODUCT_NAME'
140658 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
140659 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
140660 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
140661 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
140662 ,p_ae_header_id => NULL
140663 );
140664
140665 IF (C_LEVEL_ERROR>= g_log_level) THEN
140666 trace
140667 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
140668 ,p_level => C_LEVEL_ERROR
140669 ,p_module => l_log_module);
140670 END IF;
140671 END IF;
140672 END IF;
140673 --
140674 --
140675 ------------------------------------------------------------------------------------------------
140676 -- 4219869 Business Flow
140677 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
140678 -- Prior Entry. Currently, the following code is always generated.
140679 ------------------------------------------------------------------------------------------------
140680 XLA_AE_LINES_PKG.ValidateCurrentLine;
140681
140682 ------------------------------------------------------------------------------------
140683 -- 4219869 Business Flow
140684 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
140685 ------------------------------------------------------------------------------------
140686 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140687
140688 ----------------------------------------------------------------------------------
140689 -- 4219869 Business Flow
140690 -- Update journal entry status -- Need to generate this within IF <condition>
140691 ----------------------------------------------------------------------------------
140692 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140693 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
140694 ,p_balance_type_code => l_balance_type_code
140695 );
140696
140697 -------------------------------------------------------------------------------------------
140698 -- 4262811 - Generate the Accrual Reversal lines
140699 -------------------------------------------------------------------------------------------
140700 BEGIN
140701 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
140702 (g_array_event(p_event_id).array_value_num('header_index'));
140703 IF l_acc_rev_flag IS NULL THEN
140704 l_acc_rev_flag := 'N';
140705 END IF;
140706 EXCEPTION
140707 WHEN OTHERS THEN
140708 l_acc_rev_flag := 'N';
140709 END;
140710 --
140711 IF (l_acc_rev_flag = 'Y') THEN
140712
140713 -- 4645092 ------------------------------------------------------------------------------
140714 -- To allow MPA report to determine if it should generate report process
140715 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
140716 ------------------------------------------------------------------------------------------
140717
140718 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
140719 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
140720 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
140721 -- call ADRs
140722 -- Bug 4922099
140723 --
140724 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
140725 (NVL(l_actual_upg_option, 'N') = 'O') OR
140726 (NVL(l_enc_upg_option, 'N') = 'O')
140727 )
140728 THEN
140729 NULL;
140730 --
140731 --
140732
140733 l_ccid := AcctDerRule_4(
140734 p_application_id => p_application_id
140735 , p_ae_header_id => l_ae_header_id
140736 , p_source_4 => p_source_4
140737 , x_transaction_coa_id => l_adr_transaction_coa_id
140738 , x_accounting_coa_id => l_adr_accounting_coa_id
140739 , x_value_type_code => l_adr_value_type_code
140740 , p_side => 'NA'
140741 );
140742
140743 xla_ae_lines_pkg.set_ccid(
140744 p_code_combination_id => l_ccid
140745 , p_value_type_code => l_adr_value_type_code
140746 , p_transaction_coa_id => l_adr_transaction_coa_id
140747 , p_accounting_coa_id => l_adr_accounting_coa_id
140748 , p_adr_code => 'CST_DEFAULT'
140749 , p_adr_type_code => 'S'
140750 , p_component_type => l_component_type
140751 , p_component_code => l_component_code
140752 , p_component_type_code => l_component_type_code
140753 , p_component_appl_id => l_component_appl_id
140754 , p_amb_context_code => l_amb_context_code
140755 , p_side => 'NA'
140756 );
140757
140758
140759 --
140760 --
140761 END IF;
140762
140763 --
140764 -- Update the line information that should be overwritten
140765 --
140766 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
140767 p_header_num => 1);
140768 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
140769
140770 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
140771
140772 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
140773 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
140774 END IF;
140775
140776 --
140777 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
140778 --
140779 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
140780 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
140781 ELSE
140782 ---------------------------------------------------------------------------------------------------
140783 -- 4262811a Switch Sign
140784 ---------------------------------------------------------------------------------------------------
140785 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
140786 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140787 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140788 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
140789 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140790 -- 5132302
140791 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
140792 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
140793
140794 END IF;
140795
140796 -- 4955764
140797 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
140798 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
140799
140800
140801 XLA_AE_LINES_PKG.ValidateCurrentLine;
140802 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
140803
140804 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
140805 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
140806 ,p_balance_type_code => l_balance_type_code);
140807
140808 END IF;
140809
140810 -----------------------------------------------------------------------------------------
140811 -- 4262811 Multiperiod Accounting
140812 -----------------------------------------------------------------------------------------
140813 -- No MPA option is assigned.
140814
140815
140816 END IF;
140817 END IF;
140818 --
140819
140820 --
140821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140822 trace
140823 (p_msg => 'END of AcctLineType_254'
140824 ,p_level => C_LEVEL_PROCEDURE
140825 ,p_module => l_log_module);
140826 END IF;
140827 --
140828 EXCEPTION
140829 WHEN xla_exceptions_pkg.application_exception THEN
140830 RAISE;
140831 WHEN OTHERS THEN
140832 xla_exceptions_pkg.raise_message
140833 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_254');
140834 END AcctLineType_254;
140835 --
140836
140837 ---------------------------------------
140838 --
140839 -- PRIVATE FUNCTION
140840 -- AcctLineType_255
140841 --
140842 ---------------------------------------
140843 PROCEDURE AcctLineType_255 (
140844 p_application_id IN NUMBER
140845 ,p_event_id IN NUMBER
140846 ,p_calculate_acctd_flag IN VARCHAR2
140847 ,p_calculate_g_l_flag IN VARCHAR2
140848 ,p_actual_flag IN OUT VARCHAR2
140849 ,p_balance_type_code OUT VARCHAR2
140850 ,p_gain_or_loss_ref OUT VARCHAR2
140851
140852 --Cost Management Default Account
140853 , p_source_4 IN NUMBER
140854 --DISTRIBUTION_IDENTIFIER
140855 , p_source_11 IN NUMBER
140856 --Distribution Type
140857 , p_source_12 IN VARCHAR2
140858 , p_source_12_meaning IN VARCHAR2
140859 --Entered Currency Code
140860 , p_source_15 IN VARCHAR2
140861 --Entered Amount
140862 , p_source_18 IN NUMBER
140863 --Currency Conversion Date
140864 , p_source_19 IN DATE
140865 --Currency Conversion Rate
140866 , p_source_20 IN NUMBER
140867 --Currency Conversion Type
140868 , p_source_21 IN VARCHAR2
140869 --Accounted Amount
140870 , p_source_22 IN NUMBER
140871 --Accounting Line Type
140872 , p_source_24 IN NUMBER
140873 )
140874 IS
140875
140876 l_component_type VARCHAR2(80);
140877 l_component_code VARCHAR2(30);
140878 l_component_type_code VARCHAR2(1);
140879 l_component_appl_id INTEGER;
140880 l_amb_context_code VARCHAR2(30);
140881 l_entity_code VARCHAR2(30);
140882 l_event_class_code VARCHAR2(30);
140883 l_ae_header_id NUMBER;
140884 l_event_type_code VARCHAR2(30);
140885 l_line_definition_code VARCHAR2(30);
140886 l_line_definition_owner_code VARCHAR2(1);
140887 --
140888 -- adr variables
140889 l_segment VARCHAR2(30);
140890 l_ccid NUMBER;
140891 l_adr_transaction_coa_id NUMBER;
140892 l_adr_accounting_coa_id NUMBER;
140893 l_adr_flexfield_segment_code VARCHAR2(30);
140894 l_adr_flex_value_set_id NUMBER;
140895 l_adr_value_type_code VARCHAR2(30);
140896 l_adr_value_combination_id NUMBER;
140897 l_adr_value_segment_code VARCHAR2(30);
140898
140899 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
140900 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
140901 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
140902 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
140903
140904 -- 4262811 Variables ------------------------------------------------------------------------------------------
140905 l_entered_amt_idx NUMBER;
140906 l_accted_amt_idx NUMBER;
140907 l_acc_rev_flag VARCHAR2(1);
140908 l_accrual_line_num NUMBER;
140909 l_tmp_amt NUMBER;
140910 l_acc_rev_natural_side_code VARCHAR2(1);
140911
140912 l_num_entries NUMBER;
140913 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
140914 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
140915 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
140916 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
140917 l_recog_line_1 NUMBER;
140918 l_recog_line_2 NUMBER;
140919
140920 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
140921 l_bflow_applied_to_amt NUMBER; -- 5132302
140922 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
140923
140924 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
140925
140926 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
140927 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
140928
140929 ---------------------------------------------------------------------------------------------------------------
140930
140931
140932 --
140933 -- bulk performance
140934 --
140935 l_balance_type_code VARCHAR2(1);
140936 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
140937 l_log_module VARCHAR2(240);
140938
140939 --
140940 -- Upgrade strategy
140941 --
140942 l_actual_upg_option VARCHAR2(1);
140943 l_enc_upg_option VARCHAR2(1);
140944
140945 --
140946 BEGIN
140947 --
140948 IF g_log_enabled THEN
140949 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_255';
140950 END IF;
140951 --
140952 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
140953
140954 trace
140955 (p_msg => 'BEGIN of AcctLineType_255'
140956 ,p_level => C_LEVEL_PROCEDURE
140957 ,p_module => l_log_module);
140958
140959 END IF;
140960 --
140961 l_component_type := 'AMB_JLT';
140962 l_component_code := 'WIP_VALUATION';
140963 l_component_type_code := 'S';
140964 l_component_appl_id := 707;
140965 l_amb_context_code := 'DEFAULT';
140966 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
140967 l_event_class_code := 'WIP_LOT';
140968 l_event_type_code := 'WIP_LOT_ALL';
140969 l_line_definition_owner_code := 'S';
140970 l_line_definition_code := 'WIP_LOT';
140971 --
140972 l_balance_type_code := 'A';
140973 l_segment := NULL;
140974 l_ccid := NULL;
140975 l_adr_transaction_coa_id := NULL;
140976 l_adr_accounting_coa_id := NULL;
140977 l_adr_flexfield_segment_code := NULL;
140978 l_adr_flex_value_set_id := NULL;
140979 l_adr_value_type_code := NULL;
140980 l_adr_value_combination_id := NULL;
140981 l_adr_value_segment_code := NULL;
140982
140983 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
140984 l_bflow_class_code := ''; -- 4219869 Business Flow
140985 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
140986 l_budgetary_control_flag := 'N';
140987
140988 l_bflow_applied_to_amt_idx := NULL; -- 5132302
140989 l_bflow_applied_to_amt := NULL; -- 5132302
140990 l_entered_amt_idx := NULL; -- 4262811
140991 l_accted_amt_idx := NULL; -- 4262811
140992 l_acc_rev_flag := NULL; -- 4262811
140993 l_accrual_line_num := NULL; -- 4262811
140994 l_tmp_amt := NULL; -- 4262811
140995 --
140996
140997 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
140998 l_balance_type_code <> 'B' THEN
140999 IF NVL(p_source_24,9E125) = 21 OR
141000 NVL(p_source_24,9E125) = 22 OR
141001 NVL(p_source_24,9E125) = 23 OR
141002 NVL(p_source_24,9E125) = 24 OR
141003 NVL(p_source_24,9E125) = 26 OR
141004 NVL(p_source_24,9E125) = 28
141005 THEN
141006
141007 --
141008 XLA_AE_LINES_PKG.SetNewLine;
141009
141010 p_balance_type_code := l_balance_type_code;
141011 -- set the flag so later we will know whether the gain loss line needs to be created
141012
141013 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
141014 p_actual_flag :='A';
141015 END IF;
141016
141017 --
141018 -- bulk performance
141019 --
141020 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
141021 p_header_num => 0); -- 4262811
141022 --
141023 -- set accounting line options
141024 --
141025 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
141026 p_natural_side_code => 'D'
141027 , p_gain_or_loss_flag => 'N'
141028 , p_gl_transfer_mode_code => 'S'
141029 , p_acct_entry_type_code => 'A'
141030 , p_switch_side_flag => 'Y'
141031 , p_merge_duplicate_code => 'N'
141032 );
141033 --
141034 l_acc_rev_natural_side_code := 'C'; -- 4262811
141035 --
141036 --
141037 -- set accounting line type info
141038 --
141039 xla_ae_lines_pkg.SetAcctLineType
141040 (p_component_type => l_component_type
141041 ,p_event_type_code => l_event_type_code
141042 ,p_line_definition_owner_code => l_line_definition_owner_code
141043 ,p_line_definition_code => l_line_definition_code
141044 ,p_accounting_line_code => l_component_code
141045 ,p_accounting_line_type_code => l_component_type_code
141046 ,p_accounting_line_appl_id => l_component_appl_id
141047 ,p_amb_context_code => l_amb_context_code
141048 ,p_entity_code => l_entity_code
141049 ,p_event_class_code => l_event_class_code);
141050 --
141051 -- set accounting class
141052 --
141053 xla_ae_lines_pkg.SetAcctClass(
141054 p_accounting_class_code => 'WIP_VALUATION'
141055 , p_ae_header_id => l_ae_header_id
141056 );
141057
141058 --
141059 -- set rounding class
141060 --
141061 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
141062 'WIP_VALUATION';
141063
141064 --
141065 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
141066 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
141067 --
141068 -- bulk performance
141069 --
141070 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
141071
141072 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
141073 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
141074
141075 -- 4955764
141076 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141077 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
141078
141079 -- 4458381 Public Sector Enh
141080
141081 --
141082 -- set accounting attributes for the line type
141083 --
141084 l_entered_amt_idx := 3;
141085 l_accted_amt_idx := 8;
141086 l_bflow_applied_to_amt_idx := NULL; -- 5132302
141087 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
141088 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
141089 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
141090 l_rec_acct_attrs.array_char_value(2) := p_source_12;
141091 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
141092 l_rec_acct_attrs.array_num_value(3) := p_source_18;
141093 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
141094 l_rec_acct_attrs.array_char_value(4) := p_source_15;
141095 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
141096 l_rec_acct_attrs.array_date_value(5) := p_source_19;
141097 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
141098 l_rec_acct_attrs.array_num_value(6) := p_source_20;
141099 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
141100 l_rec_acct_attrs.array_char_value(7) := p_source_21;
141101 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
141102 l_rec_acct_attrs.array_num_value(8) := p_source_22;
141103
141104 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
141105 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
141106
141107 ---------------------------------------------------------------------------------------------------------------
141108 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
141109 ---------------------------------------------------------------------------------------------------------------
141110 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
141111
141112 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141113 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141114
141115 IF xla_accounting_cache_pkg.GetValueChar
141116 (p_source_code => 'LEDGER_CATEGORY_CODE'
141117 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
141118 AND l_bflow_method_code = 'PRIOR_ENTRY'
141119 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
141120 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
141121 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
141122 )
141123 THEN
141124 xla_ae_lines_pkg.BflowUpgEntry
141125 (p_business_method_code => l_bflow_method_code
141126 ,p_business_class_code => l_bflow_class_code
141127 ,p_balance_type => l_balance_type_code);
141128 ELSE
141129 NULL;
141130 -- No business flow processing for business flow method of NONE.
141131 END IF;
141132
141133 --
141134 -- call analytical criteria
141135 --
141136
141137 --
141138 -- call description
141139 --
141140 -- No description or it is inherited.
141141 --
141142 -- call ADRs
141143 -- Bug 4922099
141144 --
141145 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
141146 (NVL(l_actual_upg_option, 'N') = 'O') OR
141147 (NVL(l_enc_upg_option, 'N') = 'O')
141148 )
141149 THEN
141150 NULL;
141151 --
141152 --
141153
141154 l_ccid := AcctDerRule_4(
141155 p_application_id => p_application_id
141156 , p_ae_header_id => l_ae_header_id
141157 , p_source_4 => p_source_4
141158 , x_transaction_coa_id => l_adr_transaction_coa_id
141159 , x_accounting_coa_id => l_adr_accounting_coa_id
141160 , x_value_type_code => l_adr_value_type_code
141161 , p_side => 'NA'
141162 );
141163
141164 xla_ae_lines_pkg.set_ccid(
141165 p_code_combination_id => l_ccid
141166 , p_value_type_code => l_adr_value_type_code
141167 , p_transaction_coa_id => l_adr_transaction_coa_id
141168 , p_accounting_coa_id => l_adr_accounting_coa_id
141169 , p_adr_code => 'CST_DEFAULT'
141170 , p_adr_type_code => 'S'
141171 , p_component_type => l_component_type
141172 , p_component_code => l_component_code
141173 , p_component_type_code => l_component_type_code
141174 , p_component_appl_id => l_component_appl_id
141175 , p_amb_context_code => l_amb_context_code
141176 , p_side => 'NA'
141177 );
141178
141179
141180 --
141181 --
141182 END IF;
141183 --
141184 -- Bug 4922099
141185 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
141186 (NVL(l_enc_upg_option, 'N') = 'O')
141187 ) AND
141188 (l_bflow_method_code = 'PRIOR_ENTRY')
141189 )
141190 THEN
141191 IF
141192 --
141193 1 = 2
141194 --
141195 THEN
141196 xla_accounting_err_pkg.build_message
141197 (p_appli_s_name => 'XLA'
141198 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
141199 ,p_token_1 => 'LINE_NUMBER'
141200 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
141201 ,p_token_2 => 'LINE_TYPE_NAME'
141202 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
141203 l_component_type
141204 ,l_component_code
141205 ,l_component_type_code
141206 ,l_component_appl_id
141207 ,l_amb_context_code
141208 ,l_entity_code
141209 ,l_event_class_code
141210 )
141211 ,p_token_3 => 'OWNER'
141212 ,p_value_3 => xla_lookups_pkg.get_meaning(
141213 p_lookup_type => 'XLA_OWNER_TYPE'
141214 ,p_lookup_code => l_component_type_code
141215 )
141216 ,p_token_4 => 'PRODUCT_NAME'
141217 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
141218 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
141219 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
141220 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
141221 ,p_ae_header_id => NULL
141222 );
141223
141224 IF (C_LEVEL_ERROR>= g_log_level) THEN
141225 trace
141226 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
141227 ,p_level => C_LEVEL_ERROR
141228 ,p_module => l_log_module);
141229 END IF;
141230 END IF;
141231 END IF;
141232 --
141233 --
141234 ------------------------------------------------------------------------------------------------
141235 -- 4219869 Business Flow
141236 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
141237 -- Prior Entry. Currently, the following code is always generated.
141238 ------------------------------------------------------------------------------------------------
141239 XLA_AE_LINES_PKG.ValidateCurrentLine;
141240
141241 ------------------------------------------------------------------------------------
141242 -- 4219869 Business Flow
141243 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
141244 ------------------------------------------------------------------------------------
141245 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141246
141247 ----------------------------------------------------------------------------------
141248 -- 4219869 Business Flow
141249 -- Update journal entry status -- Need to generate this within IF <condition>
141250 ----------------------------------------------------------------------------------
141251 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141252 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
141253 ,p_balance_type_code => l_balance_type_code
141254 );
141255
141256 -------------------------------------------------------------------------------------------
141257 -- 4262811 - Generate the Accrual Reversal lines
141258 -------------------------------------------------------------------------------------------
141259 BEGIN
141260 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
141261 (g_array_event(p_event_id).array_value_num('header_index'));
141262 IF l_acc_rev_flag IS NULL THEN
141263 l_acc_rev_flag := 'N';
141264 END IF;
141265 EXCEPTION
141266 WHEN OTHERS THEN
141267 l_acc_rev_flag := 'N';
141268 END;
141269 --
141270 IF (l_acc_rev_flag = 'Y') THEN
141271
141272 -- 4645092 ------------------------------------------------------------------------------
141273 -- To allow MPA report to determine if it should generate report process
141274 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
141275 ------------------------------------------------------------------------------------------
141276
141277 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
141278 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
141279 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
141280 -- call ADRs
141281 -- Bug 4922099
141282 --
141283 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
141284 (NVL(l_actual_upg_option, 'N') = 'O') OR
141285 (NVL(l_enc_upg_option, 'N') = 'O')
141286 )
141287 THEN
141288 NULL;
141289 --
141290 --
141291
141292 l_ccid := AcctDerRule_4(
141293 p_application_id => p_application_id
141294 , p_ae_header_id => l_ae_header_id
141295 , p_source_4 => p_source_4
141296 , x_transaction_coa_id => l_adr_transaction_coa_id
141297 , x_accounting_coa_id => l_adr_accounting_coa_id
141298 , x_value_type_code => l_adr_value_type_code
141299 , p_side => 'NA'
141300 );
141301
141302 xla_ae_lines_pkg.set_ccid(
141303 p_code_combination_id => l_ccid
141304 , p_value_type_code => l_adr_value_type_code
141305 , p_transaction_coa_id => l_adr_transaction_coa_id
141306 , p_accounting_coa_id => l_adr_accounting_coa_id
141307 , p_adr_code => 'CST_DEFAULT'
141308 , p_adr_type_code => 'S'
141309 , p_component_type => l_component_type
141310 , p_component_code => l_component_code
141311 , p_component_type_code => l_component_type_code
141312 , p_component_appl_id => l_component_appl_id
141313 , p_amb_context_code => l_amb_context_code
141314 , p_side => 'NA'
141315 );
141316
141317
141318 --
141319 --
141320 END IF;
141321
141322 --
141323 -- Update the line information that should be overwritten
141324 --
141325 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
141326 p_header_num => 1);
141327 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
141328
141329 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
141330
141331 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
141332 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
141333 END IF;
141334
141335 --
141336 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
141337 --
141338 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
141339 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
141340 ELSE
141341 ---------------------------------------------------------------------------------------------------
141342 -- 4262811a Switch Sign
141343 ---------------------------------------------------------------------------------------------------
141344 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
141345 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
141346 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141347 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
141348 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141349 -- 5132302
141350 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
141351 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141352
141353 END IF;
141354
141355 -- 4955764
141356 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141357 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
141358
141359
141360 XLA_AE_LINES_PKG.ValidateCurrentLine;
141361 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141362
141363 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141364 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
141365 ,p_balance_type_code => l_balance_type_code);
141366
141367 END IF;
141368
141369 -----------------------------------------------------------------------------------------
141370 -- 4262811 Multiperiod Accounting
141371 -----------------------------------------------------------------------------------------
141372 -- No MPA option is assigned.
141373
141374
141375 END IF;
141376 END IF;
141377 --
141378
141379 --
141380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141381 trace
141382 (p_msg => 'END of AcctLineType_255'
141383 ,p_level => C_LEVEL_PROCEDURE
141384 ,p_module => l_log_module);
141385 END IF;
141386 --
141387 EXCEPTION
141388 WHEN xla_exceptions_pkg.application_exception THEN
141389 RAISE;
141390 WHEN OTHERS THEN
141391 xla_exceptions_pkg.raise_message
141392 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_255');
141393 END AcctLineType_255;
141394 --
141395
141396 ---------------------------------------
141397 --
141398 -- PRIVATE FUNCTION
141399 -- AcctLineType_256
141400 --
141401 ---------------------------------------
141402 PROCEDURE AcctLineType_256 (
141403 p_application_id IN NUMBER
141404 ,p_event_id IN NUMBER
141405 ,p_calculate_acctd_flag IN VARCHAR2
141406 ,p_calculate_g_l_flag IN VARCHAR2
141407 ,p_actual_flag IN OUT VARCHAR2
141408 ,p_balance_type_code OUT VARCHAR2
141409 ,p_gain_or_loss_ref OUT VARCHAR2
141410
141411 --Cost Management Default Account
141412 , p_source_4 IN NUMBER
141413 --DISTRIBUTION_IDENTIFIER
141414 , p_source_11 IN NUMBER
141415 --Distribution Type
141416 , p_source_12 IN VARCHAR2
141417 , p_source_12_meaning IN VARCHAR2
141418 --Entered Currency Code
141419 , p_source_15 IN VARCHAR2
141420 --Entered Amount
141421 , p_source_18 IN NUMBER
141422 --Currency Conversion Date
141423 , p_source_19 IN DATE
141424 --Currency Conversion Rate
141425 , p_source_20 IN NUMBER
141426 --Currency Conversion Type
141427 , p_source_21 IN VARCHAR2
141428 --Accounted Amount
141429 , p_source_22 IN NUMBER
141430 --Accounting Line Type
141431 , p_source_24 IN NUMBER
141432 )
141433 IS
141434
141435 l_component_type VARCHAR2(80);
141436 l_component_code VARCHAR2(30);
141437 l_component_type_code VARCHAR2(1);
141438 l_component_appl_id INTEGER;
141439 l_amb_context_code VARCHAR2(30);
141440 l_entity_code VARCHAR2(30);
141441 l_event_class_code VARCHAR2(30);
141442 l_ae_header_id NUMBER;
141443 l_event_type_code VARCHAR2(30);
141444 l_line_definition_code VARCHAR2(30);
141445 l_line_definition_owner_code VARCHAR2(1);
141446 --
141447 -- adr variables
141448 l_segment VARCHAR2(30);
141449 l_ccid NUMBER;
141450 l_adr_transaction_coa_id NUMBER;
141451 l_adr_accounting_coa_id NUMBER;
141452 l_adr_flexfield_segment_code VARCHAR2(30);
141453 l_adr_flex_value_set_id NUMBER;
141454 l_adr_value_type_code VARCHAR2(30);
141455 l_adr_value_combination_id NUMBER;
141456 l_adr_value_segment_code VARCHAR2(30);
141457
141458 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
141459 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
141460 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
141461 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
141462
141463 -- 4262811 Variables ------------------------------------------------------------------------------------------
141464 l_entered_amt_idx NUMBER;
141465 l_accted_amt_idx NUMBER;
141466 l_acc_rev_flag VARCHAR2(1);
141467 l_accrual_line_num NUMBER;
141468 l_tmp_amt NUMBER;
141469 l_acc_rev_natural_side_code VARCHAR2(1);
141470
141471 l_num_entries NUMBER;
141472 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
141473 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
141474 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
141475 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
141476 l_recog_line_1 NUMBER;
141477 l_recog_line_2 NUMBER;
141478
141479 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
141480 l_bflow_applied_to_amt NUMBER; -- 5132302
141481 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
141482
141483 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
141484
141485 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
141486 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
141487
141488 ---------------------------------------------------------------------------------------------------------------
141489
141490
141491 --
141492 -- bulk performance
141493 --
141494 l_balance_type_code VARCHAR2(1);
141495 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
141496 l_log_module VARCHAR2(240);
141497
141498 --
141499 -- Upgrade strategy
141500 --
141501 l_actual_upg_option VARCHAR2(1);
141502 l_enc_upg_option VARCHAR2(1);
141503
141504 --
141505 BEGIN
141506 --
141507 IF g_log_enabled THEN
141508 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_256';
141509 END IF;
141510 --
141511 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141512
141513 trace
141514 (p_msg => 'BEGIN of AcctLineType_256'
141515 ,p_level => C_LEVEL_PROCEDURE
141516 ,p_module => l_log_module);
141517
141518 END IF;
141519 --
141520 l_component_type := 'AMB_JLT';
141521 l_component_code := 'WIP_VARIANCE';
141522 l_component_type_code := 'S';
141523 l_component_appl_id := 707;
141524 l_amb_context_code := 'DEFAULT';
141525 l_entity_code := 'WIP_ACCOUNTING_EVENTS';
141526 l_event_class_code := 'VARIANCE';
141527 l_event_type_code := 'VARIANCE_ALL';
141528 l_line_definition_owner_code := 'S';
141529 l_line_definition_code := 'VARIANCE';
141530 --
141531 l_balance_type_code := 'A';
141532 l_segment := NULL;
141533 l_ccid := NULL;
141534 l_adr_transaction_coa_id := NULL;
141535 l_adr_accounting_coa_id := NULL;
141536 l_adr_flexfield_segment_code := NULL;
141537 l_adr_flex_value_set_id := NULL;
141538 l_adr_value_type_code := NULL;
141539 l_adr_value_combination_id := NULL;
141540 l_adr_value_segment_code := NULL;
141541
141542 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
141543 l_bflow_class_code := ''; -- 4219869 Business Flow
141544 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
141545 l_budgetary_control_flag := 'N';
141546
141547 l_bflow_applied_to_amt_idx := NULL; -- 5132302
141548 l_bflow_applied_to_amt := NULL; -- 5132302
141549 l_entered_amt_idx := NULL; -- 4262811
141550 l_accted_amt_idx := NULL; -- 4262811
141551 l_acc_rev_flag := NULL; -- 4262811
141552 l_accrual_line_num := NULL; -- 4262811
141553 l_tmp_amt := NULL; -- 4262811
141554 --
141555
141556 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
141557 l_balance_type_code <> 'B' THEN
141558 IF NVL(p_source_24,9E125) = 8
141559 THEN
141560
141561 --
141562 XLA_AE_LINES_PKG.SetNewLine;
141563
141564 p_balance_type_code := l_balance_type_code;
141565 -- set the flag so later we will know whether the gain loss line needs to be created
141566
141567 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
141568 p_actual_flag :='A';
141569 END IF;
141570
141571 --
141572 -- bulk performance
141573 --
141574 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
141575 p_header_num => 0); -- 4262811
141576 --
141577 -- set accounting line options
141578 --
141579 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
141580 p_natural_side_code => 'D'
141581 , p_gain_or_loss_flag => 'N'
141582 , p_gl_transfer_mode_code => 'S'
141583 , p_acct_entry_type_code => 'A'
141584 , p_switch_side_flag => 'Y'
141585 , p_merge_duplicate_code => 'N'
141586 );
141587 --
141588 l_acc_rev_natural_side_code := 'C'; -- 4262811
141589 --
141590 --
141591 -- set accounting line type info
141592 --
141593 xla_ae_lines_pkg.SetAcctLineType
141594 (p_component_type => l_component_type
141595 ,p_event_type_code => l_event_type_code
141596 ,p_line_definition_owner_code => l_line_definition_owner_code
141597 ,p_line_definition_code => l_line_definition_code
141598 ,p_accounting_line_code => l_component_code
141599 ,p_accounting_line_type_code => l_component_type_code
141600 ,p_accounting_line_appl_id => l_component_appl_id
141601 ,p_amb_context_code => l_amb_context_code
141602 ,p_entity_code => l_entity_code
141603 ,p_event_class_code => l_event_class_code);
141604 --
141605 -- set accounting class
141606 --
141607 xla_ae_lines_pkg.SetAcctClass(
141608 p_accounting_class_code => 'WIP_VARIANCE'
141609 , p_ae_header_id => l_ae_header_id
141610 );
141611
141612 --
141613 -- set rounding class
141614 --
141615 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
141616 'WIP_VARIANCE';
141617
141618 --
141619 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
141620 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
141621 --
141622 -- bulk performance
141623 --
141624 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
141625
141626 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
141627 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
141628
141629 -- 4955764
141630 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141631 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
141632
141633 -- 4458381 Public Sector Enh
141634
141635 --
141636 -- set accounting attributes for the line type
141637 --
141638 l_entered_amt_idx := 3;
141639 l_accted_amt_idx := 8;
141640 l_bflow_applied_to_amt_idx := NULL; -- 5132302
141641 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
141642 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_11);
141643 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
141644 l_rec_acct_attrs.array_char_value(2) := p_source_12;
141645 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
141646 l_rec_acct_attrs.array_num_value(3) := p_source_18;
141647 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
141648 l_rec_acct_attrs.array_char_value(4) := p_source_15;
141649 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
141650 l_rec_acct_attrs.array_date_value(5) := p_source_19;
141651 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
141652 l_rec_acct_attrs.array_num_value(6) := p_source_20;
141653 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
141654 l_rec_acct_attrs.array_char_value(7) := p_source_21;
141655 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
141656 l_rec_acct_attrs.array_num_value(8) := p_source_22;
141657
141658 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
141659 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
141660
141661 ---------------------------------------------------------------------------------------------------------------
141662 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
141663 ---------------------------------------------------------------------------------------------------------------
141664 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
141665
141666 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141667 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
141668
141669 IF xla_accounting_cache_pkg.GetValueChar
141670 (p_source_code => 'LEDGER_CATEGORY_CODE'
141671 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
141672 AND l_bflow_method_code = 'PRIOR_ENTRY'
141673 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
141674 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
141675 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
141676 )
141677 THEN
141678 xla_ae_lines_pkg.BflowUpgEntry
141679 (p_business_method_code => l_bflow_method_code
141680 ,p_business_class_code => l_bflow_class_code
141681 ,p_balance_type => l_balance_type_code);
141682 ELSE
141683 NULL;
141684 -- No business flow processing for business flow method of NONE.
141685 END IF;
141686
141687 --
141688 -- call analytical criteria
141689 --
141690
141691 --
141692 -- call description
141693 --
141694 -- No description or it is inherited.
141695 --
141696 -- call ADRs
141697 -- Bug 4922099
141698 --
141699 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
141700 (NVL(l_actual_upg_option, 'N') = 'O') OR
141701 (NVL(l_enc_upg_option, 'N') = 'O')
141702 )
141703 THEN
141704 NULL;
141705 --
141706 --
141707
141708 l_ccid := AcctDerRule_4(
141709 p_application_id => p_application_id
141710 , p_ae_header_id => l_ae_header_id
141711 , p_source_4 => p_source_4
141712 , x_transaction_coa_id => l_adr_transaction_coa_id
141713 , x_accounting_coa_id => l_adr_accounting_coa_id
141714 , x_value_type_code => l_adr_value_type_code
141715 , p_side => 'NA'
141716 );
141717
141718 xla_ae_lines_pkg.set_ccid(
141719 p_code_combination_id => l_ccid
141720 , p_value_type_code => l_adr_value_type_code
141721 , p_transaction_coa_id => l_adr_transaction_coa_id
141722 , p_accounting_coa_id => l_adr_accounting_coa_id
141723 , p_adr_code => 'CST_DEFAULT'
141724 , p_adr_type_code => 'S'
141725 , p_component_type => l_component_type
141726 , p_component_code => l_component_code
141727 , p_component_type_code => l_component_type_code
141728 , p_component_appl_id => l_component_appl_id
141729 , p_amb_context_code => l_amb_context_code
141730 , p_side => 'NA'
141731 );
141732
141733
141734 --
141735 --
141736 END IF;
141737 --
141738 -- Bug 4922099
141739 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
141740 (NVL(l_enc_upg_option, 'N') = 'O')
141741 ) AND
141742 (l_bflow_method_code = 'PRIOR_ENTRY')
141743 )
141744 THEN
141745 IF
141746 --
141747 1 = 2
141748 --
141749 THEN
141750 xla_accounting_err_pkg.build_message
141751 (p_appli_s_name => 'XLA'
141752 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
141753 ,p_token_1 => 'LINE_NUMBER'
141754 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
141755 ,p_token_2 => 'LINE_TYPE_NAME'
141756 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
141757 l_component_type
141758 ,l_component_code
141759 ,l_component_type_code
141760 ,l_component_appl_id
141761 ,l_amb_context_code
141762 ,l_entity_code
141763 ,l_event_class_code
141764 )
141765 ,p_token_3 => 'OWNER'
141766 ,p_value_3 => xla_lookups_pkg.get_meaning(
141767 p_lookup_type => 'XLA_OWNER_TYPE'
141768 ,p_lookup_code => l_component_type_code
141769 )
141770 ,p_token_4 => 'PRODUCT_NAME'
141771 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
141772 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
141773 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
141774 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
141775 ,p_ae_header_id => NULL
141776 );
141777
141778 IF (C_LEVEL_ERROR>= g_log_level) THEN
141779 trace
141780 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
141781 ,p_level => C_LEVEL_ERROR
141782 ,p_module => l_log_module);
141783 END IF;
141784 END IF;
141785 END IF;
141786 --
141787 --
141788 ------------------------------------------------------------------------------------------------
141789 -- 4219869 Business Flow
141790 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
141791 -- Prior Entry. Currently, the following code is always generated.
141792 ------------------------------------------------------------------------------------------------
141793 XLA_AE_LINES_PKG.ValidateCurrentLine;
141794
141795 ------------------------------------------------------------------------------------
141796 -- 4219869 Business Flow
141797 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
141798 ------------------------------------------------------------------------------------
141799 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141800
141801 ----------------------------------------------------------------------------------
141802 -- 4219869 Business Flow
141803 -- Update journal entry status -- Need to generate this within IF <condition>
141804 ----------------------------------------------------------------------------------
141805 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141806 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
141807 ,p_balance_type_code => l_balance_type_code
141808 );
141809
141810 -------------------------------------------------------------------------------------------
141811 -- 4262811 - Generate the Accrual Reversal lines
141812 -------------------------------------------------------------------------------------------
141813 BEGIN
141814 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
141815 (g_array_event(p_event_id).array_value_num('header_index'));
141816 IF l_acc_rev_flag IS NULL THEN
141817 l_acc_rev_flag := 'N';
141818 END IF;
141819 EXCEPTION
141820 WHEN OTHERS THEN
141821 l_acc_rev_flag := 'N';
141822 END;
141823 --
141824 IF (l_acc_rev_flag = 'Y') THEN
141825
141826 -- 4645092 ------------------------------------------------------------------------------
141827 -- To allow MPA report to determine if it should generate report process
141828 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
141829 ------------------------------------------------------------------------------------------
141830
141831 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
141832 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
141833 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
141834 -- call ADRs
141835 -- Bug 4922099
141836 --
141837 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
141838 (NVL(l_actual_upg_option, 'N') = 'O') OR
141839 (NVL(l_enc_upg_option, 'N') = 'O')
141840 )
141841 THEN
141842 NULL;
141843 --
141844 --
141845
141846 l_ccid := AcctDerRule_4(
141847 p_application_id => p_application_id
141848 , p_ae_header_id => l_ae_header_id
141849 , p_source_4 => p_source_4
141850 , x_transaction_coa_id => l_adr_transaction_coa_id
141851 , x_accounting_coa_id => l_adr_accounting_coa_id
141852 , x_value_type_code => l_adr_value_type_code
141853 , p_side => 'NA'
141854 );
141855
141856 xla_ae_lines_pkg.set_ccid(
141857 p_code_combination_id => l_ccid
141858 , p_value_type_code => l_adr_value_type_code
141859 , p_transaction_coa_id => l_adr_transaction_coa_id
141860 , p_accounting_coa_id => l_adr_accounting_coa_id
141861 , p_adr_code => 'CST_DEFAULT'
141862 , p_adr_type_code => 'S'
141863 , p_component_type => l_component_type
141864 , p_component_code => l_component_code
141865 , p_component_type_code => l_component_type_code
141866 , p_component_appl_id => l_component_appl_id
141867 , p_amb_context_code => l_amb_context_code
141868 , p_side => 'NA'
141869 );
141870
141871
141872 --
141873 --
141874 END IF;
141875
141876 --
141877 -- Update the line information that should be overwritten
141878 --
141879 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
141880 p_header_num => 1);
141881 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
141882
141883 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
141884
141885 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
141886 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
141887 END IF;
141888
141889 --
141890 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
141891 --
141892 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
141893 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
141894 ELSE
141895 ---------------------------------------------------------------------------------------------------
141896 -- 4262811a Switch Sign
141897 ---------------------------------------------------------------------------------------------------
141898 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
141899 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
141900 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141901 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
141902 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141903 -- 5132302
141904 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
141905 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
141906
141907 END IF;
141908
141909 -- 4955764
141910 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
141911 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
141912
141913
141914 XLA_AE_LINES_PKG.ValidateCurrentLine;
141915 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
141916
141917 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
141918 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
141919 ,p_balance_type_code => l_balance_type_code);
141920
141921 END IF;
141922
141923 -----------------------------------------------------------------------------------------
141924 -- 4262811 Multiperiod Accounting
141925 -----------------------------------------------------------------------------------------
141926 -- No MPA option is assigned.
141927
141928
141929 END IF;
141930 END IF;
141931 --
141932
141933 --
141934 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
141935 trace
141936 (p_msg => 'END of AcctLineType_256'
141937 ,p_level => C_LEVEL_PROCEDURE
141938 ,p_module => l_log_module);
141939 END IF;
141940 --
141941 EXCEPTION
141942 WHEN xla_exceptions_pkg.application_exception THEN
141943 RAISE;
141944 WHEN OTHERS THEN
141945 xla_exceptions_pkg.raise_message
141946 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_256');
141947 END AcctLineType_256;
141948 --
141949
141950 ---------------------------------------
141951 --
141952 -- PRIVATE FUNCTION
141953 -- AcctLineType_257
141954 --
141955 ---------------------------------------
141956 PROCEDURE AcctLineType_257 (
141957 p_application_id IN NUMBER
141958 ,p_event_id IN NUMBER
141959 ,p_calculate_acctd_flag IN VARCHAR2
141960 ,p_calculate_g_l_flag IN VARCHAR2
141961 ,p_actual_flag IN OUT VARCHAR2
141962 ,p_balance_type_code OUT VARCHAR2
141963 ,p_gain_or_loss_ref OUT VARCHAR2
141964
141965 --Write-Off Variance Account
141966 , p_source_2 IN NUMBER
141967 --Distribution Type
141968 , p_source_12 IN VARCHAR2
141969 , p_source_12_meaning IN VARCHAR2
141970 --Entered Currency Code
141971 , p_source_15 IN VARCHAR2
141972 --Entered Amount
141973 , p_source_18 IN NUMBER
141974 --Currency Conversion Date
141975 , p_source_19 IN DATE
141976 --Currency Conversion Rate
141977 , p_source_20 IN NUMBER
141978 --Currency Conversion Type
141979 , p_source_21 IN VARCHAR2
141980 --Accounted Amount
141981 , p_source_22 IN NUMBER
141982 --Line Number
141983 , p_source_25 IN NUMBER
141984 --WRITE_OFF_ID
141985 , p_source_26 IN NUMBER
141986 )
141987 IS
141988
141989 l_component_type VARCHAR2(80);
141990 l_component_code VARCHAR2(30);
141991 l_component_type_code VARCHAR2(1);
141992 l_component_appl_id INTEGER;
141993 l_amb_context_code VARCHAR2(30);
141994 l_entity_code VARCHAR2(30);
141995 l_event_class_code VARCHAR2(30);
141996 l_ae_header_id NUMBER;
141997 l_event_type_code VARCHAR2(30);
141998 l_line_definition_code VARCHAR2(30);
141999 l_line_definition_owner_code VARCHAR2(1);
142000 --
142001 -- adr variables
142002 l_segment VARCHAR2(30);
142003 l_ccid NUMBER;
142004 l_adr_transaction_coa_id NUMBER;
142005 l_adr_accounting_coa_id NUMBER;
142006 l_adr_flexfield_segment_code VARCHAR2(30);
142007 l_adr_flex_value_set_id NUMBER;
142008 l_adr_value_type_code VARCHAR2(30);
142009 l_adr_value_combination_id NUMBER;
142010 l_adr_value_segment_code VARCHAR2(30);
142011
142012 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
142013 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
142014 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
142015 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
142016
142017 -- 4262811 Variables ------------------------------------------------------------------------------------------
142018 l_entered_amt_idx NUMBER;
142019 l_accted_amt_idx NUMBER;
142020 l_acc_rev_flag VARCHAR2(1);
142021 l_accrual_line_num NUMBER;
142022 l_tmp_amt NUMBER;
142023 l_acc_rev_natural_side_code VARCHAR2(1);
142024
142025 l_num_entries NUMBER;
142026 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
142027 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
142028 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
142029 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
142030 l_recog_line_1 NUMBER;
142031 l_recog_line_2 NUMBER;
142032
142033 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
142034 l_bflow_applied_to_amt NUMBER; -- 5132302
142035 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
142036
142037 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
142038
142039 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
142040 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
142041
142042 ---------------------------------------------------------------------------------------------------------------
142043
142044
142045 --
142046 -- bulk performance
142047 --
142048 l_balance_type_code VARCHAR2(1);
142049 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
142050 l_log_module VARCHAR2(240);
142051
142052 --
142053 -- Upgrade strategy
142054 --
142055 l_actual_upg_option VARCHAR2(1);
142056 l_enc_upg_option VARCHAR2(1);
142057
142058 --
142059 BEGIN
142060 --
142061 IF g_log_enabled THEN
142062 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_257';
142063 END IF;
142064 --
142065 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142066
142067 trace
142068 (p_msg => 'BEGIN of AcctLineType_257'
142069 ,p_level => C_LEVEL_PROCEDURE
142070 ,p_module => l_log_module);
142071
142072 END IF;
142073 --
142074 l_component_type := 'AMB_JLT';
142075 l_component_code := 'WO_VARIANCE';
142076 l_component_type_code := 'S';
142077 l_component_appl_id := 707;
142078 l_amb_context_code := 'DEFAULT';
142079 l_entity_code := 'WO_ACCOUNTING_EVENTS';
142080 l_event_class_code := 'ACCRUAL_WRITE_OFF';
142081 l_event_type_code := 'ACCRUAL_WRITE_OFF_ALL';
142082 l_line_definition_owner_code := 'S';
142083 l_line_definition_code := 'ACCRUAL_WRITE_OFF';
142084 --
142085 l_balance_type_code := 'A';
142086 l_segment := NULL;
142087 l_ccid := NULL;
142088 l_adr_transaction_coa_id := NULL;
142089 l_adr_accounting_coa_id := NULL;
142090 l_adr_flexfield_segment_code := NULL;
142091 l_adr_flex_value_set_id := NULL;
142092 l_adr_value_type_code := NULL;
142093 l_adr_value_combination_id := NULL;
142094 l_adr_value_segment_code := NULL;
142095
142096 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
142097 l_bflow_class_code := ''; -- 4219869 Business Flow
142098 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
142099 l_budgetary_control_flag := 'N';
142100
142101 l_bflow_applied_to_amt_idx := NULL; -- 5132302
142102 l_bflow_applied_to_amt := NULL; -- 5132302
142103 l_entered_amt_idx := NULL; -- 4262811
142104 l_accted_amt_idx := NULL; -- 4262811
142105 l_acc_rev_flag := NULL; -- 4262811
142106 l_accrual_line_num := NULL; -- 4262811
142107 l_tmp_amt := NULL; -- 4262811
142108 --
142109
142110 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
142111 l_balance_type_code <> 'B' THEN
142112 IF NVL(p_source_25,9E125) = 2
142113 THEN
142114
142115 --
142116 XLA_AE_LINES_PKG.SetNewLine;
142117
142118 p_balance_type_code := l_balance_type_code;
142119 -- set the flag so later we will know whether the gain loss line needs to be created
142120
142121 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
142122 p_actual_flag :='A';
142123 END IF;
142124
142125 --
142126 -- bulk performance
142127 --
142128 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
142129 p_header_num => 0); -- 4262811
142130 --
142131 -- set accounting line options
142132 --
142133 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
142134 p_natural_side_code => 'D'
142135 , p_gain_or_loss_flag => 'N'
142136 , p_gl_transfer_mode_code => 'S'
142137 , p_acct_entry_type_code => 'A'
142138 , p_switch_side_flag => 'Y'
142139 , p_merge_duplicate_code => 'N'
142140 );
142141 --
142142 l_acc_rev_natural_side_code := 'C'; -- 4262811
142143 --
142144 --
142145 -- set accounting line type info
142146 --
142147 xla_ae_lines_pkg.SetAcctLineType
142148 (p_component_type => l_component_type
142149 ,p_event_type_code => l_event_type_code
142150 ,p_line_definition_owner_code => l_line_definition_owner_code
142151 ,p_line_definition_code => l_line_definition_code
142152 ,p_accounting_line_code => l_component_code
142153 ,p_accounting_line_type_code => l_component_type_code
142154 ,p_accounting_line_appl_id => l_component_appl_id
142155 ,p_amb_context_code => l_amb_context_code
142156 ,p_entity_code => l_entity_code
142157 ,p_event_class_code => l_event_class_code);
142158 --
142159 -- set accounting class
142160 --
142161 xla_ae_lines_pkg.SetAcctClass(
142162 p_accounting_class_code => 'WRITE_OFF_VARIANCE'
142163 , p_ae_header_id => l_ae_header_id
142164 );
142165
142166 --
142167 -- set rounding class
142168 --
142169 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
142170 'WRITE_OFF_VARIANCE';
142171
142172 --
142173 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
142174 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
142175 --
142176 -- bulk performance
142177 --
142178 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
142179
142180 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
142181 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
142182
142183 -- 4955764
142184 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
142185 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
142186
142187 -- 4458381 Public Sector Enh
142188
142189 --
142190 -- set accounting attributes for the line type
142191 --
142192 l_entered_amt_idx := 3;
142193 l_accted_amt_idx := 8;
142194 l_bflow_applied_to_amt_idx := NULL; -- 5132302
142195 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
142196 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_26);
142197 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
142198 l_rec_acct_attrs.array_char_value(2) := p_source_12;
142199 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
142200 l_rec_acct_attrs.array_num_value(3) := p_source_18;
142201 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
142202 l_rec_acct_attrs.array_char_value(4) := p_source_15;
142203 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
142204 l_rec_acct_attrs.array_date_value(5) := p_source_19;
142205 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
142206 l_rec_acct_attrs.array_num_value(6) := p_source_20;
142207 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
142208 l_rec_acct_attrs.array_char_value(7) := p_source_21;
142209 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
142210 l_rec_acct_attrs.array_num_value(8) := p_source_22;
142211
142212 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
142213 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
142214
142215 ---------------------------------------------------------------------------------------------------------------
142216 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
142217 ---------------------------------------------------------------------------------------------------------------
142218 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
142219
142220 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
142221 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
142222
142223 IF xla_accounting_cache_pkg.GetValueChar
142224 (p_source_code => 'LEDGER_CATEGORY_CODE'
142225 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
142226 AND l_bflow_method_code = 'PRIOR_ENTRY'
142227 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
142228 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
142229 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
142230 )
142231 THEN
142232 xla_ae_lines_pkg.BflowUpgEntry
142233 (p_business_method_code => l_bflow_method_code
142234 ,p_business_class_code => l_bflow_class_code
142235 ,p_balance_type => l_balance_type_code);
142236 ELSE
142237 NULL;
142238 -- No business flow processing for business flow method of NONE.
142239 END IF;
142240
142241 --
142242 -- call analytical criteria
142243 --
142244
142245 --
142246 -- call description
142247 --
142248 -- No description or it is inherited.
142249 --
142250 -- call ADRs
142251 -- Bug 4922099
142252 --
142253 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142254 (NVL(l_actual_upg_option, 'N') = 'O') OR
142255 (NVL(l_enc_upg_option, 'N') = 'O')
142256 )
142257 THEN
142258 NULL;
142259 --
142260 --
142261
142262 l_ccid := AcctDerRule_2(
142263 p_application_id => p_application_id
142264 , p_ae_header_id => l_ae_header_id
142265 , p_source_2 => p_source_2
142266 , x_transaction_coa_id => l_adr_transaction_coa_id
142267 , x_accounting_coa_id => l_adr_accounting_coa_id
142268 , x_value_type_code => l_adr_value_type_code
142269 , p_side => 'NA'
142270 );
142271
142272 xla_ae_lines_pkg.set_ccid(
142273 p_code_combination_id => l_ccid
142274 , p_value_type_code => l_adr_value_type_code
142275 , p_transaction_coa_id => l_adr_transaction_coa_id
142276 , p_accounting_coa_id => l_adr_accounting_coa_id
142277 , p_adr_code => 'CST_AWO_ERV'
142278 , p_adr_type_code => 'S'
142279 , p_component_type => l_component_type
142280 , p_component_code => l_component_code
142281 , p_component_type_code => l_component_type_code
142282 , p_component_appl_id => l_component_appl_id
142283 , p_amb_context_code => l_amb_context_code
142284 , p_side => 'NA'
142285 );
142286
142287
142288 --
142289 --
142290 END IF;
142291 --
142292 -- Bug 4922099
142293 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
142294 (NVL(l_enc_upg_option, 'N') = 'O')
142295 ) AND
142296 (l_bflow_method_code = 'PRIOR_ENTRY')
142297 )
142298 THEN
142299 IF
142300 --
142301 1 = 2
142302 --
142303 THEN
142304 xla_accounting_err_pkg.build_message
142305 (p_appli_s_name => 'XLA'
142306 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142307 ,p_token_1 => 'LINE_NUMBER'
142308 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
142309 ,p_token_2 => 'LINE_TYPE_NAME'
142310 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
142311 l_component_type
142312 ,l_component_code
142313 ,l_component_type_code
142314 ,l_component_appl_id
142315 ,l_amb_context_code
142316 ,l_entity_code
142317 ,l_event_class_code
142318 )
142319 ,p_token_3 => 'OWNER'
142320 ,p_value_3 => xla_lookups_pkg.get_meaning(
142321 p_lookup_type => 'XLA_OWNER_TYPE'
142322 ,p_lookup_code => l_component_type_code
142323 )
142324 ,p_token_4 => 'PRODUCT_NAME'
142325 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
142326 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
142327 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
142328 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
142329 ,p_ae_header_id => NULL
142330 );
142331
142332 IF (C_LEVEL_ERROR>= g_log_level) THEN
142333 trace
142334 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142335 ,p_level => C_LEVEL_ERROR
142336 ,p_module => l_log_module);
142337 END IF;
142338 END IF;
142339 END IF;
142340 --
142341 --
142342 ------------------------------------------------------------------------------------------------
142343 -- 4219869 Business Flow
142344 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
142345 -- Prior Entry. Currently, the following code is always generated.
142346 ------------------------------------------------------------------------------------------------
142347 XLA_AE_LINES_PKG.ValidateCurrentLine;
142348
142349 ------------------------------------------------------------------------------------
142350 -- 4219869 Business Flow
142351 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
142352 ------------------------------------------------------------------------------------
142353 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
142354
142355 ----------------------------------------------------------------------------------
142356 -- 4219869 Business Flow
142357 -- Update journal entry status -- Need to generate this within IF <condition>
142358 ----------------------------------------------------------------------------------
142359 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
142360 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
142361 ,p_balance_type_code => l_balance_type_code
142362 );
142363
142364 -------------------------------------------------------------------------------------------
142365 -- 4262811 - Generate the Accrual Reversal lines
142366 -------------------------------------------------------------------------------------------
142367 BEGIN
142368 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
142369 (g_array_event(p_event_id).array_value_num('header_index'));
142370 IF l_acc_rev_flag IS NULL THEN
142371 l_acc_rev_flag := 'N';
142372 END IF;
142373 EXCEPTION
142374 WHEN OTHERS THEN
142375 l_acc_rev_flag := 'N';
142376 END;
142377 --
142378 IF (l_acc_rev_flag = 'Y') THEN
142379
142380 -- 4645092 ------------------------------------------------------------------------------
142381 -- To allow MPA report to determine if it should generate report process
142382 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
142383 ------------------------------------------------------------------------------------------
142384
142385 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
142386 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
142387 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
142388 -- call ADRs
142389 -- Bug 4922099
142390 --
142391 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142392 (NVL(l_actual_upg_option, 'N') = 'O') OR
142393 (NVL(l_enc_upg_option, 'N') = 'O')
142394 )
142395 THEN
142396 NULL;
142397 --
142398 --
142399
142400 l_ccid := AcctDerRule_2(
142401 p_application_id => p_application_id
142402 , p_ae_header_id => l_ae_header_id
142403 , p_source_2 => p_source_2
142404 , x_transaction_coa_id => l_adr_transaction_coa_id
142405 , x_accounting_coa_id => l_adr_accounting_coa_id
142406 , x_value_type_code => l_adr_value_type_code
142407 , p_side => 'NA'
142408 );
142409
142410 xla_ae_lines_pkg.set_ccid(
142411 p_code_combination_id => l_ccid
142412 , p_value_type_code => l_adr_value_type_code
142413 , p_transaction_coa_id => l_adr_transaction_coa_id
142414 , p_accounting_coa_id => l_adr_accounting_coa_id
142415 , p_adr_code => 'CST_AWO_ERV'
142416 , p_adr_type_code => 'S'
142417 , p_component_type => l_component_type
142418 , p_component_code => l_component_code
142419 , p_component_type_code => l_component_type_code
142420 , p_component_appl_id => l_component_appl_id
142421 , p_amb_context_code => l_amb_context_code
142422 , p_side => 'NA'
142423 );
142424
142425
142426 --
142427 --
142428 END IF;
142429
142430 --
142431 -- Update the line information that should be overwritten
142432 --
142433 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
142434 p_header_num => 1);
142435 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
142436
142437 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
142438
142439 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
142440 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
142441 END IF;
142442
142443 --
142444 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
142445 --
142446 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
142447 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
142448 ELSE
142449 ---------------------------------------------------------------------------------------------------
142450 -- 4262811a Switch Sign
142451 ---------------------------------------------------------------------------------------------------
142452 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
142453 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
142454 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142455 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
142456 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142457 -- 5132302
142458 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
142459 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
142460
142461 END IF;
142462
142463 -- 4955764
142464 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
142465 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
142466
142467
142468 XLA_AE_LINES_PKG.ValidateCurrentLine;
142469 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
142470
142471 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
142472 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
142473 ,p_balance_type_code => l_balance_type_code);
142474
142475 END IF;
142476
142477 -----------------------------------------------------------------------------------------
142478 -- 4262811 Multiperiod Accounting
142479 -----------------------------------------------------------------------------------------
142480 -- No MPA option is assigned.
142481
142482
142483 END IF;
142484 END IF;
142485 --
142486
142487 --
142488 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142489 trace
142490 (p_msg => 'END of AcctLineType_257'
142491 ,p_level => C_LEVEL_PROCEDURE
142492 ,p_module => l_log_module);
142493 END IF;
142494 --
142495 EXCEPTION
142496 WHEN xla_exceptions_pkg.application_exception THEN
142497 RAISE;
142498 WHEN OTHERS THEN
142499 xla_exceptions_pkg.raise_message
142500 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_257');
142501 END AcctLineType_257;
142502 --
142503
142504 ---------------------------------------
142505 --
142506 -- PRIVATE FUNCTION
142507 -- AcctLineType_258
142508 --
142509 ---------------------------------------
142510 PROCEDURE AcctLineType_258 (
142511 p_application_id IN NUMBER
142512 ,p_event_id IN NUMBER
142513 ,p_calculate_acctd_flag IN VARCHAR2
142514 ,p_calculate_g_l_flag IN VARCHAR2
142515 ,p_actual_flag IN OUT VARCHAR2
142516 ,p_balance_type_code OUT VARCHAR2
142517 ,p_gain_or_loss_ref OUT VARCHAR2
142518
142519 --Accrual Account for the Write Off
142520 , p_source_1 IN NUMBER
142521 --Distribution Type
142522 , p_source_12 IN VARCHAR2
142523 , p_source_12_meaning IN VARCHAR2
142524 --Entered Currency Code
142525 , p_source_15 IN VARCHAR2
142526 --Entered Amount
142527 , p_source_18 IN NUMBER
142528 --Currency Conversion Date
142529 , p_source_19 IN DATE
142530 --Currency Conversion Rate
142531 , p_source_20 IN NUMBER
142532 --Currency Conversion Type
142533 , p_source_21 IN VARCHAR2
142534 --Accounted Amount
142535 , p_source_22 IN NUMBER
142536 --Line Number
142537 , p_source_25 IN NUMBER
142538 --WRITE_OFF_ID
142539 , p_source_26 IN NUMBER
142540 )
142541 IS
142542
142543 l_component_type VARCHAR2(80);
142544 l_component_code VARCHAR2(30);
142545 l_component_type_code VARCHAR2(1);
142546 l_component_appl_id INTEGER;
142547 l_amb_context_code VARCHAR2(30);
142548 l_entity_code VARCHAR2(30);
142549 l_event_class_code VARCHAR2(30);
142550 l_ae_header_id NUMBER;
142551 l_event_type_code VARCHAR2(30);
142552 l_line_definition_code VARCHAR2(30);
142553 l_line_definition_owner_code VARCHAR2(1);
142554 --
142555 -- adr variables
142556 l_segment VARCHAR2(30);
142557 l_ccid NUMBER;
142558 l_adr_transaction_coa_id NUMBER;
142559 l_adr_accounting_coa_id NUMBER;
142560 l_adr_flexfield_segment_code VARCHAR2(30);
142561 l_adr_flex_value_set_id NUMBER;
142562 l_adr_value_type_code VARCHAR2(30);
142563 l_adr_value_combination_id NUMBER;
142564 l_adr_value_segment_code VARCHAR2(30);
142565
142566 l_bflow_method_code VARCHAR2(30); -- 4219869 Business Flow
142567 l_bflow_class_code VARCHAR2(30); -- 4219869 Business Flow
142568 l_inherit_desc_flag VARCHAR2(1); -- 4219869 Business Flow
142569 l_budgetary_control_flag VARCHAR2(1); -- 4458381 Public Sector Enh
142570
142571 -- 4262811 Variables ------------------------------------------------------------------------------------------
142572 l_entered_amt_idx NUMBER;
142573 l_accted_amt_idx NUMBER;
142574 l_acc_rev_flag VARCHAR2(1);
142575 l_accrual_line_num NUMBER;
142576 l_tmp_amt NUMBER;
142577 l_acc_rev_natural_side_code VARCHAR2(1);
142578
142579 l_num_entries NUMBER;
142580 l_gl_dates xla_ae_journal_entry_pkg.t_array_date;
142581 l_accted_amts xla_ae_journal_entry_pkg.t_array_num;
142582 l_entered_amts xla_ae_journal_entry_pkg.t_array_num;
142583 l_period_names xla_ae_journal_entry_pkg.t_array_V15L;
142584 l_recog_line_1 NUMBER;
142585 l_recog_line_2 NUMBER;
142586
142587 l_bflow_applied_to_amt_idx NUMBER; -- 5132302
142588 l_bflow_applied_to_amt NUMBER; -- 5132302
142589 l_bflow_applied_to_amts xla_ae_journal_entry_pkg.t_array_num; -- 5132302
142590
142591 l_event_id NUMBER; -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
142592
142593 --l_rounding_ccy VARCHAR2(15); -- To handle MPA rounding 4262811b
142594 l_same_currency BOOLEAN; -- To handle MPA rounding 4262811b
142595
142596 ---------------------------------------------------------------------------------------------------------------
142597
142598
142599 --
142600 -- bulk performance
142601 --
142602 l_balance_type_code VARCHAR2(1);
142603 l_rec_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
142604 l_log_module VARCHAR2(240);
142605
142606 --
142607 -- Upgrade strategy
142608 --
142609 l_actual_upg_option VARCHAR2(1);
142610 l_enc_upg_option VARCHAR2(1);
142611
142612 --
142613 BEGIN
142614 --
142615 IF g_log_enabled THEN
142616 l_log_module := C_DEFAULT_MODULE||'.AcctLineType_258';
142617 END IF;
142618 --
142619 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142620
142621 trace
142622 (p_msg => 'BEGIN of AcctLineType_258'
142623 ,p_level => C_LEVEL_PROCEDURE
142624 ,p_module => l_log_module);
142625
142626 END IF;
142627 --
142628 l_component_type := 'AMB_JLT';
142629 l_component_code := 'WO_VAR_OFFSET_ACCRUAL';
142630 l_component_type_code := 'S';
142631 l_component_appl_id := 707;
142632 l_amb_context_code := 'DEFAULT';
142633 l_entity_code := 'WO_ACCOUNTING_EVENTS';
142634 l_event_class_code := 'ACCRUAL_WRITE_OFF';
142635 l_event_type_code := 'ACCRUAL_WRITE_OFF_ALL';
142636 l_line_definition_owner_code := 'S';
142637 l_line_definition_code := 'ACCRUAL_WRITE_OFF';
142638 --
142639 l_balance_type_code := 'A';
142640 l_segment := NULL;
142641 l_ccid := NULL;
142642 l_adr_transaction_coa_id := NULL;
142643 l_adr_accounting_coa_id := NULL;
142644 l_adr_flexfield_segment_code := NULL;
142645 l_adr_flex_value_set_id := NULL;
142646 l_adr_value_type_code := NULL;
142647 l_adr_value_combination_id := NULL;
142648 l_adr_value_segment_code := NULL;
142649
142650 l_bflow_method_code := 'NONE'; -- 4219869 Business Flow
142651 l_bflow_class_code := ''; -- 4219869 Business Flow
142652 l_inherit_desc_flag := 'N'; -- 4219869 Business Flow
142653 l_budgetary_control_flag := 'N';
142654
142655 l_bflow_applied_to_amt_idx := NULL; -- 5132302
142656 l_bflow_applied_to_amt := NULL; -- 5132302
142657 l_entered_amt_idx := NULL; -- 4262811
142658 l_accted_amt_idx := NULL; -- 4262811
142659 l_acc_rev_flag := NULL; -- 4262811
142660 l_accrual_line_num := NULL; -- 4262811
142661 l_tmp_amt := NULL; -- 4262811
142662 --
142663
142664 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
142665 l_balance_type_code <> 'B' THEN
142666 IF NVL(p_source_25,9E125) = 2
142667 THEN
142668
142669 --
142670 XLA_AE_LINES_PKG.SetNewLine;
142671
142672 p_balance_type_code := l_balance_type_code;
142673 -- set the flag so later we will know whether the gain loss line needs to be created
142674
142675 IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
142676 p_actual_flag :='A';
142677 END IF;
142678
142679 --
142680 -- bulk performance
142681 --
142682 XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
142683 p_header_num => 0); -- 4262811
142684 --
142685 -- set accounting line options
142686 --
142687 l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
142688 p_natural_side_code => 'C'
142689 , p_gain_or_loss_flag => 'N'
142690 , p_gl_transfer_mode_code => 'S'
142691 , p_acct_entry_type_code => 'A'
142692 , p_switch_side_flag => 'Y'
142693 , p_merge_duplicate_code => 'N'
142694 );
142695 --
142696 l_acc_rev_natural_side_code := 'D'; -- 4262811
142697 --
142698 --
142699 -- set accounting line type info
142700 --
142701 xla_ae_lines_pkg.SetAcctLineType
142702 (p_component_type => l_component_type
142703 ,p_event_type_code => l_event_type_code
142704 ,p_line_definition_owner_code => l_line_definition_owner_code
142705 ,p_line_definition_code => l_line_definition_code
142706 ,p_accounting_line_code => l_component_code
142707 ,p_accounting_line_type_code => l_component_type_code
142708 ,p_accounting_line_appl_id => l_component_appl_id
142709 ,p_amb_context_code => l_amb_context_code
142710 ,p_entity_code => l_entity_code
142711 ,p_event_class_code => l_event_class_code);
142712 --
142713 -- set accounting class
142714 --
142715 xla_ae_lines_pkg.SetAcctClass(
142716 p_accounting_class_code => 'ACCRUAL'
142717 , p_ae_header_id => l_ae_header_id
142718 );
142719
142720 --
142721 -- set rounding class
142722 --
142723 XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
142724 'ACCRUAL';
142725
142726 --
142727 xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
142728 xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
142729 --
142730 -- bulk performance
142731 --
142732 XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
142733
142734 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
142735 XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
142736
142737 -- 4955764
142738 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
142739 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
142740
142741 -- 4458381 Public Sector Enh
142742
142743 --
142744 -- set accounting attributes for the line type
142745 --
142746 l_entered_amt_idx := 3;
142747 l_accted_amt_idx := 8;
142748 l_bflow_applied_to_amt_idx := NULL; -- 5132302
142749 l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
142750 l_rec_acct_attrs.array_num_value(1) := to_char(p_source_26);
142751 l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
142752 l_rec_acct_attrs.array_char_value(2) := p_source_12;
142753 l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
142754 l_rec_acct_attrs.array_num_value(3) := p_source_18;
142755 l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
142756 l_rec_acct_attrs.array_char_value(4) := p_source_15;
142757 l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
142758 l_rec_acct_attrs.array_date_value(5) := p_source_19;
142759 l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
142760 l_rec_acct_attrs.array_num_value(6) := p_source_20;
142761 l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
142762 l_rec_acct_attrs.array_char_value(7) := p_source_21;
142763 l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
142764 l_rec_acct_attrs.array_num_value(8) := p_source_22;
142765
142766 XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
142767 p_gain_or_loss_ref := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
142768
142769 ---------------------------------------------------------------------------------------------------------------
142770 -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
142771 ---------------------------------------------------------------------------------------------------------------
142772 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
142773
142774 l_actual_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
142775 l_enc_upg_option := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
142776
142777 IF xla_accounting_cache_pkg.GetValueChar
142778 (p_source_code => 'LEDGER_CATEGORY_CODE'
142779 ,p_target_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
142780 AND l_bflow_method_code = 'PRIOR_ENTRY'
142781 -- AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
142782 AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
142783 (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
142784 )
142785 THEN
142786 xla_ae_lines_pkg.BflowUpgEntry
142787 (p_business_method_code => l_bflow_method_code
142788 ,p_business_class_code => l_bflow_class_code
142789 ,p_balance_type => l_balance_type_code);
142790 ELSE
142791 NULL;
142792 -- No business flow processing for business flow method of NONE.
142793 END IF;
142794
142795 --
142796 -- call analytical criteria
142797 --
142798
142799 --
142800 -- call description
142801 --
142802 -- No description or it is inherited.
142803 --
142804 -- call ADRs
142805 -- Bug 4922099
142806 --
142807 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142808 (NVL(l_actual_upg_option, 'N') = 'O') OR
142809 (NVL(l_enc_upg_option, 'N') = 'O')
142810 )
142811 THEN
142812 NULL;
142813 --
142814 --
142815
142816 l_ccid := AcctDerRule_1(
142817 p_application_id => p_application_id
142818 , p_ae_header_id => l_ae_header_id
142819 , p_source_1 => p_source_1
142820 , x_transaction_coa_id => l_adr_transaction_coa_id
142821 , x_accounting_coa_id => l_adr_accounting_coa_id
142822 , x_value_type_code => l_adr_value_type_code
142823 , p_side => 'NA'
142824 );
142825
142826 xla_ae_lines_pkg.set_ccid(
142827 p_code_combination_id => l_ccid
142828 , p_value_type_code => l_adr_value_type_code
142829 , p_transaction_coa_id => l_adr_transaction_coa_id
142830 , p_accounting_coa_id => l_adr_accounting_coa_id
142831 , p_adr_code => 'CST_AWO_ACCRUAL'
142832 , p_adr_type_code => 'S'
142833 , p_component_type => l_component_type
142834 , p_component_code => l_component_code
142835 , p_component_type_code => l_component_type_code
142836 , p_component_appl_id => l_component_appl_id
142837 , p_amb_context_code => l_amb_context_code
142838 , p_side => 'NA'
142839 );
142840
142841
142842 --
142843 --
142844 END IF;
142845 --
142846 -- Bug 4922099
142847 IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
142848 (NVL(l_enc_upg_option, 'N') = 'O')
142849 ) AND
142850 (l_bflow_method_code = 'PRIOR_ENTRY')
142851 )
142852 THEN
142853 IF
142854 --
142855 1 = 2
142856 --
142857 THEN
142858 xla_accounting_err_pkg.build_message
142859 (p_appli_s_name => 'XLA'
142860 ,p_msg_name => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142861 ,p_token_1 => 'LINE_NUMBER'
142862 ,p_value_1 => XLA_AE_LINES_PKG.g_LineNumber
142863 ,p_token_2 => 'LINE_TYPE_NAME'
142864 ,p_value_2 => XLA_AE_SOURCES_PKG.GetComponentName (
142865 l_component_type
142866 ,l_component_code
142867 ,l_component_type_code
142868 ,l_component_appl_id
142869 ,l_amb_context_code
142870 ,l_entity_code
142871 ,l_event_class_code
142872 )
142873 ,p_token_3 => 'OWNER'
142874 ,p_value_3 => xla_lookups_pkg.get_meaning(
142875 p_lookup_type => 'XLA_OWNER_TYPE'
142876 ,p_lookup_code => l_component_type_code
142877 )
142878 ,p_token_4 => 'PRODUCT_NAME'
142879 ,p_value_4 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
142880 ,p_entity_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
142881 ,p_event_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
142882 ,p_ledger_id => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
142883 ,p_ae_header_id => NULL
142884 );
142885
142886 IF (C_LEVEL_ERROR>= g_log_level) THEN
142887 trace
142888 (p_msg => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
142889 ,p_level => C_LEVEL_ERROR
142890 ,p_module => l_log_module);
142891 END IF;
142892 END IF;
142893 END IF;
142894 --
142895 --
142896 ------------------------------------------------------------------------------------------------
142897 -- 4219869 Business Flow
142898 -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
142899 -- Prior Entry. Currently, the following code is always generated.
142900 ------------------------------------------------------------------------------------------------
142901 XLA_AE_LINES_PKG.ValidateCurrentLine;
142902
142903 ------------------------------------------------------------------------------------
142904 -- 4219869 Business Flow
142905 -- Populated credit and debit amounts -- Need to generate this within IF <condition>
142906 ------------------------------------------------------------------------------------
142907 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
142908
142909 ----------------------------------------------------------------------------------
142910 -- 4219869 Business Flow
142911 -- Update journal entry status -- Need to generate this within IF <condition>
142912 ----------------------------------------------------------------------------------
142913 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
142914 (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
142915 ,p_balance_type_code => l_balance_type_code
142916 );
142917
142918 -------------------------------------------------------------------------------------------
142919 -- 4262811 - Generate the Accrual Reversal lines
142920 -------------------------------------------------------------------------------------------
142921 BEGIN
142922 l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
142923 (g_array_event(p_event_id).array_value_num('header_index'));
142924 IF l_acc_rev_flag IS NULL THEN
142925 l_acc_rev_flag := 'N';
142926 END IF;
142927 EXCEPTION
142928 WHEN OTHERS THEN
142929 l_acc_rev_flag := 'N';
142930 END;
142931 --
142932 IF (l_acc_rev_flag = 'Y') THEN
142933
142934 -- 4645092 ------------------------------------------------------------------------------
142935 -- To allow MPA report to determine if it should generate report process
142936 XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
142937 ------------------------------------------------------------------------------------------
142938
142939 l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
142940 XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
142941 -- added call to set_ccid to execute mapping for secondary accrual reversal entries bug 7444204
142942 -- call ADRs
142943 -- Bug 4922099
142944 --
142945 IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
142946 (NVL(l_actual_upg_option, 'N') = 'O') OR
142947 (NVL(l_enc_upg_option, 'N') = 'O')
142948 )
142949 THEN
142950 NULL;
142951 --
142952 --
142953
142954 l_ccid := AcctDerRule_1(
142955 p_application_id => p_application_id
142956 , p_ae_header_id => l_ae_header_id
142957 , p_source_1 => p_source_1
142958 , x_transaction_coa_id => l_adr_transaction_coa_id
142959 , x_accounting_coa_id => l_adr_accounting_coa_id
142960 , x_value_type_code => l_adr_value_type_code
142961 , p_side => 'NA'
142962 );
142963
142964 xla_ae_lines_pkg.set_ccid(
142965 p_code_combination_id => l_ccid
142966 , p_value_type_code => l_adr_value_type_code
142967 , p_transaction_coa_id => l_adr_transaction_coa_id
142968 , p_accounting_coa_id => l_adr_accounting_coa_id
142969 , p_adr_code => 'CST_AWO_ACCRUAL'
142970 , p_adr_type_code => 'S'
142971 , p_component_type => l_component_type
142972 , p_component_code => l_component_code
142973 , p_component_type_code => l_component_type_code
142974 , p_component_appl_id => l_component_appl_id
142975 , p_amb_context_code => l_amb_context_code
142976 , p_side => 'NA'
142977 );
142978
142979
142980 --
142981 --
142982 END IF;
142983
142984 --
142985 -- Update the line information that should be overwritten
142986 --
142987 XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
142988 p_header_num => 1);
142989 XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber) :=1;
142990
142991 XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
142992
142993 IF l_bflow_method_code <> 'NONE' THEN -- 4655713b
142994 XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
142995 END IF;
142996
142997 --
142998 -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
142999 --
143000 IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
143001 XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) := l_acc_rev_natural_side_code;
143002 ELSE
143003 ---------------------------------------------------------------------------------------------------
143004 -- 4262811a Switch Sign
143005 ---------------------------------------------------------------------------------------------------
143006 XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N'; -- 5052518
143007 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
143008 XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
143009 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
143010 XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
143011 -- 5132302
143012 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
143013 XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
143014
143015 END IF;
143016
143017 -- 4955764
143018 XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
143019 XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
143020
143021
143022 XLA_AE_LINES_PKG.ValidateCurrentLine;
143023 XLA_AE_LINES_PKG.SetDebitCreditAmounts;
143024
143025 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
143026 (p_hdr_idx => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
143027 ,p_balance_type_code => l_balance_type_code);
143028
143029 END IF;
143030
143031 -----------------------------------------------------------------------------------------
143032 -- 4262811 Multiperiod Accounting
143033 -----------------------------------------------------------------------------------------
143034 -- No MPA option is assigned.
143035
143036
143037 END IF;
143038 END IF;
143039 --
143040
143041 --
143042 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143043 trace
143044 (p_msg => 'END of AcctLineType_258'
143045 ,p_level => C_LEVEL_PROCEDURE
143046 ,p_module => l_log_module);
143047 END IF;
143048 --
143049 EXCEPTION
143050 WHEN xla_exceptions_pkg.application_exception THEN
143051 RAISE;
143052 WHEN OTHERS THEN
143053 xla_exceptions_pkg.raise_message
143054 (p_location => 'XLA_00707_AAD_S_000005_PKG.AcctLineType_258');
143055 END AcctLineType_258;
143056 --
143057
143058 ---------------------------------------
143059 --
143060 -- PRIVATE PROCEDURE
143061 -- insert_sources_259
143062 --
143063 ----------------------------------------
143064 --
143065 PROCEDURE insert_sources_259(
143066 p_target_ledger_id IN NUMBER
143067 , p_language IN VARCHAR2
143068 , p_sla_ledger_id IN NUMBER
143069 , p_pad_start_date IN DATE
143070 , p_pad_end_date IN DATE
143071 )
143072 IS
143073
143074 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ABSORPTION_ALL';
143075 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ABSORPTION';
143076 p_apps_owner VARCHAR2(30);
143077 l_log_module VARCHAR2(240);
143078 BEGIN
143079 IF g_log_enabled THEN
143080 l_log_module := C_DEFAULT_MODULE||'.insert_sources_259';
143081 END IF;
143082 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143083
143084 trace
143085 (p_msg => 'BEGIN of insert_sources_259'
143086 ,p_level => C_LEVEL_PROCEDURE
143087 ,p_module => l_log_module);
143088
143089 END IF;
143090
143091 -- select APPS owner
143092 SELECT oracle_username
143093 INTO p_apps_owner
143094 FROM fnd_oracle_userid
143095 WHERE read_only_flag = 'U'
143096 ;
143097
143098 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143099 trace
143100 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
143101 ' - p_language = '||p_language||
143102 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
143103 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
143104 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
143105 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
143106 ,p_level => C_LEVEL_STATEMENT
143107 ,p_module => l_log_module);
143108 END IF;
143109
143110
143111 --
143112 INSERT INTO xla_diag_sources --hdr2
143113 (
143114 event_id
143115 , ledger_id
143116 , sla_ledger_id
143117 , description_language
143118 , object_name
143119 , object_type_code
143120 , line_number
143121 , source_application_id
143122 , source_type_code
143123 , source_code
143124 , source_value
143125 , source_meaning
143126 , created_by
143127 , creation_date
143128 , last_update_date
143129 , last_updated_by
143130 , last_update_login
143131 , program_update_date
143132 , program_application_id
143133 , program_id
143134 , request_id
143135 )
143136 SELECT
143137 event_id
143138 , p_target_ledger_id
143139 , p_sla_ledger_id
143140 , p_language
143141 , object_name
143142 , object_type_code
143143 , line_number
143144 , source_application_id
143145 , source_type_code
143146 , source_code
143147 , SUBSTR(source_value ,1,1996)
143148 , SUBSTR(source_meaning ,1,200)
143149 , xla_environment_pkg.g_Usr_Id
143150 , TRUNC(SYSDATE)
143151 , TRUNC(SYSDATE)
143152 , xla_environment_pkg.g_Usr_Id
143153 , xla_environment_pkg.g_Login_Id
143154 , TRUNC(SYSDATE)
143155 , xla_environment_pkg.g_Prog_Appl_Id
143156 , xla_environment_pkg.g_Prog_Id
143157 , xla_environment_pkg.g_Req_Id
143158 FROM (
143159 SELECT xet.event_id event_id
143160 , 0 line_number
143161 , CASE r
143162 WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V'
143163 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V'
143164 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V'
143165 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V'
143166 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V'
143167 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V'
143168
143169 ELSE null
143170 END object_name
143171 , CASE r
143172 WHEN 1 THEN 'HEADER'
143173 WHEN 2 THEN 'HEADER'
143174 WHEN 3 THEN 'HEADER'
143175 WHEN 4 THEN 'HEADER'
143176 WHEN 5 THEN 'HEADER'
143177 WHEN 6 THEN 'HEADER'
143178
143179 ELSE null
143180 END object_type_code
143181 , CASE r
143182 WHEN 1 THEN '707'
143183 WHEN 2 THEN '707'
143184 WHEN 3 THEN '707'
143185 WHEN 4 THEN '707'
143186 WHEN 5 THEN '707'
143187 WHEN 6 THEN '707'
143188
143189 ELSE null
143190 END source_application_id
143191 , 'S' source_type_code
143192 , CASE r
143193 WHEN 1 THEN 'DISTRIBUTION_TYPE'
143194 WHEN 2 THEN 'CURRENCY_CODE'
143195 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
143196 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
143197 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
143198 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
143199
143200 ELSE null
143201 END source_code
143202 , CASE r
143203 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
143204 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
143205 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
143206 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
143207 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
143208 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
143209
143210 ELSE null
143211 END source_value
143212 , CASE r
143213 WHEN 1 THEN fvl12.meaning
143214 WHEN 6 THEN fvl38.meaning
143215
143216 ELSE null
143217 END source_meaning
143218 FROM xla_events_gt xet
143219 , CST_XLA_WIP_HEADERS_V h1
143220 , fnd_lookup_values fvl12
143221 , fnd_lookup_values fvl38
143222 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
143223 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
143224 AND xet.event_class_code = C_EVENT_CLASS_CODE
143225 AND h1.event_id = xet.event_id
143226 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
143227 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
143228 AND fvl12.view_application_id(+) = 700
143229 AND fvl12.language(+) = USERENV('LANG')
143230 AND fvl38.lookup_type(+) = 'YES_NO'
143231 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
143232 AND fvl38.view_application_id(+) = 0
143233 AND fvl38.language(+) = USERENV('LANG')
143234
143235 )
143236 ;
143237 --
143238 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143239
143240 trace
143241 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
143242 ,p_level => C_LEVEL_STATEMENT
143243 ,p_module => l_log_module);
143244
143245 END IF;
143246 --
143247
143248
143249
143250 --
143251 INSERT INTO xla_diag_sources --line2
143252 (
143253 event_id
143254 , ledger_id
143255 , sla_ledger_id
143256 , description_language
143257 , object_name
143258 , object_type_code
143259 , line_number
143260 , source_application_id
143261 , source_type_code
143262 , source_code
143263 , source_value
143264 , source_meaning
143265 , created_by
143266 , creation_date
143267 , last_update_date
143268 , last_updated_by
143269 , last_update_login
143270 , program_update_date
143271 , program_application_id
143272 , program_id
143273 , request_id
143274 )
143275 SELECT event_id
143276 , p_target_ledger_id
143277 , p_sla_ledger_id
143278 , p_language
143279 , object_name
143280 , object_type_code
143281 , line_number
143282 , source_application_id
143283 , source_type_code
143284 , source_code
143285 , SUBSTR(source_value,1,1996)
143286 , SUBSTR(source_meaning ,1,200)
143287 , xla_environment_pkg.g_Usr_Id
143288 , TRUNC(SYSDATE)
143289 , TRUNC(SYSDATE)
143290 , xla_environment_pkg.g_Usr_Id
143291 , xla_environment_pkg.g_Login_Id
143292 , TRUNC(SYSDATE)
143293 , xla_environment_pkg.g_Prog_Appl_Id
143294 , xla_environment_pkg.g_Prog_Id
143295 , xla_environment_pkg.g_Req_Id
143296 FROM (
143297 SELECT xet.event_id event_id
143298 , l2.line_number line_number
143299 , CASE r
143300 WHEN 1 THEN 'CST_XLA_WIP_LINES_V'
143301 WHEN 2 THEN 'CST_XLA_WIP_LINES_V'
143302 WHEN 3 THEN 'CST_XLA_WIP_LINES_V'
143303 WHEN 4 THEN 'CST_XLA_WIP_LINES_V'
143304 WHEN 5 THEN 'CST_XLA_WIP_LINES_V'
143305
143306 ELSE null
143307 END object_name
143308 , CASE r
143309 WHEN 1 THEN 'LINE'
143310 WHEN 2 THEN 'LINE'
143311 WHEN 3 THEN 'LINE'
143312 WHEN 4 THEN 'LINE'
143313 WHEN 5 THEN 'LINE'
143314
143315 ELSE null
143316 END object_type_code
143317 , CASE r
143318 WHEN 1 THEN '707'
143319 WHEN 2 THEN '707'
143320 WHEN 3 THEN '707'
143321 WHEN 4 THEN '707'
143322 WHEN 5 THEN '707'
143323
143324 ELSE null
143325 END source_application_id
143326 , 'S' source_type_code
143327 , CASE r
143328 WHEN 1 THEN 'CODE_COMBINATION_ID'
143329 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
143330 WHEN 3 THEN 'ENTERED_AMOUNT'
143331 WHEN 4 THEN 'ACCOUNTED_AMOUNT'
143332 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE'
143333
143334 ELSE null
143335 END source_code
143336 , CASE r
143337 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
143338 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
143339 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
143340 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
143341 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
143342
143343 ELSE null
143344 END source_value
143345 , null source_meaning
143346 FROM xla_events_gt xet
143347 , CST_XLA_WIP_LINES_V l2
143348 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
143349 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
143350 AND xet.event_class_code = C_EVENT_CLASS_CODE
143351 AND l2.event_id = xet.event_id
143352
143353 )
143354 ;
143355 --
143356 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143357
143358 trace
143359 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
143360 ,p_level => C_LEVEL_STATEMENT
143361 ,p_module => l_log_module);
143362
143363 END IF;
143364
143365
143366 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143367 trace
143368 (p_msg => 'END of insert_sources_259'
143369 ,p_level => C_LEVEL_PROCEDURE
143370 ,p_module => l_log_module);
143371 END IF;
143372 EXCEPTION
143373 WHEN xla_exceptions_pkg.application_exception THEN
143374 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
143375 trace
143376 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
143377 ,p_level => C_LEVEL_EXCEPTION
143378 ,p_module => l_log_module);
143379 END IF;
143380 RAISE;
143381 WHEN OTHERS THEN
143382 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
143383 trace
143384 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
143385 ,p_level => C_LEVEL_EXCEPTION
143386 ,p_module => l_log_module);
143387 END IF;
143388 xla_exceptions_pkg.raise_message
143389 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_259');
143390 END insert_sources_259;
143391 --
143392
143393 ---------------------------------------
143394 --
143395 -- PRIVATE FUNCTION
143396 -- EventClass_259
143397 --
143398 ----------------------------------------
143399 --
143400 FUNCTION EventClass_259
143401 (p_application_id IN NUMBER
143402 ,p_base_ledger_id IN NUMBER
143403 ,p_target_ledger_id IN NUMBER
143404 ,p_language IN VARCHAR2
143405 ,p_currency_code IN VARCHAR2
143406 ,p_sla_ledger_id IN NUMBER
143407 ,p_pad_start_date IN DATE
143408 ,p_pad_end_date IN DATE
143409 ,p_primary_ledger_id IN NUMBER)
143410 RETURN BOOLEAN IS
143411 --
143412 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ABSORPTION_ALL';
143413 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ABSORPTION';
143414
143415 l_calculate_acctd_flag VARCHAR2(1) :='N';
143416 l_calculate_g_l_flag VARCHAR2(1) :='N';
143417 --
143418 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143419 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143420 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143421 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143422 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143423 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143424 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143425 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143426 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143427 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143428 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143429 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143430 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143431 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
143432 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143433 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143434 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143435 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
143436 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143437 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143438 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143439 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
143440 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
143441 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
143442 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
143443 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
143444
143445 l_event_id NUMBER;
143446 l_previous_event_id NUMBER;
143447 l_first_event_id NUMBER;
143448 l_last_event_id NUMBER;
143449
143450 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
143451 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
143452 --
143453 --
143454 l_result BOOLEAN := TRUE;
143455 l_rows NUMBER := 1000;
143456 l_event_type_name VARCHAR2(80) := 'All';
143457 l_event_class_name VARCHAR2(80) := 'WIP Absorption';
143458 l_description VARCHAR2(4000);
143459 l_transaction_reversal NUMBER;
143460 l_ae_header_id NUMBER;
143461 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
143462 l_log_module VARCHAR2(240);
143463 --
143464 l_acct_reversal_source VARCHAR2(30);
143465 l_trx_reversal_source VARCHAR2(30);
143466
143467 l_continue_with_lines BOOLEAN := TRUE;
143468 --
143469 l_acc_rev_gl_date_source DATE; -- 4262811
143470 --
143471 type t_array_event_id is table of number index by binary_integer;
143472
143473 l_rec_array_event t_rec_array_event;
143474 l_null_rec_array_event t_rec_array_event;
143475 l_array_ae_header_id xla_number_array_type;
143476 l_actual_flag VARCHAR2(1) := NULL;
143477 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
143478 l_balance_type_code VARCHAR2(1) :=NULL;
143479 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
143480
143481 --
143482 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
143483 --
143484
143485 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
143486 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
143487 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
143488 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
143489 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
143490 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
143491
143492 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
143493 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
143494 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143495 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
143496 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
143497
143498 l_array_source_12 t_array_source_12;
143499 l_array_source_12_meaning t_array_lookup_meaning;
143500 l_array_source_15 t_array_source_15;
143501 l_array_source_19 t_array_source_19;
143502 l_array_source_20 t_array_source_20;
143503 l_array_source_21 t_array_source_21;
143504 l_array_source_38 t_array_source_38;
143505 l_array_source_38_meaning t_array_lookup_meaning;
143506
143507 l_array_source_4 t_array_source_4;
143508 l_array_source_11 t_array_source_11;
143509 l_array_source_18 t_array_source_18;
143510 l_array_source_22 t_array_source_22;
143511 l_array_source_24 t_array_source_24;
143512
143513 --
143514 CURSOR header_cur
143515 IS
143516 SELECT /*+ leading(xet) cardinality(xet,1) */
143517 -- Event Class Code: ABSORPTION
143518 xet.entity_id
143519 ,xet.legal_entity_id
143520 ,xet.entity_code
143521 ,xet.transaction_number
143522 ,xet.event_id
143523 ,xet.event_class_code
143524 ,xet.event_type_code
143525 ,xet.event_number
143526 ,xet.event_date
143527 ,xet.transaction_date
143528 ,xet.reference_num_1
143529 ,xet.reference_num_2
143530 ,xet.reference_num_3
143531 ,xet.reference_num_4
143532 ,xet.reference_char_1
143533 ,xet.reference_char_2
143534 ,xet.reference_char_3
143535 ,xet.reference_char_4
143536 ,xet.reference_date_1
143537 ,xet.reference_date_2
143538 ,xet.reference_date_3
143539 ,xet.reference_date_4
143540 ,xet.event_created_by
143541 ,xet.budgetary_control_flag
143542 , h1.DISTRIBUTION_TYPE source_12
143543 , fvl12.meaning source_12_meaning
143544 , h1.CURRENCY_CODE source_15
143545 , h1.CURRENCY_CONVERSION_DATE source_19
143546 , h1.CURRENCY_CONVERSION_RATE source_20
143547 , h1.CURRENCY_CONVERSION_TYPE source_21
143548 , h1.TRANSFER_TO_GL_INDICATOR source_38
143549 , fvl38.meaning source_38_meaning
143550 FROM xla_events_gt xet
143551 , CST_XLA_WIP_HEADERS_V h1
143552 , fnd_lookup_values fvl12
143553 , fnd_lookup_values fvl38
143554 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
143555 and xet.event_class_code = C_EVENT_CLASS_CODE
143556 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
143557 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
143558 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
143559 AND fvl12.view_application_id(+) = 700
143560 AND fvl12.language(+) = USERENV('LANG')
143561 AND fvl38.lookup_type(+) = 'YES_NO'
143562 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
143563 AND fvl38.view_application_id(+) = 0
143564 AND fvl38.language(+) = USERENV('LANG')
143565
143566 ORDER BY event_id
143567 ;
143568
143569
143570 --
143571 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
143572 IS
143573 SELECT /*+ leading(xet) cardinality(xet,1) */
143574 -- Event Class Code: ABSORPTION
143575 xet.entity_id
143576 ,xet.legal_entity_id
143577 ,xet.entity_code
143578 ,xet.transaction_number
143579 ,xet.event_id
143580 ,xet.event_class_code
143581 ,xet.event_type_code
143582 ,xet.event_number
143583 ,xet.event_date
143584 ,xet.transaction_date
143585 ,xet.reference_num_1
143586 ,xet.reference_num_2
143587 ,xet.reference_num_3
143588 ,xet.reference_num_4
143589 ,xet.reference_char_1
143590 ,xet.reference_char_2
143591 ,xet.reference_char_3
143592 ,xet.reference_char_4
143593 ,xet.reference_date_1
143594 ,xet.reference_date_2
143595 ,xet.reference_date_3
143596 ,xet.reference_date_4
143597 ,xet.event_created_by
143598 ,xet.budgetary_control_flag
143599 , l2.LINE_NUMBER
143600 , l2.CODE_COMBINATION_ID source_4
143601 , l2.DISTRIBUTION_IDENTIFIER source_11
143602 , l2.ENTERED_AMOUNT source_18
143603 , l2.ACCOUNTED_AMOUNT source_22
143604 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
143605 FROM xla_events_gt xet
143606 , CST_XLA_WIP_LINES_V l2
143607 WHERE xet.event_id between x_first_event_id and x_last_event_id
143608 and xet.event_date between p_pad_start_date and p_pad_end_date
143609 and xet.event_class_code = C_EVENT_CLASS_CODE
143610 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
143611 ;
143612
143613 --
143614 BEGIN
143615 IF g_log_enabled THEN
143616 l_log_module := C_DEFAULT_MODULE||'.EventClass_259';
143617 END IF;
143618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
143619 trace
143620 (p_msg => 'BEGIN of EventClass_259'
143621 ,p_level => C_LEVEL_PROCEDURE
143622 ,p_module => l_log_module);
143623 END IF;
143624
143625 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143626 trace
143627 (p_msg => 'p_application_id = '||p_application_id||
143628 ' - p_base_ledger_id = '||p_base_ledger_id||
143629 ' - p_target_ledger_id = '||p_target_ledger_id||
143630 ' - p_language = '||p_language||
143631 ' - p_currency_code = '||p_currency_code||
143632 ' - p_sla_ledger_id = '||p_sla_ledger_id
143633 ,p_level => C_LEVEL_STATEMENT
143634 ,p_module => l_log_module);
143635 END IF;
143636 --
143637 -- initialze arrays
143638 --
143639 g_array_event.DELETE;
143640 l_rec_array_event := l_null_rec_array_event;
143641 --
143642 --------------------------------------
143643 -- 4262811 Initialze MPA Line Number
143644 --------------------------------------
143645 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
143646
143647 --
143648
143649 --
143650 OPEN header_cur;
143651 --
143652 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143653 trace
143654 (p_msg => 'SQL - FETCH header_cur'
143655 ,p_level => C_LEVEL_STATEMENT
143656 ,p_module => l_log_module);
143657 END IF;
143658 --
143659 LOOP
143660 FETCH header_cur BULK COLLECT INTO
143661 l_array_entity_id
143662 , l_array_legal_entity_id
143663 , l_array_entity_code
143664 , l_array_transaction_num
143665 , l_array_event_id
143666 , l_array_class_code
143667 , l_array_event_type
143668 , l_array_event_number
143669 , l_array_event_date
143670 , l_array_transaction_date
143671 , l_array_reference_num_1
143672 , l_array_reference_num_2
143673 , l_array_reference_num_3
143674 , l_array_reference_num_4
143675 , l_array_reference_char_1
143676 , l_array_reference_char_2
143677 , l_array_reference_char_3
143678 , l_array_reference_char_4
143679 , l_array_reference_date_1
143680 , l_array_reference_date_2
143681 , l_array_reference_date_3
143682 , l_array_reference_date_4
143683 , l_array_event_created_by
143684 , l_array_budgetary_control_flag
143685 , l_array_source_12
143686 , l_array_source_12_meaning
143687 , l_array_source_15
143688 , l_array_source_19
143689 , l_array_source_20
143690 , l_array_source_21
143691 , l_array_source_38
143692 , l_array_source_38_meaning
143693 LIMIT l_rows;
143694 --
143695 IF (C_LEVEL_EVENT >= g_log_level) THEN
143696 trace
143697 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
143698 ,p_level => C_LEVEL_EVENT
143699 ,p_module => l_log_module);
143700 END IF;
143701 --
143702 EXIT WHEN l_array_entity_id.COUNT = 0;
143703
143704 -- initialize arrays
143705 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
143706 XLA_AE_LINES_PKG.g_rec_lines := NULL;
143707
143708 --
143709 -- Bug 4458708
143710 --
143711 XLA_AE_LINES_PKG.g_LineNumber := 0;
143712
143713
143714 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
143715 g_last_hdr_idx := l_array_event_id.LAST;
143716 --
143717 -- loop for the headers. Each iteration is for each header extract row
143718 -- fetched in header cursor
143719 --
143720 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
143721
143722 --
143723 -- set event info as cache for other routines to refer event attributes
143724 --
143725 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
143726 (p_application_id => p_application_id
143727 ,p_primary_ledger_id => p_primary_ledger_id
143728 ,p_base_ledger_id => p_base_ledger_id
143729 ,p_target_ledger_id => p_target_ledger_id
143730 ,p_entity_id => l_array_entity_id(hdr_idx)
143731 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
143732 ,p_entity_code => l_array_entity_code(hdr_idx)
143733 ,p_transaction_num => l_array_transaction_num(hdr_idx)
143734 ,p_event_id => l_array_event_id(hdr_idx)
143735 ,p_event_class_code => l_array_class_code(hdr_idx)
143736 ,p_event_type_code => l_array_event_type(hdr_idx)
143737 ,p_event_number => l_array_event_number(hdr_idx)
143738 ,p_event_date => l_array_event_date(hdr_idx)
143739 ,p_transaction_date => l_array_transaction_date(hdr_idx)
143740 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
143741 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
143742 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
143743 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
143744 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
143745 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
143746 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
143747 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
143748 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
143749 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
143750 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
143751 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
143752 ,p_event_created_by => l_array_event_created_by(hdr_idx)
143753 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
143754
143755 --
143756 -- set the status of entry to C_VALID (0)
143757 --
143758 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
143759
143760 --
143761 -- initialize a row for ae header
143762 --
143763 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
143764
143765 l_event_id := l_array_event_id(hdr_idx);
143766
143767 --
143768 -- storing the hdr_idx for event. May be used by line cursor.
143769 --
143770 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
143771
143772 --
143773 -- store sources from header extract. This can be improved to
143774 -- store only those sources from header extract that may be used in lines
143775 --
143776
143777 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
143778 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
143779 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
143780 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
143781 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
143782 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
143783 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
143784 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
143785
143786 --
143787 -- initilaize the status of ae headers for diffrent balance types
143788 -- the status is initialised to C_NOT_CREATED (2)
143789 --
143790 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143791 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143792 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
143793
143794 --
143795 -- call api to validate and store accounting attributes for header
143796 --
143797
143798 ------------------------------------------------------------
143799 -- Accrual Reversal : to get date for Standard Source (NONE)
143800 ------------------------------------------------------------
143801 l_acc_rev_gl_date_source := NULL;
143802
143803 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
143804 l_rec_acct_attrs.array_date_value(1) :=
143805 xla_ae_sources_pkg.GetSystemSourceDate(
143806 p_source_code => 'XLA_REFERENCE_DATE_1'
143807 , p_source_type_code => 'Y'
143808 , p_source_application_id => 602
143809 );
143810 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
143811 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
143812
143813
143814 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
143815
143816 XLA_AE_HEADER_PKG.SetJeCategoryName;
143817
143818 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
143819 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
143820 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
143821 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
143822 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
143823
143824
143825 -- No header level analytical criteria
143826
143827 --
143828 --accounting attribute enhancement, bug 3612931
143829 --
143830 l_trx_reversal_source := SUBSTR(NULL, 1,30);
143831
143832 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
143833 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
143834
143835 xla_accounting_err_pkg.build_message
143836 (p_appli_s_name => 'XLA'
143837 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
143838 ,p_token_1 => 'ACCT_ATTR_NAME'
143839 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
143840 ,p_token_2 => 'PRODUCT_NAME'
143841 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
143842 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
143843 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
143844 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
143845
143846 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
143847 --
143848 -- following sets the accounting attributes needed to reverse
143849 -- accounting for a distributeion
143850 --
143851 xla_ae_lines_pkg.SetTrxReversalAttrs
143852 (p_event_id => l_event_id
143853 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
143854 ,p_trx_reversal_source => l_trx_reversal_source);
143855
143856 END IF;
143857
143858
143859 ----------------------------------------------------------------
143860 -- 4262811 - update the header statuses to invalid in need be
143861 ----------------------------------------------------------------
143862 --
143863 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
143864
143865
143866 -----------------------------------------------
143867 -- No accrual reversal for the event class/type
143868 -----------------------------------------------
143869 ----------------------------------------------------------------
143870
143871 --
143872 -- this ends the header loop iteration for one bulk fetch
143873 --
143874 END LOOP;
143875
143876 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
143877 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
143878
143879 --
143880 -- insert dummy rows into lines gt table that were created due to
143881 -- transaction reversals
143882 --
143883 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
143884 l_result := XLA_AE_LINES_PKG.InsertLines;
143885 END IF;
143886
143887 --
143888 -- reset the temp_line_num for each set of events fetched from header
143889 -- cursor rather than doing it for each new event in line cursor
143890 -- Bug 3939231
143891 --
143892 xla_ae_lines_pkg.g_temp_line_num := 0;
143893
143894
143895
143896 --
143897 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
143898 --
143899 --
143900 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143901
143902 trace
143903 (p_msg => 'SQL - FETCH line_cur'
143904 ,p_level => C_LEVEL_STATEMENT
143905 ,p_module => l_log_module);
143906
143907 END IF;
143908 --
143909 --
143910 LOOP
143911 --
143912 FETCH line_cur BULK COLLECT INTO
143913 l_array_entity_id
143914 , l_array_legal_entity_id
143915 , l_array_entity_code
143916 , l_array_transaction_num
143917 , l_array_event_id
143918 , l_array_class_code
143919 , l_array_event_type
143920 , l_array_event_number
143921 , l_array_event_date
143922 , l_array_transaction_date
143923 , l_array_reference_num_1
143924 , l_array_reference_num_2
143925 , l_array_reference_num_3
143926 , l_array_reference_num_4
143927 , l_array_reference_char_1
143928 , l_array_reference_char_2
143929 , l_array_reference_char_3
143930 , l_array_reference_char_4
143931 , l_array_reference_date_1
143932 , l_array_reference_date_2
143933 , l_array_reference_date_3
143934 , l_array_reference_date_4
143935 , l_array_event_created_by
143936 , l_array_budgetary_control_flag
143937 , l_array_extract_line_num
143938 , l_array_source_4
143939 , l_array_source_11
143940 , l_array_source_18
143941 , l_array_source_22
143942 , l_array_source_24
143943 LIMIT l_rows;
143944
143945 --
143946 IF (C_LEVEL_EVENT >= g_log_level) THEN
143947 trace
143948 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
143949 ,p_level => C_LEVEL_EVENT
143950 ,p_module => l_log_module);
143951 END IF;
143952 --
143953 EXIT WHEN l_array_entity_id.count = 0;
143954
143955 XLA_AE_LINES_PKG.g_rec_lines := null;
143956
143957 --
143958 -- Bug 4458708
143959 --
143960 XLA_AE_LINES_PKG.g_LineNumber := 0;
143961 --
143962 --
143963
143964 FOR Idx IN 1..l_array_event_id.count LOOP
143965 --
143966 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
143967 --
143968 l_event_id := l_array_event_id(idx); -- 5648433
143969
143970 --
143971 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
143972 --
143973
143974 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
143975 (g_array_event(l_event_id).array_value_num('header_index'))
143976 ,'N'
143977 ) <> 'Y'
143978 THEN
143979 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
143980 trace
143981 (p_msg => 'Trancaction revesal option is not Y '
143982 ,p_level => C_LEVEL_STATEMENT
143983 ,p_module => l_log_module);
143984 END IF;
143985
143986 --
143987 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
143988 --
143989 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
143990 --
143991 -- set event info as cache for other routines to refer event attributes
143992 --
143993
143994 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
143995 l_previous_event_id := l_event_id;
143996
143997 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
143998 (p_application_id => p_application_id
143999 ,p_primary_ledger_id => p_primary_ledger_id
144000 ,p_base_ledger_id => p_base_ledger_id
144001 ,p_target_ledger_id => p_target_ledger_id
144002 ,p_entity_id => l_array_entity_id(Idx)
144003 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
144004 ,p_entity_code => l_array_entity_code(Idx)
144005 ,p_transaction_num => l_array_transaction_num(Idx)
144006 ,p_event_id => l_array_event_id(Idx)
144007 ,p_event_class_code => l_array_class_code(Idx)
144008 ,p_event_type_code => l_array_event_type(Idx)
144009 ,p_event_number => l_array_event_number(Idx)
144010 ,p_event_date => l_array_event_date(Idx)
144011 ,p_transaction_date => l_array_transaction_date(Idx)
144012 ,p_reference_num_1 => l_array_reference_num_1(Idx)
144013 ,p_reference_num_2 => l_array_reference_num_2(Idx)
144014 ,p_reference_num_3 => l_array_reference_num_3(Idx)
144015 ,p_reference_num_4 => l_array_reference_num_4(Idx)
144016 ,p_reference_char_1 => l_array_reference_char_1(Idx)
144017 ,p_reference_char_2 => l_array_reference_char_2(Idx)
144018 ,p_reference_char_3 => l_array_reference_char_3(Idx)
144019 ,p_reference_char_4 => l_array_reference_char_4(Idx)
144020 ,p_reference_date_1 => l_array_reference_date_1(Idx)
144021 ,p_reference_date_2 => l_array_reference_date_2(Idx)
144022 ,p_reference_date_3 => l_array_reference_date_3(Idx)
144023 ,p_reference_date_4 => l_array_reference_date_4(Idx)
144024 ,p_event_created_by => l_array_event_created_by(Idx)
144025 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
144026 --
144027 END IF;
144028
144029
144030
144031 --
144032 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
144033
144034 l_acct_reversal_source := SUBSTR(NULL, 1,30);
144035
144036 IF l_continue_with_lines THEN
144037 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
144038 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
144039
144040 xla_accounting_err_pkg.build_message
144041 (p_appli_s_name => 'XLA'
144042 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
144043 ,p_token_1 => 'LINE_NUMBER'
144044 ,p_value_1 => l_array_extract_line_num(Idx)
144045 ,p_token_2 => 'PRODUCT_NAME'
144046 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
144047 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
144048 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
144049 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
144050
144051 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
144052 --
144053 -- following sets the accounting attributes needed to reverse
144054 -- accounting for a distributeion
144055 --
144056
144057 --
144058 -- 5217187
144059 --
144060 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
144061 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
144062 g_array_event(l_event_id).array_value_num('header_index'));
144063 --
144064 --
144065
144066 -- No reversal code generated
144067
144068 xla_ae_lines_pkg.SetAcctReversalAttrs
144069 (p_event_id => l_event_id
144070 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
144071 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144072 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
144073 END IF;
144074
144075 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
144076 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
144077
144078 --
144079 AcctLineType_49 (
144080 p_application_id => p_application_id
144081 ,p_event_id => l_event_id
144082 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144083 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144084 ,p_actual_flag => l_actual_flag
144085 ,p_balance_type_code => l_balance_type_code
144086 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144087
144088 , p_source_4 => l_array_source_4(Idx)
144089 , p_source_11 => l_array_source_11(Idx)
144090 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144091 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144092 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
144093 , p_source_18 => l_array_source_18(Idx)
144094 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
144095 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
144096 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
144097 , p_source_22 => l_array_source_22(Idx)
144098 , p_source_24 => l_array_source_24(Idx)
144099 );
144100 If(l_balance_type_code = 'A') THEN
144101 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144102 END IF;
144103
144104 --
144105
144106
144107 --
144108 AcctLineType_212 (
144109 p_application_id => p_application_id
144110 ,p_event_id => l_event_id
144111 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144112 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144113 ,p_actual_flag => l_actual_flag
144114 ,p_balance_type_code => l_balance_type_code
144115 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144116
144117 , p_source_4 => l_array_source_4(Idx)
144118 , p_source_11 => l_array_source_11(Idx)
144119 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144120 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144121 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
144122 , p_source_18 => l_array_source_18(Idx)
144123 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
144124 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
144125 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
144126 , p_source_22 => l_array_source_22(Idx)
144127 , p_source_24 => l_array_source_24(Idx)
144128 );
144129 If(l_balance_type_code = 'A') THEN
144130 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144131 END IF;
144132
144133 --
144134
144135
144136 --
144137 AcctLineType_243 (
144138 p_application_id => p_application_id
144139 ,p_event_id => l_event_id
144140 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144141 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144142 ,p_actual_flag => l_actual_flag
144143 ,p_balance_type_code => l_balance_type_code
144144 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144145
144146 , p_source_4 => l_array_source_4(Idx)
144147 , p_source_11 => l_array_source_11(Idx)
144148 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144149 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144150 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
144151 , p_source_18 => l_array_source_18(Idx)
144152 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
144153 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
144154 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
144155 , p_source_22 => l_array_source_22(Idx)
144156 , p_source_24 => l_array_source_24(Idx)
144157 );
144158 If(l_balance_type_code = 'A') THEN
144159 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144160 END IF;
144161
144162 --
144163
144164
144165 --
144166 AcctLineType_244 (
144167 p_application_id => p_application_id
144168 ,p_event_id => l_event_id
144169 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144170 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144171 ,p_actual_flag => l_actual_flag
144172 ,p_balance_type_code => l_balance_type_code
144173 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144174
144175 , p_source_4 => l_array_source_4(Idx)
144176 , p_source_11 => l_array_source_11(Idx)
144177 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144178 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144179 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
144180 , p_source_18 => l_array_source_18(Idx)
144181 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
144182 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
144183 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
144184 , p_source_22 => l_array_source_22(Idx)
144185 , p_source_24 => l_array_source_24(Idx)
144186 );
144187 If(l_balance_type_code = 'A') THEN
144188 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144189 END IF;
144190
144191 --
144192
144193
144194 --
144195 AcctLineType_249 (
144196 p_application_id => p_application_id
144197 ,p_event_id => l_event_id
144198 ,p_calculate_acctd_flag => l_calculate_acctd_flag
144199 ,p_calculate_g_l_flag => l_calculate_g_l_flag
144200 ,p_actual_flag => l_actual_flag
144201 ,p_balance_type_code => l_balance_type_code
144202 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
144203
144204 , p_source_4 => l_array_source_4(Idx)
144205 , p_source_11 => l_array_source_11(Idx)
144206 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
144207 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
144208 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
144209 , p_source_18 => l_array_source_18(Idx)
144210 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
144211 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
144212 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
144213 , p_source_22 => l_array_source_22(Idx)
144214 , p_source_24 => l_array_source_24(Idx)
144215 );
144216 If(l_balance_type_code = 'A') THEN
144217 l_actual_gain_loss_ref := l_gain_or_loss_ref;
144218 END IF;
144219
144220 --
144221
144222 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
144223 -- or secondary ledger that has different currency with primary
144224 -- or alc that is calculated by sla
144225 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
144226 (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'))
144227
144228 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
144229 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
144230 AND (l_actual_flag = 'A')) THEN
144231 XLA_AE_LINES_PKG.CreateGainOrLossLines(
144232 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
144233 ,p_application_id => p_application_id
144234 ,p_amb_context_code => 'DEFAULT'
144235 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
144236 ,p_event_class_code => C_EVENT_CLASS_CODE
144237 ,p_event_type_code => C_EVENT_TYPE_CODE
144238
144239 ,p_gain_ccid => -1
144240 ,p_loss_ccid => -1
144241
144242 ,p_actual_flag => l_actual_flag
144243 ,p_enc_flag => null
144244 ,p_actual_g_l_ref => l_actual_gain_loss_ref
144245 ,p_enc_g_l_ref => null
144246 );
144247 END IF;
144248 END IF;
144249 END IF;
144250
144251 ELSE
144252 --
144253 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
144254 --
144255 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144256 trace
144257 (p_msg => 'Trancaction revesal option is Y'
144258 ,p_level => C_LEVEL_STATEMENT
144259 ,p_module => l_log_module);
144260 END IF;
144261 END IF;
144262
144263 END LOOP;
144264 l_result := XLA_AE_LINES_PKG.InsertLines ;
144265 end loop;
144266 close line_cur;
144267
144268
144269 --
144270 -- insert headers into xla_ae_headers_gt table
144271 --
144272 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
144273
144274 -- insert into errors table here.
144275
144276 END LOOP;
144277
144278 --
144279 -- 4865292
144280 --
144281 -- Compare g_hdr_extract_count with event count in
144282 -- CreateHeadersAndLines.
144283 --
144284 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
144285
144286 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144287 trace (p_msg => '# rows extracted from header extract objects '
144288 || ' (running total): '
144289 || g_hdr_extract_count
144290 ,p_level => C_LEVEL_STATEMENT
144291 ,p_module => l_log_module);
144292 END IF;
144293
144294 CLOSE header_cur;
144295 --
144296
144297 --
144298 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144299 trace
144300 (p_msg => 'END of EventClass_259'
144301 ,p_level => C_LEVEL_PROCEDURE
144302 ,p_module => l_log_module);
144303 END IF;
144304 --
144305 RETURN l_result;
144306 EXCEPTION
144307 WHEN xla_exceptions_pkg.application_exception THEN
144308
144309 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
144310
144311
144312 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
144313
144314 RAISE;
144315
144316 WHEN NO_DATA_FOUND THEN
144317
144318 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
144319 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
144320
144321 FOR header_record IN header_cur
144322 LOOP
144323 l_array_header_events(header_record.event_id) := header_record.event_id;
144324 END LOOP;
144325
144326 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
144327 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
144328
144329 fnd_file.put_line(fnd_file.LOG, ' ');
144330 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
144331 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
144332 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
144333
144334 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
144335 LOOP
144336 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
144337 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
144338 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
144339 END IF;
144340 END LOOP;
144341
144342 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
144343 fnd_file.put_line(fnd_file.LOG, ' ');
144344
144345
144346 xla_exceptions_pkg.raise_message
144347 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_259');
144348
144349
144350 WHEN OTHERS THEN
144351 xla_exceptions_pkg.raise_message
144352 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_259');
144353 END EventClass_259;
144354 --
144355
144356 ---------------------------------------
144357 --
144358 -- PRIVATE PROCEDURE
144359 -- insert_sources_260
144360 --
144361 ----------------------------------------
144362 --
144363 PROCEDURE insert_sources_260(
144364 p_target_ledger_id IN NUMBER
144365 , p_language IN VARCHAR2
144366 , p_sla_ledger_id IN NUMBER
144367 , p_pad_start_date IN DATE
144368 , p_pad_end_date IN DATE
144369 )
144370 IS
144371
144372 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL_WRITE_OFF_ALL';
144373 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL_WRITE_OFF';
144374 p_apps_owner VARCHAR2(30);
144375 l_log_module VARCHAR2(240);
144376 BEGIN
144377 IF g_log_enabled THEN
144378 l_log_module := C_DEFAULT_MODULE||'.insert_sources_260';
144379 END IF;
144380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144381
144382 trace
144383 (p_msg => 'BEGIN of insert_sources_260'
144384 ,p_level => C_LEVEL_PROCEDURE
144385 ,p_module => l_log_module);
144386
144387 END IF;
144388
144389 -- select APPS owner
144390 SELECT oracle_username
144391 INTO p_apps_owner
144392 FROM fnd_oracle_userid
144393 WHERE read_only_flag = 'U'
144394 ;
144395
144396 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144397 trace
144398 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
144399 ' - p_language = '||p_language||
144400 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
144401 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
144402 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
144403 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
144404 ,p_level => C_LEVEL_STATEMENT
144405 ,p_module => l_log_module);
144406 END IF;
144407
144408
144409 --
144410 INSERT INTO xla_diag_sources --hdr2
144411 (
144412 event_id
144413 , ledger_id
144414 , sla_ledger_id
144415 , description_language
144416 , object_name
144417 , object_type_code
144418 , line_number
144419 , source_application_id
144420 , source_type_code
144421 , source_code
144422 , source_value
144423 , source_meaning
144424 , created_by
144425 , creation_date
144426 , last_update_date
144427 , last_updated_by
144428 , last_update_login
144429 , program_update_date
144430 , program_application_id
144431 , program_id
144432 , request_id
144433 )
144434 SELECT
144435 event_id
144436 , p_target_ledger_id
144437 , p_sla_ledger_id
144438 , p_language
144439 , object_name
144440 , object_type_code
144441 , line_number
144442 , source_application_id
144443 , source_type_code
144444 , source_code
144445 , SUBSTR(source_value ,1,1996)
144446 , SUBSTR(source_meaning ,1,200)
144447 , xla_environment_pkg.g_Usr_Id
144448 , TRUNC(SYSDATE)
144449 , TRUNC(SYSDATE)
144450 , xla_environment_pkg.g_Usr_Id
144451 , xla_environment_pkg.g_Login_Id
144452 , TRUNC(SYSDATE)
144453 , xla_environment_pkg.g_Prog_Appl_Id
144454 , xla_environment_pkg.g_Prog_Id
144455 , xla_environment_pkg.g_Req_Id
144456 FROM (
144457 SELECT xet.event_id event_id
144458 , 0 line_number
144459 , CASE r
144460 WHEN 1 THEN 'CST_XLA_AWO_HEADERS_V'
144461 WHEN 2 THEN 'CST_XLA_AWO_HEADERS_V'
144462 WHEN 3 THEN 'CST_XLA_AWO_HEADERS_V'
144463 WHEN 4 THEN 'CST_XLA_AWO_HEADERS_V'
144464 WHEN 5 THEN 'CST_XLA_AWO_HEADERS_V'
144465 WHEN 6 THEN 'CST_XLA_AWO_HEADERS_V'
144466
144467 ELSE null
144468 END object_name
144469 , CASE r
144470 WHEN 1 THEN 'HEADER'
144471 WHEN 2 THEN 'HEADER'
144472 WHEN 3 THEN 'HEADER'
144473 WHEN 4 THEN 'HEADER'
144474 WHEN 5 THEN 'HEADER'
144475 WHEN 6 THEN 'HEADER'
144476
144477 ELSE null
144478 END object_type_code
144479 , CASE r
144480 WHEN 1 THEN '707'
144481 WHEN 2 THEN '707'
144482 WHEN 3 THEN '707'
144483 WHEN 4 THEN '707'
144484 WHEN 5 THEN '707'
144485 WHEN 6 THEN '707'
144486
144487 ELSE null
144488 END source_application_id
144489 , 'S' source_type_code
144490 , CASE r
144491 WHEN 1 THEN 'WO_ACCRUAL_ACCOUNT_ID'
144492 WHEN 2 THEN 'WO_ERV_ACCOUNT_ID'
144493 WHEN 3 THEN 'WO_OFFSET_ACCOUNT_ID'
144494 WHEN 4 THEN 'DISTRIBUTION_TYPE'
144495 WHEN 5 THEN 'WRITE_OFF_ID'
144496 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
144497
144498 ELSE null
144499 END source_code
144500 , CASE r
144501 WHEN 1 THEN TO_CHAR(h1.WO_ACCRUAL_ACCOUNT_ID)
144502 WHEN 2 THEN TO_CHAR(h1.WO_ERV_ACCOUNT_ID)
144503 WHEN 3 THEN TO_CHAR(h1.WO_OFFSET_ACCOUNT_ID)
144504 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
144505 WHEN 5 THEN TO_CHAR(h1.WRITE_OFF_ID)
144506 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
144507
144508 ELSE null
144509 END source_value
144510 , CASE r
144511 WHEN 4 THEN fvl12.meaning
144512 WHEN 6 THEN fvl38.meaning
144513
144514 ELSE null
144515 END source_meaning
144516 FROM xla_events_gt xet
144517 , CST_XLA_AWO_HEADERS_V h1
144518 , fnd_lookup_values fvl12
144519 , fnd_lookup_values fvl38
144520 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
144521 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
144522 AND xet.event_class_code = C_EVENT_CLASS_CODE
144523 AND h1.event_id = xet.event_id
144524 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
144525 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
144526 AND fvl12.view_application_id(+) = 700
144527 AND fvl12.language(+) = USERENV('LANG')
144528 AND fvl38.lookup_type(+) = 'YES_NO'
144529 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
144530 AND fvl38.view_application_id(+) = 0
144531 AND fvl38.language(+) = USERENV('LANG')
144532
144533 )
144534 ;
144535 --
144536 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144537
144538 trace
144539 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
144540 ,p_level => C_LEVEL_STATEMENT
144541 ,p_module => l_log_module);
144542
144543 END IF;
144544 --
144545
144546
144547
144548 --
144549 INSERT INTO xla_diag_sources --line2
144550 (
144551 event_id
144552 , ledger_id
144553 , sla_ledger_id
144554 , description_language
144555 , object_name
144556 , object_type_code
144557 , line_number
144558 , source_application_id
144559 , source_type_code
144560 , source_code
144561 , source_value
144562 , source_meaning
144563 , created_by
144564 , creation_date
144565 , last_update_date
144566 , last_updated_by
144567 , last_update_login
144568 , program_update_date
144569 , program_application_id
144570 , program_id
144571 , request_id
144572 )
144573 SELECT event_id
144574 , p_target_ledger_id
144575 , p_sla_ledger_id
144576 , p_language
144577 , object_name
144578 , object_type_code
144579 , line_number
144580 , source_application_id
144581 , source_type_code
144582 , source_code
144583 , SUBSTR(source_value,1,1996)
144584 , SUBSTR(source_meaning ,1,200)
144585 , xla_environment_pkg.g_Usr_Id
144586 , TRUNC(SYSDATE)
144587 , TRUNC(SYSDATE)
144588 , xla_environment_pkg.g_Usr_Id
144589 , xla_environment_pkg.g_Login_Id
144590 , TRUNC(SYSDATE)
144591 , xla_environment_pkg.g_Prog_Appl_Id
144592 , xla_environment_pkg.g_Prog_Id
144593 , xla_environment_pkg.g_Req_Id
144594 FROM (
144595 SELECT xet.event_id event_id
144596 , l2.line_number line_number
144597 , CASE r
144598 WHEN 1 THEN 'CST_XLA_AWO_LINES_V'
144599 WHEN 2 THEN 'CST_XLA_AWO_LINES_V'
144600 WHEN 3 THEN 'CST_XLA_AWO_LINES_V'
144601 WHEN 4 THEN 'CST_XLA_AWO_LINES_V'
144602 WHEN 5 THEN 'CST_XLA_AWO_LINES_V'
144603 WHEN 6 THEN 'CST_XLA_AWO_LINES_V'
144604 WHEN 7 THEN 'CST_XLA_AWO_LINES_V'
144605
144606 ELSE null
144607 END object_name
144608 , CASE r
144609 WHEN 1 THEN 'LINE'
144610 WHEN 2 THEN 'LINE'
144611 WHEN 3 THEN 'LINE'
144612 WHEN 4 THEN 'LINE'
144613 WHEN 5 THEN 'LINE'
144614 WHEN 6 THEN 'LINE'
144615 WHEN 7 THEN 'LINE'
144616
144617 ELSE null
144618 END object_type_code
144619 , CASE r
144620 WHEN 1 THEN '707'
144621 WHEN 2 THEN '707'
144622 WHEN 3 THEN '707'
144623 WHEN 4 THEN '707'
144624 WHEN 5 THEN '707'
144625 WHEN 6 THEN '707'
144626 WHEN 7 THEN '707'
144627
144628 ELSE null
144629 END source_application_id
144630 , 'S' source_type_code
144631 , CASE r
144632 WHEN 1 THEN 'CURRENCY_CODE'
144633 WHEN 2 THEN 'ENTERED_AMOUNT'
144634 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
144635 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
144636 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
144637 WHEN 6 THEN 'ACCOUNTED_AMOUNT'
144638 WHEN 7 THEN 'LINE_NUMBER'
144639
144640 ELSE null
144641 END source_code
144642 , CASE r
144643 WHEN 1 THEN TO_CHAR(l2.CURRENCY_CODE)
144644 WHEN 2 THEN TO_CHAR(l2.ENTERED_AMOUNT)
144645 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
144646 WHEN 4 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
144647 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
144648 WHEN 6 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
144649 WHEN 7 THEN TO_CHAR(l2.LINE_NUMBER)
144650
144651 ELSE null
144652 END source_value
144653 , null source_meaning
144654 FROM xla_events_gt xet
144655 , CST_XLA_AWO_LINES_V l2
144656 , (select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
144657 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
144658 AND xet.event_class_code = C_EVENT_CLASS_CODE
144659 AND l2.event_id = xet.event_id
144660
144661 )
144662 ;
144663 --
144664 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144665
144666 trace
144667 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
144668 ,p_level => C_LEVEL_STATEMENT
144669 ,p_module => l_log_module);
144670
144671 END IF;
144672
144673
144674 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144675 trace
144676 (p_msg => 'END of insert_sources_260'
144677 ,p_level => C_LEVEL_PROCEDURE
144678 ,p_module => l_log_module);
144679 END IF;
144680 EXCEPTION
144681 WHEN xla_exceptions_pkg.application_exception THEN
144682 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
144683 trace
144684 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
144685 ,p_level => C_LEVEL_EXCEPTION
144686 ,p_module => l_log_module);
144687 END IF;
144688 RAISE;
144689 WHEN OTHERS THEN
144690 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
144691 trace
144692 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
144693 ,p_level => C_LEVEL_EXCEPTION
144694 ,p_module => l_log_module);
144695 END IF;
144696 xla_exceptions_pkg.raise_message
144697 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_260');
144698 END insert_sources_260;
144699 --
144700
144701 ---------------------------------------
144702 --
144703 -- PRIVATE FUNCTION
144704 -- EventClass_260
144705 --
144706 ----------------------------------------
144707 --
144708 FUNCTION EventClass_260
144709 (p_application_id IN NUMBER
144710 ,p_base_ledger_id IN NUMBER
144711 ,p_target_ledger_id IN NUMBER
144712 ,p_language IN VARCHAR2
144713 ,p_currency_code IN VARCHAR2
144714 ,p_sla_ledger_id IN NUMBER
144715 ,p_pad_start_date IN DATE
144716 ,p_pad_end_date IN DATE
144717 ,p_primary_ledger_id IN NUMBER)
144718 RETURN BOOLEAN IS
144719 --
144720 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL_WRITE_OFF_ALL';
144721 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'ACCRUAL_WRITE_OFF';
144722
144723 l_calculate_acctd_flag VARCHAR2(1) :='N';
144724 l_calculate_g_l_flag VARCHAR2(1) :='N';
144725 --
144726 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144727 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144728 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144729 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144730 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144731 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144732 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144733 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144734 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144735 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144736 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144737 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144738 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144739 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
144740 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144741 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144742 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144743 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
144744 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144745 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144746 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144747 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
144748 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
144749 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
144750 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
144751 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
144752
144753 l_event_id NUMBER;
144754 l_previous_event_id NUMBER;
144755 l_first_event_id NUMBER;
144756 l_last_event_id NUMBER;
144757
144758 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
144759 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
144760 --
144761 --
144762 l_result BOOLEAN := TRUE;
144763 l_rows NUMBER := 1000;
144764 l_event_type_name VARCHAR2(80) := 'All';
144765 l_event_class_name VARCHAR2(80) := 'Accrual Write Off';
144766 l_description VARCHAR2(4000);
144767 l_transaction_reversal NUMBER;
144768 l_ae_header_id NUMBER;
144769 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
144770 l_log_module VARCHAR2(240);
144771 --
144772 l_acct_reversal_source VARCHAR2(30);
144773 l_trx_reversal_source VARCHAR2(30);
144774
144775 l_continue_with_lines BOOLEAN := TRUE;
144776 --
144777 l_acc_rev_gl_date_source DATE; -- 4262811
144778 --
144779 type t_array_event_id is table of number index by binary_integer;
144780
144781 l_rec_array_event t_rec_array_event;
144782 l_null_rec_array_event t_rec_array_event;
144783 l_array_ae_header_id xla_number_array_type;
144784 l_actual_flag VARCHAR2(1) := NULL;
144785 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
144786 l_balance_type_code VARCHAR2(1) :=NULL;
144787 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
144788
144789 --
144790 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
144791 --
144792
144793 TYPE t_array_source_1 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_ACCRUAL_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
144794 TYPE t_array_source_2 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_ERV_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
144795 TYPE t_array_source_3 IS TABLE OF CST_XLA_AWO_HEADERS_V.WO_OFFSET_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
144796 TYPE t_array_source_12 IS TABLE OF CST_XLA_AWO_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
144797 TYPE t_array_source_26 IS TABLE OF CST_XLA_AWO_HEADERS_V.WRITE_OFF_ID%TYPE INDEX BY BINARY_INTEGER;
144798 TYPE t_array_source_38 IS TABLE OF CST_XLA_AWO_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
144799
144800 TYPE t_array_source_15 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
144801 TYPE t_array_source_18 IS TABLE OF CST_XLA_AWO_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
144802 TYPE t_array_source_19 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
144803 TYPE t_array_source_20 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
144804 TYPE t_array_source_21 IS TABLE OF CST_XLA_AWO_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
144805 TYPE t_array_source_22 IS TABLE OF CST_XLA_AWO_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
144806 TYPE t_array_source_25 IS TABLE OF CST_XLA_AWO_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
144807
144808 l_array_source_1 t_array_source_1;
144809 l_array_source_2 t_array_source_2;
144810 l_array_source_3 t_array_source_3;
144811 l_array_source_12 t_array_source_12;
144812 l_array_source_12_meaning t_array_lookup_meaning;
144813 l_array_source_26 t_array_source_26;
144814 l_array_source_38 t_array_source_38;
144815 l_array_source_38_meaning t_array_lookup_meaning;
144816
144817 l_array_source_15 t_array_source_15;
144818 l_array_source_18 t_array_source_18;
144819 l_array_source_19 t_array_source_19;
144820 l_array_source_20 t_array_source_20;
144821 l_array_source_21 t_array_source_21;
144822 l_array_source_22 t_array_source_22;
144823 l_array_source_25 t_array_source_25;
144824
144825 --
144826 CURSOR header_cur
144827 IS
144828 SELECT /*+ leading(xet) cardinality(xet,1) */
144829 -- Event Class Code: ACCRUAL_WRITE_OFF
144830 xet.entity_id
144831 ,xet.legal_entity_id
144832 ,xet.entity_code
144833 ,xet.transaction_number
144834 ,xet.event_id
144835 ,xet.event_class_code
144836 ,xet.event_type_code
144837 ,xet.event_number
144838 ,xet.event_date
144839 ,xet.transaction_date
144840 ,xet.reference_num_1
144841 ,xet.reference_num_2
144842 ,xet.reference_num_3
144843 ,xet.reference_num_4
144844 ,xet.reference_char_1
144845 ,xet.reference_char_2
144846 ,xet.reference_char_3
144847 ,xet.reference_char_4
144848 ,xet.reference_date_1
144849 ,xet.reference_date_2
144850 ,xet.reference_date_3
144851 ,xet.reference_date_4
144852 ,xet.event_created_by
144853 ,xet.budgetary_control_flag
144854 , h1.WO_ACCRUAL_ACCOUNT_ID source_1
144855 , h1.WO_ERV_ACCOUNT_ID source_2
144856 , h1.WO_OFFSET_ACCOUNT_ID source_3
144857 , h1.DISTRIBUTION_TYPE source_12
144858 , fvl12.meaning source_12_meaning
144859 , h1.WRITE_OFF_ID source_26
144860 , h1.TRANSFER_TO_GL_INDICATOR source_38
144861 , fvl38.meaning source_38_meaning
144862 FROM xla_events_gt xet
144863 , CST_XLA_AWO_HEADERS_V h1
144864 , fnd_lookup_values fvl12
144865 , fnd_lookup_values fvl38
144866 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
144867 and xet.event_class_code = C_EVENT_CLASS_CODE
144868 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
144869 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
144870 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
144871 AND fvl12.view_application_id(+) = 700
144872 AND fvl12.language(+) = USERENV('LANG')
144873 AND fvl38.lookup_type(+) = 'YES_NO'
144874 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
144875 AND fvl38.view_application_id(+) = 0
144876 AND fvl38.language(+) = USERENV('LANG')
144877
144878 ORDER BY event_id
144879 ;
144880
144881
144882 --
144883 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
144884 IS
144885 SELECT /*+ leading(xet) cardinality(xet,1) */
144886 -- Event Class Code: ACCRUAL_WRITE_OFF
144887 xet.entity_id
144888 ,xet.legal_entity_id
144889 ,xet.entity_code
144890 ,xet.transaction_number
144891 ,xet.event_id
144892 ,xet.event_class_code
144893 ,xet.event_type_code
144894 ,xet.event_number
144895 ,xet.event_date
144896 ,xet.transaction_date
144897 ,xet.reference_num_1
144898 ,xet.reference_num_2
144899 ,xet.reference_num_3
144900 ,xet.reference_num_4
144901 ,xet.reference_char_1
144902 ,xet.reference_char_2
144903 ,xet.reference_char_3
144904 ,xet.reference_char_4
144905 ,xet.reference_date_1
144906 ,xet.reference_date_2
144907 ,xet.reference_date_3
144908 ,xet.reference_date_4
144909 ,xet.event_created_by
144910 ,xet.budgetary_control_flag
144911 , l2.LINE_NUMBER
144912 , l2.CURRENCY_CODE source_15
144913 , l2.ENTERED_AMOUNT source_18
144914 , l2.CURRENCY_CONVERSION_DATE source_19
144915 , l2.CURRENCY_CONVERSION_RATE source_20
144916 , l2.CURRENCY_CONVERSION_TYPE source_21
144917 , l2.ACCOUNTED_AMOUNT source_22
144918 , l2.LINE_NUMBER source_25
144919 FROM xla_events_gt xet
144920 , CST_XLA_AWO_LINES_V l2
144921 WHERE xet.event_id between x_first_event_id and x_last_event_id
144922 and xet.event_date between p_pad_start_date and p_pad_end_date
144923 and xet.event_class_code = C_EVENT_CLASS_CODE
144924 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
144925 ;
144926
144927 --
144928 BEGIN
144929 IF g_log_enabled THEN
144930 l_log_module := C_DEFAULT_MODULE||'.EventClass_260';
144931 END IF;
144932 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
144933 trace
144934 (p_msg => 'BEGIN of EventClass_260'
144935 ,p_level => C_LEVEL_PROCEDURE
144936 ,p_module => l_log_module);
144937 END IF;
144938
144939 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144940 trace
144941 (p_msg => 'p_application_id = '||p_application_id||
144942 ' - p_base_ledger_id = '||p_base_ledger_id||
144943 ' - p_target_ledger_id = '||p_target_ledger_id||
144944 ' - p_language = '||p_language||
144945 ' - p_currency_code = '||p_currency_code||
144946 ' - p_sla_ledger_id = '||p_sla_ledger_id
144947 ,p_level => C_LEVEL_STATEMENT
144948 ,p_module => l_log_module);
144949 END IF;
144950 --
144951 -- initialze arrays
144952 --
144953 g_array_event.DELETE;
144954 l_rec_array_event := l_null_rec_array_event;
144955 --
144956 --------------------------------------
144957 -- 4262811 Initialze MPA Line Number
144958 --------------------------------------
144959 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
144960
144961 --
144962
144963 --
144964 OPEN header_cur;
144965 --
144966 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
144967 trace
144968 (p_msg => 'SQL - FETCH header_cur'
144969 ,p_level => C_LEVEL_STATEMENT
144970 ,p_module => l_log_module);
144971 END IF;
144972 --
144973 LOOP
144974 FETCH header_cur BULK COLLECT INTO
144975 l_array_entity_id
144976 , l_array_legal_entity_id
144977 , l_array_entity_code
144978 , l_array_transaction_num
144979 , l_array_event_id
144980 , l_array_class_code
144981 , l_array_event_type
144982 , l_array_event_number
144983 , l_array_event_date
144984 , l_array_transaction_date
144985 , l_array_reference_num_1
144986 , l_array_reference_num_2
144987 , l_array_reference_num_3
144988 , l_array_reference_num_4
144989 , l_array_reference_char_1
144990 , l_array_reference_char_2
144991 , l_array_reference_char_3
144992 , l_array_reference_char_4
144993 , l_array_reference_date_1
144994 , l_array_reference_date_2
144995 , l_array_reference_date_3
144996 , l_array_reference_date_4
144997 , l_array_event_created_by
144998 , l_array_budgetary_control_flag
144999 , l_array_source_1
145000 , l_array_source_2
145001 , l_array_source_3
145002 , l_array_source_12
145003 , l_array_source_12_meaning
145004 , l_array_source_26
145005 , l_array_source_38
145006 , l_array_source_38_meaning
145007 LIMIT l_rows;
145008 --
145009 IF (C_LEVEL_EVENT >= g_log_level) THEN
145010 trace
145011 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
145012 ,p_level => C_LEVEL_EVENT
145013 ,p_module => l_log_module);
145014 END IF;
145015 --
145016 EXIT WHEN l_array_entity_id.COUNT = 0;
145017
145018 -- initialize arrays
145019 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
145020 XLA_AE_LINES_PKG.g_rec_lines := NULL;
145021
145022 --
145023 -- Bug 4458708
145024 --
145025 XLA_AE_LINES_PKG.g_LineNumber := 0;
145026
145027
145028 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
145029 g_last_hdr_idx := l_array_event_id.LAST;
145030 --
145031 -- loop for the headers. Each iteration is for each header extract row
145032 -- fetched in header cursor
145033 --
145034 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
145035
145036 --
145037 -- set event info as cache for other routines to refer event attributes
145038 --
145039 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
145040 (p_application_id => p_application_id
145041 ,p_primary_ledger_id => p_primary_ledger_id
145042 ,p_base_ledger_id => p_base_ledger_id
145043 ,p_target_ledger_id => p_target_ledger_id
145044 ,p_entity_id => l_array_entity_id(hdr_idx)
145045 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
145046 ,p_entity_code => l_array_entity_code(hdr_idx)
145047 ,p_transaction_num => l_array_transaction_num(hdr_idx)
145048 ,p_event_id => l_array_event_id(hdr_idx)
145049 ,p_event_class_code => l_array_class_code(hdr_idx)
145050 ,p_event_type_code => l_array_event_type(hdr_idx)
145051 ,p_event_number => l_array_event_number(hdr_idx)
145052 ,p_event_date => l_array_event_date(hdr_idx)
145053 ,p_transaction_date => l_array_transaction_date(hdr_idx)
145054 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
145055 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
145056 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
145057 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
145058 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
145059 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
145060 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
145061 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
145062 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
145063 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
145064 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
145065 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
145066 ,p_event_created_by => l_array_event_created_by(hdr_idx)
145067 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
145068
145069 --
145070 -- set the status of entry to C_VALID (0)
145071 --
145072 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
145073
145074 --
145075 -- initialize a row for ae header
145076 --
145077 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
145078
145079 l_event_id := l_array_event_id(hdr_idx);
145080
145081 --
145082 -- storing the hdr_idx for event. May be used by line cursor.
145083 --
145084 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
145085
145086 --
145087 -- store sources from header extract. This can be improved to
145088 -- store only those sources from header extract that may be used in lines
145089 --
145090
145091 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
145092 g_array_event(l_event_id).array_value_num('source_2') := l_array_source_2(hdr_idx);
145093 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
145094 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
145095 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
145096 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
145097 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
145098 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
145099
145100 --
145101 -- initilaize the status of ae headers for diffrent balance types
145102 -- the status is initialised to C_NOT_CREATED (2)
145103 --
145104 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145105 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145106 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
145107
145108 --
145109 -- call api to validate and store accounting attributes for header
145110 --
145111
145112 ------------------------------------------------------------
145113 -- Accrual Reversal : to get date for Standard Source (NONE)
145114 ------------------------------------------------------------
145115 l_acc_rev_gl_date_source := NULL;
145116
145117 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
145118 l_rec_acct_attrs.array_date_value(1) :=
145119 xla_ae_sources_pkg.GetSystemSourceDate(
145120 p_source_code => 'XLA_REFERENCE_DATE_1'
145121 , p_source_type_code => 'Y'
145122 , p_source_application_id => 602
145123 );
145124 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
145125 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
145126
145127
145128 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
145129
145130 XLA_AE_HEADER_PKG.SetJeCategoryName;
145131
145132 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
145133 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
145134 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
145135 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
145136 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
145137
145138
145139 -- No header level analytical criteria
145140
145141 --
145142 --accounting attribute enhancement, bug 3612931
145143 --
145144 l_trx_reversal_source := SUBSTR(NULL, 1,30);
145145
145146 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
145147 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
145148
145149 xla_accounting_err_pkg.build_message
145150 (p_appli_s_name => 'XLA'
145151 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
145152 ,p_token_1 => 'ACCT_ATTR_NAME'
145153 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
145154 ,p_token_2 => 'PRODUCT_NAME'
145155 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
145156 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
145157 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
145158 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
145159
145160 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
145161 --
145162 -- following sets the accounting attributes needed to reverse
145163 -- accounting for a distributeion
145164 --
145165 xla_ae_lines_pkg.SetTrxReversalAttrs
145166 (p_event_id => l_event_id
145167 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
145168 ,p_trx_reversal_source => l_trx_reversal_source);
145169
145170 END IF;
145171
145172
145173 ----------------------------------------------------------------
145174 -- 4262811 - update the header statuses to invalid in need be
145175 ----------------------------------------------------------------
145176 --
145177 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
145178
145179
145180 -----------------------------------------------
145181 -- No accrual reversal for the event class/type
145182 -----------------------------------------------
145183 ----------------------------------------------------------------
145184
145185 --
145186 -- this ends the header loop iteration for one bulk fetch
145187 --
145188 END LOOP;
145189
145190 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
145191 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
145192
145193 --
145194 -- insert dummy rows into lines gt table that were created due to
145195 -- transaction reversals
145196 --
145197 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
145198 l_result := XLA_AE_LINES_PKG.InsertLines;
145199 END IF;
145200
145201 --
145202 -- reset the temp_line_num for each set of events fetched from header
145203 -- cursor rather than doing it for each new event in line cursor
145204 -- Bug 3939231
145205 --
145206 xla_ae_lines_pkg.g_temp_line_num := 0;
145207
145208
145209
145210 --
145211 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
145212 --
145213 --
145214 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145215
145216 trace
145217 (p_msg => 'SQL - FETCH line_cur'
145218 ,p_level => C_LEVEL_STATEMENT
145219 ,p_module => l_log_module);
145220
145221 END IF;
145222 --
145223 --
145224 LOOP
145225 --
145226 FETCH line_cur BULK COLLECT INTO
145227 l_array_entity_id
145228 , l_array_legal_entity_id
145229 , l_array_entity_code
145230 , l_array_transaction_num
145231 , l_array_event_id
145232 , l_array_class_code
145233 , l_array_event_type
145234 , l_array_event_number
145235 , l_array_event_date
145236 , l_array_transaction_date
145237 , l_array_reference_num_1
145238 , l_array_reference_num_2
145239 , l_array_reference_num_3
145240 , l_array_reference_num_4
145241 , l_array_reference_char_1
145242 , l_array_reference_char_2
145243 , l_array_reference_char_3
145244 , l_array_reference_char_4
145245 , l_array_reference_date_1
145246 , l_array_reference_date_2
145247 , l_array_reference_date_3
145248 , l_array_reference_date_4
145249 , l_array_event_created_by
145250 , l_array_budgetary_control_flag
145251 , l_array_extract_line_num
145252 , l_array_source_15
145253 , l_array_source_18
145254 , l_array_source_19
145255 , l_array_source_20
145256 , l_array_source_21
145257 , l_array_source_22
145258 , l_array_source_25
145259 LIMIT l_rows;
145260
145261 --
145262 IF (C_LEVEL_EVENT >= g_log_level) THEN
145263 trace
145264 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
145265 ,p_level => C_LEVEL_EVENT
145266 ,p_module => l_log_module);
145267 END IF;
145268 --
145269 EXIT WHEN l_array_entity_id.count = 0;
145270
145271 XLA_AE_LINES_PKG.g_rec_lines := null;
145272
145273 --
145274 -- Bug 4458708
145275 --
145276 XLA_AE_LINES_PKG.g_LineNumber := 0;
145277 --
145278 --
145279
145280 FOR Idx IN 1..l_array_event_id.count LOOP
145281 --
145282 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
145283 --
145284 l_event_id := l_array_event_id(idx); -- 5648433
145285
145286 --
145287 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
145288 --
145289
145290 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
145291 (g_array_event(l_event_id).array_value_num('header_index'))
145292 ,'N'
145293 ) <> 'Y'
145294 THEN
145295 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145296 trace
145297 (p_msg => 'Trancaction revesal option is not Y '
145298 ,p_level => C_LEVEL_STATEMENT
145299 ,p_module => l_log_module);
145300 END IF;
145301
145302 --
145303 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
145304 --
145305 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
145306 --
145307 -- set event info as cache for other routines to refer event attributes
145308 --
145309
145310 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
145311 l_previous_event_id := l_event_id;
145312
145313 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
145314 (p_application_id => p_application_id
145315 ,p_primary_ledger_id => p_primary_ledger_id
145316 ,p_base_ledger_id => p_base_ledger_id
145317 ,p_target_ledger_id => p_target_ledger_id
145318 ,p_entity_id => l_array_entity_id(Idx)
145319 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
145320 ,p_entity_code => l_array_entity_code(Idx)
145321 ,p_transaction_num => l_array_transaction_num(Idx)
145322 ,p_event_id => l_array_event_id(Idx)
145323 ,p_event_class_code => l_array_class_code(Idx)
145324 ,p_event_type_code => l_array_event_type(Idx)
145325 ,p_event_number => l_array_event_number(Idx)
145326 ,p_event_date => l_array_event_date(Idx)
145327 ,p_transaction_date => l_array_transaction_date(Idx)
145328 ,p_reference_num_1 => l_array_reference_num_1(Idx)
145329 ,p_reference_num_2 => l_array_reference_num_2(Idx)
145330 ,p_reference_num_3 => l_array_reference_num_3(Idx)
145331 ,p_reference_num_4 => l_array_reference_num_4(Idx)
145332 ,p_reference_char_1 => l_array_reference_char_1(Idx)
145333 ,p_reference_char_2 => l_array_reference_char_2(Idx)
145334 ,p_reference_char_3 => l_array_reference_char_3(Idx)
145335 ,p_reference_char_4 => l_array_reference_char_4(Idx)
145336 ,p_reference_date_1 => l_array_reference_date_1(Idx)
145337 ,p_reference_date_2 => l_array_reference_date_2(Idx)
145338 ,p_reference_date_3 => l_array_reference_date_3(Idx)
145339 ,p_reference_date_4 => l_array_reference_date_4(Idx)
145340 ,p_event_created_by => l_array_event_created_by(Idx)
145341 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
145342 --
145343 END IF;
145344
145345
145346
145347 --
145348 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
145349
145350 l_acct_reversal_source := SUBSTR(NULL, 1,30);
145351
145352 IF l_continue_with_lines THEN
145353 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
145354 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
145355
145356 xla_accounting_err_pkg.build_message
145357 (p_appli_s_name => 'XLA'
145358 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
145359 ,p_token_1 => 'LINE_NUMBER'
145360 ,p_value_1 => l_array_extract_line_num(Idx)
145361 ,p_token_2 => 'PRODUCT_NAME'
145362 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
145363 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
145364 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
145365 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
145366
145367 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
145368 --
145369 -- following sets the accounting attributes needed to reverse
145370 -- accounting for a distributeion
145371 --
145372
145373 --
145374 -- 5217187
145375 --
145376 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
145377 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
145378 g_array_event(l_event_id).array_value_num('header_index'));
145379 --
145380 --
145381
145382 -- No reversal code generated
145383
145384 xla_ae_lines_pkg.SetAcctReversalAttrs
145385 (p_event_id => l_event_id
145386 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
145387 ,p_calculate_acctd_flag => l_calculate_acctd_flag
145388 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
145389 END IF;
145390
145391 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
145392 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
145393
145394 --
145395 AcctLineType_7 (
145396 p_application_id => p_application_id
145397 ,p_event_id => l_event_id
145398 ,p_calculate_acctd_flag => l_calculate_acctd_flag
145399 ,p_calculate_g_l_flag => l_calculate_g_l_flag
145400 ,p_actual_flag => l_actual_flag
145401 ,p_balance_type_code => l_balance_type_code
145402 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145403
145404 , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
145405 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145406 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145407 , p_source_15 => l_array_source_15(Idx)
145408 , p_source_18 => l_array_source_18(Idx)
145409 , p_source_19 => l_array_source_19(Idx)
145410 , p_source_20 => l_array_source_20(Idx)
145411 , p_source_21 => l_array_source_21(Idx)
145412 , p_source_22 => l_array_source_22(Idx)
145413 , p_source_25 => l_array_source_25(Idx)
145414 , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
145415 );
145416 If(l_balance_type_code = 'A') THEN
145417 l_actual_gain_loss_ref := l_gain_or_loss_ref;
145418 END IF;
145419
145420 --
145421
145422
145423 --
145424 AcctLineType_210 (
145425 p_application_id => p_application_id
145426 ,p_event_id => l_event_id
145427 ,p_calculate_acctd_flag => l_calculate_acctd_flag
145428 ,p_calculate_g_l_flag => l_calculate_g_l_flag
145429 ,p_actual_flag => l_actual_flag
145430 ,p_balance_type_code => l_balance_type_code
145431 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145432
145433 , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
145434 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145435 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145436 , p_source_15 => l_array_source_15(Idx)
145437 , p_source_18 => l_array_source_18(Idx)
145438 , p_source_19 => l_array_source_19(Idx)
145439 , p_source_20 => l_array_source_20(Idx)
145440 , p_source_21 => l_array_source_21(Idx)
145441 , p_source_22 => l_array_source_22(Idx)
145442 , p_source_25 => l_array_source_25(Idx)
145443 , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
145444 );
145445 If(l_balance_type_code = 'A') THEN
145446 l_actual_gain_loss_ref := l_gain_or_loss_ref;
145447 END IF;
145448
145449 --
145450
145451
145452 --
145453 AcctLineType_257 (
145454 p_application_id => p_application_id
145455 ,p_event_id => l_event_id
145456 ,p_calculate_acctd_flag => l_calculate_acctd_flag
145457 ,p_calculate_g_l_flag => l_calculate_g_l_flag
145458 ,p_actual_flag => l_actual_flag
145459 ,p_balance_type_code => l_balance_type_code
145460 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145461
145462 , p_source_2 => g_array_event(l_event_id).array_value_num('source_2')
145463 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145464 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145465 , p_source_15 => l_array_source_15(Idx)
145466 , p_source_18 => l_array_source_18(Idx)
145467 , p_source_19 => l_array_source_19(Idx)
145468 , p_source_20 => l_array_source_20(Idx)
145469 , p_source_21 => l_array_source_21(Idx)
145470 , p_source_22 => l_array_source_22(Idx)
145471 , p_source_25 => l_array_source_25(Idx)
145472 , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
145473 );
145474 If(l_balance_type_code = 'A') THEN
145475 l_actual_gain_loss_ref := l_gain_or_loss_ref;
145476 END IF;
145477
145478 --
145479
145480
145481 --
145482 AcctLineType_258 (
145483 p_application_id => p_application_id
145484 ,p_event_id => l_event_id
145485 ,p_calculate_acctd_flag => l_calculate_acctd_flag
145486 ,p_calculate_g_l_flag => l_calculate_g_l_flag
145487 ,p_actual_flag => l_actual_flag
145488 ,p_balance_type_code => l_balance_type_code
145489 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
145490
145491 , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
145492 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
145493 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
145494 , p_source_15 => l_array_source_15(Idx)
145495 , p_source_18 => l_array_source_18(Idx)
145496 , p_source_19 => l_array_source_19(Idx)
145497 , p_source_20 => l_array_source_20(Idx)
145498 , p_source_21 => l_array_source_21(Idx)
145499 , p_source_22 => l_array_source_22(Idx)
145500 , p_source_25 => l_array_source_25(Idx)
145501 , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
145502 );
145503 If(l_balance_type_code = 'A') THEN
145504 l_actual_gain_loss_ref := l_gain_or_loss_ref;
145505 END IF;
145506
145507 --
145508
145509 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
145510 -- or secondary ledger that has different currency with primary
145511 -- or alc that is calculated by sla
145512 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
145513 (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'))
145514
145515 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
145516 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
145517 AND (l_actual_flag = 'A')) THEN
145518 XLA_AE_LINES_PKG.CreateGainOrLossLines(
145519 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
145520 ,p_application_id => p_application_id
145521 ,p_amb_context_code => 'DEFAULT'
145522 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
145523 ,p_event_class_code => C_EVENT_CLASS_CODE
145524 ,p_event_type_code => C_EVENT_TYPE_CODE
145525
145526 ,p_gain_ccid => -1
145527 ,p_loss_ccid => -1
145528
145529 ,p_actual_flag => l_actual_flag
145530 ,p_enc_flag => null
145531 ,p_actual_g_l_ref => l_actual_gain_loss_ref
145532 ,p_enc_g_l_ref => null
145533 );
145534 END IF;
145535 END IF;
145536 END IF;
145537
145538 ELSE
145539 --
145540 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
145541 --
145542 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145543 trace
145544 (p_msg => 'Trancaction revesal option is Y'
145545 ,p_level => C_LEVEL_STATEMENT
145546 ,p_module => l_log_module);
145547 END IF;
145548 END IF;
145549
145550 END LOOP;
145551 l_result := XLA_AE_LINES_PKG.InsertLines ;
145552 end loop;
145553 close line_cur;
145554
145555
145556 --
145557 -- insert headers into xla_ae_headers_gt table
145558 --
145559 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
145560
145561 -- insert into errors table here.
145562
145563 END LOOP;
145564
145565 --
145566 -- 4865292
145567 --
145568 -- Compare g_hdr_extract_count with event count in
145569 -- CreateHeadersAndLines.
145570 --
145571 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
145572
145573 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145574 trace (p_msg => '# rows extracted from header extract objects '
145575 || ' (running total): '
145576 || g_hdr_extract_count
145577 ,p_level => C_LEVEL_STATEMENT
145578 ,p_module => l_log_module);
145579 END IF;
145580
145581 CLOSE header_cur;
145582 --
145583
145584 --
145585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145586 trace
145587 (p_msg => 'END of EventClass_260'
145588 ,p_level => C_LEVEL_PROCEDURE
145589 ,p_module => l_log_module);
145590 END IF;
145591 --
145592 RETURN l_result;
145593 EXCEPTION
145594 WHEN xla_exceptions_pkg.application_exception THEN
145595
145596 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
145597
145598
145599 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
145600
145601 RAISE;
145602
145603 WHEN NO_DATA_FOUND THEN
145604
145605 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
145606 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
145607
145608 FOR header_record IN header_cur
145609 LOOP
145610 l_array_header_events(header_record.event_id) := header_record.event_id;
145611 END LOOP;
145612
145613 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
145614 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
145615
145616 fnd_file.put_line(fnd_file.LOG, ' ');
145617 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
145618 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
145619 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
145620
145621 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
145622 LOOP
145623 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
145624 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
145625 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
145626 END IF;
145627 END LOOP;
145628
145629 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
145630 fnd_file.put_line(fnd_file.LOG, ' ');
145631
145632
145633 xla_exceptions_pkg.raise_message
145634 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_260');
145635
145636
145637 WHEN OTHERS THEN
145638 xla_exceptions_pkg.raise_message
145639 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_260');
145640 END EventClass_260;
145641 --
145642
145643 ---------------------------------------
145644 --
145645 -- PRIVATE PROCEDURE
145646 -- insert_sources_261
145647 --
145648 ----------------------------------------
145649 --
145650 PROCEDURE insert_sources_261(
145651 p_target_ledger_id IN NUMBER
145652 , p_language IN VARCHAR2
145653 , p_sla_ledger_id IN NUMBER
145654 , p_pad_start_date IN DATE
145655 , p_pad_end_date IN DATE
145656 )
145657 IS
145658
145659 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CON_INV_OWNR_TXFR_ALL';
145660 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'CON_INV_OWNR_TXFR';
145661 p_apps_owner VARCHAR2(30);
145662 l_log_module VARCHAR2(240);
145663 BEGIN
145664 IF g_log_enabled THEN
145665 l_log_module := C_DEFAULT_MODULE||'.insert_sources_261';
145666 END IF;
145667 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145668
145669 trace
145670 (p_msg => 'BEGIN of insert_sources_261'
145671 ,p_level => C_LEVEL_PROCEDURE
145672 ,p_module => l_log_module);
145673
145674 END IF;
145675
145676 -- select APPS owner
145677 SELECT oracle_username
145678 INTO p_apps_owner
145679 FROM fnd_oracle_userid
145680 WHERE read_only_flag = 'U'
145681 ;
145682
145683 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145684 trace
145685 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
145686 ' - p_language = '||p_language||
145687 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
145688 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
145689 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
145690 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
145691 ,p_level => C_LEVEL_STATEMENT
145692 ,p_module => l_log_module);
145693 END IF;
145694
145695
145696 --
145697 INSERT INTO xla_diag_sources --hdr2
145698 (
145699 event_id
145700 , ledger_id
145701 , sla_ledger_id
145702 , description_language
145703 , object_name
145704 , object_type_code
145705 , line_number
145706 , source_application_id
145707 , source_type_code
145708 , source_code
145709 , source_value
145710 , source_meaning
145711 , created_by
145712 , creation_date
145713 , last_update_date
145714 , last_updated_by
145715 , last_update_login
145716 , program_update_date
145717 , program_application_id
145718 , program_id
145719 , request_id
145720 )
145721 SELECT
145722 event_id
145723 , p_target_ledger_id
145724 , p_sla_ledger_id
145725 , p_language
145726 , object_name
145727 , object_type_code
145728 , line_number
145729 , source_application_id
145730 , source_type_code
145731 , source_code
145732 , SUBSTR(source_value ,1,1996)
145733 , SUBSTR(source_meaning ,1,200)
145734 , xla_environment_pkg.g_Usr_Id
145735 , TRUNC(SYSDATE)
145736 , TRUNC(SYSDATE)
145737 , xla_environment_pkg.g_Usr_Id
145738 , xla_environment_pkg.g_Login_Id
145739 , TRUNC(SYSDATE)
145740 , xla_environment_pkg.g_Prog_Appl_Id
145741 , xla_environment_pkg.g_Prog_Id
145742 , xla_environment_pkg.g_Req_Id
145743 FROM (
145744 SELECT xet.event_id event_id
145745 , 0 line_number
145746 , CASE r
145747 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
145748 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
145749
145750 ELSE null
145751 END object_name
145752 , CASE r
145753 WHEN 1 THEN 'HEADER'
145754 WHEN 2 THEN 'HEADER'
145755
145756 ELSE null
145757 END object_type_code
145758 , CASE r
145759 WHEN 1 THEN '707'
145760 WHEN 2 THEN '707'
145761
145762 ELSE null
145763 END source_application_id
145764 , 'S' source_type_code
145765 , CASE r
145766 WHEN 1 THEN 'DISTRIBUTION_TYPE'
145767 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
145768
145769 ELSE null
145770 END source_code
145771 , CASE r
145772 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
145773 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
145774
145775 ELSE null
145776 END source_value
145777 , CASE r
145778 WHEN 1 THEN fvl12.meaning
145779 WHEN 2 THEN fvl38.meaning
145780
145781 ELSE null
145782 END source_meaning
145783 FROM xla_events_gt xet
145784 , CST_XLA_INV_HEADERS_V h1
145785 , fnd_lookup_values fvl12
145786 , fnd_lookup_values fvl38
145787 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
145788 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145789 AND xet.event_class_code = C_EVENT_CLASS_CODE
145790 AND h1.event_id = xet.event_id
145791 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
145792 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
145793 AND fvl12.view_application_id(+) = 700
145794 AND fvl12.language(+) = USERENV('LANG')
145795 AND fvl38.lookup_type(+) = 'YES_NO'
145796 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
145797 AND fvl38.view_application_id(+) = 0
145798 AND fvl38.language(+) = USERENV('LANG')
145799
145800 )
145801 ;
145802 --
145803 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145804
145805 trace
145806 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
145807 ,p_level => C_LEVEL_STATEMENT
145808 ,p_module => l_log_module);
145809
145810 END IF;
145811 --
145812
145813
145814
145815 --
145816 INSERT INTO xla_diag_sources --line2
145817 (
145818 event_id
145819 , ledger_id
145820 , sla_ledger_id
145821 , description_language
145822 , object_name
145823 , object_type_code
145824 , line_number
145825 , source_application_id
145826 , source_type_code
145827 , source_code
145828 , source_value
145829 , source_meaning
145830 , created_by
145831 , creation_date
145832 , last_update_date
145833 , last_updated_by
145834 , last_update_login
145835 , program_update_date
145836 , program_application_id
145837 , program_id
145838 , request_id
145839 )
145840 SELECT event_id
145841 , p_target_ledger_id
145842 , p_sla_ledger_id
145843 , p_language
145844 , object_name
145845 , object_type_code
145846 , line_number
145847 , source_application_id
145848 , source_type_code
145849 , source_code
145850 , SUBSTR(source_value,1,1996)
145851 , SUBSTR(source_meaning ,1,200)
145852 , xla_environment_pkg.g_Usr_Id
145853 , TRUNC(SYSDATE)
145854 , TRUNC(SYSDATE)
145855 , xla_environment_pkg.g_Usr_Id
145856 , xla_environment_pkg.g_Login_Id
145857 , TRUNC(SYSDATE)
145858 , xla_environment_pkg.g_Prog_Appl_Id
145859 , xla_environment_pkg.g_Prog_Id
145860 , xla_environment_pkg.g_Req_Id
145861 FROM (
145862 SELECT xet.event_id event_id
145863 , l2.line_number line_number
145864 , CASE r
145865 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
145866 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
145867 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
145868 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
145869 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
145870 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
145871 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
145872 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
145873 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
145874
145875 ELSE null
145876 END object_name
145877 , CASE r
145878 WHEN 1 THEN 'LINE'
145879 WHEN 2 THEN 'LINE'
145880 WHEN 3 THEN 'LINE'
145881 WHEN 4 THEN 'LINE'
145882 WHEN 5 THEN 'LINE'
145883 WHEN 6 THEN 'LINE'
145884 WHEN 7 THEN 'LINE'
145885 WHEN 8 THEN 'LINE'
145886 WHEN 9 THEN 'LINE'
145887
145888 ELSE null
145889 END object_type_code
145890 , CASE r
145891 WHEN 1 THEN '707'
145892 WHEN 2 THEN '707'
145893 WHEN 3 THEN '707'
145894 WHEN 4 THEN '707'
145895 WHEN 5 THEN '707'
145896 WHEN 6 THEN '707'
145897 WHEN 7 THEN '707'
145898 WHEN 8 THEN '707'
145899 WHEN 9 THEN '707'
145900
145901 ELSE null
145902 END source_application_id
145903 , 'S' source_type_code
145904 , CASE r
145905 WHEN 1 THEN 'CODE_COMBINATION_ID'
145906 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
145907 WHEN 3 THEN 'CURRENCY_CODE'
145908 WHEN 4 THEN 'ENTERED_AMOUNT'
145909 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
145910 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
145911 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
145912 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
145913 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
145914
145915 ELSE null
145916 END source_code
145917 , CASE r
145918 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
145919 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
145920 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
145921 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
145922 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
145923 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
145924 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
145925 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
145926 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
145927
145928 ELSE null
145929 END source_value
145930 , null source_meaning
145931 FROM xla_events_gt xet
145932 , CST_XLA_INV_LINES_V l2
145933 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
145934 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
145935 AND xet.event_class_code = C_EVENT_CLASS_CODE
145936 AND l2.event_id = xet.event_id
145937
145938 )
145939 ;
145940 --
145941 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
145942
145943 trace
145944 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
145945 ,p_level => C_LEVEL_STATEMENT
145946 ,p_module => l_log_module);
145947
145948 END IF;
145949
145950
145951 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
145952 trace
145953 (p_msg => 'END of insert_sources_261'
145954 ,p_level => C_LEVEL_PROCEDURE
145955 ,p_module => l_log_module);
145956 END IF;
145957 EXCEPTION
145958 WHEN xla_exceptions_pkg.application_exception THEN
145959 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145960 trace
145961 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145962 ,p_level => C_LEVEL_EXCEPTION
145963 ,p_module => l_log_module);
145964 END IF;
145965 RAISE;
145966 WHEN OTHERS THEN
145967 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
145968 trace
145969 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
145970 ,p_level => C_LEVEL_EXCEPTION
145971 ,p_module => l_log_module);
145972 END IF;
145973 xla_exceptions_pkg.raise_message
145974 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_261');
145975 END insert_sources_261;
145976 --
145977
145978 ---------------------------------------
145979 --
145980 -- PRIVATE FUNCTION
145981 -- EventClass_261
145982 --
145983 ----------------------------------------
145984 --
145985 FUNCTION EventClass_261
145986 (p_application_id IN NUMBER
145987 ,p_base_ledger_id IN NUMBER
145988 ,p_target_ledger_id IN NUMBER
145989 ,p_language IN VARCHAR2
145990 ,p_currency_code IN VARCHAR2
145991 ,p_sla_ledger_id IN NUMBER
145992 ,p_pad_start_date IN DATE
145993 ,p_pad_end_date IN DATE
145994 ,p_primary_ledger_id IN NUMBER)
145995 RETURN BOOLEAN IS
145996 --
145997 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'CON_INV_OWNR_TXFR_ALL';
145998 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'CON_INV_OWNR_TXFR';
145999
146000 l_calculate_acctd_flag VARCHAR2(1) :='N';
146001 l_calculate_g_l_flag VARCHAR2(1) :='N';
146002 --
146003 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146004 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146005 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146006 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146007 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146008 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146009 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146010 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146011 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146012 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146013 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146014 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146015 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146016 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
146017 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146018 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146019 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146020 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
146021 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146022 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146023 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146024 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
146025 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
146026 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
146027 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
146028 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
146029
146030 l_event_id NUMBER;
146031 l_previous_event_id NUMBER;
146032 l_first_event_id NUMBER;
146033 l_last_event_id NUMBER;
146034
146035 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
146036 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
146037 --
146038 --
146039 l_result BOOLEAN := TRUE;
146040 l_rows NUMBER := 1000;
146041 l_event_type_name VARCHAR2(80) := 'All';
146042 l_event_class_name VARCHAR2(80) := 'Consigned Inventory Ownership Transfer';
146043 l_description VARCHAR2(4000);
146044 l_transaction_reversal NUMBER;
146045 l_ae_header_id NUMBER;
146046 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
146047 l_log_module VARCHAR2(240);
146048 --
146049 l_acct_reversal_source VARCHAR2(30);
146050 l_trx_reversal_source VARCHAR2(30);
146051
146052 l_continue_with_lines BOOLEAN := TRUE;
146053 --
146054 l_acc_rev_gl_date_source DATE; -- 4262811
146055 --
146056 type t_array_event_id is table of number index by binary_integer;
146057
146058 l_rec_array_event t_rec_array_event;
146059 l_null_rec_array_event t_rec_array_event;
146060 l_array_ae_header_id xla_number_array_type;
146061 l_actual_flag VARCHAR2(1) := NULL;
146062 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
146063 l_balance_type_code VARCHAR2(1) :=NULL;
146064 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
146065
146066 --
146067 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
146068 --
146069
146070 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
146071 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
146072
146073 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
146074 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
146075 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
146076 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146077 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
146078 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
146079 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
146080 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
146081 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
146082
146083 l_array_source_12 t_array_source_12;
146084 l_array_source_12_meaning t_array_lookup_meaning;
146085 l_array_source_38 t_array_source_38;
146086 l_array_source_38_meaning t_array_lookup_meaning;
146087
146088 l_array_source_4 t_array_source_4;
146089 l_array_source_11 t_array_source_11;
146090 l_array_source_15 t_array_source_15;
146091 l_array_source_18 t_array_source_18;
146092 l_array_source_19 t_array_source_19;
146093 l_array_source_20 t_array_source_20;
146094 l_array_source_21 t_array_source_21;
146095 l_array_source_22 t_array_source_22;
146096 l_array_source_24 t_array_source_24;
146097
146098 --
146099 CURSOR header_cur
146100 IS
146101 SELECT /*+ leading(xet) cardinality(xet,1) */
146102 -- Event Class Code: CON_INV_OWNR_TXFR
146103 xet.entity_id
146104 ,xet.legal_entity_id
146105 ,xet.entity_code
146106 ,xet.transaction_number
146107 ,xet.event_id
146108 ,xet.event_class_code
146109 ,xet.event_type_code
146110 ,xet.event_number
146111 ,xet.event_date
146112 ,xet.transaction_date
146113 ,xet.reference_num_1
146114 ,xet.reference_num_2
146115 ,xet.reference_num_3
146116 ,xet.reference_num_4
146117 ,xet.reference_char_1
146118 ,xet.reference_char_2
146119 ,xet.reference_char_3
146120 ,xet.reference_char_4
146121 ,xet.reference_date_1
146122 ,xet.reference_date_2
146123 ,xet.reference_date_3
146124 ,xet.reference_date_4
146125 ,xet.event_created_by
146126 ,xet.budgetary_control_flag
146127 , h1.DISTRIBUTION_TYPE source_12
146128 , fvl12.meaning source_12_meaning
146129 , h1.TRANSFER_TO_GL_INDICATOR source_38
146130 , fvl38.meaning source_38_meaning
146131 FROM xla_events_gt xet
146132 , CST_XLA_INV_HEADERS_V h1
146133 , fnd_lookup_values fvl12
146134 , fnd_lookup_values fvl38
146135 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
146136 and xet.event_class_code = C_EVENT_CLASS_CODE
146137 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
146138 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
146139 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
146140 AND fvl12.view_application_id(+) = 700
146141 AND fvl12.language(+) = USERENV('LANG')
146142 AND fvl38.lookup_type(+) = 'YES_NO'
146143 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
146144 AND fvl38.view_application_id(+) = 0
146145 AND fvl38.language(+) = USERENV('LANG')
146146
146147 ORDER BY event_id
146148 ;
146149
146150
146151 --
146152 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
146153 IS
146154 SELECT /*+ leading(xet) cardinality(xet,1) */
146155 -- Event Class Code: CON_INV_OWNR_TXFR
146156 xet.entity_id
146157 ,xet.legal_entity_id
146158 ,xet.entity_code
146159 ,xet.transaction_number
146160 ,xet.event_id
146161 ,xet.event_class_code
146162 ,xet.event_type_code
146163 ,xet.event_number
146164 ,xet.event_date
146165 ,xet.transaction_date
146166 ,xet.reference_num_1
146167 ,xet.reference_num_2
146168 ,xet.reference_num_3
146169 ,xet.reference_num_4
146170 ,xet.reference_char_1
146171 ,xet.reference_char_2
146172 ,xet.reference_char_3
146173 ,xet.reference_char_4
146174 ,xet.reference_date_1
146175 ,xet.reference_date_2
146176 ,xet.reference_date_3
146177 ,xet.reference_date_4
146178 ,xet.event_created_by
146179 ,xet.budgetary_control_flag
146180 , l2.LINE_NUMBER
146181 , l2.CODE_COMBINATION_ID source_4
146182 , l2.DISTRIBUTION_IDENTIFIER source_11
146183 , l2.CURRENCY_CODE source_15
146184 , l2.ENTERED_AMOUNT source_18
146185 , l2.CURRENCY_CONVERSION_DATE source_19
146186 , l2.CURRENCY_CONVERSION_RATE source_20
146187 , l2.CURRENCY_CONVERSION_TYPE source_21
146188 , l2.ACCOUNTED_AMOUNT source_22
146189 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
146190 FROM xla_events_gt xet
146191 , CST_XLA_INV_LINES_V l2
146192 WHERE xet.event_id between x_first_event_id and x_last_event_id
146193 and xet.event_date between p_pad_start_date and p_pad_end_date
146194 and xet.event_class_code = C_EVENT_CLASS_CODE
146195 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
146196 ;
146197
146198 --
146199 BEGIN
146200 IF g_log_enabled THEN
146201 l_log_module := C_DEFAULT_MODULE||'.EventClass_261';
146202 END IF;
146203 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146204 trace
146205 (p_msg => 'BEGIN of EventClass_261'
146206 ,p_level => C_LEVEL_PROCEDURE
146207 ,p_module => l_log_module);
146208 END IF;
146209
146210 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146211 trace
146212 (p_msg => 'p_application_id = '||p_application_id||
146213 ' - p_base_ledger_id = '||p_base_ledger_id||
146214 ' - p_target_ledger_id = '||p_target_ledger_id||
146215 ' - p_language = '||p_language||
146216 ' - p_currency_code = '||p_currency_code||
146217 ' - p_sla_ledger_id = '||p_sla_ledger_id
146218 ,p_level => C_LEVEL_STATEMENT
146219 ,p_module => l_log_module);
146220 END IF;
146221 --
146222 -- initialze arrays
146223 --
146224 g_array_event.DELETE;
146225 l_rec_array_event := l_null_rec_array_event;
146226 --
146227 --------------------------------------
146228 -- 4262811 Initialze MPA Line Number
146229 --------------------------------------
146230 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
146231
146232 --
146233
146234 --
146235 OPEN header_cur;
146236 --
146237 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146238 trace
146239 (p_msg => 'SQL - FETCH header_cur'
146240 ,p_level => C_LEVEL_STATEMENT
146241 ,p_module => l_log_module);
146242 END IF;
146243 --
146244 LOOP
146245 FETCH header_cur BULK COLLECT INTO
146246 l_array_entity_id
146247 , l_array_legal_entity_id
146248 , l_array_entity_code
146249 , l_array_transaction_num
146250 , l_array_event_id
146251 , l_array_class_code
146252 , l_array_event_type
146253 , l_array_event_number
146254 , l_array_event_date
146255 , l_array_transaction_date
146256 , l_array_reference_num_1
146257 , l_array_reference_num_2
146258 , l_array_reference_num_3
146259 , l_array_reference_num_4
146260 , l_array_reference_char_1
146261 , l_array_reference_char_2
146262 , l_array_reference_char_3
146263 , l_array_reference_char_4
146264 , l_array_reference_date_1
146265 , l_array_reference_date_2
146266 , l_array_reference_date_3
146267 , l_array_reference_date_4
146268 , l_array_event_created_by
146269 , l_array_budgetary_control_flag
146270 , l_array_source_12
146271 , l_array_source_12_meaning
146272 , l_array_source_38
146273 , l_array_source_38_meaning
146274 LIMIT l_rows;
146275 --
146276 IF (C_LEVEL_EVENT >= g_log_level) THEN
146277 trace
146278 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
146279 ,p_level => C_LEVEL_EVENT
146280 ,p_module => l_log_module);
146281 END IF;
146282 --
146283 EXIT WHEN l_array_entity_id.COUNT = 0;
146284
146285 -- initialize arrays
146286 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
146287 XLA_AE_LINES_PKG.g_rec_lines := NULL;
146288
146289 --
146290 -- Bug 4458708
146291 --
146292 XLA_AE_LINES_PKG.g_LineNumber := 0;
146293
146294
146295 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
146296 g_last_hdr_idx := l_array_event_id.LAST;
146297 --
146298 -- loop for the headers. Each iteration is for each header extract row
146299 -- fetched in header cursor
146300 --
146301 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
146302
146303 --
146304 -- set event info as cache for other routines to refer event attributes
146305 --
146306 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
146307 (p_application_id => p_application_id
146308 ,p_primary_ledger_id => p_primary_ledger_id
146309 ,p_base_ledger_id => p_base_ledger_id
146310 ,p_target_ledger_id => p_target_ledger_id
146311 ,p_entity_id => l_array_entity_id(hdr_idx)
146312 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
146313 ,p_entity_code => l_array_entity_code(hdr_idx)
146314 ,p_transaction_num => l_array_transaction_num(hdr_idx)
146315 ,p_event_id => l_array_event_id(hdr_idx)
146316 ,p_event_class_code => l_array_class_code(hdr_idx)
146317 ,p_event_type_code => l_array_event_type(hdr_idx)
146318 ,p_event_number => l_array_event_number(hdr_idx)
146319 ,p_event_date => l_array_event_date(hdr_idx)
146320 ,p_transaction_date => l_array_transaction_date(hdr_idx)
146321 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
146322 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
146323 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
146324 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
146325 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
146326 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
146327 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
146328 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
146329 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
146330 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
146331 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
146332 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
146333 ,p_event_created_by => l_array_event_created_by(hdr_idx)
146334 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
146335
146336 --
146337 -- set the status of entry to C_VALID (0)
146338 --
146339 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
146340
146341 --
146342 -- initialize a row for ae header
146343 --
146344 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
146345
146346 l_event_id := l_array_event_id(hdr_idx);
146347
146348 --
146349 -- storing the hdr_idx for event. May be used by line cursor.
146350 --
146351 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
146352
146353 --
146354 -- store sources from header extract. This can be improved to
146355 -- store only those sources from header extract that may be used in lines
146356 --
146357
146358 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
146359 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
146360 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
146361 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
146362
146363 --
146364 -- initilaize the status of ae headers for diffrent balance types
146365 -- the status is initialised to C_NOT_CREATED (2)
146366 --
146367 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
146368 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
146369 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
146370
146371 --
146372 -- call api to validate and store accounting attributes for header
146373 --
146374
146375 ------------------------------------------------------------
146376 -- Accrual Reversal : to get date for Standard Source (NONE)
146377 ------------------------------------------------------------
146378 l_acc_rev_gl_date_source := NULL;
146379
146380 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
146381 l_rec_acct_attrs.array_date_value(1) :=
146382 xla_ae_sources_pkg.GetSystemSourceDate(
146383 p_source_code => 'XLA_REFERENCE_DATE_1'
146384 , p_source_type_code => 'Y'
146385 , p_source_application_id => 602
146386 );
146387 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
146388 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
146389
146390
146391 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
146392
146393 XLA_AE_HEADER_PKG.SetJeCategoryName;
146394
146395 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
146396 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
146397 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
146398 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
146399 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
146400
146401
146402 -- No header level analytical criteria
146403
146404 --
146405 --accounting attribute enhancement, bug 3612931
146406 --
146407 l_trx_reversal_source := SUBSTR(NULL, 1,30);
146408
146409 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
146410 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
146411
146412 xla_accounting_err_pkg.build_message
146413 (p_appli_s_name => 'XLA'
146414 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
146415 ,p_token_1 => 'ACCT_ATTR_NAME'
146416 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
146417 ,p_token_2 => 'PRODUCT_NAME'
146418 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
146419 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
146420 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
146421 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
146422
146423 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
146424 --
146425 -- following sets the accounting attributes needed to reverse
146426 -- accounting for a distributeion
146427 --
146428 xla_ae_lines_pkg.SetTrxReversalAttrs
146429 (p_event_id => l_event_id
146430 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
146431 ,p_trx_reversal_source => l_trx_reversal_source);
146432
146433 END IF;
146434
146435
146436 ----------------------------------------------------------------
146437 -- 4262811 - update the header statuses to invalid in need be
146438 ----------------------------------------------------------------
146439 --
146440 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
146441
146442
146443 -----------------------------------------------
146444 -- No accrual reversal for the event class/type
146445 -----------------------------------------------
146446 ----------------------------------------------------------------
146447
146448 --
146449 -- this ends the header loop iteration for one bulk fetch
146450 --
146451 END LOOP;
146452
146453 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
146454 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
146455
146456 --
146457 -- insert dummy rows into lines gt table that were created due to
146458 -- transaction reversals
146459 --
146460 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
146461 l_result := XLA_AE_LINES_PKG.InsertLines;
146462 END IF;
146463
146464 --
146465 -- reset the temp_line_num for each set of events fetched from header
146466 -- cursor rather than doing it for each new event in line cursor
146467 -- Bug 3939231
146468 --
146469 xla_ae_lines_pkg.g_temp_line_num := 0;
146470
146471
146472
146473 --
146474 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
146475 --
146476 --
146477 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146478
146479 trace
146480 (p_msg => 'SQL - FETCH line_cur'
146481 ,p_level => C_LEVEL_STATEMENT
146482 ,p_module => l_log_module);
146483
146484 END IF;
146485 --
146486 --
146487 LOOP
146488 --
146489 FETCH line_cur BULK COLLECT INTO
146490 l_array_entity_id
146491 , l_array_legal_entity_id
146492 , l_array_entity_code
146493 , l_array_transaction_num
146494 , l_array_event_id
146495 , l_array_class_code
146496 , l_array_event_type
146497 , l_array_event_number
146498 , l_array_event_date
146499 , l_array_transaction_date
146500 , l_array_reference_num_1
146501 , l_array_reference_num_2
146502 , l_array_reference_num_3
146503 , l_array_reference_num_4
146504 , l_array_reference_char_1
146505 , l_array_reference_char_2
146506 , l_array_reference_char_3
146507 , l_array_reference_char_4
146508 , l_array_reference_date_1
146509 , l_array_reference_date_2
146510 , l_array_reference_date_3
146511 , l_array_reference_date_4
146512 , l_array_event_created_by
146513 , l_array_budgetary_control_flag
146514 , l_array_extract_line_num
146515 , l_array_source_4
146516 , l_array_source_11
146517 , l_array_source_15
146518 , l_array_source_18
146519 , l_array_source_19
146520 , l_array_source_20
146521 , l_array_source_21
146522 , l_array_source_22
146523 , l_array_source_24
146524 LIMIT l_rows;
146525
146526 --
146527 IF (C_LEVEL_EVENT >= g_log_level) THEN
146528 trace
146529 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
146530 ,p_level => C_LEVEL_EVENT
146531 ,p_module => l_log_module);
146532 END IF;
146533 --
146534 EXIT WHEN l_array_entity_id.count = 0;
146535
146536 XLA_AE_LINES_PKG.g_rec_lines := null;
146537
146538 --
146539 -- Bug 4458708
146540 --
146541 XLA_AE_LINES_PKG.g_LineNumber := 0;
146542 --
146543 --
146544
146545 FOR Idx IN 1..l_array_event_id.count LOOP
146546 --
146547 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
146548 --
146549 l_event_id := l_array_event_id(idx); -- 5648433
146550
146551 --
146552 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
146553 --
146554
146555 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
146556 (g_array_event(l_event_id).array_value_num('header_index'))
146557 ,'N'
146558 ) <> 'Y'
146559 THEN
146560 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146561 trace
146562 (p_msg => 'Trancaction revesal option is not Y '
146563 ,p_level => C_LEVEL_STATEMENT
146564 ,p_module => l_log_module);
146565 END IF;
146566
146567 --
146568 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
146569 --
146570 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
146571 --
146572 -- set event info as cache for other routines to refer event attributes
146573 --
146574
146575 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
146576 l_previous_event_id := l_event_id;
146577
146578 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
146579 (p_application_id => p_application_id
146580 ,p_primary_ledger_id => p_primary_ledger_id
146581 ,p_base_ledger_id => p_base_ledger_id
146582 ,p_target_ledger_id => p_target_ledger_id
146583 ,p_entity_id => l_array_entity_id(Idx)
146584 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
146585 ,p_entity_code => l_array_entity_code(Idx)
146586 ,p_transaction_num => l_array_transaction_num(Idx)
146587 ,p_event_id => l_array_event_id(Idx)
146588 ,p_event_class_code => l_array_class_code(Idx)
146589 ,p_event_type_code => l_array_event_type(Idx)
146590 ,p_event_number => l_array_event_number(Idx)
146591 ,p_event_date => l_array_event_date(Idx)
146592 ,p_transaction_date => l_array_transaction_date(Idx)
146593 ,p_reference_num_1 => l_array_reference_num_1(Idx)
146594 ,p_reference_num_2 => l_array_reference_num_2(Idx)
146595 ,p_reference_num_3 => l_array_reference_num_3(Idx)
146596 ,p_reference_num_4 => l_array_reference_num_4(Idx)
146597 ,p_reference_char_1 => l_array_reference_char_1(Idx)
146598 ,p_reference_char_2 => l_array_reference_char_2(Idx)
146599 ,p_reference_char_3 => l_array_reference_char_3(Idx)
146600 ,p_reference_char_4 => l_array_reference_char_4(Idx)
146601 ,p_reference_date_1 => l_array_reference_date_1(Idx)
146602 ,p_reference_date_2 => l_array_reference_date_2(Idx)
146603 ,p_reference_date_3 => l_array_reference_date_3(Idx)
146604 ,p_reference_date_4 => l_array_reference_date_4(Idx)
146605 ,p_event_created_by => l_array_event_created_by(Idx)
146606 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
146607 --
146608 END IF;
146609
146610
146611
146612 --
146613 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
146614
146615 l_acct_reversal_source := SUBSTR(NULL, 1,30);
146616
146617 IF l_continue_with_lines THEN
146618 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
146619 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
146620
146621 xla_accounting_err_pkg.build_message
146622 (p_appli_s_name => 'XLA'
146623 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
146624 ,p_token_1 => 'LINE_NUMBER'
146625 ,p_value_1 => l_array_extract_line_num(Idx)
146626 ,p_token_2 => 'PRODUCT_NAME'
146627 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
146628 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
146629 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
146630 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
146631
146632 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
146633 --
146634 -- following sets the accounting attributes needed to reverse
146635 -- accounting for a distributeion
146636 --
146637
146638 --
146639 -- 5217187
146640 --
146641 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
146642 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
146643 g_array_event(l_event_id).array_value_num('header_index'));
146644 --
146645 --
146646
146647 -- No reversal code generated
146648
146649 xla_ae_lines_pkg.SetAcctReversalAttrs
146650 (p_event_id => l_event_id
146651 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
146652 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146653 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
146654 END IF;
146655
146656 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
146657 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
146658
146659 --
146660 AcctLineType_6 (
146661 p_application_id => p_application_id
146662 ,p_event_id => l_event_id
146663 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146664 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146665 ,p_actual_flag => l_actual_flag
146666 ,p_balance_type_code => l_balance_type_code
146667 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146668
146669 , p_source_4 => l_array_source_4(Idx)
146670 , p_source_11 => l_array_source_11(Idx)
146671 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146672 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146673 , p_source_15 => l_array_source_15(Idx)
146674 , p_source_18 => l_array_source_18(Idx)
146675 , p_source_19 => l_array_source_19(Idx)
146676 , p_source_20 => l_array_source_20(Idx)
146677 , p_source_21 => l_array_source_21(Idx)
146678 , p_source_22 => l_array_source_22(Idx)
146679 , p_source_24 => l_array_source_24(Idx)
146680 );
146681 If(l_balance_type_code = 'A') THEN
146682 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146683 END IF;
146684
146685 --
146686
146687
146688 --
146689 AcctLineType_45 (
146690 p_application_id => p_application_id
146691 ,p_event_id => l_event_id
146692 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146693 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146694 ,p_actual_flag => l_actual_flag
146695 ,p_balance_type_code => l_balance_type_code
146696 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146697
146698 , p_source_4 => l_array_source_4(Idx)
146699 , p_source_11 => l_array_source_11(Idx)
146700 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146701 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146702 , p_source_15 => l_array_source_15(Idx)
146703 , p_source_18 => l_array_source_18(Idx)
146704 , p_source_19 => l_array_source_19(Idx)
146705 , p_source_20 => l_array_source_20(Idx)
146706 , p_source_21 => l_array_source_21(Idx)
146707 , p_source_22 => l_array_source_22(Idx)
146708 , p_source_24 => l_array_source_24(Idx)
146709 );
146710 If(l_balance_type_code = 'A') THEN
146711 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146712 END IF;
146713
146714 --
146715
146716
146717 --
146718 AcctLineType_155 (
146719 p_application_id => p_application_id
146720 ,p_event_id => l_event_id
146721 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146722 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146723 ,p_actual_flag => l_actual_flag
146724 ,p_balance_type_code => l_balance_type_code
146725 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146726
146727 , p_source_4 => l_array_source_4(Idx)
146728 , p_source_11 => l_array_source_11(Idx)
146729 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146730 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146731 , p_source_15 => l_array_source_15(Idx)
146732 , p_source_18 => l_array_source_18(Idx)
146733 , p_source_19 => l_array_source_19(Idx)
146734 , p_source_20 => l_array_source_20(Idx)
146735 , p_source_21 => l_array_source_21(Idx)
146736 , p_source_22 => l_array_source_22(Idx)
146737 , p_source_24 => l_array_source_24(Idx)
146738 );
146739 If(l_balance_type_code = 'A') THEN
146740 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146741 END IF;
146742
146743 --
146744
146745
146746 --
146747 AcctLineType_164 (
146748 p_application_id => p_application_id
146749 ,p_event_id => l_event_id
146750 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146751 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146752 ,p_actual_flag => l_actual_flag
146753 ,p_balance_type_code => l_balance_type_code
146754 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146755
146756 , p_source_4 => l_array_source_4(Idx)
146757 , p_source_11 => l_array_source_11(Idx)
146758 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146759 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146760 , p_source_15 => l_array_source_15(Idx)
146761 , p_source_18 => l_array_source_18(Idx)
146762 , p_source_19 => l_array_source_19(Idx)
146763 , p_source_20 => l_array_source_20(Idx)
146764 , p_source_21 => l_array_source_21(Idx)
146765 , p_source_22 => l_array_source_22(Idx)
146766 , p_source_24 => l_array_source_24(Idx)
146767 );
146768 If(l_balance_type_code = 'A') THEN
146769 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146770 END IF;
146771
146772 --
146773
146774
146775 --
146776 AcctLineType_218 (
146777 p_application_id => p_application_id
146778 ,p_event_id => l_event_id
146779 ,p_calculate_acctd_flag => l_calculate_acctd_flag
146780 ,p_calculate_g_l_flag => l_calculate_g_l_flag
146781 ,p_actual_flag => l_actual_flag
146782 ,p_balance_type_code => l_balance_type_code
146783 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
146784
146785 , p_source_4 => l_array_source_4(Idx)
146786 , p_source_11 => l_array_source_11(Idx)
146787 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
146788 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
146789 , p_source_15 => l_array_source_15(Idx)
146790 , p_source_18 => l_array_source_18(Idx)
146791 , p_source_19 => l_array_source_19(Idx)
146792 , p_source_20 => l_array_source_20(Idx)
146793 , p_source_21 => l_array_source_21(Idx)
146794 , p_source_22 => l_array_source_22(Idx)
146795 , p_source_24 => l_array_source_24(Idx)
146796 );
146797 If(l_balance_type_code = 'A') THEN
146798 l_actual_gain_loss_ref := l_gain_or_loss_ref;
146799 END IF;
146800
146801 --
146802
146803 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
146804 -- or secondary ledger that has different currency with primary
146805 -- or alc that is calculated by sla
146806 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
146807 (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'))
146808
146809 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
146810 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
146811 AND (l_actual_flag = 'A')) THEN
146812 XLA_AE_LINES_PKG.CreateGainOrLossLines(
146813 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
146814 ,p_application_id => p_application_id
146815 ,p_amb_context_code => 'DEFAULT'
146816 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
146817 ,p_event_class_code => C_EVENT_CLASS_CODE
146818 ,p_event_type_code => C_EVENT_TYPE_CODE
146819
146820 ,p_gain_ccid => -1
146821 ,p_loss_ccid => -1
146822
146823 ,p_actual_flag => l_actual_flag
146824 ,p_enc_flag => null
146825 ,p_actual_g_l_ref => l_actual_gain_loss_ref
146826 ,p_enc_g_l_ref => null
146827 );
146828 END IF;
146829 END IF;
146830 END IF;
146831
146832 ELSE
146833 --
146834 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
146835 --
146836 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146837 trace
146838 (p_msg => 'Trancaction revesal option is Y'
146839 ,p_level => C_LEVEL_STATEMENT
146840 ,p_module => l_log_module);
146841 END IF;
146842 END IF;
146843
146844 END LOOP;
146845 l_result := XLA_AE_LINES_PKG.InsertLines ;
146846 end loop;
146847 close line_cur;
146848
146849
146850 --
146851 -- insert headers into xla_ae_headers_gt table
146852 --
146853 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
146854
146855 -- insert into errors table here.
146856
146857 END LOOP;
146858
146859 --
146860 -- 4865292
146861 --
146862 -- Compare g_hdr_extract_count with event count in
146863 -- CreateHeadersAndLines.
146864 --
146865 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
146866
146867 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146868 trace (p_msg => '# rows extracted from header extract objects '
146869 || ' (running total): '
146870 || g_hdr_extract_count
146871 ,p_level => C_LEVEL_STATEMENT
146872 ,p_module => l_log_module);
146873 END IF;
146874
146875 CLOSE header_cur;
146876 --
146877
146878 --
146879 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146880 trace
146881 (p_msg => 'END of EventClass_261'
146882 ,p_level => C_LEVEL_PROCEDURE
146883 ,p_module => l_log_module);
146884 END IF;
146885 --
146886 RETURN l_result;
146887 EXCEPTION
146888 WHEN xla_exceptions_pkg.application_exception THEN
146889
146890 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146891
146892
146893 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
146894
146895 RAISE;
146896
146897 WHEN NO_DATA_FOUND THEN
146898
146899 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
146900 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
146901
146902 FOR header_record IN header_cur
146903 LOOP
146904 l_array_header_events(header_record.event_id) := header_record.event_id;
146905 END LOOP;
146906
146907 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
146908 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
146909
146910 fnd_file.put_line(fnd_file.LOG, ' ');
146911 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146912 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
146913 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
146914
146915 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
146916 LOOP
146917 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
146918 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
146919 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
146920 END IF;
146921 END LOOP;
146922
146923 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
146924 fnd_file.put_line(fnd_file.LOG, ' ');
146925
146926
146927 xla_exceptions_pkg.raise_message
146928 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_261');
146929
146930
146931 WHEN OTHERS THEN
146932 xla_exceptions_pkg.raise_message
146933 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_261');
146934 END EventClass_261;
146935 --
146936
146937 ---------------------------------------
146938 --
146939 -- PRIVATE PROCEDURE
146940 -- insert_sources_262
146941 --
146942 ----------------------------------------
146943 --
146944 PROCEDURE insert_sources_262(
146945 p_target_ledger_id IN NUMBER
146946 , p_language IN VARCHAR2
146947 , p_sla_ledger_id IN NUMBER
146948 , p_pad_start_date IN DATE
146949 , p_pad_end_date IN DATE
146950 )
146951 IS
146952
146953 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DELIVER_EXPENSE_ALL';
146954 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER_EXPENSE';
146955 p_apps_owner VARCHAR2(30);
146956 l_log_module VARCHAR2(240);
146957 BEGIN
146958 IF g_log_enabled THEN
146959 l_log_module := C_DEFAULT_MODULE||'.insert_sources_262';
146960 END IF;
146961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
146962
146963 trace
146964 (p_msg => 'BEGIN of insert_sources_262'
146965 ,p_level => C_LEVEL_PROCEDURE
146966 ,p_module => l_log_module);
146967
146968 END IF;
146969
146970 -- select APPS owner
146971 SELECT oracle_username
146972 INTO p_apps_owner
146973 FROM fnd_oracle_userid
146974 WHERE read_only_flag = 'U'
146975 ;
146976
146977 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
146978 trace
146979 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
146980 ' - p_language = '||p_language||
146981 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
146982 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
146983 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
146984 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
146985 ,p_level => C_LEVEL_STATEMENT
146986 ,p_module => l_log_module);
146987 END IF;
146988
146989
146990 --
146991 INSERT INTO xla_diag_sources --hdr2
146992 (
146993 event_id
146994 , ledger_id
146995 , sla_ledger_id
146996 , description_language
146997 , object_name
146998 , object_type_code
146999 , line_number
147000 , source_application_id
147001 , source_type_code
147002 , source_code
147003 , source_value
147004 , source_meaning
147005 , created_by
147006 , creation_date
147007 , last_update_date
147008 , last_updated_by
147009 , last_update_login
147010 , program_update_date
147011 , program_application_id
147012 , program_id
147013 , request_id
147014 )
147015 SELECT
147016 event_id
147017 , p_target_ledger_id
147018 , p_sla_ledger_id
147019 , p_language
147020 , object_name
147021 , object_type_code
147022 , line_number
147023 , source_application_id
147024 , source_type_code
147025 , source_code
147026 , SUBSTR(source_value ,1,1996)
147027 , SUBSTR(source_meaning ,1,200)
147028 , xla_environment_pkg.g_Usr_Id
147029 , TRUNC(SYSDATE)
147030 , TRUNC(SYSDATE)
147031 , xla_environment_pkg.g_Usr_Id
147032 , xla_environment_pkg.g_Login_Id
147033 , TRUNC(SYSDATE)
147034 , xla_environment_pkg.g_Prog_Appl_Id
147035 , xla_environment_pkg.g_Prog_Id
147036 , xla_environment_pkg.g_Req_Id
147037 FROM (
147038 SELECT xet.event_id event_id
147039 , 0 line_number
147040 , CASE r
147041 WHEN 1 THEN 'CST_XLA_RCV_REF_V'
147042 WHEN 2 THEN 'CST_XLA_RCV_REF_V'
147043 WHEN 3 THEN 'CST_XLA_RCV_REF_V'
147044 WHEN 4 THEN 'CST_XLA_RCV_REF_V'
147045 WHEN 5 THEN 'CST_XLA_RCV_REF_V'
147046 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V'
147047 WHEN 7 THEN 'PO_DISTS_REF_V'
147048 WHEN 8 THEN 'CST_XLA_RCV_REF_V'
147049 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V'
147050 WHEN 10 THEN 'CST_XLA_RCV_REF_V'
147051 WHEN 11 THEN 'CST_XLA_RCV_HEADERS_V'
147052 WHEN 12 THEN 'CST_XLA_RCV_HEADERS_V'
147053 WHEN 13 THEN 'CST_XLA_RCV_HEADERS_V'
147054 WHEN 14 THEN 'PO_HEADERS_REF_V'
147055 WHEN 15 THEN 'PSA_CST_XLA_UPG_V'
147056 WHEN 16 THEN 'CST_XLA_RCV_HEADERS_V'
147057
147058 ELSE null
147059 END object_name
147060 , CASE r
147061 WHEN 1 THEN 'HEADER'
147062 WHEN 2 THEN 'HEADER'
147063 WHEN 3 THEN 'HEADER'
147064 WHEN 4 THEN 'HEADER'
147065 WHEN 5 THEN 'HEADER'
147066 WHEN 6 THEN 'HEADER'
147067 WHEN 7 THEN 'HEADER'
147068 WHEN 8 THEN 'HEADER'
147069 WHEN 9 THEN 'HEADER'
147070 WHEN 10 THEN 'HEADER'
147071 WHEN 11 THEN 'HEADER'
147072 WHEN 12 THEN 'HEADER'
147073 WHEN 13 THEN 'HEADER'
147074 WHEN 14 THEN 'HEADER'
147075 WHEN 15 THEN 'HEADER'
147076 WHEN 16 THEN 'HEADER'
147077
147078 ELSE null
147079 END object_type_code
147080 , CASE r
147081 WHEN 1 THEN '707'
147082 WHEN 2 THEN '707'
147083 WHEN 3 THEN '707'
147084 WHEN 4 THEN '707'
147085 WHEN 5 THEN '707'
147086 WHEN 6 THEN '707'
147087 WHEN 7 THEN '201'
147088 WHEN 8 THEN '707'
147089 WHEN 9 THEN '707'
147090 WHEN 10 THEN '707'
147091 WHEN 11 THEN '707'
147092 WHEN 12 THEN '707'
147093 WHEN 13 THEN '707'
147094 WHEN 14 THEN '201'
147095 WHEN 15 THEN '707'
147096 WHEN 16 THEN '707'
147097
147098 ELSE null
147099 END source_application_id
147100 , 'S' source_type_code
147101 , CASE r
147102 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
147103 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
147104 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
147105 WHEN 4 THEN 'PO_DISTRIBUTION_ID'
147106 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID'
147107 WHEN 6 THEN 'DISTRIBUTION_TYPE'
147108 WHEN 7 THEN 'PO_BUDGET_ACCOUNT'
147109 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
147110 WHEN 9 THEN 'CURRENCY_CODE'
147111 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
147112 WHEN 11 THEN 'CURRENCY_CONVERSION_DATE'
147113 WHEN 12 THEN 'CURRENCY_CONVERSION_RATE'
147114 WHEN 13 THEN 'CURRENCY_CONVERSION_TYPE'
147115 WHEN 14 THEN 'PURCH_ENCUMBRANCE_TYPE_ID'
147116 WHEN 15 THEN 'CST_ENCUM_UPG_OPTION'
147117 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR'
147118
147119 ELSE null
147120 END source_code
147121 , CASE r
147122 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
147123 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
147124 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
147125 WHEN 4 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
147126 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
147127 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
147128 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
147129 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
147130 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
147131 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
147132 WHEN 11 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
147133 WHEN 12 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
147134 WHEN 13 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
147135 WHEN 14 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
147136 WHEN 15 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
147137 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
147138
147139 ELSE null
147140 END source_value
147141 , CASE r
147142 WHEN 6 THEN fvl12.meaning
147143 WHEN 16 THEN fvl38.meaning
147144
147145 ELSE null
147146 END source_meaning
147147 FROM xla_events_gt xet
147148 , CST_XLA_RCV_HEADERS_V h1
147149 , CST_XLA_RCV_REF_V h3
147150 , PO_DISTS_REF_V h4
147151 , PO_HEADERS_REF_V h5
147152 , PSA_CST_XLA_UPG_V h6
147153 , fnd_lookup_values fvl12
147154 , fnd_lookup_values fvl38
147155 ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
147156 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
147157 AND xet.event_class_code = C_EVENT_CLASS_CODE
147158 AND h1.event_id = xet.event_id
147159 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'
147160 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
147161 AND fvl12.view_application_id(+) = 700
147162 AND fvl12.language(+) = USERENV('LANG')
147163 AND fvl38.lookup_type(+) = 'YES_NO'
147164 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
147165 AND fvl38.view_application_id(+) = 0
147166 AND fvl38.language(+) = USERENV('LANG')
147167
147168 )
147169 ;
147170 --
147171 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147172
147173 trace
147174 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
147175 ,p_level => C_LEVEL_STATEMENT
147176 ,p_module => l_log_module);
147177
147178 END IF;
147179 --
147180
147181
147182
147183 --
147184 INSERT INTO xla_diag_sources --line2
147185 (
147186 event_id
147187 , ledger_id
147188 , sla_ledger_id
147189 , description_language
147190 , object_name
147191 , object_type_code
147192 , line_number
147193 , source_application_id
147194 , source_type_code
147195 , source_code
147196 , source_value
147197 , source_meaning
147198 , created_by
147199 , creation_date
147200 , last_update_date
147201 , last_updated_by
147202 , last_update_login
147203 , program_update_date
147204 , program_application_id
147205 , program_id
147206 , request_id
147207 )
147208 SELECT event_id
147209 , p_target_ledger_id
147210 , p_sla_ledger_id
147211 , p_language
147212 , object_name
147213 , object_type_code
147214 , line_number
147215 , source_application_id
147216 , source_type_code
147217 , source_code
147218 , SUBSTR(source_value,1,1996)
147219 , SUBSTR(source_meaning ,1,200)
147220 , xla_environment_pkg.g_Usr_Id
147221 , TRUNC(SYSDATE)
147222 , TRUNC(SYSDATE)
147223 , xla_environment_pkg.g_Usr_Id
147224 , xla_environment_pkg.g_Login_Id
147225 , TRUNC(SYSDATE)
147226 , xla_environment_pkg.g_Prog_Appl_Id
147227 , xla_environment_pkg.g_Prog_Id
147228 , xla_environment_pkg.g_Req_Id
147229 FROM (
147230 SELECT xet.event_id event_id
147231 , l2.line_number line_number
147232 , CASE r
147233 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
147234 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
147235 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
147236 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
147237 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
147238
147239 ELSE null
147240 END object_name
147241 , CASE r
147242 WHEN 1 THEN 'LINE'
147243 WHEN 2 THEN 'LINE'
147244 WHEN 3 THEN 'LINE'
147245 WHEN 4 THEN 'LINE'
147246 WHEN 5 THEN 'LINE'
147247
147248 ELSE null
147249 END object_type_code
147250 , CASE r
147251 WHEN 1 THEN '707'
147252 WHEN 2 THEN '707'
147253 WHEN 3 THEN '707'
147254 WHEN 4 THEN '707'
147255 WHEN 5 THEN '707'
147256
147257 ELSE null
147258 END source_application_id
147259 , 'S' source_type_code
147260 , CASE r
147261 WHEN 1 THEN 'CODE_COMBINATION_ID'
147262 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
147263 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
147264 WHEN 4 THEN 'ENTERED_AMOUNT'
147265 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
147266
147267 ELSE null
147268 END source_code
147269 , CASE r
147270 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
147271 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
147272 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
147273 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
147274 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
147275
147276 ELSE null
147277 END source_value
147278 , null source_meaning
147279 FROM xla_events_gt xet
147280 , CST_XLA_RCV_LINES_V l2
147281 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
147282 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
147283 AND xet.event_class_code = C_EVENT_CLASS_CODE
147284 AND l2.event_id = xet.event_id
147285
147286 )
147287 ;
147288 --
147289 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147290
147291 trace
147292 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
147293 ,p_level => C_LEVEL_STATEMENT
147294 ,p_module => l_log_module);
147295
147296 END IF;
147297
147298
147299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147300 trace
147301 (p_msg => 'END of insert_sources_262'
147302 ,p_level => C_LEVEL_PROCEDURE
147303 ,p_module => l_log_module);
147304 END IF;
147305 EXCEPTION
147306 WHEN xla_exceptions_pkg.application_exception THEN
147307 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
147308 trace
147309 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
147310 ,p_level => C_LEVEL_EXCEPTION
147311 ,p_module => l_log_module);
147312 END IF;
147313 RAISE;
147314 WHEN OTHERS THEN
147315 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
147316 trace
147317 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
147318 ,p_level => C_LEVEL_EXCEPTION
147319 ,p_module => l_log_module);
147320 END IF;
147321 xla_exceptions_pkg.raise_message
147322 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_262');
147323 END insert_sources_262;
147324 --
147325
147326 ---------------------------------------
147327 --
147328 -- PRIVATE FUNCTION
147329 -- EventClass_262
147330 --
147331 ----------------------------------------
147332 --
147333 FUNCTION EventClass_262
147334 (p_application_id IN NUMBER
147335 ,p_base_ledger_id IN NUMBER
147336 ,p_target_ledger_id IN NUMBER
147337 ,p_language IN VARCHAR2
147338 ,p_currency_code IN VARCHAR2
147339 ,p_sla_ledger_id IN NUMBER
147340 ,p_pad_start_date IN DATE
147341 ,p_pad_end_date IN DATE
147342 ,p_primary_ledger_id IN NUMBER)
147343 RETURN BOOLEAN IS
147344 --
147345 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DELIVER_EXPENSE_ALL';
147346 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DELIVER_EXPENSE';
147347
147348 l_calculate_acctd_flag VARCHAR2(1) :='N';
147349 l_calculate_g_l_flag VARCHAR2(1) :='N';
147350 --
147351 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147352 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147353 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147354 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147355 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147356 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147357 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147358 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147359 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147360 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147361 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147362 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147363 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147364 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
147365 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147366 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147367 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147368 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
147369 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147370 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147371 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147372 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
147373 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
147374 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
147375 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
147376 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
147377
147378 l_event_id NUMBER;
147379 l_previous_event_id NUMBER;
147380 l_first_event_id NUMBER;
147381 l_last_event_id NUMBER;
147382
147383 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
147384 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
147385 --
147386 --
147387 l_result BOOLEAN := TRUE;
147388 l_rows NUMBER := 1000;
147389 l_event_type_name VARCHAR2(80) := 'All';
147390 l_event_class_name VARCHAR2(80) := 'Delivery to Expense Destination';
147391 l_description VARCHAR2(4000);
147392 l_transaction_reversal NUMBER;
147393 l_ae_header_id NUMBER;
147394 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
147395 l_log_module VARCHAR2(240);
147396 --
147397 l_acct_reversal_source VARCHAR2(30);
147398 l_trx_reversal_source VARCHAR2(30);
147399
147400 l_continue_with_lines BOOLEAN := TRUE;
147401 --
147402 l_acc_rev_gl_date_source DATE; -- 4262811
147403 --
147404 type t_array_event_id is table of number index by binary_integer;
147405
147406 l_rec_array_event t_rec_array_event;
147407 l_null_rec_array_event t_rec_array_event;
147408 l_array_ae_header_id xla_number_array_type;
147409 l_actual_flag VARCHAR2(1) := NULL;
147410 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
147411 l_balance_type_code VARCHAR2(1) :=NULL;
147412 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
147413
147414 --
147415 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
147416 --
147417
147418 TYPE t_array_source_6 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
147419 TYPE t_array_source_7 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
147420 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
147421 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
147422 TYPE t_array_source_10 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
147423 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
147424 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
147425 TYPE t_array_source_14 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
147426 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
147427 TYPE t_array_source_16 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
147428 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
147429 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
147430 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
147431 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
147432 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
147433 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
147434
147435 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
147436 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
147437 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
147438 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
147439 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
147440
147441 l_array_source_6 t_array_source_6;
147442 l_array_source_7 t_array_source_7;
147443 l_array_source_8 t_array_source_8;
147444 l_array_source_9 t_array_source_9;
147445 l_array_source_10 t_array_source_10;
147446 l_array_source_12 t_array_source_12;
147447 l_array_source_12_meaning t_array_lookup_meaning;
147448 l_array_source_13 t_array_source_13;
147449 l_array_source_14 t_array_source_14;
147450 l_array_source_15 t_array_source_15;
147451 l_array_source_16 t_array_source_16;
147452 l_array_source_19 t_array_source_19;
147453 l_array_source_20 t_array_source_20;
147454 l_array_source_21 t_array_source_21;
147455 l_array_source_23 t_array_source_23;
147456 l_array_source_27 t_array_source_27;
147457 l_array_source_38 t_array_source_38;
147458 l_array_source_38_meaning t_array_lookup_meaning;
147459
147460 l_array_source_4 t_array_source_4;
147461 l_array_source_5 t_array_source_5;
147462 l_array_source_11 t_array_source_11;
147463 l_array_source_18 t_array_source_18;
147464 l_array_source_22 t_array_source_22;
147465
147466 --
147467 CURSOR header_cur
147468 IS
147469 SELECT /*+ leading(xet) cardinality(xet,1) */
147470 -- Event Class Code: DELIVER_EXPENSE
147471 xet.entity_id
147472 ,xet.legal_entity_id
147473 ,xet.entity_code
147474 ,xet.transaction_number
147475 ,xet.event_id
147476 ,xet.event_class_code
147477 ,xet.event_type_code
147478 ,xet.event_number
147479 ,xet.event_date
147480 ,xet.transaction_date
147481 ,xet.reference_num_1
147482 ,xet.reference_num_2
147483 ,xet.reference_num_3
147484 ,xet.reference_num_4
147485 ,xet.reference_char_1
147486 ,xet.reference_char_2
147487 ,xet.reference_char_3
147488 ,xet.reference_char_4
147489 ,xet.reference_date_1
147490 ,xet.reference_date_2
147491 ,xet.reference_date_3
147492 ,xet.reference_date_4
147493 ,xet.event_created_by
147494 ,xet.budgetary_control_flag
147495 , h3.APPLIED_TO_APPL_ID source_6
147496 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
147497 , h3.APPLIED_TO_ENTITY_CODE source_8
147498 , h3.PO_DISTRIBUTION_ID source_9
147499 , h3.APPLIED_TO_PO_DOC_ID source_10
147500 , h1.DISTRIBUTION_TYPE source_12
147501 , fvl12.meaning source_12_meaning
147502 , h4.PO_BUDGET_ACCOUNT source_13
147503 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
147504 , h1.CURRENCY_CODE source_15
147505 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
147506 , h1.CURRENCY_CONVERSION_DATE source_19
147507 , h1.CURRENCY_CONVERSION_RATE source_20
147508 , h1.CURRENCY_CONVERSION_TYPE source_21
147509 , h5.PURCH_ENCUMBRANCE_TYPE_ID source_23
147510 , h6.CST_ENCUM_UPG_OPTION source_27
147511 , h1.TRANSFER_TO_GL_INDICATOR source_38
147512 , fvl38.meaning source_38_meaning
147513 FROM xla_events_gt xet
147514 , CST_XLA_RCV_HEADERS_V h1
147515 , CST_XLA_RCV_REF_V h3
147516 , PO_DISTS_REF_V h4
147517 , PO_HEADERS_REF_V h5
147518 , PSA_CST_XLA_UPG_V h6
147519 , fnd_lookup_values fvl12
147520 , fnd_lookup_values fvl38
147521 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
147522 and xet.event_class_code = C_EVENT_CLASS_CODE
147523 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
147524 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'
147525 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
147526 AND fvl12.view_application_id(+) = 700
147527 AND fvl12.language(+) = USERENV('LANG')
147528 AND fvl38.lookup_type(+) = 'YES_NO'
147529 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
147530 AND fvl38.view_application_id(+) = 0
147531 AND fvl38.language(+) = USERENV('LANG')
147532
147533 ORDER BY event_id
147534 ;
147535
147536
147537 --
147538 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
147539 IS
147540 SELECT /*+ leading(xet) cardinality(xet,1) */
147541 -- Event Class Code: DELIVER_EXPENSE
147542 xet.entity_id
147543 ,xet.legal_entity_id
147544 ,xet.entity_code
147545 ,xet.transaction_number
147546 ,xet.event_id
147547 ,xet.event_class_code
147548 ,xet.event_type_code
147549 ,xet.event_number
147550 ,xet.event_date
147551 ,xet.transaction_date
147552 ,xet.reference_num_1
147553 ,xet.reference_num_2
147554 ,xet.reference_num_3
147555 ,xet.reference_num_4
147556 ,xet.reference_char_1
147557 ,xet.reference_char_2
147558 ,xet.reference_char_3
147559 ,xet.reference_char_4
147560 ,xet.reference_date_1
147561 ,xet.reference_date_2
147562 ,xet.reference_date_3
147563 ,xet.reference_date_4
147564 ,xet.event_created_by
147565 ,xet.budgetary_control_flag
147566 , l2.LINE_NUMBER
147567 , l2.CODE_COMBINATION_ID source_4
147568 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
147569 , l2.DISTRIBUTION_IDENTIFIER source_11
147570 , l2.ENTERED_AMOUNT source_18
147571 , l2.ACCOUNTED_AMOUNT source_22
147572 FROM xla_events_gt xet
147573 , CST_XLA_RCV_LINES_V l2
147574 WHERE xet.event_id between x_first_event_id and x_last_event_id
147575 and xet.event_date between p_pad_start_date and p_pad_end_date
147576 and xet.event_class_code = C_EVENT_CLASS_CODE
147577 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
147578 ;
147579
147580 --
147581 BEGIN
147582 IF g_log_enabled THEN
147583 l_log_module := C_DEFAULT_MODULE||'.EventClass_262';
147584 END IF;
147585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
147586 trace
147587 (p_msg => 'BEGIN of EventClass_262'
147588 ,p_level => C_LEVEL_PROCEDURE
147589 ,p_module => l_log_module);
147590 END IF;
147591
147592 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147593 trace
147594 (p_msg => 'p_application_id = '||p_application_id||
147595 ' - p_base_ledger_id = '||p_base_ledger_id||
147596 ' - p_target_ledger_id = '||p_target_ledger_id||
147597 ' - p_language = '||p_language||
147598 ' - p_currency_code = '||p_currency_code||
147599 ' - p_sla_ledger_id = '||p_sla_ledger_id
147600 ,p_level => C_LEVEL_STATEMENT
147601 ,p_module => l_log_module);
147602 END IF;
147603 --
147604 -- initialze arrays
147605 --
147606 g_array_event.DELETE;
147607 l_rec_array_event := l_null_rec_array_event;
147608 --
147609 --------------------------------------
147610 -- 4262811 Initialze MPA Line Number
147611 --------------------------------------
147612 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
147613
147614 --
147615
147616 --
147617 OPEN header_cur;
147618 --
147619 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147620 trace
147621 (p_msg => 'SQL - FETCH header_cur'
147622 ,p_level => C_LEVEL_STATEMENT
147623 ,p_module => l_log_module);
147624 END IF;
147625 --
147626 LOOP
147627 FETCH header_cur BULK COLLECT INTO
147628 l_array_entity_id
147629 , l_array_legal_entity_id
147630 , l_array_entity_code
147631 , l_array_transaction_num
147632 , l_array_event_id
147633 , l_array_class_code
147634 , l_array_event_type
147635 , l_array_event_number
147636 , l_array_event_date
147637 , l_array_transaction_date
147638 , l_array_reference_num_1
147639 , l_array_reference_num_2
147640 , l_array_reference_num_3
147641 , l_array_reference_num_4
147642 , l_array_reference_char_1
147643 , l_array_reference_char_2
147644 , l_array_reference_char_3
147645 , l_array_reference_char_4
147646 , l_array_reference_date_1
147647 , l_array_reference_date_2
147648 , l_array_reference_date_3
147649 , l_array_reference_date_4
147650 , l_array_event_created_by
147651 , l_array_budgetary_control_flag
147652 , l_array_source_6
147653 , l_array_source_7
147654 , l_array_source_8
147655 , l_array_source_9
147656 , l_array_source_10
147657 , l_array_source_12
147658 , l_array_source_12_meaning
147659 , l_array_source_13
147660 , l_array_source_14
147661 , l_array_source_15
147662 , l_array_source_16
147663 , l_array_source_19
147664 , l_array_source_20
147665 , l_array_source_21
147666 , l_array_source_23
147667 , l_array_source_27
147668 , l_array_source_38
147669 , l_array_source_38_meaning
147670 LIMIT l_rows;
147671 --
147672 IF (C_LEVEL_EVENT >= g_log_level) THEN
147673 trace
147674 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
147675 ,p_level => C_LEVEL_EVENT
147676 ,p_module => l_log_module);
147677 END IF;
147678 --
147679 EXIT WHEN l_array_entity_id.COUNT = 0;
147680
147681 -- initialize arrays
147682 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
147683 XLA_AE_LINES_PKG.g_rec_lines := NULL;
147684
147685 --
147686 -- Bug 4458708
147687 --
147688 XLA_AE_LINES_PKG.g_LineNumber := 0;
147689
147690
147691 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
147692 g_last_hdr_idx := l_array_event_id.LAST;
147693 --
147694 -- loop for the headers. Each iteration is for each header extract row
147695 -- fetched in header cursor
147696 --
147697 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
147698
147699 --
147700 -- set event info as cache for other routines to refer event attributes
147701 --
147702 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147703 (p_application_id => p_application_id
147704 ,p_primary_ledger_id => p_primary_ledger_id
147705 ,p_base_ledger_id => p_base_ledger_id
147706 ,p_target_ledger_id => p_target_ledger_id
147707 ,p_entity_id => l_array_entity_id(hdr_idx)
147708 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
147709 ,p_entity_code => l_array_entity_code(hdr_idx)
147710 ,p_transaction_num => l_array_transaction_num(hdr_idx)
147711 ,p_event_id => l_array_event_id(hdr_idx)
147712 ,p_event_class_code => l_array_class_code(hdr_idx)
147713 ,p_event_type_code => l_array_event_type(hdr_idx)
147714 ,p_event_number => l_array_event_number(hdr_idx)
147715 ,p_event_date => l_array_event_date(hdr_idx)
147716 ,p_transaction_date => l_array_transaction_date(hdr_idx)
147717 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
147718 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
147719 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
147720 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
147721 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
147722 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
147723 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
147724 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
147725 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
147726 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
147727 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
147728 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
147729 ,p_event_created_by => l_array_event_created_by(hdr_idx)
147730 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
147731
147732 --
147733 -- set the status of entry to C_VALID (0)
147734 --
147735 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147736
147737 --
147738 -- initialize a row for ae header
147739 --
147740 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
147741
147742 l_event_id := l_array_event_id(hdr_idx);
147743
147744 --
147745 -- storing the hdr_idx for event. May be used by line cursor.
147746 --
147747 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
147748
147749 --
147750 -- store sources from header extract. This can be improved to
147751 -- store only those sources from header extract that may be used in lines
147752 --
147753
147754 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
147755 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
147756 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
147757 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
147758 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
147759 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
147760 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
147761 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
147762 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
147763 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
147764 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
147765 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
147766 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
147767 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
147768 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
147769 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
147770 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
147771 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
147772
147773 --
147774 -- initilaize the status of ae headers for diffrent balance types
147775 -- the status is initialised to C_NOT_CREATED (2)
147776 --
147777 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147778 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147779 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
147780
147781 --
147782 -- call api to validate and store accounting attributes for header
147783 --
147784
147785 ------------------------------------------------------------
147786 -- Accrual Reversal : to get date for Standard Source (NONE)
147787 ------------------------------------------------------------
147788 l_acc_rev_gl_date_source := NULL;
147789
147790 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
147791 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
147792 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
147793 l_rec_acct_attrs.array_date_value(2) :=
147794 xla_ae_sources_pkg.GetSystemSourceDate(
147795 p_source_code => 'XLA_REFERENCE_DATE_1'
147796 , p_source_type_code => 'Y'
147797 , p_source_application_id => 602
147798 );
147799 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
147800 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
147801
147802
147803 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
147804
147805 XLA_AE_HEADER_PKG.SetJeCategoryName;
147806
147807 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
147808 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
147809 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
147810 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
147811 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
147812
147813
147814 -- No header level analytical criteria
147815
147816 --
147817 --accounting attribute enhancement, bug 3612931
147818 --
147819 l_trx_reversal_source := SUBSTR(NULL, 1,30);
147820
147821 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
147822 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
147823
147824 xla_accounting_err_pkg.build_message
147825 (p_appli_s_name => 'XLA'
147826 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
147827 ,p_token_1 => 'ACCT_ATTR_NAME'
147828 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
147829 ,p_token_2 => 'PRODUCT_NAME'
147830 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
147831 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
147832 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
147833 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
147834
147835 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
147836 --
147837 -- following sets the accounting attributes needed to reverse
147838 -- accounting for a distributeion
147839 --
147840 xla_ae_lines_pkg.SetTrxReversalAttrs
147841 (p_event_id => l_event_id
147842 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
147843 ,p_trx_reversal_source => l_trx_reversal_source);
147844
147845 END IF;
147846
147847
147848 ----------------------------------------------------------------
147849 -- 4262811 - update the header statuses to invalid in need be
147850 ----------------------------------------------------------------
147851 --
147852 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
147853
147854
147855 -----------------------------------------------
147856 -- No accrual reversal for the event class/type
147857 -----------------------------------------------
147858 ----------------------------------------------------------------
147859
147860 --
147861 -- this ends the header loop iteration for one bulk fetch
147862 --
147863 END LOOP;
147864
147865 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
147866 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
147867
147868 --
147869 -- insert dummy rows into lines gt table that were created due to
147870 -- transaction reversals
147871 --
147872 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
147873 l_result := XLA_AE_LINES_PKG.InsertLines;
147874 END IF;
147875
147876 --
147877 -- reset the temp_line_num for each set of events fetched from header
147878 -- cursor rather than doing it for each new event in line cursor
147879 -- Bug 3939231
147880 --
147881 xla_ae_lines_pkg.g_temp_line_num := 0;
147882
147883
147884
147885 --
147886 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
147887 --
147888 --
147889 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147890
147891 trace
147892 (p_msg => 'SQL - FETCH line_cur'
147893 ,p_level => C_LEVEL_STATEMENT
147894 ,p_module => l_log_module);
147895
147896 END IF;
147897 --
147898 --
147899 LOOP
147900 --
147901 FETCH line_cur BULK COLLECT INTO
147902 l_array_entity_id
147903 , l_array_legal_entity_id
147904 , l_array_entity_code
147905 , l_array_transaction_num
147906 , l_array_event_id
147907 , l_array_class_code
147908 , l_array_event_type
147909 , l_array_event_number
147910 , l_array_event_date
147911 , l_array_transaction_date
147912 , l_array_reference_num_1
147913 , l_array_reference_num_2
147914 , l_array_reference_num_3
147915 , l_array_reference_num_4
147916 , l_array_reference_char_1
147917 , l_array_reference_char_2
147918 , l_array_reference_char_3
147919 , l_array_reference_char_4
147920 , l_array_reference_date_1
147921 , l_array_reference_date_2
147922 , l_array_reference_date_3
147923 , l_array_reference_date_4
147924 , l_array_event_created_by
147925 , l_array_budgetary_control_flag
147926 , l_array_extract_line_num
147927 , l_array_source_4
147928 , l_array_source_5
147929 , l_array_source_11
147930 , l_array_source_18
147931 , l_array_source_22
147932 LIMIT l_rows;
147933
147934 --
147935 IF (C_LEVEL_EVENT >= g_log_level) THEN
147936 trace
147937 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
147938 ,p_level => C_LEVEL_EVENT
147939 ,p_module => l_log_module);
147940 END IF;
147941 --
147942 EXIT WHEN l_array_entity_id.count = 0;
147943
147944 XLA_AE_LINES_PKG.g_rec_lines := null;
147945
147946 --
147947 -- Bug 4458708
147948 --
147949 XLA_AE_LINES_PKG.g_LineNumber := 0;
147950 --
147951 --
147952
147953 FOR Idx IN 1..l_array_event_id.count LOOP
147954 --
147955 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
147956 --
147957 l_event_id := l_array_event_id(idx); -- 5648433
147958
147959 --
147960 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
147961 --
147962
147963 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
147964 (g_array_event(l_event_id).array_value_num('header_index'))
147965 ,'N'
147966 ) <> 'Y'
147967 THEN
147968 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
147969 trace
147970 (p_msg => 'Trancaction revesal option is not Y '
147971 ,p_level => C_LEVEL_STATEMENT
147972 ,p_module => l_log_module);
147973 END IF;
147974
147975 --
147976 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
147977 --
147978 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
147979 --
147980 -- set event info as cache for other routines to refer event attributes
147981 --
147982
147983 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
147984 l_previous_event_id := l_event_id;
147985
147986 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
147987 (p_application_id => p_application_id
147988 ,p_primary_ledger_id => p_primary_ledger_id
147989 ,p_base_ledger_id => p_base_ledger_id
147990 ,p_target_ledger_id => p_target_ledger_id
147991 ,p_entity_id => l_array_entity_id(Idx)
147992 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
147993 ,p_entity_code => l_array_entity_code(Idx)
147994 ,p_transaction_num => l_array_transaction_num(Idx)
147995 ,p_event_id => l_array_event_id(Idx)
147996 ,p_event_class_code => l_array_class_code(Idx)
147997 ,p_event_type_code => l_array_event_type(Idx)
147998 ,p_event_number => l_array_event_number(Idx)
147999 ,p_event_date => l_array_event_date(Idx)
148000 ,p_transaction_date => l_array_transaction_date(Idx)
148001 ,p_reference_num_1 => l_array_reference_num_1(Idx)
148002 ,p_reference_num_2 => l_array_reference_num_2(Idx)
148003 ,p_reference_num_3 => l_array_reference_num_3(Idx)
148004 ,p_reference_num_4 => l_array_reference_num_4(Idx)
148005 ,p_reference_char_1 => l_array_reference_char_1(Idx)
148006 ,p_reference_char_2 => l_array_reference_char_2(Idx)
148007 ,p_reference_char_3 => l_array_reference_char_3(Idx)
148008 ,p_reference_char_4 => l_array_reference_char_4(Idx)
148009 ,p_reference_date_1 => l_array_reference_date_1(Idx)
148010 ,p_reference_date_2 => l_array_reference_date_2(Idx)
148011 ,p_reference_date_3 => l_array_reference_date_3(Idx)
148012 ,p_reference_date_4 => l_array_reference_date_4(Idx)
148013 ,p_event_created_by => l_array_event_created_by(Idx)
148014 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
148015 --
148016 END IF;
148017
148018
148019
148020 --
148021 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
148022
148023 l_acct_reversal_source := SUBSTR(NULL, 1,30);
148024
148025 IF l_continue_with_lines THEN
148026 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
148027 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
148028
148029 xla_accounting_err_pkg.build_message
148030 (p_appli_s_name => 'XLA'
148031 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
148032 ,p_token_1 => 'LINE_NUMBER'
148033 ,p_value_1 => l_array_extract_line_num(Idx)
148034 ,p_token_2 => 'PRODUCT_NAME'
148035 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
148036 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
148037 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
148038 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
148039
148040 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
148041 --
148042 -- following sets the accounting attributes needed to reverse
148043 -- accounting for a distributeion
148044 --
148045
148046 --
148047 -- 5217187
148048 --
148049 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
148050 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
148051 g_array_event(l_event_id).array_value_num('header_index'));
148052 --
148053 --
148054
148055 -- No reversal code generated
148056
148057 xla_ae_lines_pkg.SetAcctReversalAttrs
148058 (p_event_id => l_event_id
148059 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
148060 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148061 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
148062 END IF;
148063
148064 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
148065 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
148066
148067 --
148068 AcctLineType_12 (
148069 p_application_id => p_application_id
148070 ,p_event_id => l_event_id
148071 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148072 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148073 ,p_actual_flag => l_actual_flag
148074 ,p_balance_type_code => l_balance_type_code
148075 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148076
148077 , p_source_4 => l_array_source_4(Idx)
148078 , p_source_5 => l_array_source_5(Idx)
148079 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
148080 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148081 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
148082 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148083 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
148084 , p_source_11 => l_array_source_11(Idx)
148085 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148086 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148087 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
148088 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
148089 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
148090 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
148091 , p_source_18 => l_array_source_18(Idx)
148092 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
148093 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
148094 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
148095 , p_source_22 => l_array_source_22(Idx)
148096 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
148097 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
148098 );
148099 If(l_balance_type_code = 'A') THEN
148100 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148101 END IF;
148102
148103 --
148104
148105
148106 --
148107 AcctLineType_241 (
148108 p_application_id => p_application_id
148109 ,p_event_id => l_event_id
148110 ,p_calculate_acctd_flag => l_calculate_acctd_flag
148111 ,p_calculate_g_l_flag => l_calculate_g_l_flag
148112 ,p_actual_flag => l_actual_flag
148113 ,p_balance_type_code => l_balance_type_code
148114 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
148115
148116 , p_source_4 => l_array_source_4(Idx)
148117 , p_source_5 => l_array_source_5(Idx)
148118 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
148119 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
148120 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
148121 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
148122 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
148123 , p_source_11 => l_array_source_11(Idx)
148124 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
148125 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
148126 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
148127 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
148128 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
148129 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
148130 , p_source_18 => l_array_source_18(Idx)
148131 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
148132 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
148133 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
148134 , p_source_22 => l_array_source_22(Idx)
148135 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
148136 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
148137 );
148138 If(l_balance_type_code = 'A') THEN
148139 l_actual_gain_loss_ref := l_gain_or_loss_ref;
148140 END IF;
148141
148142 --
148143
148144 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
148145 -- or secondary ledger that has different currency with primary
148146 -- or alc that is calculated by sla
148147 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
148148 (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'))
148149
148150 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
148151 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
148152 AND (l_actual_flag = 'A')) THEN
148153 XLA_AE_LINES_PKG.CreateGainOrLossLines(
148154 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
148155 ,p_application_id => p_application_id
148156 ,p_amb_context_code => 'DEFAULT'
148157 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
148158 ,p_event_class_code => C_EVENT_CLASS_CODE
148159 ,p_event_type_code => C_EVENT_TYPE_CODE
148160
148161 ,p_gain_ccid => -1
148162 ,p_loss_ccid => -1
148163
148164 ,p_actual_flag => l_actual_flag
148165 ,p_enc_flag => null
148166 ,p_actual_g_l_ref => l_actual_gain_loss_ref
148167 ,p_enc_g_l_ref => null
148168 );
148169 END IF;
148170 END IF;
148171 END IF;
148172
148173 ELSE
148174 --
148175 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
148176 --
148177 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148178 trace
148179 (p_msg => 'Trancaction revesal option is Y'
148180 ,p_level => C_LEVEL_STATEMENT
148181 ,p_module => l_log_module);
148182 END IF;
148183 END IF;
148184
148185 END LOOP;
148186 l_result := XLA_AE_LINES_PKG.InsertLines ;
148187 end loop;
148188 close line_cur;
148189
148190
148191 --
148192 -- insert headers into xla_ae_headers_gt table
148193 --
148194 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
148195
148196 -- insert into errors table here.
148197
148198 END LOOP;
148199
148200 --
148201 -- 4865292
148202 --
148203 -- Compare g_hdr_extract_count with event count in
148204 -- CreateHeadersAndLines.
148205 --
148206 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
148207
148208 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148209 trace (p_msg => '# rows extracted from header extract objects '
148210 || ' (running total): '
148211 || g_hdr_extract_count
148212 ,p_level => C_LEVEL_STATEMENT
148213 ,p_module => l_log_module);
148214 END IF;
148215
148216 CLOSE header_cur;
148217 --
148218
148219 --
148220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148221 trace
148222 (p_msg => 'END of EventClass_262'
148223 ,p_level => C_LEVEL_PROCEDURE
148224 ,p_module => l_log_module);
148225 END IF;
148226 --
148227 RETURN l_result;
148228 EXCEPTION
148229 WHEN xla_exceptions_pkg.application_exception THEN
148230
148231 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
148232
148233
148234 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
148235
148236 RAISE;
148237
148238 WHEN NO_DATA_FOUND THEN
148239
148240 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
148241 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
148242
148243 FOR header_record IN header_cur
148244 LOOP
148245 l_array_header_events(header_record.event_id) := header_record.event_id;
148246 END LOOP;
148247
148248 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
148249 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
148250
148251 fnd_file.put_line(fnd_file.LOG, ' ');
148252 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
148253 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
148254 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
148255
148256 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
148257 LOOP
148258 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
148259 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
148260 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
148261 END IF;
148262 END LOOP;
148263
148264 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
148265 fnd_file.put_line(fnd_file.LOG, ' ');
148266
148267
148268 xla_exceptions_pkg.raise_message
148269 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_262');
148270
148271
148272 WHEN OTHERS THEN
148273 xla_exceptions_pkg.raise_message
148274 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_262');
148275 END EventClass_262;
148276 --
148277
148278 ---------------------------------------
148279 --
148280 -- PRIVATE PROCEDURE
148281 -- insert_sources_263
148282 --
148283 ----------------------------------------
148284 --
148285 PROCEDURE insert_sources_263(
148286 p_target_ledger_id IN NUMBER
148287 , p_language IN VARCHAR2
148288 , p_sla_ledger_id IN NUMBER
148289 , p_pad_start_date IN DATE
148290 , p_pad_end_date IN DATE
148291 )
148292 IS
148293
148294 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT_ALL';
148295 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT';
148296 p_apps_owner VARCHAR2(30);
148297 l_log_module VARCHAR2(240);
148298 BEGIN
148299 IF g_log_enabled THEN
148300 l_log_module := C_DEFAULT_MODULE||'.insert_sources_263';
148301 END IF;
148302 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148303
148304 trace
148305 (p_msg => 'BEGIN of insert_sources_263'
148306 ,p_level => C_LEVEL_PROCEDURE
148307 ,p_module => l_log_module);
148308
148309 END IF;
148310
148311 -- select APPS owner
148312 SELECT oracle_username
148313 INTO p_apps_owner
148314 FROM fnd_oracle_userid
148315 WHERE read_only_flag = 'U'
148316 ;
148317
148318 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148319 trace
148320 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
148321 ' - p_language = '||p_language||
148322 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
148323 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
148324 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
148325 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
148326 ,p_level => C_LEVEL_STATEMENT
148327 ,p_module => l_log_module);
148328 END IF;
148329
148330
148331 --
148332 INSERT INTO xla_diag_sources --hdr2
148333 (
148334 event_id
148335 , ledger_id
148336 , sla_ledger_id
148337 , description_language
148338 , object_name
148339 , object_type_code
148340 , line_number
148341 , source_application_id
148342 , source_type_code
148343 , source_code
148344 , source_value
148345 , source_meaning
148346 , created_by
148347 , creation_date
148348 , last_update_date
148349 , last_updated_by
148350 , last_update_login
148351 , program_update_date
148352 , program_application_id
148353 , program_id
148354 , request_id
148355 )
148356 SELECT
148357 event_id
148358 , p_target_ledger_id
148359 , p_sla_ledger_id
148360 , p_language
148361 , object_name
148362 , object_type_code
148363 , line_number
148364 , source_application_id
148365 , source_type_code
148366 , source_code
148367 , SUBSTR(source_value ,1,1996)
148368 , SUBSTR(source_meaning ,1,200)
148369 , xla_environment_pkg.g_Usr_Id
148370 , TRUNC(SYSDATE)
148371 , TRUNC(SYSDATE)
148372 , xla_environment_pkg.g_Usr_Id
148373 , xla_environment_pkg.g_Login_Id
148374 , TRUNC(SYSDATE)
148375 , xla_environment_pkg.g_Prog_Appl_Id
148376 , xla_environment_pkg.g_Prog_Id
148377 , xla_environment_pkg.g_Req_Id
148378 FROM (
148379 SELECT xet.event_id event_id
148380 , 0 line_number
148381 , CASE r
148382 WHEN 1 THEN 'CST_XLA_INV_REF_V'
148383 WHEN 2 THEN 'CST_XLA_INV_REF_V'
148384 WHEN 3 THEN 'CST_XLA_INV_REF_V'
148385 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V'
148386 WHEN 5 THEN 'CST_XLA_INV_REF_V'
148387 WHEN 6 THEN 'CST_XLA_INV_REF_V'
148388 WHEN 7 THEN 'PSA_CST_XLA_UPG_V'
148389 WHEN 8 THEN 'CST_XLA_INV_REF_V'
148390 WHEN 9 THEN 'CST_XLA_INV_REF_V'
148391 WHEN 10 THEN 'PO_REQ_DISTS_REF_V'
148392 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V'
148393 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V'
148394
148395 ELSE null
148396 END object_name
148397 , CASE r
148398 WHEN 1 THEN 'HEADER'
148399 WHEN 2 THEN 'HEADER'
148400 WHEN 3 THEN 'HEADER'
148401 WHEN 4 THEN 'HEADER'
148402 WHEN 5 THEN 'HEADER'
148403 WHEN 6 THEN 'HEADER'
148404 WHEN 7 THEN 'HEADER'
148405 WHEN 8 THEN 'HEADER'
148406 WHEN 9 THEN 'HEADER'
148407 WHEN 10 THEN 'HEADER'
148408 WHEN 11 THEN 'HEADER'
148409 WHEN 12 THEN 'HEADER'
148410
148411 ELSE null
148412 END object_type_code
148413 , CASE r
148414 WHEN 1 THEN '707'
148415 WHEN 2 THEN '707'
148416 WHEN 3 THEN '707'
148417 WHEN 4 THEN '707'
148418 WHEN 5 THEN '707'
148419 WHEN 6 THEN '707'
148420 WHEN 7 THEN '707'
148421 WHEN 8 THEN '707'
148422 WHEN 9 THEN '707'
148423 WHEN 10 THEN '201'
148424 WHEN 11 THEN '201'
148425 WHEN 12 THEN '707'
148426
148427 ELSE null
148428 END source_application_id
148429 , 'S' source_type_code
148430 , CASE r
148431 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
148432 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
148433 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
148434 WHEN 4 THEN 'DISTRIBUTION_TYPE'
148435 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
148436 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
148437 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION'
148438 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID'
148439 WHEN 9 THEN 'TXN_PO_HEADER_ID'
148440 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT'
148441 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID'
148442 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR'
148443
148444 ELSE null
148445 END source_code
148446 , CASE r
148447 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
148448 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
148449 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
148450 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
148451 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
148452 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
148453 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
148454 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
148455 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
148456 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
148457 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
148458 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
148459
148460 ELSE null
148461 END source_value
148462 , CASE r
148463 WHEN 4 THEN fvl12.meaning
148464 WHEN 12 THEN fvl38.meaning
148465
148466 ELSE null
148467 END source_meaning
148468 FROM xla_events_gt xet
148469 , CST_XLA_INV_HEADERS_V h1
148470 , CST_XLA_INV_REF_V h3
148471 , PO_REQ_DISTS_REF_V h4
148472 , PO_REQ_HEADERS_REF_V h5
148473 , PSA_CST_XLA_UPG_V h6
148474 , fnd_lookup_values fvl12
148475 , fnd_lookup_values fvl38
148476 ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
148477 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
148478 AND xet.event_class_code = C_EVENT_CLASS_CODE
148479 AND h1.event_id = xet.event_id
148480 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'
148481 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
148482 AND fvl12.view_application_id(+) = 700
148483 AND fvl12.language(+) = USERENV('LANG')
148484 AND fvl38.lookup_type(+) = 'YES_NO'
148485 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
148486 AND fvl38.view_application_id(+) = 0
148487 AND fvl38.language(+) = USERENV('LANG')
148488
148489 )
148490 ;
148491 --
148492 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148493
148494 trace
148495 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
148496 ,p_level => C_LEVEL_STATEMENT
148497 ,p_module => l_log_module);
148498
148499 END IF;
148500 --
148501
148502
148503
148504 --
148505 INSERT INTO xla_diag_sources --line2
148506 (
148507 event_id
148508 , ledger_id
148509 , sla_ledger_id
148510 , description_language
148511 , object_name
148512 , object_type_code
148513 , line_number
148514 , source_application_id
148515 , source_type_code
148516 , source_code
148517 , source_value
148518 , source_meaning
148519 , created_by
148520 , creation_date
148521 , last_update_date
148522 , last_updated_by
148523 , last_update_login
148524 , program_update_date
148525 , program_application_id
148526 , program_id
148527 , request_id
148528 )
148529 SELECT event_id
148530 , p_target_ledger_id
148531 , p_sla_ledger_id
148532 , p_language
148533 , object_name
148534 , object_type_code
148535 , line_number
148536 , source_application_id
148537 , source_type_code
148538 , source_code
148539 , SUBSTR(source_value,1,1996)
148540 , SUBSTR(source_meaning ,1,200)
148541 , xla_environment_pkg.g_Usr_Id
148542 , TRUNC(SYSDATE)
148543 , TRUNC(SYSDATE)
148544 , xla_environment_pkg.g_Usr_Id
148545 , xla_environment_pkg.g_Login_Id
148546 , TRUNC(SYSDATE)
148547 , xla_environment_pkg.g_Prog_Appl_Id
148548 , xla_environment_pkg.g_Prog_Id
148549 , xla_environment_pkg.g_Req_Id
148550 FROM (
148551 SELECT xet.event_id event_id
148552 , l2.line_number line_number
148553 , CASE r
148554 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
148555 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
148556 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
148557 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
148558 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
148559 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
148560 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
148561 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
148562 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
148563
148564 ELSE null
148565 END object_name
148566 , CASE r
148567 WHEN 1 THEN 'LINE'
148568 WHEN 2 THEN 'LINE'
148569 WHEN 3 THEN 'LINE'
148570 WHEN 4 THEN 'LINE'
148571 WHEN 5 THEN 'LINE'
148572 WHEN 6 THEN 'LINE'
148573 WHEN 7 THEN 'LINE'
148574 WHEN 8 THEN 'LINE'
148575 WHEN 9 THEN 'LINE'
148576
148577 ELSE null
148578 END object_type_code
148579 , CASE r
148580 WHEN 1 THEN '707'
148581 WHEN 2 THEN '707'
148582 WHEN 3 THEN '707'
148583 WHEN 4 THEN '707'
148584 WHEN 5 THEN '707'
148585 WHEN 6 THEN '707'
148586 WHEN 7 THEN '707'
148587 WHEN 8 THEN '707'
148588 WHEN 9 THEN '707'
148589
148590 ELSE null
148591 END source_application_id
148592 , 'S' source_type_code
148593 , CASE r
148594 WHEN 1 THEN 'CODE_COMBINATION_ID'
148595 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
148596 WHEN 3 THEN 'CURRENCY_CODE'
148597 WHEN 4 THEN 'ENTERED_AMOUNT'
148598 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
148599 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
148600 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
148601 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
148602 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
148603
148604 ELSE null
148605 END source_code
148606 , CASE r
148607 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
148608 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
148609 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
148610 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
148611 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
148612 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
148613 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
148614 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
148615 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
148616
148617 ELSE null
148618 END source_value
148619 , null source_meaning
148620 FROM xla_events_gt xet
148621 , CST_XLA_INV_LINES_V l2
148622 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
148623 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
148624 AND xet.event_class_code = C_EVENT_CLASS_CODE
148625 AND l2.event_id = xet.event_id
148626
148627 )
148628 ;
148629 --
148630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148631
148632 trace
148633 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
148634 ,p_level => C_LEVEL_STATEMENT
148635 ,p_module => l_log_module);
148636
148637 END IF;
148638
148639
148640 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148641 trace
148642 (p_msg => 'END of insert_sources_263'
148643 ,p_level => C_LEVEL_PROCEDURE
148644 ,p_module => l_log_module);
148645 END IF;
148646 EXCEPTION
148647 WHEN xla_exceptions_pkg.application_exception THEN
148648 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
148649 trace
148650 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
148651 ,p_level => C_LEVEL_EXCEPTION
148652 ,p_module => l_log_module);
148653 END IF;
148654 RAISE;
148655 WHEN OTHERS THEN
148656 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
148657 trace
148658 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
148659 ,p_level => C_LEVEL_EXCEPTION
148660 ,p_module => l_log_module);
148661 END IF;
148662 xla_exceptions_pkg.raise_message
148663 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_263');
148664 END insert_sources_263;
148665 --
148666
148667 ---------------------------------------
148668 --
148669 -- PRIVATE FUNCTION
148670 -- EventClass_263
148671 --
148672 ----------------------------------------
148673 --
148674 FUNCTION EventClass_263
148675 (p_application_id IN NUMBER
148676 ,p_base_ledger_id IN NUMBER
148677 ,p_target_ledger_id IN NUMBER
148678 ,p_language IN VARCHAR2
148679 ,p_currency_code IN VARCHAR2
148680 ,p_sla_ledger_id IN NUMBER
148681 ,p_pad_start_date IN DATE
148682 ,p_pad_end_date IN DATE
148683 ,p_primary_ledger_id IN NUMBER)
148684 RETURN BOOLEAN IS
148685 --
148686 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT_ALL';
148687 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_RCPT';
148688
148689 l_calculate_acctd_flag VARCHAR2(1) :='N';
148690 l_calculate_g_l_flag VARCHAR2(1) :='N';
148691 --
148692 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148693 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148694 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148695 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148696 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148697 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148698 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148699 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148700 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148701 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148702 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148703 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148704 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148705 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
148706 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148707 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148708 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148709 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
148710 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148711 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148712 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148713 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
148714 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
148715 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
148716 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
148717 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
148718
148719 l_event_id NUMBER;
148720 l_previous_event_id NUMBER;
148721 l_first_event_id NUMBER;
148722 l_last_event_id NUMBER;
148723
148724 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
148725 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
148726 --
148727 --
148728 l_result BOOLEAN := TRUE;
148729 l_rows NUMBER := 1000;
148730 l_event_type_name VARCHAR2(80) := 'All';
148731 l_event_class_name VARCHAR2(80) := 'Direct Interorg Receipt';
148732 l_description VARCHAR2(4000);
148733 l_transaction_reversal NUMBER;
148734 l_ae_header_id NUMBER;
148735 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
148736 l_log_module VARCHAR2(240);
148737 --
148738 l_acct_reversal_source VARCHAR2(30);
148739 l_trx_reversal_source VARCHAR2(30);
148740
148741 l_continue_with_lines BOOLEAN := TRUE;
148742 --
148743 l_acc_rev_gl_date_source DATE; -- 4262811
148744 --
148745 type t_array_event_id is table of number index by binary_integer;
148746
148747 l_rec_array_event t_rec_array_event;
148748 l_null_rec_array_event t_rec_array_event;
148749 l_array_ae_header_id xla_number_array_type;
148750 l_actual_flag VARCHAR2(1) := NULL;
148751 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
148752 l_balance_type_code VARCHAR2(1) :=NULL;
148753 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
148754
148755 --
148756 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
148757 --
148758
148759 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
148760 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
148761 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
148762 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
148763 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
148764 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148765 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
148766 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
148767 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
148768 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
148769 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
148770 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
148771
148772 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
148773 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
148774 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
148775 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148776 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
148777 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
148778 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
148779 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
148780 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
148781
148782 l_array_source_6 t_array_source_6;
148783 l_array_source_7 t_array_source_7;
148784 l_array_source_8 t_array_source_8;
148785 l_array_source_12 t_array_source_12;
148786 l_array_source_12_meaning t_array_lookup_meaning;
148787 l_array_source_14 t_array_source_14;
148788 l_array_source_16 t_array_source_16;
148789 l_array_source_27 t_array_source_27;
148790 l_array_source_28 t_array_source_28;
148791 l_array_source_29 t_array_source_29;
148792 l_array_source_30 t_array_source_30;
148793 l_array_source_31 t_array_source_31;
148794 l_array_source_38 t_array_source_38;
148795 l_array_source_38_meaning t_array_lookup_meaning;
148796
148797 l_array_source_4 t_array_source_4;
148798 l_array_source_11 t_array_source_11;
148799 l_array_source_15 t_array_source_15;
148800 l_array_source_18 t_array_source_18;
148801 l_array_source_19 t_array_source_19;
148802 l_array_source_20 t_array_source_20;
148803 l_array_source_21 t_array_source_21;
148804 l_array_source_22 t_array_source_22;
148805 l_array_source_24 t_array_source_24;
148806
148807 --
148808 CURSOR header_cur
148809 IS
148810 SELECT /*+ leading(xet) cardinality(xet,1) */
148811 -- Event Class Code: DIR_INTERORG_RCPT
148812 xet.entity_id
148813 ,xet.legal_entity_id
148814 ,xet.entity_code
148815 ,xet.transaction_number
148816 ,xet.event_id
148817 ,xet.event_class_code
148818 ,xet.event_type_code
148819 ,xet.event_number
148820 ,xet.event_date
148821 ,xet.transaction_date
148822 ,xet.reference_num_1
148823 ,xet.reference_num_2
148824 ,xet.reference_num_3
148825 ,xet.reference_num_4
148826 ,xet.reference_char_1
148827 ,xet.reference_char_2
148828 ,xet.reference_char_3
148829 ,xet.reference_char_4
148830 ,xet.reference_date_1
148831 ,xet.reference_date_2
148832 ,xet.reference_date_3
148833 ,xet.reference_date_4
148834 ,xet.event_created_by
148835 ,xet.budgetary_control_flag
148836 , h3.APPLIED_TO_APPL_ID source_6
148837 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
148838 , h3.APPLIED_TO_ENTITY_CODE source_8
148839 , h1.DISTRIBUTION_TYPE source_12
148840 , fvl12.meaning source_12_meaning
148841 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
148842 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
148843 , h6.CST_ENCUM_UPG_OPTION source_27
148844 , h3.TXN_PO_DISTRIBUTION_ID source_28
148845 , h3.TXN_PO_HEADER_ID source_29
148846 , h4.REQ_BUDGET_ACCOUNT source_30
148847 , h5.REQ_ENCUMBRANCE_TYPE_ID source_31
148848 , h1.TRANSFER_TO_GL_INDICATOR source_38
148849 , fvl38.meaning source_38_meaning
148850 FROM xla_events_gt xet
148851 , CST_XLA_INV_HEADERS_V h1
148852 , CST_XLA_INV_REF_V h3
148853 , PO_REQ_DISTS_REF_V h4
148854 , PO_REQ_HEADERS_REF_V h5
148855 , PSA_CST_XLA_UPG_V h6
148856 , fnd_lookup_values fvl12
148857 , fnd_lookup_values fvl38
148858 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
148859 and xet.event_class_code = C_EVENT_CLASS_CODE
148860 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
148861 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'
148862 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
148863 AND fvl12.view_application_id(+) = 700
148864 AND fvl12.language(+) = USERENV('LANG')
148865 AND fvl38.lookup_type(+) = 'YES_NO'
148866 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
148867 AND fvl38.view_application_id(+) = 0
148868 AND fvl38.language(+) = USERENV('LANG')
148869
148870 ORDER BY event_id
148871 ;
148872
148873
148874 --
148875 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
148876 IS
148877 SELECT /*+ leading(xet) cardinality(xet,1) */
148878 -- Event Class Code: DIR_INTERORG_RCPT
148879 xet.entity_id
148880 ,xet.legal_entity_id
148881 ,xet.entity_code
148882 ,xet.transaction_number
148883 ,xet.event_id
148884 ,xet.event_class_code
148885 ,xet.event_type_code
148886 ,xet.event_number
148887 ,xet.event_date
148888 ,xet.transaction_date
148889 ,xet.reference_num_1
148890 ,xet.reference_num_2
148891 ,xet.reference_num_3
148892 ,xet.reference_num_4
148893 ,xet.reference_char_1
148894 ,xet.reference_char_2
148895 ,xet.reference_char_3
148896 ,xet.reference_char_4
148897 ,xet.reference_date_1
148898 ,xet.reference_date_2
148899 ,xet.reference_date_3
148900 ,xet.reference_date_4
148901 ,xet.event_created_by
148902 ,xet.budgetary_control_flag
148903 , l2.LINE_NUMBER
148904 , l2.CODE_COMBINATION_ID source_4
148905 , l2.DISTRIBUTION_IDENTIFIER source_11
148906 , l2.CURRENCY_CODE source_15
148907 , l2.ENTERED_AMOUNT source_18
148908 , l2.CURRENCY_CONVERSION_DATE source_19
148909 , l2.CURRENCY_CONVERSION_RATE source_20
148910 , l2.CURRENCY_CONVERSION_TYPE source_21
148911 , l2.ACCOUNTED_AMOUNT source_22
148912 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
148913 FROM xla_events_gt xet
148914 , CST_XLA_INV_LINES_V l2
148915 WHERE xet.event_id between x_first_event_id and x_last_event_id
148916 and xet.event_date between p_pad_start_date and p_pad_end_date
148917 and xet.event_class_code = C_EVENT_CLASS_CODE
148918 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
148919 ;
148920
148921 --
148922 BEGIN
148923 IF g_log_enabled THEN
148924 l_log_module := C_DEFAULT_MODULE||'.EventClass_263';
148925 END IF;
148926 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
148927 trace
148928 (p_msg => 'BEGIN of EventClass_263'
148929 ,p_level => C_LEVEL_PROCEDURE
148930 ,p_module => l_log_module);
148931 END IF;
148932
148933 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148934 trace
148935 (p_msg => 'p_application_id = '||p_application_id||
148936 ' - p_base_ledger_id = '||p_base_ledger_id||
148937 ' - p_target_ledger_id = '||p_target_ledger_id||
148938 ' - p_language = '||p_language||
148939 ' - p_currency_code = '||p_currency_code||
148940 ' - p_sla_ledger_id = '||p_sla_ledger_id
148941 ,p_level => C_LEVEL_STATEMENT
148942 ,p_module => l_log_module);
148943 END IF;
148944 --
148945 -- initialze arrays
148946 --
148947 g_array_event.DELETE;
148948 l_rec_array_event := l_null_rec_array_event;
148949 --
148950 --------------------------------------
148951 -- 4262811 Initialze MPA Line Number
148952 --------------------------------------
148953 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
148954
148955 --
148956
148957 --
148958 OPEN header_cur;
148959 --
148960 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
148961 trace
148962 (p_msg => 'SQL - FETCH header_cur'
148963 ,p_level => C_LEVEL_STATEMENT
148964 ,p_module => l_log_module);
148965 END IF;
148966 --
148967 LOOP
148968 FETCH header_cur BULK COLLECT INTO
148969 l_array_entity_id
148970 , l_array_legal_entity_id
148971 , l_array_entity_code
148972 , l_array_transaction_num
148973 , l_array_event_id
148974 , l_array_class_code
148975 , l_array_event_type
148976 , l_array_event_number
148977 , l_array_event_date
148978 , l_array_transaction_date
148979 , l_array_reference_num_1
148980 , l_array_reference_num_2
148981 , l_array_reference_num_3
148982 , l_array_reference_num_4
148983 , l_array_reference_char_1
148984 , l_array_reference_char_2
148985 , l_array_reference_char_3
148986 , l_array_reference_char_4
148987 , l_array_reference_date_1
148988 , l_array_reference_date_2
148989 , l_array_reference_date_3
148990 , l_array_reference_date_4
148991 , l_array_event_created_by
148992 , l_array_budgetary_control_flag
148993 , l_array_source_6
148994 , l_array_source_7
148995 , l_array_source_8
148996 , l_array_source_12
148997 , l_array_source_12_meaning
148998 , l_array_source_14
148999 , l_array_source_16
149000 , l_array_source_27
149001 , l_array_source_28
149002 , l_array_source_29
149003 , l_array_source_30
149004 , l_array_source_31
149005 , l_array_source_38
149006 , l_array_source_38_meaning
149007 LIMIT l_rows;
149008 --
149009 IF (C_LEVEL_EVENT >= g_log_level) THEN
149010 trace
149011 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
149012 ,p_level => C_LEVEL_EVENT
149013 ,p_module => l_log_module);
149014 END IF;
149015 --
149016 EXIT WHEN l_array_entity_id.COUNT = 0;
149017
149018 -- initialize arrays
149019 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
149020 XLA_AE_LINES_PKG.g_rec_lines := NULL;
149021
149022 --
149023 -- Bug 4458708
149024 --
149025 XLA_AE_LINES_PKG.g_LineNumber := 0;
149026
149027
149028 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
149029 g_last_hdr_idx := l_array_event_id.LAST;
149030 --
149031 -- loop for the headers. Each iteration is for each header extract row
149032 -- fetched in header cursor
149033 --
149034 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
149035
149036 --
149037 -- set event info as cache for other routines to refer event attributes
149038 --
149039 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
149040 (p_application_id => p_application_id
149041 ,p_primary_ledger_id => p_primary_ledger_id
149042 ,p_base_ledger_id => p_base_ledger_id
149043 ,p_target_ledger_id => p_target_ledger_id
149044 ,p_entity_id => l_array_entity_id(hdr_idx)
149045 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
149046 ,p_entity_code => l_array_entity_code(hdr_idx)
149047 ,p_transaction_num => l_array_transaction_num(hdr_idx)
149048 ,p_event_id => l_array_event_id(hdr_idx)
149049 ,p_event_class_code => l_array_class_code(hdr_idx)
149050 ,p_event_type_code => l_array_event_type(hdr_idx)
149051 ,p_event_number => l_array_event_number(hdr_idx)
149052 ,p_event_date => l_array_event_date(hdr_idx)
149053 ,p_transaction_date => l_array_transaction_date(hdr_idx)
149054 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
149055 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
149056 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
149057 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
149058 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
149059 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
149060 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
149061 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
149062 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
149063 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
149064 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
149065 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
149066 ,p_event_created_by => l_array_event_created_by(hdr_idx)
149067 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
149068
149069 --
149070 -- set the status of entry to C_VALID (0)
149071 --
149072 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
149073
149074 --
149075 -- initialize a row for ae header
149076 --
149077 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
149078
149079 l_event_id := l_array_event_id(hdr_idx);
149080
149081 --
149082 -- storing the hdr_idx for event. May be used by line cursor.
149083 --
149084 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
149085
149086 --
149087 -- store sources from header extract. This can be improved to
149088 -- store only those sources from header extract that may be used in lines
149089 --
149090
149091 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
149092 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
149093 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
149094 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
149095 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
149096 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
149097 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
149098 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
149099 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
149100 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
149101 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
149102 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
149103 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
149104 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
149105
149106 --
149107 -- initilaize the status of ae headers for diffrent balance types
149108 -- the status is initialised to C_NOT_CREATED (2)
149109 --
149110 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149111 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149112 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
149113
149114 --
149115 -- call api to validate and store accounting attributes for header
149116 --
149117
149118 ------------------------------------------------------------
149119 -- Accrual Reversal : to get date for Standard Source (NONE)
149120 ------------------------------------------------------------
149121 l_acc_rev_gl_date_source := NULL;
149122
149123 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
149124 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
149125 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
149126 l_rec_acct_attrs.array_date_value(2) :=
149127 xla_ae_sources_pkg.GetSystemSourceDate(
149128 p_source_code => 'XLA_REFERENCE_DATE_1'
149129 , p_source_type_code => 'Y'
149130 , p_source_application_id => 602
149131 );
149132 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
149133 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
149134
149135
149136 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
149137
149138 XLA_AE_HEADER_PKG.SetJeCategoryName;
149139
149140 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
149141 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
149142 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
149143 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
149144 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
149145
149146
149147 -- No header level analytical criteria
149148
149149 --
149150 --accounting attribute enhancement, bug 3612931
149151 --
149152 l_trx_reversal_source := SUBSTR(NULL, 1,30);
149153
149154 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
149155 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
149156
149157 xla_accounting_err_pkg.build_message
149158 (p_appli_s_name => 'XLA'
149159 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
149160 ,p_token_1 => 'ACCT_ATTR_NAME'
149161 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
149162 ,p_token_2 => 'PRODUCT_NAME'
149163 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
149164 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
149165 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
149166 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
149167
149168 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
149169 --
149170 -- following sets the accounting attributes needed to reverse
149171 -- accounting for a distributeion
149172 --
149173 xla_ae_lines_pkg.SetTrxReversalAttrs
149174 (p_event_id => l_event_id
149175 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
149176 ,p_trx_reversal_source => l_trx_reversal_source);
149177
149178 END IF;
149179
149180
149181 ----------------------------------------------------------------
149182 -- 4262811 - update the header statuses to invalid in need be
149183 ----------------------------------------------------------------
149184 --
149185 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
149186
149187
149188 -----------------------------------------------
149189 -- No accrual reversal for the event class/type
149190 -----------------------------------------------
149191 ----------------------------------------------------------------
149192
149193 --
149194 -- this ends the header loop iteration for one bulk fetch
149195 --
149196 END LOOP;
149197
149198 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
149199 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
149200
149201 --
149202 -- insert dummy rows into lines gt table that were created due to
149203 -- transaction reversals
149204 --
149205 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
149206 l_result := XLA_AE_LINES_PKG.InsertLines;
149207 END IF;
149208
149209 --
149210 -- reset the temp_line_num for each set of events fetched from header
149211 -- cursor rather than doing it for each new event in line cursor
149212 -- Bug 3939231
149213 --
149214 xla_ae_lines_pkg.g_temp_line_num := 0;
149215
149216
149217
149218 --
149219 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
149220 --
149221 --
149222 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149223
149224 trace
149225 (p_msg => 'SQL - FETCH line_cur'
149226 ,p_level => C_LEVEL_STATEMENT
149227 ,p_module => l_log_module);
149228
149229 END IF;
149230 --
149231 --
149232 LOOP
149233 --
149234 FETCH line_cur BULK COLLECT INTO
149235 l_array_entity_id
149236 , l_array_legal_entity_id
149237 , l_array_entity_code
149238 , l_array_transaction_num
149239 , l_array_event_id
149240 , l_array_class_code
149241 , l_array_event_type
149242 , l_array_event_number
149243 , l_array_event_date
149244 , l_array_transaction_date
149245 , l_array_reference_num_1
149246 , l_array_reference_num_2
149247 , l_array_reference_num_3
149248 , l_array_reference_num_4
149249 , l_array_reference_char_1
149250 , l_array_reference_char_2
149251 , l_array_reference_char_3
149252 , l_array_reference_char_4
149253 , l_array_reference_date_1
149254 , l_array_reference_date_2
149255 , l_array_reference_date_3
149256 , l_array_reference_date_4
149257 , l_array_event_created_by
149258 , l_array_budgetary_control_flag
149259 , l_array_extract_line_num
149260 , l_array_source_4
149261 , l_array_source_11
149262 , l_array_source_15
149263 , l_array_source_18
149264 , l_array_source_19
149265 , l_array_source_20
149266 , l_array_source_21
149267 , l_array_source_22
149268 , l_array_source_24
149269 LIMIT l_rows;
149270
149271 --
149272 IF (C_LEVEL_EVENT >= g_log_level) THEN
149273 trace
149274 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
149275 ,p_level => C_LEVEL_EVENT
149276 ,p_module => l_log_module);
149277 END IF;
149278 --
149279 EXIT WHEN l_array_entity_id.count = 0;
149280
149281 XLA_AE_LINES_PKG.g_rec_lines := null;
149282
149283 --
149284 -- Bug 4458708
149285 --
149286 XLA_AE_LINES_PKG.g_LineNumber := 0;
149287 --
149288 --
149289
149290 FOR Idx IN 1..l_array_event_id.count LOOP
149291 --
149292 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
149293 --
149294 l_event_id := l_array_event_id(idx); -- 5648433
149295
149296 --
149297 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
149298 --
149299
149300 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
149301 (g_array_event(l_event_id).array_value_num('header_index'))
149302 ,'N'
149303 ) <> 'Y'
149304 THEN
149305 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149306 trace
149307 (p_msg => 'Trancaction revesal option is not Y '
149308 ,p_level => C_LEVEL_STATEMENT
149309 ,p_module => l_log_module);
149310 END IF;
149311
149312 --
149313 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
149314 --
149315 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
149316 --
149317 -- set event info as cache for other routines to refer event attributes
149318 --
149319
149320 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
149321 l_previous_event_id := l_event_id;
149322
149323 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
149324 (p_application_id => p_application_id
149325 ,p_primary_ledger_id => p_primary_ledger_id
149326 ,p_base_ledger_id => p_base_ledger_id
149327 ,p_target_ledger_id => p_target_ledger_id
149328 ,p_entity_id => l_array_entity_id(Idx)
149329 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
149330 ,p_entity_code => l_array_entity_code(Idx)
149331 ,p_transaction_num => l_array_transaction_num(Idx)
149332 ,p_event_id => l_array_event_id(Idx)
149333 ,p_event_class_code => l_array_class_code(Idx)
149334 ,p_event_type_code => l_array_event_type(Idx)
149335 ,p_event_number => l_array_event_number(Idx)
149336 ,p_event_date => l_array_event_date(Idx)
149337 ,p_transaction_date => l_array_transaction_date(Idx)
149338 ,p_reference_num_1 => l_array_reference_num_1(Idx)
149339 ,p_reference_num_2 => l_array_reference_num_2(Idx)
149340 ,p_reference_num_3 => l_array_reference_num_3(Idx)
149341 ,p_reference_num_4 => l_array_reference_num_4(Idx)
149342 ,p_reference_char_1 => l_array_reference_char_1(Idx)
149343 ,p_reference_char_2 => l_array_reference_char_2(Idx)
149344 ,p_reference_char_3 => l_array_reference_char_3(Idx)
149345 ,p_reference_char_4 => l_array_reference_char_4(Idx)
149346 ,p_reference_date_1 => l_array_reference_date_1(Idx)
149347 ,p_reference_date_2 => l_array_reference_date_2(Idx)
149348 ,p_reference_date_3 => l_array_reference_date_3(Idx)
149349 ,p_reference_date_4 => l_array_reference_date_4(Idx)
149350 ,p_event_created_by => l_array_event_created_by(Idx)
149351 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
149352 --
149353 END IF;
149354
149355
149356
149357 --
149358 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
149359
149360 l_acct_reversal_source := SUBSTR(NULL, 1,30);
149361
149362 IF l_continue_with_lines THEN
149363 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
149364 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
149365
149366 xla_accounting_err_pkg.build_message
149367 (p_appli_s_name => 'XLA'
149368 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
149369 ,p_token_1 => 'LINE_NUMBER'
149370 ,p_value_1 => l_array_extract_line_num(Idx)
149371 ,p_token_2 => 'PRODUCT_NAME'
149372 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
149373 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
149374 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
149375 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
149376
149377 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
149378 --
149379 -- following sets the accounting attributes needed to reverse
149380 -- accounting for a distributeion
149381 --
149382
149383 --
149384 -- 5217187
149385 --
149386 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
149387 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
149388 g_array_event(l_event_id).array_value_num('header_index'));
149389 --
149390 --
149391
149392 -- No reversal code generated
149393
149394 xla_ae_lines_pkg.SetAcctReversalAttrs
149395 (p_event_id => l_event_id
149396 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
149397 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149398 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
149399 END IF;
149400
149401 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
149402 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
149403
149404 --
149405 AcctLineType_29 (
149406 p_application_id => p_application_id
149407 ,p_event_id => l_event_id
149408 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149409 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149410 ,p_actual_flag => l_actual_flag
149411 ,p_balance_type_code => l_balance_type_code
149412 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149413
149414 , p_source_4 => l_array_source_4(Idx)
149415 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149416 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149417 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149418 , p_source_11 => l_array_source_11(Idx)
149419 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149420 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149421 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149422 , p_source_15 => l_array_source_15(Idx)
149423 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149424 , p_source_18 => l_array_source_18(Idx)
149425 , p_source_19 => l_array_source_19(Idx)
149426 , p_source_20 => l_array_source_20(Idx)
149427 , p_source_21 => l_array_source_21(Idx)
149428 , p_source_22 => l_array_source_22(Idx)
149429 , p_source_24 => l_array_source_24(Idx)
149430 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149431 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149432 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149433 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149434 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149435 );
149436 If(l_balance_type_code = 'A') THEN
149437 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149438 END IF;
149439
149440 --
149441
149442
149443 --
149444 AcctLineType_65 (
149445 p_application_id => p_application_id
149446 ,p_event_id => l_event_id
149447 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149448 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149449 ,p_actual_flag => l_actual_flag
149450 ,p_balance_type_code => l_balance_type_code
149451 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149452
149453 , p_source_4 => l_array_source_4(Idx)
149454 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149455 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149456 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149457 , p_source_11 => l_array_source_11(Idx)
149458 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149459 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149460 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149461 , p_source_15 => l_array_source_15(Idx)
149462 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149463 , p_source_18 => l_array_source_18(Idx)
149464 , p_source_19 => l_array_source_19(Idx)
149465 , p_source_20 => l_array_source_20(Idx)
149466 , p_source_21 => l_array_source_21(Idx)
149467 , p_source_22 => l_array_source_22(Idx)
149468 , p_source_24 => l_array_source_24(Idx)
149469 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149470 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149471 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149472 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149473 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149474 );
149475 If(l_balance_type_code = 'A') THEN
149476 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149477 END IF;
149478
149479 --
149480
149481
149482 --
149483 AcctLineType_86 (
149484 p_application_id => p_application_id
149485 ,p_event_id => l_event_id
149486 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149487 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149488 ,p_actual_flag => l_actual_flag
149489 ,p_balance_type_code => l_balance_type_code
149490 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149491
149492 , p_source_4 => l_array_source_4(Idx)
149493 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149494 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149495 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149496 , p_source_11 => l_array_source_11(Idx)
149497 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149498 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149499 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149500 , p_source_15 => l_array_source_15(Idx)
149501 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149502 , p_source_18 => l_array_source_18(Idx)
149503 , p_source_19 => l_array_source_19(Idx)
149504 , p_source_20 => l_array_source_20(Idx)
149505 , p_source_21 => l_array_source_21(Idx)
149506 , p_source_22 => l_array_source_22(Idx)
149507 , p_source_24 => l_array_source_24(Idx)
149508 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149509 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149510 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149511 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149512 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149513 );
149514 If(l_balance_type_code = 'A') THEN
149515 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149516 END IF;
149517
149518 --
149519
149520
149521 --
149522 AcctLineType_103 (
149523 p_application_id => p_application_id
149524 ,p_event_id => l_event_id
149525 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149526 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149527 ,p_actual_flag => l_actual_flag
149528 ,p_balance_type_code => l_balance_type_code
149529 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149530
149531 , p_source_4 => l_array_source_4(Idx)
149532 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149533 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149534 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149535 , p_source_11 => l_array_source_11(Idx)
149536 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149537 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149538 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149539 , p_source_15 => l_array_source_15(Idx)
149540 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149541 , p_source_18 => l_array_source_18(Idx)
149542 , p_source_19 => l_array_source_19(Idx)
149543 , p_source_20 => l_array_source_20(Idx)
149544 , p_source_21 => l_array_source_21(Idx)
149545 , p_source_22 => l_array_source_22(Idx)
149546 , p_source_24 => l_array_source_24(Idx)
149547 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149548 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149549 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149550 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149551 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149552 );
149553 If(l_balance_type_code = 'A') THEN
149554 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149555 END IF;
149556
149557 --
149558
149559
149560 --
149561 AcctLineType_119 (
149562 p_application_id => p_application_id
149563 ,p_event_id => l_event_id
149564 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149565 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149566 ,p_actual_flag => l_actual_flag
149567 ,p_balance_type_code => l_balance_type_code
149568 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149569
149570 , p_source_4 => l_array_source_4(Idx)
149571 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149572 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149573 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149574 , p_source_11 => l_array_source_11(Idx)
149575 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149576 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149577 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149578 , p_source_15 => l_array_source_15(Idx)
149579 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149580 , p_source_18 => l_array_source_18(Idx)
149581 , p_source_19 => l_array_source_19(Idx)
149582 , p_source_20 => l_array_source_20(Idx)
149583 , p_source_21 => l_array_source_21(Idx)
149584 , p_source_22 => l_array_source_22(Idx)
149585 , p_source_24 => l_array_source_24(Idx)
149586 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149587 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149588 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149589 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149590 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149591 );
149592 If(l_balance_type_code = 'A') THEN
149593 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149594 END IF;
149595
149596 --
149597
149598
149599 --
149600 AcctLineType_147 (
149601 p_application_id => p_application_id
149602 ,p_event_id => l_event_id
149603 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149604 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149605 ,p_actual_flag => l_actual_flag
149606 ,p_balance_type_code => l_balance_type_code
149607 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149608
149609 , p_source_4 => l_array_source_4(Idx)
149610 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149611 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149612 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149613 , p_source_11 => l_array_source_11(Idx)
149614 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149615 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149616 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149617 , p_source_15 => l_array_source_15(Idx)
149618 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149619 , p_source_18 => l_array_source_18(Idx)
149620 , p_source_19 => l_array_source_19(Idx)
149621 , p_source_20 => l_array_source_20(Idx)
149622 , p_source_21 => l_array_source_21(Idx)
149623 , p_source_22 => l_array_source_22(Idx)
149624 , p_source_24 => l_array_source_24(Idx)
149625 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149626 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149627 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149628 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149629 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149630 );
149631 If(l_balance_type_code = 'A') THEN
149632 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149633 END IF;
149634
149635 --
149636
149637
149638 --
149639 AcctLineType_166 (
149640 p_application_id => p_application_id
149641 ,p_event_id => l_event_id
149642 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149643 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149644 ,p_actual_flag => l_actual_flag
149645 ,p_balance_type_code => l_balance_type_code
149646 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149647
149648 , p_source_4 => l_array_source_4(Idx)
149649 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149650 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149651 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149652 , p_source_11 => l_array_source_11(Idx)
149653 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149654 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149655 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149656 , p_source_15 => l_array_source_15(Idx)
149657 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149658 , p_source_18 => l_array_source_18(Idx)
149659 , p_source_19 => l_array_source_19(Idx)
149660 , p_source_20 => l_array_source_20(Idx)
149661 , p_source_21 => l_array_source_21(Idx)
149662 , p_source_22 => l_array_source_22(Idx)
149663 , p_source_24 => l_array_source_24(Idx)
149664 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149665 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149666 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149667 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149668 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149669 );
149670 If(l_balance_type_code = 'A') THEN
149671 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149672 END IF;
149673
149674 --
149675
149676
149677 --
149678 AcctLineType_211 (
149679 p_application_id => p_application_id
149680 ,p_event_id => l_event_id
149681 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149682 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149683 ,p_actual_flag => l_actual_flag
149684 ,p_balance_type_code => l_balance_type_code
149685 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149686
149687 , p_source_4 => l_array_source_4(Idx)
149688 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149689 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149690 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149691 , p_source_11 => l_array_source_11(Idx)
149692 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149693 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149694 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149695 , p_source_15 => l_array_source_15(Idx)
149696 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149697 , p_source_18 => l_array_source_18(Idx)
149698 , p_source_19 => l_array_source_19(Idx)
149699 , p_source_20 => l_array_source_20(Idx)
149700 , p_source_21 => l_array_source_21(Idx)
149701 , p_source_22 => l_array_source_22(Idx)
149702 , p_source_24 => l_array_source_24(Idx)
149703 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149704 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149705 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149706 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149707 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149708 );
149709 If(l_balance_type_code = 'A') THEN
149710 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149711 END IF;
149712
149713 --
149714
149715
149716 --
149717 AcctLineType_230 (
149718 p_application_id => p_application_id
149719 ,p_event_id => l_event_id
149720 ,p_calculate_acctd_flag => l_calculate_acctd_flag
149721 ,p_calculate_g_l_flag => l_calculate_g_l_flag
149722 ,p_actual_flag => l_actual_flag
149723 ,p_balance_type_code => l_balance_type_code
149724 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
149725
149726 , p_source_4 => l_array_source_4(Idx)
149727 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
149728 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
149729 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
149730 , p_source_11 => l_array_source_11(Idx)
149731 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
149732 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
149733 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
149734 , p_source_15 => l_array_source_15(Idx)
149735 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
149736 , p_source_18 => l_array_source_18(Idx)
149737 , p_source_19 => l_array_source_19(Idx)
149738 , p_source_20 => l_array_source_20(Idx)
149739 , p_source_21 => l_array_source_21(Idx)
149740 , p_source_22 => l_array_source_22(Idx)
149741 , p_source_24 => l_array_source_24(Idx)
149742 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
149743 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
149744 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
149745 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
149746 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
149747 );
149748 If(l_balance_type_code = 'A') THEN
149749 l_actual_gain_loss_ref := l_gain_or_loss_ref;
149750 END IF;
149751
149752 --
149753
149754 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
149755 -- or secondary ledger that has different currency with primary
149756 -- or alc that is calculated by sla
149757 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
149758 (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'))
149759
149760 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
149761 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
149762 AND (l_actual_flag = 'A')) THEN
149763 XLA_AE_LINES_PKG.CreateGainOrLossLines(
149764 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
149765 ,p_application_id => p_application_id
149766 ,p_amb_context_code => 'DEFAULT'
149767 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
149768 ,p_event_class_code => C_EVENT_CLASS_CODE
149769 ,p_event_type_code => C_EVENT_TYPE_CODE
149770
149771 ,p_gain_ccid => -1
149772 ,p_loss_ccid => -1
149773
149774 ,p_actual_flag => l_actual_flag
149775 ,p_enc_flag => null
149776 ,p_actual_g_l_ref => l_actual_gain_loss_ref
149777 ,p_enc_g_l_ref => null
149778 );
149779 END IF;
149780 END IF;
149781 END IF;
149782
149783 ELSE
149784 --
149785 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
149786 --
149787 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149788 trace
149789 (p_msg => 'Trancaction revesal option is Y'
149790 ,p_level => C_LEVEL_STATEMENT
149791 ,p_module => l_log_module);
149792 END IF;
149793 END IF;
149794
149795 END LOOP;
149796 l_result := XLA_AE_LINES_PKG.InsertLines ;
149797 end loop;
149798 close line_cur;
149799
149800
149801 --
149802 -- insert headers into xla_ae_headers_gt table
149803 --
149804 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
149805
149806 -- insert into errors table here.
149807
149808 END LOOP;
149809
149810 --
149811 -- 4865292
149812 --
149813 -- Compare g_hdr_extract_count with event count in
149814 -- CreateHeadersAndLines.
149815 --
149816 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
149817
149818 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149819 trace (p_msg => '# rows extracted from header extract objects '
149820 || ' (running total): '
149821 || g_hdr_extract_count
149822 ,p_level => C_LEVEL_STATEMENT
149823 ,p_module => l_log_module);
149824 END IF;
149825
149826 CLOSE header_cur;
149827 --
149828
149829 --
149830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149831 trace
149832 (p_msg => 'END of EventClass_263'
149833 ,p_level => C_LEVEL_PROCEDURE
149834 ,p_module => l_log_module);
149835 END IF;
149836 --
149837 RETURN l_result;
149838 EXCEPTION
149839 WHEN xla_exceptions_pkg.application_exception THEN
149840
149841 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
149842
149843
149844 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
149845
149846 RAISE;
149847
149848 WHEN NO_DATA_FOUND THEN
149849
149850 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
149851 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
149852
149853 FOR header_record IN header_cur
149854 LOOP
149855 l_array_header_events(header_record.event_id) := header_record.event_id;
149856 END LOOP;
149857
149858 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
149859 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
149860
149861 fnd_file.put_line(fnd_file.LOG, ' ');
149862 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
149863 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
149864 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
149865
149866 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
149867 LOOP
149868 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
149869 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
149870 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
149871 END IF;
149872 END LOOP;
149873
149874 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
149875 fnd_file.put_line(fnd_file.LOG, ' ');
149876
149877
149878 xla_exceptions_pkg.raise_message
149879 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_263');
149880
149881
149882 WHEN OTHERS THEN
149883 xla_exceptions_pkg.raise_message
149884 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_263');
149885 END EventClass_263;
149886 --
149887
149888 ---------------------------------------
149889 --
149890 -- PRIVATE PROCEDURE
149891 -- insert_sources_264
149892 --
149893 ----------------------------------------
149894 --
149895 PROCEDURE insert_sources_264(
149896 p_target_ledger_id IN NUMBER
149897 , p_language IN VARCHAR2
149898 , p_sla_ledger_id IN NUMBER
149899 , p_pad_start_date IN DATE
149900 , p_pad_end_date IN DATE
149901 )
149902 IS
149903
149904 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP_ALL';
149905 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP';
149906 p_apps_owner VARCHAR2(30);
149907 l_log_module VARCHAR2(240);
149908 BEGIN
149909 IF g_log_enabled THEN
149910 l_log_module := C_DEFAULT_MODULE||'.insert_sources_264';
149911 END IF;
149912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
149913
149914 trace
149915 (p_msg => 'BEGIN of insert_sources_264'
149916 ,p_level => C_LEVEL_PROCEDURE
149917 ,p_module => l_log_module);
149918
149919 END IF;
149920
149921 -- select APPS owner
149922 SELECT oracle_username
149923 INTO p_apps_owner
149924 FROM fnd_oracle_userid
149925 WHERE read_only_flag = 'U'
149926 ;
149927
149928 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149929 trace
149930 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
149931 ' - p_language = '||p_language||
149932 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
149933 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
149934 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
149935 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
149936 ,p_level => C_LEVEL_STATEMENT
149937 ,p_module => l_log_module);
149938 END IF;
149939
149940
149941 --
149942 INSERT INTO xla_diag_sources --hdr2
149943 (
149944 event_id
149945 , ledger_id
149946 , sla_ledger_id
149947 , description_language
149948 , object_name
149949 , object_type_code
149950 , line_number
149951 , source_application_id
149952 , source_type_code
149953 , source_code
149954 , source_value
149955 , source_meaning
149956 , created_by
149957 , creation_date
149958 , last_update_date
149959 , last_updated_by
149960 , last_update_login
149961 , program_update_date
149962 , program_application_id
149963 , program_id
149964 , request_id
149965 )
149966 SELECT
149967 event_id
149968 , p_target_ledger_id
149969 , p_sla_ledger_id
149970 , p_language
149971 , object_name
149972 , object_type_code
149973 , line_number
149974 , source_application_id
149975 , source_type_code
149976 , source_code
149977 , SUBSTR(source_value ,1,1996)
149978 , SUBSTR(source_meaning ,1,200)
149979 , xla_environment_pkg.g_Usr_Id
149980 , TRUNC(SYSDATE)
149981 , TRUNC(SYSDATE)
149982 , xla_environment_pkg.g_Usr_Id
149983 , xla_environment_pkg.g_Login_Id
149984 , TRUNC(SYSDATE)
149985 , xla_environment_pkg.g_Prog_Appl_Id
149986 , xla_environment_pkg.g_Prog_Id
149987 , xla_environment_pkg.g_Req_Id
149988 FROM (
149989 SELECT xet.event_id event_id
149990 , 0 line_number
149991 , CASE r
149992 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
149993 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
149994
149995 ELSE null
149996 END object_name
149997 , CASE r
149998 WHEN 1 THEN 'HEADER'
149999 WHEN 2 THEN 'HEADER'
150000
150001 ELSE null
150002 END object_type_code
150003 , CASE r
150004 WHEN 1 THEN '707'
150005 WHEN 2 THEN '707'
150006
150007 ELSE null
150008 END source_application_id
150009 , 'S' source_type_code
150010 , CASE r
150011 WHEN 1 THEN 'DISTRIBUTION_TYPE'
150012 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
150013
150014 ELSE null
150015 END source_code
150016 , CASE r
150017 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
150018 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
150019
150020 ELSE null
150021 END source_value
150022 , CASE r
150023 WHEN 1 THEN fvl12.meaning
150024 WHEN 2 THEN fvl38.meaning
150025
150026 ELSE null
150027 END source_meaning
150028 FROM xla_events_gt xet
150029 , CST_XLA_INV_HEADERS_V h1
150030 , fnd_lookup_values fvl12
150031 , fnd_lookup_values fvl38
150032 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
150033 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150034 AND xet.event_class_code = C_EVENT_CLASS_CODE
150035 AND h1.event_id = xet.event_id
150036 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
150037 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
150038 AND fvl12.view_application_id(+) = 700
150039 AND fvl12.language(+) = USERENV('LANG')
150040 AND fvl38.lookup_type(+) = 'YES_NO'
150041 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
150042 AND fvl38.view_application_id(+) = 0
150043 AND fvl38.language(+) = USERENV('LANG')
150044
150045 )
150046 ;
150047 --
150048 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150049
150050 trace
150051 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
150052 ,p_level => C_LEVEL_STATEMENT
150053 ,p_module => l_log_module);
150054
150055 END IF;
150056 --
150057
150058
150059
150060 --
150061 INSERT INTO xla_diag_sources --line2
150062 (
150063 event_id
150064 , ledger_id
150065 , sla_ledger_id
150066 , description_language
150067 , object_name
150068 , object_type_code
150069 , line_number
150070 , source_application_id
150071 , source_type_code
150072 , source_code
150073 , source_value
150074 , source_meaning
150075 , created_by
150076 , creation_date
150077 , last_update_date
150078 , last_updated_by
150079 , last_update_login
150080 , program_update_date
150081 , program_application_id
150082 , program_id
150083 , request_id
150084 )
150085 SELECT event_id
150086 , p_target_ledger_id
150087 , p_sla_ledger_id
150088 , p_language
150089 , object_name
150090 , object_type_code
150091 , line_number
150092 , source_application_id
150093 , source_type_code
150094 , source_code
150095 , SUBSTR(source_value,1,1996)
150096 , SUBSTR(source_meaning ,1,200)
150097 , xla_environment_pkg.g_Usr_Id
150098 , TRUNC(SYSDATE)
150099 , TRUNC(SYSDATE)
150100 , xla_environment_pkg.g_Usr_Id
150101 , xla_environment_pkg.g_Login_Id
150102 , TRUNC(SYSDATE)
150103 , xla_environment_pkg.g_Prog_Appl_Id
150104 , xla_environment_pkg.g_Prog_Id
150105 , xla_environment_pkg.g_Req_Id
150106 FROM (
150107 SELECT xet.event_id event_id
150108 , l2.line_number line_number
150109 , CASE r
150110 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
150111 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
150112 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
150113 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
150114 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
150115 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
150116 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
150117 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
150118 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
150119
150120 ELSE null
150121 END object_name
150122 , CASE r
150123 WHEN 1 THEN 'LINE'
150124 WHEN 2 THEN 'LINE'
150125 WHEN 3 THEN 'LINE'
150126 WHEN 4 THEN 'LINE'
150127 WHEN 5 THEN 'LINE'
150128 WHEN 6 THEN 'LINE'
150129 WHEN 7 THEN 'LINE'
150130 WHEN 8 THEN 'LINE'
150131 WHEN 9 THEN 'LINE'
150132
150133 ELSE null
150134 END object_type_code
150135 , CASE r
150136 WHEN 1 THEN '707'
150137 WHEN 2 THEN '707'
150138 WHEN 3 THEN '707'
150139 WHEN 4 THEN '707'
150140 WHEN 5 THEN '707'
150141 WHEN 6 THEN '707'
150142 WHEN 7 THEN '707'
150143 WHEN 8 THEN '707'
150144 WHEN 9 THEN '707'
150145
150146 ELSE null
150147 END source_application_id
150148 , 'S' source_type_code
150149 , CASE r
150150 WHEN 1 THEN 'CODE_COMBINATION_ID'
150151 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
150152 WHEN 3 THEN 'CURRENCY_CODE'
150153 WHEN 4 THEN 'ENTERED_AMOUNT'
150154 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
150155 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
150156 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
150157 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
150158 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
150159
150160 ELSE null
150161 END source_code
150162 , CASE r
150163 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
150164 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
150165 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
150166 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
150167 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
150168 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
150169 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
150170 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
150171 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
150172
150173 ELSE null
150174 END source_value
150175 , null source_meaning
150176 FROM xla_events_gt xet
150177 , CST_XLA_INV_LINES_V l2
150178 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
150179 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
150180 AND xet.event_class_code = C_EVENT_CLASS_CODE
150181 AND l2.event_id = xet.event_id
150182
150183 )
150184 ;
150185 --
150186 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150187
150188 trace
150189 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
150190 ,p_level => C_LEVEL_STATEMENT
150191 ,p_module => l_log_module);
150192
150193 END IF;
150194
150195
150196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150197 trace
150198 (p_msg => 'END of insert_sources_264'
150199 ,p_level => C_LEVEL_PROCEDURE
150200 ,p_module => l_log_module);
150201 END IF;
150202 EXCEPTION
150203 WHEN xla_exceptions_pkg.application_exception THEN
150204 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150205 trace
150206 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150207 ,p_level => C_LEVEL_EXCEPTION
150208 ,p_module => l_log_module);
150209 END IF;
150210 RAISE;
150211 WHEN OTHERS THEN
150212 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
150213 trace
150214 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
150215 ,p_level => C_LEVEL_EXCEPTION
150216 ,p_module => l_log_module);
150217 END IF;
150218 xla_exceptions_pkg.raise_message
150219 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_264');
150220 END insert_sources_264;
150221 --
150222
150223 ---------------------------------------
150224 --
150225 -- PRIVATE FUNCTION
150226 -- EventClass_264
150227 --
150228 ----------------------------------------
150229 --
150230 FUNCTION EventClass_264
150231 (p_application_id IN NUMBER
150232 ,p_base_ledger_id IN NUMBER
150233 ,p_target_ledger_id IN NUMBER
150234 ,p_language IN VARCHAR2
150235 ,p_currency_code IN VARCHAR2
150236 ,p_sla_ledger_id IN NUMBER
150237 ,p_pad_start_date IN DATE
150238 ,p_pad_end_date IN DATE
150239 ,p_primary_ledger_id IN NUMBER)
150240 RETURN BOOLEAN IS
150241 --
150242 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP_ALL';
150243 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'DIR_INTERORG_SHIP';
150244
150245 l_calculate_acctd_flag VARCHAR2(1) :='N';
150246 l_calculate_g_l_flag VARCHAR2(1) :='N';
150247 --
150248 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150249 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150250 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150251 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150252 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150253 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150254 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150255 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150256 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150257 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150258 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150259 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150260 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150261 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
150262 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150263 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150264 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150265 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
150266 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150267 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150268 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150269 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
150270 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
150271 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
150272 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
150273 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
150274
150275 l_event_id NUMBER;
150276 l_previous_event_id NUMBER;
150277 l_first_event_id NUMBER;
150278 l_last_event_id NUMBER;
150279
150280 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
150281 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
150282 --
150283 --
150284 l_result BOOLEAN := TRUE;
150285 l_rows NUMBER := 1000;
150286 l_event_type_name VARCHAR2(80) := 'All';
150287 l_event_class_name VARCHAR2(80) := 'Direct Interorg Shipment';
150288 l_description VARCHAR2(4000);
150289 l_transaction_reversal NUMBER;
150290 l_ae_header_id NUMBER;
150291 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
150292 l_log_module VARCHAR2(240);
150293 --
150294 l_acct_reversal_source VARCHAR2(30);
150295 l_trx_reversal_source VARCHAR2(30);
150296
150297 l_continue_with_lines BOOLEAN := TRUE;
150298 --
150299 l_acc_rev_gl_date_source DATE; -- 4262811
150300 --
150301 type t_array_event_id is table of number index by binary_integer;
150302
150303 l_rec_array_event t_rec_array_event;
150304 l_null_rec_array_event t_rec_array_event;
150305 l_array_ae_header_id xla_number_array_type;
150306 l_actual_flag VARCHAR2(1) := NULL;
150307 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
150308 l_balance_type_code VARCHAR2(1) :=NULL;
150309 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
150310
150311 --
150312 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
150313 --
150314
150315 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
150316 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
150317
150318 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
150319 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
150320 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
150321 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150322 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
150323 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
150324 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
150325 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
150326 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
150327
150328 l_array_source_12 t_array_source_12;
150329 l_array_source_12_meaning t_array_lookup_meaning;
150330 l_array_source_38 t_array_source_38;
150331 l_array_source_38_meaning t_array_lookup_meaning;
150332
150333 l_array_source_4 t_array_source_4;
150334 l_array_source_11 t_array_source_11;
150335 l_array_source_15 t_array_source_15;
150336 l_array_source_18 t_array_source_18;
150337 l_array_source_19 t_array_source_19;
150338 l_array_source_20 t_array_source_20;
150339 l_array_source_21 t_array_source_21;
150340 l_array_source_22 t_array_source_22;
150341 l_array_source_24 t_array_source_24;
150342
150343 --
150344 CURSOR header_cur
150345 IS
150346 SELECT /*+ leading(xet) cardinality(xet,1) */
150347 -- Event Class Code: DIR_INTERORG_SHIP
150348 xet.entity_id
150349 ,xet.legal_entity_id
150350 ,xet.entity_code
150351 ,xet.transaction_number
150352 ,xet.event_id
150353 ,xet.event_class_code
150354 ,xet.event_type_code
150355 ,xet.event_number
150356 ,xet.event_date
150357 ,xet.transaction_date
150358 ,xet.reference_num_1
150359 ,xet.reference_num_2
150360 ,xet.reference_num_3
150361 ,xet.reference_num_4
150362 ,xet.reference_char_1
150363 ,xet.reference_char_2
150364 ,xet.reference_char_3
150365 ,xet.reference_char_4
150366 ,xet.reference_date_1
150367 ,xet.reference_date_2
150368 ,xet.reference_date_3
150369 ,xet.reference_date_4
150370 ,xet.event_created_by
150371 ,xet.budgetary_control_flag
150372 , h1.DISTRIBUTION_TYPE source_12
150373 , fvl12.meaning source_12_meaning
150374 , h1.TRANSFER_TO_GL_INDICATOR source_38
150375 , fvl38.meaning source_38_meaning
150376 FROM xla_events_gt xet
150377 , CST_XLA_INV_HEADERS_V h1
150378 , fnd_lookup_values fvl12
150379 , fnd_lookup_values fvl38
150380 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
150381 and xet.event_class_code = C_EVENT_CLASS_CODE
150382 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
150383 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
150384 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
150385 AND fvl12.view_application_id(+) = 700
150386 AND fvl12.language(+) = USERENV('LANG')
150387 AND fvl38.lookup_type(+) = 'YES_NO'
150388 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
150389 AND fvl38.view_application_id(+) = 0
150390 AND fvl38.language(+) = USERENV('LANG')
150391
150392 ORDER BY event_id
150393 ;
150394
150395
150396 --
150397 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
150398 IS
150399 SELECT /*+ leading(xet) cardinality(xet,1) */
150400 -- Event Class Code: DIR_INTERORG_SHIP
150401 xet.entity_id
150402 ,xet.legal_entity_id
150403 ,xet.entity_code
150404 ,xet.transaction_number
150405 ,xet.event_id
150406 ,xet.event_class_code
150407 ,xet.event_type_code
150408 ,xet.event_number
150409 ,xet.event_date
150410 ,xet.transaction_date
150411 ,xet.reference_num_1
150412 ,xet.reference_num_2
150413 ,xet.reference_num_3
150414 ,xet.reference_num_4
150415 ,xet.reference_char_1
150416 ,xet.reference_char_2
150417 ,xet.reference_char_3
150418 ,xet.reference_char_4
150419 ,xet.reference_date_1
150420 ,xet.reference_date_2
150421 ,xet.reference_date_3
150422 ,xet.reference_date_4
150423 ,xet.event_created_by
150424 ,xet.budgetary_control_flag
150425 , l2.LINE_NUMBER
150426 , l2.CODE_COMBINATION_ID source_4
150427 , l2.DISTRIBUTION_IDENTIFIER source_11
150428 , l2.CURRENCY_CODE source_15
150429 , l2.ENTERED_AMOUNT source_18
150430 , l2.CURRENCY_CONVERSION_DATE source_19
150431 , l2.CURRENCY_CONVERSION_RATE source_20
150432 , l2.CURRENCY_CONVERSION_TYPE source_21
150433 , l2.ACCOUNTED_AMOUNT source_22
150434 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
150435 FROM xla_events_gt xet
150436 , CST_XLA_INV_LINES_V l2
150437 WHERE xet.event_id between x_first_event_id and x_last_event_id
150438 and xet.event_date between p_pad_start_date and p_pad_end_date
150439 and xet.event_class_code = C_EVENT_CLASS_CODE
150440 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
150441 ;
150442
150443 --
150444 BEGIN
150445 IF g_log_enabled THEN
150446 l_log_module := C_DEFAULT_MODULE||'.EventClass_264';
150447 END IF;
150448 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
150449 trace
150450 (p_msg => 'BEGIN of EventClass_264'
150451 ,p_level => C_LEVEL_PROCEDURE
150452 ,p_module => l_log_module);
150453 END IF;
150454
150455 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150456 trace
150457 (p_msg => 'p_application_id = '||p_application_id||
150458 ' - p_base_ledger_id = '||p_base_ledger_id||
150459 ' - p_target_ledger_id = '||p_target_ledger_id||
150460 ' - p_language = '||p_language||
150461 ' - p_currency_code = '||p_currency_code||
150462 ' - p_sla_ledger_id = '||p_sla_ledger_id
150463 ,p_level => C_LEVEL_STATEMENT
150464 ,p_module => l_log_module);
150465 END IF;
150466 --
150467 -- initialze arrays
150468 --
150469 g_array_event.DELETE;
150470 l_rec_array_event := l_null_rec_array_event;
150471 --
150472 --------------------------------------
150473 -- 4262811 Initialze MPA Line Number
150474 --------------------------------------
150475 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
150476
150477 --
150478
150479 --
150480 OPEN header_cur;
150481 --
150482 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150483 trace
150484 (p_msg => 'SQL - FETCH header_cur'
150485 ,p_level => C_LEVEL_STATEMENT
150486 ,p_module => l_log_module);
150487 END IF;
150488 --
150489 LOOP
150490 FETCH header_cur BULK COLLECT INTO
150491 l_array_entity_id
150492 , l_array_legal_entity_id
150493 , l_array_entity_code
150494 , l_array_transaction_num
150495 , l_array_event_id
150496 , l_array_class_code
150497 , l_array_event_type
150498 , l_array_event_number
150499 , l_array_event_date
150500 , l_array_transaction_date
150501 , l_array_reference_num_1
150502 , l_array_reference_num_2
150503 , l_array_reference_num_3
150504 , l_array_reference_num_4
150505 , l_array_reference_char_1
150506 , l_array_reference_char_2
150507 , l_array_reference_char_3
150508 , l_array_reference_char_4
150509 , l_array_reference_date_1
150510 , l_array_reference_date_2
150511 , l_array_reference_date_3
150512 , l_array_reference_date_4
150513 , l_array_event_created_by
150514 , l_array_budgetary_control_flag
150515 , l_array_source_12
150516 , l_array_source_12_meaning
150517 , l_array_source_38
150518 , l_array_source_38_meaning
150519 LIMIT l_rows;
150520 --
150521 IF (C_LEVEL_EVENT >= g_log_level) THEN
150522 trace
150523 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
150524 ,p_level => C_LEVEL_EVENT
150525 ,p_module => l_log_module);
150526 END IF;
150527 --
150528 EXIT WHEN l_array_entity_id.COUNT = 0;
150529
150530 -- initialize arrays
150531 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
150532 XLA_AE_LINES_PKG.g_rec_lines := NULL;
150533
150534 --
150535 -- Bug 4458708
150536 --
150537 XLA_AE_LINES_PKG.g_LineNumber := 0;
150538
150539
150540 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
150541 g_last_hdr_idx := l_array_event_id.LAST;
150542 --
150543 -- loop for the headers. Each iteration is for each header extract row
150544 -- fetched in header cursor
150545 --
150546 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
150547
150548 --
150549 -- set event info as cache for other routines to refer event attributes
150550 --
150551 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
150552 (p_application_id => p_application_id
150553 ,p_primary_ledger_id => p_primary_ledger_id
150554 ,p_base_ledger_id => p_base_ledger_id
150555 ,p_target_ledger_id => p_target_ledger_id
150556 ,p_entity_id => l_array_entity_id(hdr_idx)
150557 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
150558 ,p_entity_code => l_array_entity_code(hdr_idx)
150559 ,p_transaction_num => l_array_transaction_num(hdr_idx)
150560 ,p_event_id => l_array_event_id(hdr_idx)
150561 ,p_event_class_code => l_array_class_code(hdr_idx)
150562 ,p_event_type_code => l_array_event_type(hdr_idx)
150563 ,p_event_number => l_array_event_number(hdr_idx)
150564 ,p_event_date => l_array_event_date(hdr_idx)
150565 ,p_transaction_date => l_array_transaction_date(hdr_idx)
150566 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
150567 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
150568 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
150569 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
150570 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
150571 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
150572 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
150573 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
150574 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
150575 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
150576 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
150577 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
150578 ,p_event_created_by => l_array_event_created_by(hdr_idx)
150579 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
150580
150581 --
150582 -- set the status of entry to C_VALID (0)
150583 --
150584 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
150585
150586 --
150587 -- initialize a row for ae header
150588 --
150589 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
150590
150591 l_event_id := l_array_event_id(hdr_idx);
150592
150593 --
150594 -- storing the hdr_idx for event. May be used by line cursor.
150595 --
150596 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
150597
150598 --
150599 -- store sources from header extract. This can be improved to
150600 -- store only those sources from header extract that may be used in lines
150601 --
150602
150603 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
150604 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
150605 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
150606 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
150607
150608 --
150609 -- initilaize the status of ae headers for diffrent balance types
150610 -- the status is initialised to C_NOT_CREATED (2)
150611 --
150612 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150613 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150614 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
150615
150616 --
150617 -- call api to validate and store accounting attributes for header
150618 --
150619
150620 ------------------------------------------------------------
150621 -- Accrual Reversal : to get date for Standard Source (NONE)
150622 ------------------------------------------------------------
150623 l_acc_rev_gl_date_source := NULL;
150624
150625 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
150626 l_rec_acct_attrs.array_date_value(1) :=
150627 xla_ae_sources_pkg.GetSystemSourceDate(
150628 p_source_code => 'XLA_REFERENCE_DATE_1'
150629 , p_source_type_code => 'Y'
150630 , p_source_application_id => 602
150631 );
150632 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
150633 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
150634
150635
150636 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
150637
150638 XLA_AE_HEADER_PKG.SetJeCategoryName;
150639
150640 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
150641 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
150642 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
150643 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
150644 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
150645
150646
150647 -- No header level analytical criteria
150648
150649 --
150650 --accounting attribute enhancement, bug 3612931
150651 --
150652 l_trx_reversal_source := SUBSTR(NULL, 1,30);
150653
150654 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
150655 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
150656
150657 xla_accounting_err_pkg.build_message
150658 (p_appli_s_name => 'XLA'
150659 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
150660 ,p_token_1 => 'ACCT_ATTR_NAME'
150661 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
150662 ,p_token_2 => 'PRODUCT_NAME'
150663 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
150664 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
150665 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
150666 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
150667
150668 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
150669 --
150670 -- following sets the accounting attributes needed to reverse
150671 -- accounting for a distributeion
150672 --
150673 xla_ae_lines_pkg.SetTrxReversalAttrs
150674 (p_event_id => l_event_id
150675 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
150676 ,p_trx_reversal_source => l_trx_reversal_source);
150677
150678 END IF;
150679
150680
150681 ----------------------------------------------------------------
150682 -- 4262811 - update the header statuses to invalid in need be
150683 ----------------------------------------------------------------
150684 --
150685 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
150686
150687
150688 -----------------------------------------------
150689 -- No accrual reversal for the event class/type
150690 -----------------------------------------------
150691 ----------------------------------------------------------------
150692
150693 --
150694 -- this ends the header loop iteration for one bulk fetch
150695 --
150696 END LOOP;
150697
150698 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
150699 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
150700
150701 --
150702 -- insert dummy rows into lines gt table that were created due to
150703 -- transaction reversals
150704 --
150705 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
150706 l_result := XLA_AE_LINES_PKG.InsertLines;
150707 END IF;
150708
150709 --
150710 -- reset the temp_line_num for each set of events fetched from header
150711 -- cursor rather than doing it for each new event in line cursor
150712 -- Bug 3939231
150713 --
150714 xla_ae_lines_pkg.g_temp_line_num := 0;
150715
150716
150717
150718 --
150719 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
150720 --
150721 --
150722 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150723
150724 trace
150725 (p_msg => 'SQL - FETCH line_cur'
150726 ,p_level => C_LEVEL_STATEMENT
150727 ,p_module => l_log_module);
150728
150729 END IF;
150730 --
150731 --
150732 LOOP
150733 --
150734 FETCH line_cur BULK COLLECT INTO
150735 l_array_entity_id
150736 , l_array_legal_entity_id
150737 , l_array_entity_code
150738 , l_array_transaction_num
150739 , l_array_event_id
150740 , l_array_class_code
150741 , l_array_event_type
150742 , l_array_event_number
150743 , l_array_event_date
150744 , l_array_transaction_date
150745 , l_array_reference_num_1
150746 , l_array_reference_num_2
150747 , l_array_reference_num_3
150748 , l_array_reference_num_4
150749 , l_array_reference_char_1
150750 , l_array_reference_char_2
150751 , l_array_reference_char_3
150752 , l_array_reference_char_4
150753 , l_array_reference_date_1
150754 , l_array_reference_date_2
150755 , l_array_reference_date_3
150756 , l_array_reference_date_4
150757 , l_array_event_created_by
150758 , l_array_budgetary_control_flag
150759 , l_array_extract_line_num
150760 , l_array_source_4
150761 , l_array_source_11
150762 , l_array_source_15
150763 , l_array_source_18
150764 , l_array_source_19
150765 , l_array_source_20
150766 , l_array_source_21
150767 , l_array_source_22
150768 , l_array_source_24
150769 LIMIT l_rows;
150770
150771 --
150772 IF (C_LEVEL_EVENT >= g_log_level) THEN
150773 trace
150774 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
150775 ,p_level => C_LEVEL_EVENT
150776 ,p_module => l_log_module);
150777 END IF;
150778 --
150779 EXIT WHEN l_array_entity_id.count = 0;
150780
150781 XLA_AE_LINES_PKG.g_rec_lines := null;
150782
150783 --
150784 -- Bug 4458708
150785 --
150786 XLA_AE_LINES_PKG.g_LineNumber := 0;
150787 --
150788 --
150789
150790 FOR Idx IN 1..l_array_event_id.count LOOP
150791 --
150792 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
150793 --
150794 l_event_id := l_array_event_id(idx); -- 5648433
150795
150796 --
150797 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
150798 --
150799
150800 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
150801 (g_array_event(l_event_id).array_value_num('header_index'))
150802 ,'N'
150803 ) <> 'Y'
150804 THEN
150805 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
150806 trace
150807 (p_msg => 'Trancaction revesal option is not Y '
150808 ,p_level => C_LEVEL_STATEMENT
150809 ,p_module => l_log_module);
150810 END IF;
150811
150812 --
150813 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
150814 --
150815 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
150816 --
150817 -- set event info as cache for other routines to refer event attributes
150818 --
150819
150820 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
150821 l_previous_event_id := l_event_id;
150822
150823 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
150824 (p_application_id => p_application_id
150825 ,p_primary_ledger_id => p_primary_ledger_id
150826 ,p_base_ledger_id => p_base_ledger_id
150827 ,p_target_ledger_id => p_target_ledger_id
150828 ,p_entity_id => l_array_entity_id(Idx)
150829 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
150830 ,p_entity_code => l_array_entity_code(Idx)
150831 ,p_transaction_num => l_array_transaction_num(Idx)
150832 ,p_event_id => l_array_event_id(Idx)
150833 ,p_event_class_code => l_array_class_code(Idx)
150834 ,p_event_type_code => l_array_event_type(Idx)
150835 ,p_event_number => l_array_event_number(Idx)
150836 ,p_event_date => l_array_event_date(Idx)
150837 ,p_transaction_date => l_array_transaction_date(Idx)
150838 ,p_reference_num_1 => l_array_reference_num_1(Idx)
150839 ,p_reference_num_2 => l_array_reference_num_2(Idx)
150840 ,p_reference_num_3 => l_array_reference_num_3(Idx)
150841 ,p_reference_num_4 => l_array_reference_num_4(Idx)
150842 ,p_reference_char_1 => l_array_reference_char_1(Idx)
150843 ,p_reference_char_2 => l_array_reference_char_2(Idx)
150844 ,p_reference_char_3 => l_array_reference_char_3(Idx)
150845 ,p_reference_char_4 => l_array_reference_char_4(Idx)
150846 ,p_reference_date_1 => l_array_reference_date_1(Idx)
150847 ,p_reference_date_2 => l_array_reference_date_2(Idx)
150848 ,p_reference_date_3 => l_array_reference_date_3(Idx)
150849 ,p_reference_date_4 => l_array_reference_date_4(Idx)
150850 ,p_event_created_by => l_array_event_created_by(Idx)
150851 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
150852 --
150853 END IF;
150854
150855
150856
150857 --
150858 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
150859
150860 l_acct_reversal_source := SUBSTR(NULL, 1,30);
150861
150862 IF l_continue_with_lines THEN
150863 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
150864 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
150865
150866 xla_accounting_err_pkg.build_message
150867 (p_appli_s_name => 'XLA'
150868 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
150869 ,p_token_1 => 'LINE_NUMBER'
150870 ,p_value_1 => l_array_extract_line_num(Idx)
150871 ,p_token_2 => 'PRODUCT_NAME'
150872 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
150873 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
150874 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
150875 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
150876
150877 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
150878 --
150879 -- following sets the accounting attributes needed to reverse
150880 -- accounting for a distributeion
150881 --
150882
150883 --
150884 -- 5217187
150885 --
150886 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
150887 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
150888 g_array_event(l_event_id).array_value_num('header_index'));
150889 --
150890 --
150891
150892 -- No reversal code generated
150893
150894 xla_ae_lines_pkg.SetAcctReversalAttrs
150895 (p_event_id => l_event_id
150896 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
150897 ,p_calculate_acctd_flag => l_calculate_acctd_flag
150898 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
150899 END IF;
150900
150901 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
150902 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
150903
150904 --
150905 AcctLineType_68 (
150906 p_application_id => p_application_id
150907 ,p_event_id => l_event_id
150908 ,p_calculate_acctd_flag => l_calculate_acctd_flag
150909 ,p_calculate_g_l_flag => l_calculate_g_l_flag
150910 ,p_actual_flag => l_actual_flag
150911 ,p_balance_type_code => l_balance_type_code
150912 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150913
150914 , p_source_4 => l_array_source_4(Idx)
150915 , p_source_11 => l_array_source_11(Idx)
150916 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150917 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150918 , p_source_15 => l_array_source_15(Idx)
150919 , p_source_18 => l_array_source_18(Idx)
150920 , p_source_19 => l_array_source_19(Idx)
150921 , p_source_20 => l_array_source_20(Idx)
150922 , p_source_21 => l_array_source_21(Idx)
150923 , p_source_22 => l_array_source_22(Idx)
150924 , p_source_24 => l_array_source_24(Idx)
150925 );
150926 If(l_balance_type_code = 'A') THEN
150927 l_actual_gain_loss_ref := l_gain_or_loss_ref;
150928 END IF;
150929
150930 --
150931
150932
150933 --
150934 AcctLineType_76 (
150935 p_application_id => p_application_id
150936 ,p_event_id => l_event_id
150937 ,p_calculate_acctd_flag => l_calculate_acctd_flag
150938 ,p_calculate_g_l_flag => l_calculate_g_l_flag
150939 ,p_actual_flag => l_actual_flag
150940 ,p_balance_type_code => l_balance_type_code
150941 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150942
150943 , p_source_4 => l_array_source_4(Idx)
150944 , p_source_11 => l_array_source_11(Idx)
150945 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150946 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150947 , p_source_15 => l_array_source_15(Idx)
150948 , p_source_18 => l_array_source_18(Idx)
150949 , p_source_19 => l_array_source_19(Idx)
150950 , p_source_20 => l_array_source_20(Idx)
150951 , p_source_21 => l_array_source_21(Idx)
150952 , p_source_22 => l_array_source_22(Idx)
150953 , p_source_24 => l_array_source_24(Idx)
150954 );
150955 If(l_balance_type_code = 'A') THEN
150956 l_actual_gain_loss_ref := l_gain_or_loss_ref;
150957 END IF;
150958
150959 --
150960
150961
150962 --
150963 AcctLineType_95 (
150964 p_application_id => p_application_id
150965 ,p_event_id => l_event_id
150966 ,p_calculate_acctd_flag => l_calculate_acctd_flag
150967 ,p_calculate_g_l_flag => l_calculate_g_l_flag
150968 ,p_actual_flag => l_actual_flag
150969 ,p_balance_type_code => l_balance_type_code
150970 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
150971
150972 , p_source_4 => l_array_source_4(Idx)
150973 , p_source_11 => l_array_source_11(Idx)
150974 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
150975 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
150976 , p_source_15 => l_array_source_15(Idx)
150977 , p_source_18 => l_array_source_18(Idx)
150978 , p_source_19 => l_array_source_19(Idx)
150979 , p_source_20 => l_array_source_20(Idx)
150980 , p_source_21 => l_array_source_21(Idx)
150981 , p_source_22 => l_array_source_22(Idx)
150982 , p_source_24 => l_array_source_24(Idx)
150983 );
150984 If(l_balance_type_code = 'A') THEN
150985 l_actual_gain_loss_ref := l_gain_or_loss_ref;
150986 END IF;
150987
150988 --
150989
150990
150991 --
150992 AcctLineType_105 (
150993 p_application_id => p_application_id
150994 ,p_event_id => l_event_id
150995 ,p_calculate_acctd_flag => l_calculate_acctd_flag
150996 ,p_calculate_g_l_flag => l_calculate_g_l_flag
150997 ,p_actual_flag => l_actual_flag
150998 ,p_balance_type_code => l_balance_type_code
150999 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151000
151001 , p_source_4 => l_array_source_4(Idx)
151002 , p_source_11 => l_array_source_11(Idx)
151003 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151004 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151005 , p_source_15 => l_array_source_15(Idx)
151006 , p_source_18 => l_array_source_18(Idx)
151007 , p_source_19 => l_array_source_19(Idx)
151008 , p_source_20 => l_array_source_20(Idx)
151009 , p_source_21 => l_array_source_21(Idx)
151010 , p_source_22 => l_array_source_22(Idx)
151011 , p_source_24 => l_array_source_24(Idx)
151012 );
151013 If(l_balance_type_code = 'A') THEN
151014 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151015 END IF;
151016
151017 --
151018
151019
151020 --
151021 AcctLineType_116 (
151022 p_application_id => p_application_id
151023 ,p_event_id => l_event_id
151024 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151025 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151026 ,p_actual_flag => l_actual_flag
151027 ,p_balance_type_code => l_balance_type_code
151028 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151029
151030 , p_source_4 => l_array_source_4(Idx)
151031 , p_source_11 => l_array_source_11(Idx)
151032 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151033 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151034 , p_source_15 => l_array_source_15(Idx)
151035 , p_source_18 => l_array_source_18(Idx)
151036 , p_source_19 => l_array_source_19(Idx)
151037 , p_source_20 => l_array_source_20(Idx)
151038 , p_source_21 => l_array_source_21(Idx)
151039 , p_source_22 => l_array_source_22(Idx)
151040 , p_source_24 => l_array_source_24(Idx)
151041 );
151042 If(l_balance_type_code = 'A') THEN
151043 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151044 END IF;
151045
151046 --
151047
151048
151049 --
151050 AcctLineType_156 (
151051 p_application_id => p_application_id
151052 ,p_event_id => l_event_id
151053 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151054 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151055 ,p_actual_flag => l_actual_flag
151056 ,p_balance_type_code => l_balance_type_code
151057 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151058
151059 , p_source_4 => l_array_source_4(Idx)
151060 , p_source_11 => l_array_source_11(Idx)
151061 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151062 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151063 , p_source_15 => l_array_source_15(Idx)
151064 , p_source_18 => l_array_source_18(Idx)
151065 , p_source_19 => l_array_source_19(Idx)
151066 , p_source_20 => l_array_source_20(Idx)
151067 , p_source_21 => l_array_source_21(Idx)
151068 , p_source_22 => l_array_source_22(Idx)
151069 , p_source_24 => l_array_source_24(Idx)
151070 );
151071 If(l_balance_type_code = 'A') THEN
151072 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151073 END IF;
151074
151075 --
151076
151077
151078 --
151079 AcctLineType_170 (
151080 p_application_id => p_application_id
151081 ,p_event_id => l_event_id
151082 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151083 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151084 ,p_actual_flag => l_actual_flag
151085 ,p_balance_type_code => l_balance_type_code
151086 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151087
151088 , p_source_4 => l_array_source_4(Idx)
151089 , p_source_11 => l_array_source_11(Idx)
151090 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151091 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151092 , p_source_15 => l_array_source_15(Idx)
151093 , p_source_18 => l_array_source_18(Idx)
151094 , p_source_19 => l_array_source_19(Idx)
151095 , p_source_20 => l_array_source_20(Idx)
151096 , p_source_21 => l_array_source_21(Idx)
151097 , p_source_22 => l_array_source_22(Idx)
151098 , p_source_24 => l_array_source_24(Idx)
151099 );
151100 If(l_balance_type_code = 'A') THEN
151101 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151102 END IF;
151103
151104 --
151105
151106
151107 --
151108 AcctLineType_184 (
151109 p_application_id => p_application_id
151110 ,p_event_id => l_event_id
151111 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151112 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151113 ,p_actual_flag => l_actual_flag
151114 ,p_balance_type_code => l_balance_type_code
151115 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151116
151117 , p_source_4 => l_array_source_4(Idx)
151118 , p_source_11 => l_array_source_11(Idx)
151119 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151120 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151121 , p_source_15 => l_array_source_15(Idx)
151122 , p_source_18 => l_array_source_18(Idx)
151123 , p_source_19 => l_array_source_19(Idx)
151124 , p_source_20 => l_array_source_20(Idx)
151125 , p_source_21 => l_array_source_21(Idx)
151126 , p_source_22 => l_array_source_22(Idx)
151127 , p_source_24 => l_array_source_24(Idx)
151128 );
151129 If(l_balance_type_code = 'A') THEN
151130 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151131 END IF;
151132
151133 --
151134
151135
151136 --
151137 AcctLineType_225 (
151138 p_application_id => p_application_id
151139 ,p_event_id => l_event_id
151140 ,p_calculate_acctd_flag => l_calculate_acctd_flag
151141 ,p_calculate_g_l_flag => l_calculate_g_l_flag
151142 ,p_actual_flag => l_actual_flag
151143 ,p_balance_type_code => l_balance_type_code
151144 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
151145
151146 , p_source_4 => l_array_source_4(Idx)
151147 , p_source_11 => l_array_source_11(Idx)
151148 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
151149 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
151150 , p_source_15 => l_array_source_15(Idx)
151151 , p_source_18 => l_array_source_18(Idx)
151152 , p_source_19 => l_array_source_19(Idx)
151153 , p_source_20 => l_array_source_20(Idx)
151154 , p_source_21 => l_array_source_21(Idx)
151155 , p_source_22 => l_array_source_22(Idx)
151156 , p_source_24 => l_array_source_24(Idx)
151157 );
151158 If(l_balance_type_code = 'A') THEN
151159 l_actual_gain_loss_ref := l_gain_or_loss_ref;
151160 END IF;
151161
151162 --
151163
151164 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
151165 -- or secondary ledger that has different currency with primary
151166 -- or alc that is calculated by sla
151167 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
151168 (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'))
151169
151170 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
151171 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
151172 AND (l_actual_flag = 'A')) THEN
151173 XLA_AE_LINES_PKG.CreateGainOrLossLines(
151174 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
151175 ,p_application_id => p_application_id
151176 ,p_amb_context_code => 'DEFAULT'
151177 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
151178 ,p_event_class_code => C_EVENT_CLASS_CODE
151179 ,p_event_type_code => C_EVENT_TYPE_CODE
151180
151181 ,p_gain_ccid => -1
151182 ,p_loss_ccid => -1
151183
151184 ,p_actual_flag => l_actual_flag
151185 ,p_enc_flag => null
151186 ,p_actual_g_l_ref => l_actual_gain_loss_ref
151187 ,p_enc_g_l_ref => null
151188 );
151189 END IF;
151190 END IF;
151191 END IF;
151192
151193 ELSE
151194 --
151195 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
151196 --
151197 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151198 trace
151199 (p_msg => 'Trancaction revesal option is Y'
151200 ,p_level => C_LEVEL_STATEMENT
151201 ,p_module => l_log_module);
151202 END IF;
151203 END IF;
151204
151205 END LOOP;
151206 l_result := XLA_AE_LINES_PKG.InsertLines ;
151207 end loop;
151208 close line_cur;
151209
151210
151211 --
151212 -- insert headers into xla_ae_headers_gt table
151213 --
151214 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
151215
151216 -- insert into errors table here.
151217
151218 END LOOP;
151219
151220 --
151221 -- 4865292
151222 --
151223 -- Compare g_hdr_extract_count with event count in
151224 -- CreateHeadersAndLines.
151225 --
151226 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
151227
151228 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151229 trace (p_msg => '# rows extracted from header extract objects '
151230 || ' (running total): '
151231 || g_hdr_extract_count
151232 ,p_level => C_LEVEL_STATEMENT
151233 ,p_module => l_log_module);
151234 END IF;
151235
151236 CLOSE header_cur;
151237 --
151238
151239 --
151240 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151241 trace
151242 (p_msg => 'END of EventClass_264'
151243 ,p_level => C_LEVEL_PROCEDURE
151244 ,p_module => l_log_module);
151245 END IF;
151246 --
151247 RETURN l_result;
151248 EXCEPTION
151249 WHEN xla_exceptions_pkg.application_exception THEN
151250
151251 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151252
151253
151254 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
151255
151256 RAISE;
151257
151258 WHEN NO_DATA_FOUND THEN
151259
151260 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
151261 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
151262
151263 FOR header_record IN header_cur
151264 LOOP
151265 l_array_header_events(header_record.event_id) := header_record.event_id;
151266 END LOOP;
151267
151268 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
151269 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
151270
151271 fnd_file.put_line(fnd_file.LOG, ' ');
151272 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151273 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
151274 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
151275
151276 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
151277 LOOP
151278 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
151279 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
151280 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
151281 END IF;
151282 END LOOP;
151283
151284 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
151285 fnd_file.put_line(fnd_file.LOG, ' ');
151286
151287
151288 xla_exceptions_pkg.raise_message
151289 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_264');
151290
151291
151292 WHEN OTHERS THEN
151293 xla_exceptions_pkg.raise_message
151294 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_264');
151295 END EventClass_264;
151296 --
151297
151298 ---------------------------------------
151299 --
151300 -- PRIVATE PROCEDURE
151301 -- insert_sources_265
151302 --
151303 ----------------------------------------
151304 --
151305 PROCEDURE insert_sources_265(
151306 p_target_ledger_id IN NUMBER
151307 , p_language IN VARCHAR2
151308 , p_sla_ledger_id IN NUMBER
151309 , p_pad_start_date IN DATE
151310 , p_pad_end_date IN DATE
151311 )
151312 IS
151313
151314 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
151315 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
151316 p_apps_owner VARCHAR2(30);
151317 l_log_module VARCHAR2(240);
151318 BEGIN
151319 IF g_log_enabled THEN
151320 l_log_module := C_DEFAULT_MODULE||'.insert_sources_265';
151321 END IF;
151322 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151323
151324 trace
151325 (p_msg => 'BEGIN of insert_sources_265'
151326 ,p_level => C_LEVEL_PROCEDURE
151327 ,p_module => l_log_module);
151328
151329 END IF;
151330
151331 -- select APPS owner
151332 SELECT oracle_username
151333 INTO p_apps_owner
151334 FROM fnd_oracle_userid
151335 WHERE read_only_flag = 'U'
151336 ;
151337
151338 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151339 trace
151340 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
151341 ' - p_language = '||p_language||
151342 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
151343 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
151344 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
151345 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
151346 ,p_level => C_LEVEL_STATEMENT
151347 ,p_module => l_log_module);
151348 END IF;
151349
151350
151351 --
151352 INSERT INTO xla_diag_sources --hdr2
151353 (
151354 event_id
151355 , ledger_id
151356 , sla_ledger_id
151357 , description_language
151358 , object_name
151359 , object_type_code
151360 , line_number
151361 , source_application_id
151362 , source_type_code
151363 , source_code
151364 , source_value
151365 , source_meaning
151366 , created_by
151367 , creation_date
151368 , last_update_date
151369 , last_updated_by
151370 , last_update_login
151371 , program_update_date
151372 , program_application_id
151373 , program_id
151374 , request_id
151375 )
151376 SELECT
151377 event_id
151378 , p_target_ledger_id
151379 , p_sla_ledger_id
151380 , p_language
151381 , object_name
151382 , object_type_code
151383 , line_number
151384 , source_application_id
151385 , source_type_code
151386 , source_code
151387 , SUBSTR(source_value ,1,1996)
151388 , SUBSTR(source_meaning ,1,200)
151389 , xla_environment_pkg.g_Usr_Id
151390 , TRUNC(SYSDATE)
151391 , TRUNC(SYSDATE)
151392 , xla_environment_pkg.g_Usr_Id
151393 , xla_environment_pkg.g_Login_Id
151394 , TRUNC(SYSDATE)
151395 , xla_environment_pkg.g_Prog_Appl_Id
151396 , xla_environment_pkg.g_Prog_Id
151397 , xla_environment_pkg.g_Req_Id
151398 FROM (
151399 SELECT xet.event_id event_id
151400 , 0 line_number
151401 , CASE r
151402 WHEN 1 THEN 'CST_XLA_INV_REF_V'
151403 WHEN 2 THEN 'CST_XLA_INV_REF_V'
151404 WHEN 3 THEN 'CST_XLA_INV_REF_V'
151405 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V'
151406 WHEN 5 THEN 'CST_XLA_INV_REF_V'
151407 WHEN 6 THEN 'CST_XLA_INV_REF_V'
151408 WHEN 7 THEN 'PSA_CST_XLA_UPG_V'
151409 WHEN 8 THEN 'CST_XLA_INV_REF_V'
151410 WHEN 9 THEN 'CST_XLA_INV_REF_V'
151411 WHEN 10 THEN 'PO_REQ_DISTS_REF_V'
151412 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V'
151413 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V'
151414
151415 ELSE null
151416 END object_name
151417 , CASE r
151418 WHEN 1 THEN 'HEADER'
151419 WHEN 2 THEN 'HEADER'
151420 WHEN 3 THEN 'HEADER'
151421 WHEN 4 THEN 'HEADER'
151422 WHEN 5 THEN 'HEADER'
151423 WHEN 6 THEN 'HEADER'
151424 WHEN 7 THEN 'HEADER'
151425 WHEN 8 THEN 'HEADER'
151426 WHEN 9 THEN 'HEADER'
151427 WHEN 10 THEN 'HEADER'
151428 WHEN 11 THEN 'HEADER'
151429 WHEN 12 THEN 'HEADER'
151430
151431 ELSE null
151432 END object_type_code
151433 , CASE r
151434 WHEN 1 THEN '707'
151435 WHEN 2 THEN '707'
151436 WHEN 3 THEN '707'
151437 WHEN 4 THEN '707'
151438 WHEN 5 THEN '707'
151439 WHEN 6 THEN '707'
151440 WHEN 7 THEN '707'
151441 WHEN 8 THEN '707'
151442 WHEN 9 THEN '707'
151443 WHEN 10 THEN '201'
151444 WHEN 11 THEN '201'
151445 WHEN 12 THEN '707'
151446
151447 ELSE null
151448 END source_application_id
151449 , 'S' source_type_code
151450 , CASE r
151451 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
151452 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
151453 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
151454 WHEN 4 THEN 'DISTRIBUTION_TYPE'
151455 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
151456 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
151457 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION'
151458 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID'
151459 WHEN 9 THEN 'TXN_PO_HEADER_ID'
151460 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT'
151461 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID'
151462 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR'
151463
151464 ELSE null
151465 END source_code
151466 , CASE r
151467 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
151468 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
151469 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
151470 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
151471 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
151472 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
151473 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
151474 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
151475 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
151476 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
151477 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
151478 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
151479
151480 ELSE null
151481 END source_value
151482 , CASE r
151483 WHEN 4 THEN fvl12.meaning
151484 WHEN 12 THEN fvl38.meaning
151485
151486 ELSE null
151487 END source_meaning
151488 FROM xla_events_gt xet
151489 , CST_XLA_INV_HEADERS_V h1
151490 , CST_XLA_INV_REF_V h3
151491 , PO_REQ_DISTS_REF_V h4
151492 , PO_REQ_HEADERS_REF_V h5
151493 , PSA_CST_XLA_UPG_V h6
151494 , fnd_lookup_values fvl12
151495 , fnd_lookup_values fvl38
151496 ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
151497 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
151498 AND xet.event_class_code = C_EVENT_CLASS_CODE
151499 AND h1.event_id = xet.event_id
151500 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'
151501 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
151502 AND fvl12.view_application_id(+) = 700
151503 AND fvl12.language(+) = USERENV('LANG')
151504 AND fvl38.lookup_type(+) = 'YES_NO'
151505 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
151506 AND fvl38.view_application_id(+) = 0
151507 AND fvl38.language(+) = USERENV('LANG')
151508
151509 )
151510 ;
151511 --
151512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151513
151514 trace
151515 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
151516 ,p_level => C_LEVEL_STATEMENT
151517 ,p_module => l_log_module);
151518
151519 END IF;
151520 --
151521
151522
151523
151524 --
151525 INSERT INTO xla_diag_sources --line2
151526 (
151527 event_id
151528 , ledger_id
151529 , sla_ledger_id
151530 , description_language
151531 , object_name
151532 , object_type_code
151533 , line_number
151534 , source_application_id
151535 , source_type_code
151536 , source_code
151537 , source_value
151538 , source_meaning
151539 , created_by
151540 , creation_date
151541 , last_update_date
151542 , last_updated_by
151543 , last_update_login
151544 , program_update_date
151545 , program_application_id
151546 , program_id
151547 , request_id
151548 )
151549 SELECT event_id
151550 , p_target_ledger_id
151551 , p_sla_ledger_id
151552 , p_language
151553 , object_name
151554 , object_type_code
151555 , line_number
151556 , source_application_id
151557 , source_type_code
151558 , source_code
151559 , SUBSTR(source_value,1,1996)
151560 , SUBSTR(source_meaning ,1,200)
151561 , xla_environment_pkg.g_Usr_Id
151562 , TRUNC(SYSDATE)
151563 , TRUNC(SYSDATE)
151564 , xla_environment_pkg.g_Usr_Id
151565 , xla_environment_pkg.g_Login_Id
151566 , TRUNC(SYSDATE)
151567 , xla_environment_pkg.g_Prog_Appl_Id
151568 , xla_environment_pkg.g_Prog_Id
151569 , xla_environment_pkg.g_Req_Id
151570 FROM (
151571 SELECT xet.event_id event_id
151572 , l2.line_number line_number
151573 , CASE r
151574 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
151575 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
151576 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
151577 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
151578 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
151579 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
151580 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
151581 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
151582 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
151583
151584 ELSE null
151585 END object_name
151586 , CASE r
151587 WHEN 1 THEN 'LINE'
151588 WHEN 2 THEN 'LINE'
151589 WHEN 3 THEN 'LINE'
151590 WHEN 4 THEN 'LINE'
151591 WHEN 5 THEN 'LINE'
151592 WHEN 6 THEN 'LINE'
151593 WHEN 7 THEN 'LINE'
151594 WHEN 8 THEN 'LINE'
151595 WHEN 9 THEN 'LINE'
151596
151597 ELSE null
151598 END object_type_code
151599 , CASE r
151600 WHEN 1 THEN '707'
151601 WHEN 2 THEN '707'
151602 WHEN 3 THEN '707'
151603 WHEN 4 THEN '707'
151604 WHEN 5 THEN '707'
151605 WHEN 6 THEN '707'
151606 WHEN 7 THEN '707'
151607 WHEN 8 THEN '707'
151608 WHEN 9 THEN '707'
151609
151610 ELSE null
151611 END source_application_id
151612 , 'S' source_type_code
151613 , CASE r
151614 WHEN 1 THEN 'CODE_COMBINATION_ID'
151615 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
151616 WHEN 3 THEN 'CURRENCY_CODE'
151617 WHEN 4 THEN 'ENTERED_AMOUNT'
151618 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
151619 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
151620 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
151621 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
151622 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
151623
151624 ELSE null
151625 END source_code
151626 , CASE r
151627 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
151628 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
151629 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
151630 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
151631 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
151632 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
151633 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
151634 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
151635 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
151636
151637 ELSE null
151638 END source_value
151639 , null source_meaning
151640 FROM xla_events_gt xet
151641 , CST_XLA_INV_LINES_V l2
151642 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
151643 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
151644 AND xet.event_class_code = C_EVENT_CLASS_CODE
151645 AND l2.event_id = xet.event_id
151646
151647 )
151648 ;
151649 --
151650 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151651
151652 trace
151653 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
151654 ,p_level => C_LEVEL_STATEMENT
151655 ,p_module => l_log_module);
151656
151657 END IF;
151658
151659
151660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151661 trace
151662 (p_msg => 'END of insert_sources_265'
151663 ,p_level => C_LEVEL_PROCEDURE
151664 ,p_module => l_log_module);
151665 END IF;
151666 EXCEPTION
151667 WHEN xla_exceptions_pkg.application_exception THEN
151668 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
151669 trace
151670 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
151671 ,p_level => C_LEVEL_EXCEPTION
151672 ,p_module => l_log_module);
151673 END IF;
151674 RAISE;
151675 WHEN OTHERS THEN
151676 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
151677 trace
151678 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
151679 ,p_level => C_LEVEL_EXCEPTION
151680 ,p_module => l_log_module);
151681 END IF;
151682 xla_exceptions_pkg.raise_message
151683 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_265');
151684 END insert_sources_265;
151685 --
151686
151687 ---------------------------------------
151688 --
151689 -- PRIVATE FUNCTION
151690 -- EventClass_265
151691 --
151692 ----------------------------------------
151693 --
151694 FUNCTION EventClass_265
151695 (p_application_id IN NUMBER
151696 ,p_base_ledger_id IN NUMBER
151697 ,p_target_ledger_id IN NUMBER
151698 ,p_language IN VARCHAR2
151699 ,p_currency_code IN VARCHAR2
151700 ,p_sla_ledger_id IN NUMBER
151701 ,p_pad_start_date IN DATE
151702 ,p_pad_end_date IN DATE
151703 ,p_primary_ledger_id IN NUMBER)
151704 RETURN BOOLEAN IS
151705 --
151706 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT_ALL';
151707 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
151708
151709 l_calculate_acctd_flag VARCHAR2(1) :='N';
151710 l_calculate_g_l_flag VARCHAR2(1) :='N';
151711 --
151712 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151713 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151714 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151715 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151716 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151717 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151718 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151719 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151720 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151721 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151722 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151723 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151724 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151725 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
151726 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151727 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151728 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151729 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
151730 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151731 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151732 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151733 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
151734 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
151735 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
151736 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
151737 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
151738
151739 l_event_id NUMBER;
151740 l_previous_event_id NUMBER;
151741 l_first_event_id NUMBER;
151742 l_last_event_id NUMBER;
151743
151744 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
151745 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
151746 --
151747 --
151748 l_result BOOLEAN := TRUE;
151749 l_rows NUMBER := 1000;
151750 l_event_type_name VARCHAR2(80) := 'All';
151751 l_event_class_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
151752 l_description VARCHAR2(4000);
151753 l_transaction_reversal NUMBER;
151754 l_ae_header_id NUMBER;
151755 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
151756 l_log_module VARCHAR2(240);
151757 --
151758 l_acct_reversal_source VARCHAR2(30);
151759 l_trx_reversal_source VARCHAR2(30);
151760
151761 l_continue_with_lines BOOLEAN := TRUE;
151762 --
151763 l_acc_rev_gl_date_source DATE; -- 4262811
151764 --
151765 type t_array_event_id is table of number index by binary_integer;
151766
151767 l_rec_array_event t_rec_array_event;
151768 l_null_rec_array_event t_rec_array_event;
151769 l_array_ae_header_id xla_number_array_type;
151770 l_actual_flag VARCHAR2(1) := NULL;
151771 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
151772 l_balance_type_code VARCHAR2(1) :=NULL;
151773 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
151774
151775 --
151776 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
151777 --
151778
151779 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
151780 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
151781 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
151782 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
151783 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
151784 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
151785 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
151786 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
151787 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
151788 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
151789 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
151790 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
151791
151792 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
151793 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
151794 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
151795 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
151796 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
151797 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
151798 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
151799 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
151800 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
151801
151802 l_array_source_6 t_array_source_6;
151803 l_array_source_7 t_array_source_7;
151804 l_array_source_8 t_array_source_8;
151805 l_array_source_12 t_array_source_12;
151806 l_array_source_12_meaning t_array_lookup_meaning;
151807 l_array_source_14 t_array_source_14;
151808 l_array_source_16 t_array_source_16;
151809 l_array_source_27 t_array_source_27;
151810 l_array_source_28 t_array_source_28;
151811 l_array_source_29 t_array_source_29;
151812 l_array_source_30 t_array_source_30;
151813 l_array_source_31 t_array_source_31;
151814 l_array_source_38 t_array_source_38;
151815 l_array_source_38_meaning t_array_lookup_meaning;
151816
151817 l_array_source_4 t_array_source_4;
151818 l_array_source_11 t_array_source_11;
151819 l_array_source_15 t_array_source_15;
151820 l_array_source_18 t_array_source_18;
151821 l_array_source_19 t_array_source_19;
151822 l_array_source_20 t_array_source_20;
151823 l_array_source_21 t_array_source_21;
151824 l_array_source_22 t_array_source_22;
151825 l_array_source_24 t_array_source_24;
151826
151827 --
151828 CURSOR header_cur
151829 IS
151830 SELECT /*+ leading(xet) cardinality(xet,1) */
151831 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
151832 xet.entity_id
151833 ,xet.legal_entity_id
151834 ,xet.entity_code
151835 ,xet.transaction_number
151836 ,xet.event_id
151837 ,xet.event_class_code
151838 ,xet.event_type_code
151839 ,xet.event_number
151840 ,xet.event_date
151841 ,xet.transaction_date
151842 ,xet.reference_num_1
151843 ,xet.reference_num_2
151844 ,xet.reference_num_3
151845 ,xet.reference_num_4
151846 ,xet.reference_char_1
151847 ,xet.reference_char_2
151848 ,xet.reference_char_3
151849 ,xet.reference_char_4
151850 ,xet.reference_date_1
151851 ,xet.reference_date_2
151852 ,xet.reference_date_3
151853 ,xet.reference_date_4
151854 ,xet.event_created_by
151855 ,xet.budgetary_control_flag
151856 , h3.APPLIED_TO_APPL_ID source_6
151857 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
151858 , h3.APPLIED_TO_ENTITY_CODE source_8
151859 , h1.DISTRIBUTION_TYPE source_12
151860 , fvl12.meaning source_12_meaning
151861 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
151862 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
151863 , h6.CST_ENCUM_UPG_OPTION source_27
151864 , h3.TXN_PO_DISTRIBUTION_ID source_28
151865 , h3.TXN_PO_HEADER_ID source_29
151866 , h4.REQ_BUDGET_ACCOUNT source_30
151867 , h5.REQ_ENCUMBRANCE_TYPE_ID source_31
151868 , h1.TRANSFER_TO_GL_INDICATOR source_38
151869 , fvl38.meaning source_38_meaning
151870 FROM xla_events_gt xet
151871 , CST_XLA_INV_HEADERS_V h1
151872 , CST_XLA_INV_REF_V h3
151873 , PO_REQ_DISTS_REF_V h4
151874 , PO_REQ_HEADERS_REF_V h5
151875 , PSA_CST_XLA_UPG_V h6
151876 , fnd_lookup_values fvl12
151877 , fnd_lookup_values fvl38
151878 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
151879 and xet.event_class_code = C_EVENT_CLASS_CODE
151880 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
151881 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'
151882 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
151883 AND fvl12.view_application_id(+) = 700
151884 AND fvl12.language(+) = USERENV('LANG')
151885 AND fvl38.lookup_type(+) = 'YES_NO'
151886 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
151887 AND fvl38.view_application_id(+) = 0
151888 AND fvl38.language(+) = USERENV('LANG')
151889
151890 ORDER BY event_id
151891 ;
151892
151893
151894 --
151895 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
151896 IS
151897 SELECT /*+ leading(xet) cardinality(xet,1) */
151898 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
151899 xet.entity_id
151900 ,xet.legal_entity_id
151901 ,xet.entity_code
151902 ,xet.transaction_number
151903 ,xet.event_id
151904 ,xet.event_class_code
151905 ,xet.event_type_code
151906 ,xet.event_number
151907 ,xet.event_date
151908 ,xet.transaction_date
151909 ,xet.reference_num_1
151910 ,xet.reference_num_2
151911 ,xet.reference_num_3
151912 ,xet.reference_num_4
151913 ,xet.reference_char_1
151914 ,xet.reference_char_2
151915 ,xet.reference_char_3
151916 ,xet.reference_char_4
151917 ,xet.reference_date_1
151918 ,xet.reference_date_2
151919 ,xet.reference_date_3
151920 ,xet.reference_date_4
151921 ,xet.event_created_by
151922 ,xet.budgetary_control_flag
151923 , l2.LINE_NUMBER
151924 , l2.CODE_COMBINATION_ID source_4
151925 , l2.DISTRIBUTION_IDENTIFIER source_11
151926 , l2.CURRENCY_CODE source_15
151927 , l2.ENTERED_AMOUNT source_18
151928 , l2.CURRENCY_CONVERSION_DATE source_19
151929 , l2.CURRENCY_CONVERSION_RATE source_20
151930 , l2.CURRENCY_CONVERSION_TYPE source_21
151931 , l2.ACCOUNTED_AMOUNT source_22
151932 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
151933 FROM xla_events_gt xet
151934 , CST_XLA_INV_LINES_V l2
151935 WHERE xet.event_id between x_first_event_id and x_last_event_id
151936 and xet.event_date between p_pad_start_date and p_pad_end_date
151937 and xet.event_class_code = C_EVENT_CLASS_CODE
151938 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
151939 ;
151940
151941 --
151942 BEGIN
151943 IF g_log_enabled THEN
151944 l_log_module := C_DEFAULT_MODULE||'.EventClass_265';
151945 END IF;
151946 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
151947 trace
151948 (p_msg => 'BEGIN of EventClass_265'
151949 ,p_level => C_LEVEL_PROCEDURE
151950 ,p_module => l_log_module);
151951 END IF;
151952
151953 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151954 trace
151955 (p_msg => 'p_application_id = '||p_application_id||
151956 ' - p_base_ledger_id = '||p_base_ledger_id||
151957 ' - p_target_ledger_id = '||p_target_ledger_id||
151958 ' - p_language = '||p_language||
151959 ' - p_currency_code = '||p_currency_code||
151960 ' - p_sla_ledger_id = '||p_sla_ledger_id
151961 ,p_level => C_LEVEL_STATEMENT
151962 ,p_module => l_log_module);
151963 END IF;
151964 --
151965 -- initialze arrays
151966 --
151967 g_array_event.DELETE;
151968 l_rec_array_event := l_null_rec_array_event;
151969 --
151970 --------------------------------------
151971 -- 4262811 Initialze MPA Line Number
151972 --------------------------------------
151973 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
151974
151975 --
151976
151977 --
151978 OPEN header_cur;
151979 --
151980 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
151981 trace
151982 (p_msg => 'SQL - FETCH header_cur'
151983 ,p_level => C_LEVEL_STATEMENT
151984 ,p_module => l_log_module);
151985 END IF;
151986 --
151987 LOOP
151988 FETCH header_cur BULK COLLECT INTO
151989 l_array_entity_id
151990 , l_array_legal_entity_id
151991 , l_array_entity_code
151992 , l_array_transaction_num
151993 , l_array_event_id
151994 , l_array_class_code
151995 , l_array_event_type
151996 , l_array_event_number
151997 , l_array_event_date
151998 , l_array_transaction_date
151999 , l_array_reference_num_1
152000 , l_array_reference_num_2
152001 , l_array_reference_num_3
152002 , l_array_reference_num_4
152003 , l_array_reference_char_1
152004 , l_array_reference_char_2
152005 , l_array_reference_char_3
152006 , l_array_reference_char_4
152007 , l_array_reference_date_1
152008 , l_array_reference_date_2
152009 , l_array_reference_date_3
152010 , l_array_reference_date_4
152011 , l_array_event_created_by
152012 , l_array_budgetary_control_flag
152013 , l_array_source_6
152014 , l_array_source_7
152015 , l_array_source_8
152016 , l_array_source_12
152017 , l_array_source_12_meaning
152018 , l_array_source_14
152019 , l_array_source_16
152020 , l_array_source_27
152021 , l_array_source_28
152022 , l_array_source_29
152023 , l_array_source_30
152024 , l_array_source_31
152025 , l_array_source_38
152026 , l_array_source_38_meaning
152027 LIMIT l_rows;
152028 --
152029 IF (C_LEVEL_EVENT >= g_log_level) THEN
152030 trace
152031 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
152032 ,p_level => C_LEVEL_EVENT
152033 ,p_module => l_log_module);
152034 END IF;
152035 --
152036 EXIT WHEN l_array_entity_id.COUNT = 0;
152037
152038 -- initialize arrays
152039 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
152040 XLA_AE_LINES_PKG.g_rec_lines := NULL;
152041
152042 --
152043 -- Bug 4458708
152044 --
152045 XLA_AE_LINES_PKG.g_LineNumber := 0;
152046
152047
152048 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
152049 g_last_hdr_idx := l_array_event_id.LAST;
152050 --
152051 -- loop for the headers. Each iteration is for each header extract row
152052 -- fetched in header cursor
152053 --
152054 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
152055
152056 --
152057 -- set event info as cache for other routines to refer event attributes
152058 --
152059 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152060 (p_application_id => p_application_id
152061 ,p_primary_ledger_id => p_primary_ledger_id
152062 ,p_base_ledger_id => p_base_ledger_id
152063 ,p_target_ledger_id => p_target_ledger_id
152064 ,p_entity_id => l_array_entity_id(hdr_idx)
152065 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
152066 ,p_entity_code => l_array_entity_code(hdr_idx)
152067 ,p_transaction_num => l_array_transaction_num(hdr_idx)
152068 ,p_event_id => l_array_event_id(hdr_idx)
152069 ,p_event_class_code => l_array_class_code(hdr_idx)
152070 ,p_event_type_code => l_array_event_type(hdr_idx)
152071 ,p_event_number => l_array_event_number(hdr_idx)
152072 ,p_event_date => l_array_event_date(hdr_idx)
152073 ,p_transaction_date => l_array_transaction_date(hdr_idx)
152074 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
152075 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
152076 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
152077 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
152078 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
152079 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
152080 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
152081 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
152082 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
152083 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
152084 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
152085 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
152086 ,p_event_created_by => l_array_event_created_by(hdr_idx)
152087 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
152088
152089 --
152090 -- set the status of entry to C_VALID (0)
152091 --
152092 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152093
152094 --
152095 -- initialize a row for ae header
152096 --
152097 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
152098
152099 l_event_id := l_array_event_id(hdr_idx);
152100
152101 --
152102 -- storing the hdr_idx for event. May be used by line cursor.
152103 --
152104 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
152105
152106 --
152107 -- store sources from header extract. This can be improved to
152108 -- store only those sources from header extract that may be used in lines
152109 --
152110
152111 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
152112 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
152113 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
152114 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
152115 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
152116 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
152117 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
152118 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
152119 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
152120 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
152121 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
152122 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
152123 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
152124 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
152125
152126 --
152127 -- initilaize the status of ae headers for diffrent balance types
152128 -- the status is initialised to C_NOT_CREATED (2)
152129 --
152130 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152131 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152132 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
152133
152134 --
152135 -- call api to validate and store accounting attributes for header
152136 --
152137
152138 ------------------------------------------------------------
152139 -- Accrual Reversal : to get date for Standard Source (NONE)
152140 ------------------------------------------------------------
152141 l_acc_rev_gl_date_source := NULL;
152142
152143 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
152144 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
152145 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
152146 l_rec_acct_attrs.array_date_value(2) :=
152147 xla_ae_sources_pkg.GetSystemSourceDate(
152148 p_source_code => 'XLA_REFERENCE_DATE_1'
152149 , p_source_type_code => 'Y'
152150 , p_source_application_id => 602
152151 );
152152 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
152153 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
152154
152155
152156 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
152157
152158 XLA_AE_HEADER_PKG.SetJeCategoryName;
152159
152160 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
152161 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
152162 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
152163 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
152164 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
152165
152166
152167 -- No header level analytical criteria
152168
152169 --
152170 --accounting attribute enhancement, bug 3612931
152171 --
152172 l_trx_reversal_source := SUBSTR(NULL, 1,30);
152173
152174 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
152175 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
152176
152177 xla_accounting_err_pkg.build_message
152178 (p_appli_s_name => 'XLA'
152179 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
152180 ,p_token_1 => 'ACCT_ATTR_NAME'
152181 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
152182 ,p_token_2 => 'PRODUCT_NAME'
152183 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152184 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152185 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
152186 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152187
152188 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
152189 --
152190 -- following sets the accounting attributes needed to reverse
152191 -- accounting for a distributeion
152192 --
152193 xla_ae_lines_pkg.SetTrxReversalAttrs
152194 (p_event_id => l_event_id
152195 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
152196 ,p_trx_reversal_source => l_trx_reversal_source);
152197
152198 END IF;
152199
152200
152201 ----------------------------------------------------------------
152202 -- 4262811 - update the header statuses to invalid in need be
152203 ----------------------------------------------------------------
152204 --
152205 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
152206
152207
152208 -----------------------------------------------
152209 -- No accrual reversal for the event class/type
152210 -----------------------------------------------
152211 ----------------------------------------------------------------
152212
152213 --
152214 -- this ends the header loop iteration for one bulk fetch
152215 --
152216 END LOOP;
152217
152218 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
152219 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
152220
152221 --
152222 -- insert dummy rows into lines gt table that were created due to
152223 -- transaction reversals
152224 --
152225 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
152226 l_result := XLA_AE_LINES_PKG.InsertLines;
152227 END IF;
152228
152229 --
152230 -- reset the temp_line_num for each set of events fetched from header
152231 -- cursor rather than doing it for each new event in line cursor
152232 -- Bug 3939231
152233 --
152234 xla_ae_lines_pkg.g_temp_line_num := 0;
152235
152236
152237
152238 --
152239 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
152240 --
152241 --
152242 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152243
152244 trace
152245 (p_msg => 'SQL - FETCH line_cur'
152246 ,p_level => C_LEVEL_STATEMENT
152247 ,p_module => l_log_module);
152248
152249 END IF;
152250 --
152251 --
152252 LOOP
152253 --
152254 FETCH line_cur BULK COLLECT INTO
152255 l_array_entity_id
152256 , l_array_legal_entity_id
152257 , l_array_entity_code
152258 , l_array_transaction_num
152259 , l_array_event_id
152260 , l_array_class_code
152261 , l_array_event_type
152262 , l_array_event_number
152263 , l_array_event_date
152264 , l_array_transaction_date
152265 , l_array_reference_num_1
152266 , l_array_reference_num_2
152267 , l_array_reference_num_3
152268 , l_array_reference_num_4
152269 , l_array_reference_char_1
152270 , l_array_reference_char_2
152271 , l_array_reference_char_3
152272 , l_array_reference_char_4
152273 , l_array_reference_date_1
152274 , l_array_reference_date_2
152275 , l_array_reference_date_3
152276 , l_array_reference_date_4
152277 , l_array_event_created_by
152278 , l_array_budgetary_control_flag
152279 , l_array_extract_line_num
152280 , l_array_source_4
152281 , l_array_source_11
152282 , l_array_source_15
152283 , l_array_source_18
152284 , l_array_source_19
152285 , l_array_source_20
152286 , l_array_source_21
152287 , l_array_source_22
152288 , l_array_source_24
152289 LIMIT l_rows;
152290
152291 --
152292 IF (C_LEVEL_EVENT >= g_log_level) THEN
152293 trace
152294 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
152295 ,p_level => C_LEVEL_EVENT
152296 ,p_module => l_log_module);
152297 END IF;
152298 --
152299 EXIT WHEN l_array_entity_id.count = 0;
152300
152301 XLA_AE_LINES_PKG.g_rec_lines := null;
152302
152303 --
152304 -- Bug 4458708
152305 --
152306 XLA_AE_LINES_PKG.g_LineNumber := 0;
152307 --
152308 --
152309
152310 FOR Idx IN 1..l_array_event_id.count LOOP
152311 --
152312 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
152313 --
152314 l_event_id := l_array_event_id(idx); -- 5648433
152315
152316 --
152317 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
152318 --
152319
152320 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
152321 (g_array_event(l_event_id).array_value_num('header_index'))
152322 ,'N'
152323 ) <> 'Y'
152324 THEN
152325 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152326 trace
152327 (p_msg => 'Trancaction revesal option is not Y '
152328 ,p_level => C_LEVEL_STATEMENT
152329 ,p_module => l_log_module);
152330 END IF;
152331
152332 --
152333 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
152334 --
152335 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
152336 --
152337 -- set event info as cache for other routines to refer event attributes
152338 --
152339
152340 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
152341 l_previous_event_id := l_event_id;
152342
152343 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
152344 (p_application_id => p_application_id
152345 ,p_primary_ledger_id => p_primary_ledger_id
152346 ,p_base_ledger_id => p_base_ledger_id
152347 ,p_target_ledger_id => p_target_ledger_id
152348 ,p_entity_id => l_array_entity_id(Idx)
152349 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
152350 ,p_entity_code => l_array_entity_code(Idx)
152351 ,p_transaction_num => l_array_transaction_num(Idx)
152352 ,p_event_id => l_array_event_id(Idx)
152353 ,p_event_class_code => l_array_class_code(Idx)
152354 ,p_event_type_code => l_array_event_type(Idx)
152355 ,p_event_number => l_array_event_number(Idx)
152356 ,p_event_date => l_array_event_date(Idx)
152357 ,p_transaction_date => l_array_transaction_date(Idx)
152358 ,p_reference_num_1 => l_array_reference_num_1(Idx)
152359 ,p_reference_num_2 => l_array_reference_num_2(Idx)
152360 ,p_reference_num_3 => l_array_reference_num_3(Idx)
152361 ,p_reference_num_4 => l_array_reference_num_4(Idx)
152362 ,p_reference_char_1 => l_array_reference_char_1(Idx)
152363 ,p_reference_char_2 => l_array_reference_char_2(Idx)
152364 ,p_reference_char_3 => l_array_reference_char_3(Idx)
152365 ,p_reference_char_4 => l_array_reference_char_4(Idx)
152366 ,p_reference_date_1 => l_array_reference_date_1(Idx)
152367 ,p_reference_date_2 => l_array_reference_date_2(Idx)
152368 ,p_reference_date_3 => l_array_reference_date_3(Idx)
152369 ,p_reference_date_4 => l_array_reference_date_4(Idx)
152370 ,p_event_created_by => l_array_event_created_by(Idx)
152371 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
152372 --
152373 END IF;
152374
152375
152376
152377 --
152378 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
152379
152380 l_acct_reversal_source := SUBSTR(NULL, 1,30);
152381
152382 IF l_continue_with_lines THEN
152383 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
152384 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
152385
152386 xla_accounting_err_pkg.build_message
152387 (p_appli_s_name => 'XLA'
152388 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
152389 ,p_token_1 => 'LINE_NUMBER'
152390 ,p_value_1 => l_array_extract_line_num(Idx)
152391 ,p_token_2 => 'PRODUCT_NAME'
152392 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
152393 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
152394 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
152395 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
152396
152397 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
152398 --
152399 -- following sets the accounting attributes needed to reverse
152400 -- accounting for a distributeion
152401 --
152402
152403 --
152404 -- 5217187
152405 --
152406 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
152407 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
152408 g_array_event(l_event_id).array_value_num('header_index'));
152409 --
152410 --
152411
152412 -- No reversal code generated
152413
152414 xla_ae_lines_pkg.SetAcctReversalAttrs
152415 (p_event_id => l_event_id
152416 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
152417 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152418 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
152419 END IF;
152420
152421 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
152422 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
152423
152424 --
152425 AcctLineType_36 (
152426 p_application_id => p_application_id
152427 ,p_event_id => l_event_id
152428 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152429 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152430 ,p_actual_flag => l_actual_flag
152431 ,p_balance_type_code => l_balance_type_code
152432 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152433
152434 , p_source_4 => l_array_source_4(Idx)
152435 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152436 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152437 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152438 , p_source_11 => l_array_source_11(Idx)
152439 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152440 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152441 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152442 , p_source_15 => l_array_source_15(Idx)
152443 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152444 , p_source_18 => l_array_source_18(Idx)
152445 , p_source_19 => l_array_source_19(Idx)
152446 , p_source_20 => l_array_source_20(Idx)
152447 , p_source_21 => l_array_source_21(Idx)
152448 , p_source_22 => l_array_source_22(Idx)
152449 , p_source_24 => l_array_source_24(Idx)
152450 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152451 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152452 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152453 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152454 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152455 );
152456 If(l_balance_type_code = 'A') THEN
152457 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152458 END IF;
152459
152460 --
152461
152462
152463 --
152464 AcctLineType_53 (
152465 p_application_id => p_application_id
152466 ,p_event_id => l_event_id
152467 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152468 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152469 ,p_actual_flag => l_actual_flag
152470 ,p_balance_type_code => l_balance_type_code
152471 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152472
152473 , p_source_4 => l_array_source_4(Idx)
152474 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152475 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152476 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152477 , p_source_11 => l_array_source_11(Idx)
152478 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152479 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152480 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152481 , p_source_15 => l_array_source_15(Idx)
152482 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152483 , p_source_18 => l_array_source_18(Idx)
152484 , p_source_19 => l_array_source_19(Idx)
152485 , p_source_20 => l_array_source_20(Idx)
152486 , p_source_21 => l_array_source_21(Idx)
152487 , p_source_22 => l_array_source_22(Idx)
152488 , p_source_24 => l_array_source_24(Idx)
152489 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152490 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152491 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152492 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152493 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152494 );
152495 If(l_balance_type_code = 'A') THEN
152496 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152497 END IF;
152498
152499 --
152500
152501
152502 --
152503 AcctLineType_82 (
152504 p_application_id => p_application_id
152505 ,p_event_id => l_event_id
152506 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152507 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152508 ,p_actual_flag => l_actual_flag
152509 ,p_balance_type_code => l_balance_type_code
152510 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152511
152512 , p_source_4 => l_array_source_4(Idx)
152513 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152514 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152515 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152516 , p_source_11 => l_array_source_11(Idx)
152517 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152518 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152519 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152520 , p_source_15 => l_array_source_15(Idx)
152521 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152522 , p_source_18 => l_array_source_18(Idx)
152523 , p_source_19 => l_array_source_19(Idx)
152524 , p_source_20 => l_array_source_20(Idx)
152525 , p_source_21 => l_array_source_21(Idx)
152526 , p_source_22 => l_array_source_22(Idx)
152527 , p_source_24 => l_array_source_24(Idx)
152528 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152529 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152530 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152531 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152532 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152533 );
152534 If(l_balance_type_code = 'A') THEN
152535 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152536 END IF;
152537
152538 --
152539
152540
152541 --
152542 AcctLineType_148 (
152543 p_application_id => p_application_id
152544 ,p_event_id => l_event_id
152545 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152546 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152547 ,p_actual_flag => l_actual_flag
152548 ,p_balance_type_code => l_balance_type_code
152549 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152550
152551 , p_source_4 => l_array_source_4(Idx)
152552 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152553 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152554 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152555 , p_source_11 => l_array_source_11(Idx)
152556 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152557 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152558 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152559 , p_source_15 => l_array_source_15(Idx)
152560 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152561 , p_source_18 => l_array_source_18(Idx)
152562 , p_source_19 => l_array_source_19(Idx)
152563 , p_source_20 => l_array_source_20(Idx)
152564 , p_source_21 => l_array_source_21(Idx)
152565 , p_source_22 => l_array_source_22(Idx)
152566 , p_source_24 => l_array_source_24(Idx)
152567 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152568 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152569 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152570 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152571 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152572 );
152573 If(l_balance_type_code = 'A') THEN
152574 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152575 END IF;
152576
152577 --
152578
152579
152580 --
152581 AcctLineType_177 (
152582 p_application_id => p_application_id
152583 ,p_event_id => l_event_id
152584 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152585 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152586 ,p_actual_flag => l_actual_flag
152587 ,p_balance_type_code => l_balance_type_code
152588 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152589
152590 , p_source_4 => l_array_source_4(Idx)
152591 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152592 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152593 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152594 , p_source_11 => l_array_source_11(Idx)
152595 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152596 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152597 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152598 , p_source_15 => l_array_source_15(Idx)
152599 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152600 , p_source_18 => l_array_source_18(Idx)
152601 , p_source_19 => l_array_source_19(Idx)
152602 , p_source_20 => l_array_source_20(Idx)
152603 , p_source_21 => l_array_source_21(Idx)
152604 , p_source_22 => l_array_source_22(Idx)
152605 , p_source_24 => l_array_source_24(Idx)
152606 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152607 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152608 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152609 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152610 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152611 );
152612 If(l_balance_type_code = 'A') THEN
152613 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152614 END IF;
152615
152616 --
152617
152618
152619 --
152620 AcctLineType_190 (
152621 p_application_id => p_application_id
152622 ,p_event_id => l_event_id
152623 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152624 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152625 ,p_actual_flag => l_actual_flag
152626 ,p_balance_type_code => l_balance_type_code
152627 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152628
152629 , p_source_4 => l_array_source_4(Idx)
152630 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152631 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152632 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152633 , p_source_11 => l_array_source_11(Idx)
152634 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152635 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152636 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152637 , p_source_15 => l_array_source_15(Idx)
152638 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152639 , p_source_18 => l_array_source_18(Idx)
152640 , p_source_19 => l_array_source_19(Idx)
152641 , p_source_20 => l_array_source_20(Idx)
152642 , p_source_21 => l_array_source_21(Idx)
152643 , p_source_22 => l_array_source_22(Idx)
152644 , p_source_24 => l_array_source_24(Idx)
152645 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152646 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152647 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152648 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152649 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152650 );
152651 If(l_balance_type_code = 'A') THEN
152652 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152653 END IF;
152654
152655 --
152656
152657
152658 --
152659 AcctLineType_216 (
152660 p_application_id => p_application_id
152661 ,p_event_id => l_event_id
152662 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152663 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152664 ,p_actual_flag => l_actual_flag
152665 ,p_balance_type_code => l_balance_type_code
152666 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152667
152668 , p_source_4 => l_array_source_4(Idx)
152669 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152670 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152671 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152672 , p_source_11 => l_array_source_11(Idx)
152673 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152674 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152675 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152676 , p_source_15 => l_array_source_15(Idx)
152677 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152678 , p_source_18 => l_array_source_18(Idx)
152679 , p_source_19 => l_array_source_19(Idx)
152680 , p_source_20 => l_array_source_20(Idx)
152681 , p_source_21 => l_array_source_21(Idx)
152682 , p_source_22 => l_array_source_22(Idx)
152683 , p_source_24 => l_array_source_24(Idx)
152684 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152685 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152686 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152687 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152688 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152689 );
152690 If(l_balance_type_code = 'A') THEN
152691 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152692 END IF;
152693
152694 --
152695
152696
152697 --
152698 AcctLineType_223 (
152699 p_application_id => p_application_id
152700 ,p_event_id => l_event_id
152701 ,p_calculate_acctd_flag => l_calculate_acctd_flag
152702 ,p_calculate_g_l_flag => l_calculate_g_l_flag
152703 ,p_actual_flag => l_actual_flag
152704 ,p_balance_type_code => l_balance_type_code
152705 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
152706
152707 , p_source_4 => l_array_source_4(Idx)
152708 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
152709 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
152710 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
152711 , p_source_11 => l_array_source_11(Idx)
152712 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
152713 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
152714 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
152715 , p_source_15 => l_array_source_15(Idx)
152716 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
152717 , p_source_18 => l_array_source_18(Idx)
152718 , p_source_19 => l_array_source_19(Idx)
152719 , p_source_20 => l_array_source_20(Idx)
152720 , p_source_21 => l_array_source_21(Idx)
152721 , p_source_22 => l_array_source_22(Idx)
152722 , p_source_24 => l_array_source_24(Idx)
152723 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
152724 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
152725 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
152726 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
152727 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
152728 );
152729 If(l_balance_type_code = 'A') THEN
152730 l_actual_gain_loss_ref := l_gain_or_loss_ref;
152731 END IF;
152732
152733 --
152734
152735 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
152736 -- or secondary ledger that has different currency with primary
152737 -- or alc that is calculated by sla
152738 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
152739 (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'))
152740
152741 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
152742 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
152743 AND (l_actual_flag = 'A')) THEN
152744 XLA_AE_LINES_PKG.CreateGainOrLossLines(
152745 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
152746 ,p_application_id => p_application_id
152747 ,p_amb_context_code => 'DEFAULT'
152748 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
152749 ,p_event_class_code => C_EVENT_CLASS_CODE
152750 ,p_event_type_code => C_EVENT_TYPE_CODE
152751
152752 ,p_gain_ccid => -1
152753 ,p_loss_ccid => -1
152754
152755 ,p_actual_flag => l_actual_flag
152756 ,p_enc_flag => null
152757 ,p_actual_g_l_ref => l_actual_gain_loss_ref
152758 ,p_enc_g_l_ref => null
152759 );
152760 END IF;
152761 END IF;
152762 END IF;
152763
152764 ELSE
152765 --
152766 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
152767 --
152768 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152769 trace
152770 (p_msg => 'Trancaction revesal option is Y'
152771 ,p_level => C_LEVEL_STATEMENT
152772 ,p_module => l_log_module);
152773 END IF;
152774 END IF;
152775
152776 END LOOP;
152777 l_result := XLA_AE_LINES_PKG.InsertLines ;
152778 end loop;
152779 close line_cur;
152780
152781
152782 --
152783 -- insert headers into xla_ae_headers_gt table
152784 --
152785 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
152786
152787 -- insert into errors table here.
152788
152789 END LOOP;
152790
152791 --
152792 -- 4865292
152793 --
152794 -- Compare g_hdr_extract_count with event count in
152795 -- CreateHeadersAndLines.
152796 --
152797 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
152798
152799 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152800 trace (p_msg => '# rows extracted from header extract objects '
152801 || ' (running total): '
152802 || g_hdr_extract_count
152803 ,p_level => C_LEVEL_STATEMENT
152804 ,p_module => l_log_module);
152805 END IF;
152806
152807 CLOSE header_cur;
152808 --
152809
152810 --
152811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152812 trace
152813 (p_msg => 'END of EventClass_265'
152814 ,p_level => C_LEVEL_PROCEDURE
152815 ,p_module => l_log_module);
152816 END IF;
152817 --
152818 RETURN l_result;
152819 EXCEPTION
152820 WHEN xla_exceptions_pkg.application_exception THEN
152821
152822 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
152823
152824
152825 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
152826
152827 RAISE;
152828
152829 WHEN NO_DATA_FOUND THEN
152830
152831 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
152832 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
152833
152834 FOR header_record IN header_cur
152835 LOOP
152836 l_array_header_events(header_record.event_id) := header_record.event_id;
152837 END LOOP;
152838
152839 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
152840 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
152841
152842 fnd_file.put_line(fnd_file.LOG, ' ');
152843 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
152844 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
152845 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
152846
152847 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
152848 LOOP
152849 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
152850 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
152851 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
152852 END IF;
152853 END LOOP;
152854
152855 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
152856 fnd_file.put_line(fnd_file.LOG, ' ');
152857
152858
152859 xla_exceptions_pkg.raise_message
152860 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_265');
152861
152862
152863 WHEN OTHERS THEN
152864 xla_exceptions_pkg.raise_message
152865 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_265');
152866 END EventClass_265;
152867 --
152868
152869 ---------------------------------------
152870 --
152871 -- PRIVATE PROCEDURE
152872 -- insert_sources_266
152873 --
152874 ----------------------------------------
152875 --
152876 PROCEDURE insert_sources_266(
152877 p_target_ledger_id IN NUMBER
152878 , p_language IN VARCHAR2
152879 , p_sla_ledger_id IN NUMBER
152880 , p_pad_start_date IN DATE
152881 , p_pad_end_date IN DATE
152882 )
152883 IS
152884
152885 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT_ALL';
152886 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
152887 p_apps_owner VARCHAR2(30);
152888 l_log_module VARCHAR2(240);
152889 BEGIN
152890 IF g_log_enabled THEN
152891 l_log_module := C_DEFAULT_MODULE||'.insert_sources_266';
152892 END IF;
152893 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
152894
152895 trace
152896 (p_msg => 'BEGIN of insert_sources_266'
152897 ,p_level => C_LEVEL_PROCEDURE
152898 ,p_module => l_log_module);
152899
152900 END IF;
152901
152902 -- select APPS owner
152903 SELECT oracle_username
152904 INTO p_apps_owner
152905 FROM fnd_oracle_userid
152906 WHERE read_only_flag = 'U'
152907 ;
152908
152909 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
152910 trace
152911 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
152912 ' - p_language = '||p_language||
152913 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
152914 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
152915 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
152916 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
152917 ,p_level => C_LEVEL_STATEMENT
152918 ,p_module => l_log_module);
152919 END IF;
152920
152921
152922 --
152923 INSERT INTO xla_diag_sources --hdr2
152924 (
152925 event_id
152926 , ledger_id
152927 , sla_ledger_id
152928 , description_language
152929 , object_name
152930 , object_type_code
152931 , line_number
152932 , source_application_id
152933 , source_type_code
152934 , source_code
152935 , source_value
152936 , source_meaning
152937 , created_by
152938 , creation_date
152939 , last_update_date
152940 , last_updated_by
152941 , last_update_login
152942 , program_update_date
152943 , program_application_id
152944 , program_id
152945 , request_id
152946 )
152947 SELECT
152948 event_id
152949 , p_target_ledger_id
152950 , p_sla_ledger_id
152951 , p_language
152952 , object_name
152953 , object_type_code
152954 , line_number
152955 , source_application_id
152956 , source_type_code
152957 , source_code
152958 , SUBSTR(source_value ,1,1996)
152959 , SUBSTR(source_meaning ,1,200)
152960 , xla_environment_pkg.g_Usr_Id
152961 , TRUNC(SYSDATE)
152962 , TRUNC(SYSDATE)
152963 , xla_environment_pkg.g_Usr_Id
152964 , xla_environment_pkg.g_Login_Id
152965 , TRUNC(SYSDATE)
152966 , xla_environment_pkg.g_Prog_Appl_Id
152967 , xla_environment_pkg.g_Prog_Id
152968 , xla_environment_pkg.g_Req_Id
152969 FROM (
152970 SELECT xet.event_id event_id
152971 , 0 line_number
152972 , CASE r
152973 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
152974 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
152975
152976 ELSE null
152977 END object_name
152978 , CASE r
152979 WHEN 1 THEN 'HEADER'
152980 WHEN 2 THEN 'HEADER'
152981
152982 ELSE null
152983 END object_type_code
152984 , CASE r
152985 WHEN 1 THEN '707'
152986 WHEN 2 THEN '707'
152987
152988 ELSE null
152989 END source_application_id
152990 , 'S' source_type_code
152991 , CASE r
152992 WHEN 1 THEN 'DISTRIBUTION_TYPE'
152993 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
152994
152995 ELSE null
152996 END source_code
152997 , CASE r
152998 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
152999 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
153000
153001 ELSE null
153002 END source_value
153003 , CASE r
153004 WHEN 1 THEN fvl12.meaning
153005 WHEN 2 THEN fvl38.meaning
153006
153007 ELSE null
153008 END source_meaning
153009 FROM xla_events_gt xet
153010 , CST_XLA_INV_HEADERS_V h1
153011 , fnd_lookup_values fvl12
153012 , fnd_lookup_values fvl38
153013 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
153014 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
153015 AND xet.event_class_code = C_EVENT_CLASS_CODE
153016 AND h1.event_id = xet.event_id
153017 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
153018 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
153019 AND fvl12.view_application_id(+) = 700
153020 AND fvl12.language(+) = USERENV('LANG')
153021 AND fvl38.lookup_type(+) = 'YES_NO'
153022 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
153023 AND fvl38.view_application_id(+) = 0
153024 AND fvl38.language(+) = USERENV('LANG')
153025
153026 )
153027 ;
153028 --
153029 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153030
153031 trace
153032 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
153033 ,p_level => C_LEVEL_STATEMENT
153034 ,p_module => l_log_module);
153035
153036 END IF;
153037 --
153038
153039
153040
153041 --
153042 INSERT INTO xla_diag_sources --line2
153043 (
153044 event_id
153045 , ledger_id
153046 , sla_ledger_id
153047 , description_language
153048 , object_name
153049 , object_type_code
153050 , line_number
153051 , source_application_id
153052 , source_type_code
153053 , source_code
153054 , source_value
153055 , source_meaning
153056 , created_by
153057 , creation_date
153058 , last_update_date
153059 , last_updated_by
153060 , last_update_login
153061 , program_update_date
153062 , program_application_id
153063 , program_id
153064 , request_id
153065 )
153066 SELECT event_id
153067 , p_target_ledger_id
153068 , p_sla_ledger_id
153069 , p_language
153070 , object_name
153071 , object_type_code
153072 , line_number
153073 , source_application_id
153074 , source_type_code
153075 , source_code
153076 , SUBSTR(source_value,1,1996)
153077 , SUBSTR(source_meaning ,1,200)
153078 , xla_environment_pkg.g_Usr_Id
153079 , TRUNC(SYSDATE)
153080 , TRUNC(SYSDATE)
153081 , xla_environment_pkg.g_Usr_Id
153082 , xla_environment_pkg.g_Login_Id
153083 , TRUNC(SYSDATE)
153084 , xla_environment_pkg.g_Prog_Appl_Id
153085 , xla_environment_pkg.g_Prog_Id
153086 , xla_environment_pkg.g_Req_Id
153087 FROM (
153088 SELECT xet.event_id event_id
153089 , l2.line_number line_number
153090 , CASE r
153091 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
153092 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
153093 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
153094 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
153095 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
153096 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
153097 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
153098 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
153099 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
153100
153101 ELSE null
153102 END object_name
153103 , CASE r
153104 WHEN 1 THEN 'LINE'
153105 WHEN 2 THEN 'LINE'
153106 WHEN 3 THEN 'LINE'
153107 WHEN 4 THEN 'LINE'
153108 WHEN 5 THEN 'LINE'
153109 WHEN 6 THEN 'LINE'
153110 WHEN 7 THEN 'LINE'
153111 WHEN 8 THEN 'LINE'
153112 WHEN 9 THEN 'LINE'
153113
153114 ELSE null
153115 END object_type_code
153116 , CASE r
153117 WHEN 1 THEN '707'
153118 WHEN 2 THEN '707'
153119 WHEN 3 THEN '707'
153120 WHEN 4 THEN '707'
153121 WHEN 5 THEN '707'
153122 WHEN 6 THEN '707'
153123 WHEN 7 THEN '707'
153124 WHEN 8 THEN '707'
153125 WHEN 9 THEN '707'
153126
153127 ELSE null
153128 END source_application_id
153129 , 'S' source_type_code
153130 , CASE r
153131 WHEN 1 THEN 'CODE_COMBINATION_ID'
153132 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
153133 WHEN 3 THEN 'CURRENCY_CODE'
153134 WHEN 4 THEN 'ENTERED_AMOUNT'
153135 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
153136 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
153137 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
153138 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
153139 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
153140
153141 ELSE null
153142 END source_code
153143 , CASE r
153144 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
153145 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
153146 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
153147 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
153148 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
153149 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
153150 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
153151 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
153152 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
153153
153154 ELSE null
153155 END source_value
153156 , null source_meaning
153157 FROM xla_events_gt xet
153158 , CST_XLA_INV_LINES_V l2
153159 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
153160 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
153161 AND xet.event_class_code = C_EVENT_CLASS_CODE
153162 AND l2.event_id = xet.event_id
153163
153164 )
153165 ;
153166 --
153167 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153168
153169 trace
153170 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
153171 ,p_level => C_LEVEL_STATEMENT
153172 ,p_module => l_log_module);
153173
153174 END IF;
153175
153176
153177 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153178 trace
153179 (p_msg => 'END of insert_sources_266'
153180 ,p_level => C_LEVEL_PROCEDURE
153181 ,p_module => l_log_module);
153182 END IF;
153183 EXCEPTION
153184 WHEN xla_exceptions_pkg.application_exception THEN
153185 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153186 trace
153187 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153188 ,p_level => C_LEVEL_EXCEPTION
153189 ,p_module => l_log_module);
153190 END IF;
153191 RAISE;
153192 WHEN OTHERS THEN
153193 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
153194 trace
153195 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
153196 ,p_level => C_LEVEL_EXCEPTION
153197 ,p_module => l_log_module);
153198 END IF;
153199 xla_exceptions_pkg.raise_message
153200 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_266');
153201 END insert_sources_266;
153202 --
153203
153204 ---------------------------------------
153205 --
153206 -- PRIVATE FUNCTION
153207 -- EventClass_266
153208 --
153209 ----------------------------------------
153210 --
153211 FUNCTION EventClass_266
153212 (p_application_id IN NUMBER
153213 ,p_base_ledger_id IN NUMBER
153214 ,p_target_ledger_id IN NUMBER
153215 ,p_language IN VARCHAR2
153216 ,p_currency_code IN VARCHAR2
153217 ,p_sla_ledger_id IN NUMBER
153218 ,p_pad_start_date IN DATE
153219 ,p_pad_end_date IN DATE
153220 ,p_primary_ledger_id IN NUMBER)
153221 RETURN BOOLEAN IS
153222 --
153223 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT_ALL';
153224 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_RCPT';
153225
153226 l_calculate_acctd_flag VARCHAR2(1) :='N';
153227 l_calculate_g_l_flag VARCHAR2(1) :='N';
153228 --
153229 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153230 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153231 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153232 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153233 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153234 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153235 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153236 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153237 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153238 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153239 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153240 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153241 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153242 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
153243 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153244 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153245 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153246 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
153247 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153248 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153249 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153250 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
153251 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
153252 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
153253 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
153254 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
153255
153256 l_event_id NUMBER;
153257 l_previous_event_id NUMBER;
153258 l_first_event_id NUMBER;
153259 l_last_event_id NUMBER;
153260
153261 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
153262 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
153263 --
153264 --
153265 l_result BOOLEAN := TRUE;
153266 l_rows NUMBER := 1000;
153267 l_event_type_name VARCHAR2(80) := 'All';
153268 l_event_class_name VARCHAR2(80) := 'Sender-side Intransit Interorg Receipt for FOB Receipt';
153269 l_description VARCHAR2(4000);
153270 l_transaction_reversal NUMBER;
153271 l_ae_header_id NUMBER;
153272 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
153273 l_log_module VARCHAR2(240);
153274 --
153275 l_acct_reversal_source VARCHAR2(30);
153276 l_trx_reversal_source VARCHAR2(30);
153277
153278 l_continue_with_lines BOOLEAN := TRUE;
153279 --
153280 l_acc_rev_gl_date_source DATE; -- 4262811
153281 --
153282 type t_array_event_id is table of number index by binary_integer;
153283
153284 l_rec_array_event t_rec_array_event;
153285 l_null_rec_array_event t_rec_array_event;
153286 l_array_ae_header_id xla_number_array_type;
153287 l_actual_flag VARCHAR2(1) := NULL;
153288 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
153289 l_balance_type_code VARCHAR2(1) :=NULL;
153290 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
153291
153292 --
153293 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
153294 --
153295
153296 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
153297 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
153298
153299 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
153300 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
153301 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
153302 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153303 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
153304 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
153305 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
153306 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
153307 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
153308
153309 l_array_source_12 t_array_source_12;
153310 l_array_source_12_meaning t_array_lookup_meaning;
153311 l_array_source_38 t_array_source_38;
153312 l_array_source_38_meaning t_array_lookup_meaning;
153313
153314 l_array_source_4 t_array_source_4;
153315 l_array_source_11 t_array_source_11;
153316 l_array_source_15 t_array_source_15;
153317 l_array_source_18 t_array_source_18;
153318 l_array_source_19 t_array_source_19;
153319 l_array_source_20 t_array_source_20;
153320 l_array_source_21 t_array_source_21;
153321 l_array_source_22 t_array_source_22;
153322 l_array_source_24 t_array_source_24;
153323
153324 --
153325 CURSOR header_cur
153326 IS
153327 SELECT /*+ leading(xet) cardinality(xet,1) */
153328 -- Event Class Code: FOB_RCPT_SENDER_RCPT
153329 xet.entity_id
153330 ,xet.legal_entity_id
153331 ,xet.entity_code
153332 ,xet.transaction_number
153333 ,xet.event_id
153334 ,xet.event_class_code
153335 ,xet.event_type_code
153336 ,xet.event_number
153337 ,xet.event_date
153338 ,xet.transaction_date
153339 ,xet.reference_num_1
153340 ,xet.reference_num_2
153341 ,xet.reference_num_3
153342 ,xet.reference_num_4
153343 ,xet.reference_char_1
153344 ,xet.reference_char_2
153345 ,xet.reference_char_3
153346 ,xet.reference_char_4
153347 ,xet.reference_date_1
153348 ,xet.reference_date_2
153349 ,xet.reference_date_3
153350 ,xet.reference_date_4
153351 ,xet.event_created_by
153352 ,xet.budgetary_control_flag
153353 , h1.DISTRIBUTION_TYPE source_12
153354 , fvl12.meaning source_12_meaning
153355 , h1.TRANSFER_TO_GL_INDICATOR source_38
153356 , fvl38.meaning source_38_meaning
153357 FROM xla_events_gt xet
153358 , CST_XLA_INV_HEADERS_V h1
153359 , fnd_lookup_values fvl12
153360 , fnd_lookup_values fvl38
153361 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
153362 and xet.event_class_code = C_EVENT_CLASS_CODE
153363 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
153364 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
153365 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
153366 AND fvl12.view_application_id(+) = 700
153367 AND fvl12.language(+) = USERENV('LANG')
153368 AND fvl38.lookup_type(+) = 'YES_NO'
153369 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
153370 AND fvl38.view_application_id(+) = 0
153371 AND fvl38.language(+) = USERENV('LANG')
153372
153373 ORDER BY event_id
153374 ;
153375
153376
153377 --
153378 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
153379 IS
153380 SELECT /*+ leading(xet) cardinality(xet,1) */
153381 -- Event Class Code: FOB_RCPT_SENDER_RCPT
153382 xet.entity_id
153383 ,xet.legal_entity_id
153384 ,xet.entity_code
153385 ,xet.transaction_number
153386 ,xet.event_id
153387 ,xet.event_class_code
153388 ,xet.event_type_code
153389 ,xet.event_number
153390 ,xet.event_date
153391 ,xet.transaction_date
153392 ,xet.reference_num_1
153393 ,xet.reference_num_2
153394 ,xet.reference_num_3
153395 ,xet.reference_num_4
153396 ,xet.reference_char_1
153397 ,xet.reference_char_2
153398 ,xet.reference_char_3
153399 ,xet.reference_char_4
153400 ,xet.reference_date_1
153401 ,xet.reference_date_2
153402 ,xet.reference_date_3
153403 ,xet.reference_date_4
153404 ,xet.event_created_by
153405 ,xet.budgetary_control_flag
153406 , l2.LINE_NUMBER
153407 , l2.CODE_COMBINATION_ID source_4
153408 , l2.DISTRIBUTION_IDENTIFIER source_11
153409 , l2.CURRENCY_CODE source_15
153410 , l2.ENTERED_AMOUNT source_18
153411 , l2.CURRENCY_CONVERSION_DATE source_19
153412 , l2.CURRENCY_CONVERSION_RATE source_20
153413 , l2.CURRENCY_CONVERSION_TYPE source_21
153414 , l2.ACCOUNTED_AMOUNT source_22
153415 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
153416 FROM xla_events_gt xet
153417 , CST_XLA_INV_LINES_V l2
153418 WHERE xet.event_id between x_first_event_id and x_last_event_id
153419 and xet.event_date between p_pad_start_date and p_pad_end_date
153420 and xet.event_class_code = C_EVENT_CLASS_CODE
153421 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
153422 ;
153423
153424 --
153425 BEGIN
153426 IF g_log_enabled THEN
153427 l_log_module := C_DEFAULT_MODULE||'.EventClass_266';
153428 END IF;
153429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
153430 trace
153431 (p_msg => 'BEGIN of EventClass_266'
153432 ,p_level => C_LEVEL_PROCEDURE
153433 ,p_module => l_log_module);
153434 END IF;
153435
153436 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153437 trace
153438 (p_msg => 'p_application_id = '||p_application_id||
153439 ' - p_base_ledger_id = '||p_base_ledger_id||
153440 ' - p_target_ledger_id = '||p_target_ledger_id||
153441 ' - p_language = '||p_language||
153442 ' - p_currency_code = '||p_currency_code||
153443 ' - p_sla_ledger_id = '||p_sla_ledger_id
153444 ,p_level => C_LEVEL_STATEMENT
153445 ,p_module => l_log_module);
153446 END IF;
153447 --
153448 -- initialze arrays
153449 --
153450 g_array_event.DELETE;
153451 l_rec_array_event := l_null_rec_array_event;
153452 --
153453 --------------------------------------
153454 -- 4262811 Initialze MPA Line Number
153455 --------------------------------------
153456 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
153457
153458 --
153459
153460 --
153461 OPEN header_cur;
153462 --
153463 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153464 trace
153465 (p_msg => 'SQL - FETCH header_cur'
153466 ,p_level => C_LEVEL_STATEMENT
153467 ,p_module => l_log_module);
153468 END IF;
153469 --
153470 LOOP
153471 FETCH header_cur BULK COLLECT INTO
153472 l_array_entity_id
153473 , l_array_legal_entity_id
153474 , l_array_entity_code
153475 , l_array_transaction_num
153476 , l_array_event_id
153477 , l_array_class_code
153478 , l_array_event_type
153479 , l_array_event_number
153480 , l_array_event_date
153481 , l_array_transaction_date
153482 , l_array_reference_num_1
153483 , l_array_reference_num_2
153484 , l_array_reference_num_3
153485 , l_array_reference_num_4
153486 , l_array_reference_char_1
153487 , l_array_reference_char_2
153488 , l_array_reference_char_3
153489 , l_array_reference_char_4
153490 , l_array_reference_date_1
153491 , l_array_reference_date_2
153492 , l_array_reference_date_3
153493 , l_array_reference_date_4
153494 , l_array_event_created_by
153495 , l_array_budgetary_control_flag
153496 , l_array_source_12
153497 , l_array_source_12_meaning
153498 , l_array_source_38
153499 , l_array_source_38_meaning
153500 LIMIT l_rows;
153501 --
153502 IF (C_LEVEL_EVENT >= g_log_level) THEN
153503 trace
153504 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
153505 ,p_level => C_LEVEL_EVENT
153506 ,p_module => l_log_module);
153507 END IF;
153508 --
153509 EXIT WHEN l_array_entity_id.COUNT = 0;
153510
153511 -- initialize arrays
153512 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
153513 XLA_AE_LINES_PKG.g_rec_lines := NULL;
153514
153515 --
153516 -- Bug 4458708
153517 --
153518 XLA_AE_LINES_PKG.g_LineNumber := 0;
153519
153520
153521 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
153522 g_last_hdr_idx := l_array_event_id.LAST;
153523 --
153524 -- loop for the headers. Each iteration is for each header extract row
153525 -- fetched in header cursor
153526 --
153527 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
153528
153529 --
153530 -- set event info as cache for other routines to refer event attributes
153531 --
153532 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
153533 (p_application_id => p_application_id
153534 ,p_primary_ledger_id => p_primary_ledger_id
153535 ,p_base_ledger_id => p_base_ledger_id
153536 ,p_target_ledger_id => p_target_ledger_id
153537 ,p_entity_id => l_array_entity_id(hdr_idx)
153538 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
153539 ,p_entity_code => l_array_entity_code(hdr_idx)
153540 ,p_transaction_num => l_array_transaction_num(hdr_idx)
153541 ,p_event_id => l_array_event_id(hdr_idx)
153542 ,p_event_class_code => l_array_class_code(hdr_idx)
153543 ,p_event_type_code => l_array_event_type(hdr_idx)
153544 ,p_event_number => l_array_event_number(hdr_idx)
153545 ,p_event_date => l_array_event_date(hdr_idx)
153546 ,p_transaction_date => l_array_transaction_date(hdr_idx)
153547 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
153548 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
153549 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
153550 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
153551 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
153552 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
153553 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
153554 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
153555 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
153556 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
153557 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
153558 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
153559 ,p_event_created_by => l_array_event_created_by(hdr_idx)
153560 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
153561
153562 --
153563 -- set the status of entry to C_VALID (0)
153564 --
153565 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
153566
153567 --
153568 -- initialize a row for ae header
153569 --
153570 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
153571
153572 l_event_id := l_array_event_id(hdr_idx);
153573
153574 --
153575 -- storing the hdr_idx for event. May be used by line cursor.
153576 --
153577 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
153578
153579 --
153580 -- store sources from header extract. This can be improved to
153581 -- store only those sources from header extract that may be used in lines
153582 --
153583
153584 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
153585 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
153586 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
153587 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
153588
153589 --
153590 -- initilaize the status of ae headers for diffrent balance types
153591 -- the status is initialised to C_NOT_CREATED (2)
153592 --
153593 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153594 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153595 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
153596
153597 --
153598 -- call api to validate and store accounting attributes for header
153599 --
153600
153601 ------------------------------------------------------------
153602 -- Accrual Reversal : to get date for Standard Source (NONE)
153603 ------------------------------------------------------------
153604 l_acc_rev_gl_date_source := NULL;
153605
153606 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
153607 l_rec_acct_attrs.array_date_value(1) :=
153608 xla_ae_sources_pkg.GetSystemSourceDate(
153609 p_source_code => 'XLA_REFERENCE_DATE_1'
153610 , p_source_type_code => 'Y'
153611 , p_source_application_id => 602
153612 );
153613 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
153614 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
153615
153616
153617 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
153618
153619 XLA_AE_HEADER_PKG.SetJeCategoryName;
153620
153621 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
153622 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
153623 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
153624 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
153625 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
153626
153627
153628 -- No header level analytical criteria
153629
153630 --
153631 --accounting attribute enhancement, bug 3612931
153632 --
153633 l_trx_reversal_source := SUBSTR(NULL, 1,30);
153634
153635 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
153636 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
153637
153638 xla_accounting_err_pkg.build_message
153639 (p_appli_s_name => 'XLA'
153640 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
153641 ,p_token_1 => 'ACCT_ATTR_NAME'
153642 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
153643 ,p_token_2 => 'PRODUCT_NAME'
153644 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
153645 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
153646 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
153647 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
153648
153649 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
153650 --
153651 -- following sets the accounting attributes needed to reverse
153652 -- accounting for a distributeion
153653 --
153654 xla_ae_lines_pkg.SetTrxReversalAttrs
153655 (p_event_id => l_event_id
153656 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
153657 ,p_trx_reversal_source => l_trx_reversal_source);
153658
153659 END IF;
153660
153661
153662 ----------------------------------------------------------------
153663 -- 4262811 - update the header statuses to invalid in need be
153664 ----------------------------------------------------------------
153665 --
153666 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
153667
153668
153669 -----------------------------------------------
153670 -- No accrual reversal for the event class/type
153671 -----------------------------------------------
153672 ----------------------------------------------------------------
153673
153674 --
153675 -- this ends the header loop iteration for one bulk fetch
153676 --
153677 END LOOP;
153678
153679 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
153680 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
153681
153682 --
153683 -- insert dummy rows into lines gt table that were created due to
153684 -- transaction reversals
153685 --
153686 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
153687 l_result := XLA_AE_LINES_PKG.InsertLines;
153688 END IF;
153689
153690 --
153691 -- reset the temp_line_num for each set of events fetched from header
153692 -- cursor rather than doing it for each new event in line cursor
153693 -- Bug 3939231
153694 --
153695 xla_ae_lines_pkg.g_temp_line_num := 0;
153696
153697
153698
153699 --
153700 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
153701 --
153702 --
153703 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153704
153705 trace
153706 (p_msg => 'SQL - FETCH line_cur'
153707 ,p_level => C_LEVEL_STATEMENT
153708 ,p_module => l_log_module);
153709
153710 END IF;
153711 --
153712 --
153713 LOOP
153714 --
153715 FETCH line_cur BULK COLLECT INTO
153716 l_array_entity_id
153717 , l_array_legal_entity_id
153718 , l_array_entity_code
153719 , l_array_transaction_num
153720 , l_array_event_id
153721 , l_array_class_code
153722 , l_array_event_type
153723 , l_array_event_number
153724 , l_array_event_date
153725 , l_array_transaction_date
153726 , l_array_reference_num_1
153727 , l_array_reference_num_2
153728 , l_array_reference_num_3
153729 , l_array_reference_num_4
153730 , l_array_reference_char_1
153731 , l_array_reference_char_2
153732 , l_array_reference_char_3
153733 , l_array_reference_char_4
153734 , l_array_reference_date_1
153735 , l_array_reference_date_2
153736 , l_array_reference_date_3
153737 , l_array_reference_date_4
153738 , l_array_event_created_by
153739 , l_array_budgetary_control_flag
153740 , l_array_extract_line_num
153741 , l_array_source_4
153742 , l_array_source_11
153743 , l_array_source_15
153744 , l_array_source_18
153745 , l_array_source_19
153746 , l_array_source_20
153747 , l_array_source_21
153748 , l_array_source_22
153749 , l_array_source_24
153750 LIMIT l_rows;
153751
153752 --
153753 IF (C_LEVEL_EVENT >= g_log_level) THEN
153754 trace
153755 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
153756 ,p_level => C_LEVEL_EVENT
153757 ,p_module => l_log_module);
153758 END IF;
153759 --
153760 EXIT WHEN l_array_entity_id.count = 0;
153761
153762 XLA_AE_LINES_PKG.g_rec_lines := null;
153763
153764 --
153765 -- Bug 4458708
153766 --
153767 XLA_AE_LINES_PKG.g_LineNumber := 0;
153768 --
153769 --
153770
153771 FOR Idx IN 1..l_array_event_id.count LOOP
153772 --
153773 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
153774 --
153775 l_event_id := l_array_event_id(idx); -- 5648433
153776
153777 --
153778 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
153779 --
153780
153781 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
153782 (g_array_event(l_event_id).array_value_num('header_index'))
153783 ,'N'
153784 ) <> 'Y'
153785 THEN
153786 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
153787 trace
153788 (p_msg => 'Trancaction revesal option is not Y '
153789 ,p_level => C_LEVEL_STATEMENT
153790 ,p_module => l_log_module);
153791 END IF;
153792
153793 --
153794 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
153795 --
153796 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
153797 --
153798 -- set event info as cache for other routines to refer event attributes
153799 --
153800
153801 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
153802 l_previous_event_id := l_event_id;
153803
153804 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
153805 (p_application_id => p_application_id
153806 ,p_primary_ledger_id => p_primary_ledger_id
153807 ,p_base_ledger_id => p_base_ledger_id
153808 ,p_target_ledger_id => p_target_ledger_id
153809 ,p_entity_id => l_array_entity_id(Idx)
153810 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
153811 ,p_entity_code => l_array_entity_code(Idx)
153812 ,p_transaction_num => l_array_transaction_num(Idx)
153813 ,p_event_id => l_array_event_id(Idx)
153814 ,p_event_class_code => l_array_class_code(Idx)
153815 ,p_event_type_code => l_array_event_type(Idx)
153816 ,p_event_number => l_array_event_number(Idx)
153817 ,p_event_date => l_array_event_date(Idx)
153818 ,p_transaction_date => l_array_transaction_date(Idx)
153819 ,p_reference_num_1 => l_array_reference_num_1(Idx)
153820 ,p_reference_num_2 => l_array_reference_num_2(Idx)
153821 ,p_reference_num_3 => l_array_reference_num_3(Idx)
153822 ,p_reference_num_4 => l_array_reference_num_4(Idx)
153823 ,p_reference_char_1 => l_array_reference_char_1(Idx)
153824 ,p_reference_char_2 => l_array_reference_char_2(Idx)
153825 ,p_reference_char_3 => l_array_reference_char_3(Idx)
153826 ,p_reference_char_4 => l_array_reference_char_4(Idx)
153827 ,p_reference_date_1 => l_array_reference_date_1(Idx)
153828 ,p_reference_date_2 => l_array_reference_date_2(Idx)
153829 ,p_reference_date_3 => l_array_reference_date_3(Idx)
153830 ,p_reference_date_4 => l_array_reference_date_4(Idx)
153831 ,p_event_created_by => l_array_event_created_by(Idx)
153832 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
153833 --
153834 END IF;
153835
153836
153837
153838 --
153839 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
153840
153841 l_acct_reversal_source := SUBSTR(NULL, 1,30);
153842
153843 IF l_continue_with_lines THEN
153844 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
153845 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
153846
153847 xla_accounting_err_pkg.build_message
153848 (p_appli_s_name => 'XLA'
153849 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
153850 ,p_token_1 => 'LINE_NUMBER'
153851 ,p_value_1 => l_array_extract_line_num(Idx)
153852 ,p_token_2 => 'PRODUCT_NAME'
153853 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
153854 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
153855 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
153856 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
153857
153858 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
153859 --
153860 -- following sets the accounting attributes needed to reverse
153861 -- accounting for a distributeion
153862 --
153863
153864 --
153865 -- 5217187
153866 --
153867 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
153868 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
153869 g_array_event(l_event_id).array_value_num('header_index'));
153870 --
153871 --
153872
153873 -- No reversal code generated
153874
153875 xla_ae_lines_pkg.SetAcctReversalAttrs
153876 (p_event_id => l_event_id
153877 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
153878 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153879 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
153880 END IF;
153881
153882 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
153883 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
153884
153885 --
153886 AcctLineType_19 (
153887 p_application_id => p_application_id
153888 ,p_event_id => l_event_id
153889 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153890 ,p_calculate_g_l_flag => l_calculate_g_l_flag
153891 ,p_actual_flag => l_actual_flag
153892 ,p_balance_type_code => l_balance_type_code
153893 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153894
153895 , p_source_4 => l_array_source_4(Idx)
153896 , p_source_11 => l_array_source_11(Idx)
153897 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153898 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153899 , p_source_15 => l_array_source_15(Idx)
153900 , p_source_18 => l_array_source_18(Idx)
153901 , p_source_19 => l_array_source_19(Idx)
153902 , p_source_20 => l_array_source_20(Idx)
153903 , p_source_21 => l_array_source_21(Idx)
153904 , p_source_22 => l_array_source_22(Idx)
153905 , p_source_24 => l_array_source_24(Idx)
153906 );
153907 If(l_balance_type_code = 'A') THEN
153908 l_actual_gain_loss_ref := l_gain_or_loss_ref;
153909 END IF;
153910
153911 --
153912
153913
153914 --
153915 AcctLineType_70 (
153916 p_application_id => p_application_id
153917 ,p_event_id => l_event_id
153918 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153919 ,p_calculate_g_l_flag => l_calculate_g_l_flag
153920 ,p_actual_flag => l_actual_flag
153921 ,p_balance_type_code => l_balance_type_code
153922 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153923
153924 , p_source_4 => l_array_source_4(Idx)
153925 , p_source_11 => l_array_source_11(Idx)
153926 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153927 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153928 , p_source_15 => l_array_source_15(Idx)
153929 , p_source_18 => l_array_source_18(Idx)
153930 , p_source_19 => l_array_source_19(Idx)
153931 , p_source_20 => l_array_source_20(Idx)
153932 , p_source_21 => l_array_source_21(Idx)
153933 , p_source_22 => l_array_source_22(Idx)
153934 , p_source_24 => l_array_source_24(Idx)
153935 );
153936 If(l_balance_type_code = 'A') THEN
153937 l_actual_gain_loss_ref := l_gain_or_loss_ref;
153938 END IF;
153939
153940 --
153941
153942
153943 --
153944 AcctLineType_88 (
153945 p_application_id => p_application_id
153946 ,p_event_id => l_event_id
153947 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153948 ,p_calculate_g_l_flag => l_calculate_g_l_flag
153949 ,p_actual_flag => l_actual_flag
153950 ,p_balance_type_code => l_balance_type_code
153951 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153952
153953 , p_source_4 => l_array_source_4(Idx)
153954 , p_source_11 => l_array_source_11(Idx)
153955 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153956 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153957 , p_source_15 => l_array_source_15(Idx)
153958 , p_source_18 => l_array_source_18(Idx)
153959 , p_source_19 => l_array_source_19(Idx)
153960 , p_source_20 => l_array_source_20(Idx)
153961 , p_source_21 => l_array_source_21(Idx)
153962 , p_source_22 => l_array_source_22(Idx)
153963 , p_source_24 => l_array_source_24(Idx)
153964 );
153965 If(l_balance_type_code = 'A') THEN
153966 l_actual_gain_loss_ref := l_gain_or_loss_ref;
153967 END IF;
153968
153969 --
153970
153971
153972 --
153973 AcctLineType_99 (
153974 p_application_id => p_application_id
153975 ,p_event_id => l_event_id
153976 ,p_calculate_acctd_flag => l_calculate_acctd_flag
153977 ,p_calculate_g_l_flag => l_calculate_g_l_flag
153978 ,p_actual_flag => l_actual_flag
153979 ,p_balance_type_code => l_balance_type_code
153980 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
153981
153982 , p_source_4 => l_array_source_4(Idx)
153983 , p_source_11 => l_array_source_11(Idx)
153984 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
153985 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
153986 , p_source_15 => l_array_source_15(Idx)
153987 , p_source_18 => l_array_source_18(Idx)
153988 , p_source_19 => l_array_source_19(Idx)
153989 , p_source_20 => l_array_source_20(Idx)
153990 , p_source_21 => l_array_source_21(Idx)
153991 , p_source_22 => l_array_source_22(Idx)
153992 , p_source_24 => l_array_source_24(Idx)
153993 );
153994 If(l_balance_type_code = 'A') THEN
153995 l_actual_gain_loss_ref := l_gain_or_loss_ref;
153996 END IF;
153997
153998 --
153999
154000
154001 --
154002 AcctLineType_120 (
154003 p_application_id => p_application_id
154004 ,p_event_id => l_event_id
154005 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154006 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154007 ,p_actual_flag => l_actual_flag
154008 ,p_balance_type_code => l_balance_type_code
154009 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154010
154011 , p_source_4 => l_array_source_4(Idx)
154012 , p_source_11 => l_array_source_11(Idx)
154013 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154014 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154015 , p_source_15 => l_array_source_15(Idx)
154016 , p_source_18 => l_array_source_18(Idx)
154017 , p_source_19 => l_array_source_19(Idx)
154018 , p_source_20 => l_array_source_20(Idx)
154019 , p_source_21 => l_array_source_21(Idx)
154020 , p_source_22 => l_array_source_22(Idx)
154021 , p_source_24 => l_array_source_24(Idx)
154022 );
154023 If(l_balance_type_code = 'A') THEN
154024 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154025 END IF;
154026
154027 --
154028
154029
154030 --
154031 AcctLineType_126 (
154032 p_application_id => p_application_id
154033 ,p_event_id => l_event_id
154034 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154035 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154036 ,p_actual_flag => l_actual_flag
154037 ,p_balance_type_code => l_balance_type_code
154038 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154039
154040 , p_source_4 => l_array_source_4(Idx)
154041 , p_source_11 => l_array_source_11(Idx)
154042 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154043 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154044 , p_source_15 => l_array_source_15(Idx)
154045 , p_source_18 => l_array_source_18(Idx)
154046 , p_source_19 => l_array_source_19(Idx)
154047 , p_source_20 => l_array_source_20(Idx)
154048 , p_source_21 => l_array_source_21(Idx)
154049 , p_source_22 => l_array_source_22(Idx)
154050 , p_source_24 => l_array_source_24(Idx)
154051 );
154052 If(l_balance_type_code = 'A') THEN
154053 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154054 END IF;
154055
154056 --
154057
154058
154059 --
154060 AcctLineType_196 (
154061 p_application_id => p_application_id
154062 ,p_event_id => l_event_id
154063 ,p_calculate_acctd_flag => l_calculate_acctd_flag
154064 ,p_calculate_g_l_flag => l_calculate_g_l_flag
154065 ,p_actual_flag => l_actual_flag
154066 ,p_balance_type_code => l_balance_type_code
154067 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
154068
154069 , p_source_4 => l_array_source_4(Idx)
154070 , p_source_11 => l_array_source_11(Idx)
154071 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
154072 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
154073 , p_source_15 => l_array_source_15(Idx)
154074 , p_source_18 => l_array_source_18(Idx)
154075 , p_source_19 => l_array_source_19(Idx)
154076 , p_source_20 => l_array_source_20(Idx)
154077 , p_source_21 => l_array_source_21(Idx)
154078 , p_source_22 => l_array_source_22(Idx)
154079 , p_source_24 => l_array_source_24(Idx)
154080 );
154081 If(l_balance_type_code = 'A') THEN
154082 l_actual_gain_loss_ref := l_gain_or_loss_ref;
154083 END IF;
154084
154085 --
154086
154087 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
154088 -- or secondary ledger that has different currency with primary
154089 -- or alc that is calculated by sla
154090 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
154091 (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'))
154092
154093 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
154094 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
154095 AND (l_actual_flag = 'A')) THEN
154096 XLA_AE_LINES_PKG.CreateGainOrLossLines(
154097 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
154098 ,p_application_id => p_application_id
154099 ,p_amb_context_code => 'DEFAULT'
154100 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
154101 ,p_event_class_code => C_EVENT_CLASS_CODE
154102 ,p_event_type_code => C_EVENT_TYPE_CODE
154103
154104 ,p_gain_ccid => -1
154105 ,p_loss_ccid => -1
154106
154107 ,p_actual_flag => l_actual_flag
154108 ,p_enc_flag => null
154109 ,p_actual_g_l_ref => l_actual_gain_loss_ref
154110 ,p_enc_g_l_ref => null
154111 );
154112 END IF;
154113 END IF;
154114 END IF;
154115
154116 ELSE
154117 --
154118 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
154119 --
154120 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154121 trace
154122 (p_msg => 'Trancaction revesal option is Y'
154123 ,p_level => C_LEVEL_STATEMENT
154124 ,p_module => l_log_module);
154125 END IF;
154126 END IF;
154127
154128 END LOOP;
154129 l_result := XLA_AE_LINES_PKG.InsertLines ;
154130 end loop;
154131 close line_cur;
154132
154133
154134 --
154135 -- insert headers into xla_ae_headers_gt table
154136 --
154137 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
154138
154139 -- insert into errors table here.
154140
154141 END LOOP;
154142
154143 --
154144 -- 4865292
154145 --
154146 -- Compare g_hdr_extract_count with event count in
154147 -- CreateHeadersAndLines.
154148 --
154149 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
154150
154151 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154152 trace (p_msg => '# rows extracted from header extract objects '
154153 || ' (running total): '
154154 || g_hdr_extract_count
154155 ,p_level => C_LEVEL_STATEMENT
154156 ,p_module => l_log_module);
154157 END IF;
154158
154159 CLOSE header_cur;
154160 --
154161
154162 --
154163 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154164 trace
154165 (p_msg => 'END of EventClass_266'
154166 ,p_level => C_LEVEL_PROCEDURE
154167 ,p_module => l_log_module);
154168 END IF;
154169 --
154170 RETURN l_result;
154171 EXCEPTION
154172 WHEN xla_exceptions_pkg.application_exception THEN
154173
154174 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
154175
154176
154177 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
154178
154179 RAISE;
154180
154181 WHEN NO_DATA_FOUND THEN
154182
154183 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
154184 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
154185
154186 FOR header_record IN header_cur
154187 LOOP
154188 l_array_header_events(header_record.event_id) := header_record.event_id;
154189 END LOOP;
154190
154191 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
154192 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
154193
154194 fnd_file.put_line(fnd_file.LOG, ' ');
154195 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
154196 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
154197 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
154198
154199 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
154200 LOOP
154201 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
154202 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
154203 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
154204 END IF;
154205 END LOOP;
154206
154207 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
154208 fnd_file.put_line(fnd_file.LOG, ' ');
154209
154210
154211 xla_exceptions_pkg.raise_message
154212 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_266');
154213
154214
154215 WHEN OTHERS THEN
154216 xla_exceptions_pkg.raise_message
154217 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_266');
154218 END EventClass_266;
154219 --
154220
154221 ---------------------------------------
154222 --
154223 -- PRIVATE PROCEDURE
154224 -- insert_sources_267
154225 --
154226 ----------------------------------------
154227 --
154228 PROCEDURE insert_sources_267(
154229 p_target_ledger_id IN NUMBER
154230 , p_language IN VARCHAR2
154231 , p_sla_ledger_id IN NUMBER
154232 , p_pad_start_date IN DATE
154233 , p_pad_end_date IN DATE
154234 )
154235 IS
154236
154237 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP_ALL';
154238 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
154239 p_apps_owner VARCHAR2(30);
154240 l_log_module VARCHAR2(240);
154241 BEGIN
154242 IF g_log_enabled THEN
154243 l_log_module := C_DEFAULT_MODULE||'.insert_sources_267';
154244 END IF;
154245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154246
154247 trace
154248 (p_msg => 'BEGIN of insert_sources_267'
154249 ,p_level => C_LEVEL_PROCEDURE
154250 ,p_module => l_log_module);
154251
154252 END IF;
154253
154254 -- select APPS owner
154255 SELECT oracle_username
154256 INTO p_apps_owner
154257 FROM fnd_oracle_userid
154258 WHERE read_only_flag = 'U'
154259 ;
154260
154261 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154262 trace
154263 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
154264 ' - p_language = '||p_language||
154265 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
154266 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
154267 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
154268 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
154269 ,p_level => C_LEVEL_STATEMENT
154270 ,p_module => l_log_module);
154271 END IF;
154272
154273
154274 --
154275 INSERT INTO xla_diag_sources --hdr2
154276 (
154277 event_id
154278 , ledger_id
154279 , sla_ledger_id
154280 , description_language
154281 , object_name
154282 , object_type_code
154283 , line_number
154284 , source_application_id
154285 , source_type_code
154286 , source_code
154287 , source_value
154288 , source_meaning
154289 , created_by
154290 , creation_date
154291 , last_update_date
154292 , last_updated_by
154293 , last_update_login
154294 , program_update_date
154295 , program_application_id
154296 , program_id
154297 , request_id
154298 )
154299 SELECT
154300 event_id
154301 , p_target_ledger_id
154302 , p_sla_ledger_id
154303 , p_language
154304 , object_name
154305 , object_type_code
154306 , line_number
154307 , source_application_id
154308 , source_type_code
154309 , source_code
154310 , SUBSTR(source_value ,1,1996)
154311 , SUBSTR(source_meaning ,1,200)
154312 , xla_environment_pkg.g_Usr_Id
154313 , TRUNC(SYSDATE)
154314 , TRUNC(SYSDATE)
154315 , xla_environment_pkg.g_Usr_Id
154316 , xla_environment_pkg.g_Login_Id
154317 , TRUNC(SYSDATE)
154318 , xla_environment_pkg.g_Prog_Appl_Id
154319 , xla_environment_pkg.g_Prog_Id
154320 , xla_environment_pkg.g_Req_Id
154321 FROM (
154322 SELECT xet.event_id event_id
154323 , 0 line_number
154324 , CASE r
154325 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
154326 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
154327
154328 ELSE null
154329 END object_name
154330 , CASE r
154331 WHEN 1 THEN 'HEADER'
154332 WHEN 2 THEN 'HEADER'
154333
154334 ELSE null
154335 END object_type_code
154336 , CASE r
154337 WHEN 1 THEN '707'
154338 WHEN 2 THEN '707'
154339
154340 ELSE null
154341 END source_application_id
154342 , 'S' source_type_code
154343 , CASE r
154344 WHEN 1 THEN 'DISTRIBUTION_TYPE'
154345 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
154346
154347 ELSE null
154348 END source_code
154349 , CASE r
154350 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
154351 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
154352
154353 ELSE null
154354 END source_value
154355 , CASE r
154356 WHEN 1 THEN fvl12.meaning
154357 WHEN 2 THEN fvl38.meaning
154358
154359 ELSE null
154360 END source_meaning
154361 FROM xla_events_gt xet
154362 , CST_XLA_INV_HEADERS_V h1
154363 , fnd_lookup_values fvl12
154364 , fnd_lookup_values fvl38
154365 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
154366 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154367 AND xet.event_class_code = C_EVENT_CLASS_CODE
154368 AND h1.event_id = xet.event_id
154369 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
154370 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
154371 AND fvl12.view_application_id(+) = 700
154372 AND fvl12.language(+) = USERENV('LANG')
154373 AND fvl38.lookup_type(+) = 'YES_NO'
154374 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
154375 AND fvl38.view_application_id(+) = 0
154376 AND fvl38.language(+) = USERENV('LANG')
154377
154378 )
154379 ;
154380 --
154381 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154382
154383 trace
154384 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
154385 ,p_level => C_LEVEL_STATEMENT
154386 ,p_module => l_log_module);
154387
154388 END IF;
154389 --
154390
154391
154392
154393 --
154394 INSERT INTO xla_diag_sources --line2
154395 (
154396 event_id
154397 , ledger_id
154398 , sla_ledger_id
154399 , description_language
154400 , object_name
154401 , object_type_code
154402 , line_number
154403 , source_application_id
154404 , source_type_code
154405 , source_code
154406 , source_value
154407 , source_meaning
154408 , created_by
154409 , creation_date
154410 , last_update_date
154411 , last_updated_by
154412 , last_update_login
154413 , program_update_date
154414 , program_application_id
154415 , program_id
154416 , request_id
154417 )
154418 SELECT event_id
154419 , p_target_ledger_id
154420 , p_sla_ledger_id
154421 , p_language
154422 , object_name
154423 , object_type_code
154424 , line_number
154425 , source_application_id
154426 , source_type_code
154427 , source_code
154428 , SUBSTR(source_value,1,1996)
154429 , SUBSTR(source_meaning ,1,200)
154430 , xla_environment_pkg.g_Usr_Id
154431 , TRUNC(SYSDATE)
154432 , TRUNC(SYSDATE)
154433 , xla_environment_pkg.g_Usr_Id
154434 , xla_environment_pkg.g_Login_Id
154435 , TRUNC(SYSDATE)
154436 , xla_environment_pkg.g_Prog_Appl_Id
154437 , xla_environment_pkg.g_Prog_Id
154438 , xla_environment_pkg.g_Req_Id
154439 FROM (
154440 SELECT xet.event_id event_id
154441 , l2.line_number line_number
154442 , CASE r
154443 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
154444 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
154445 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
154446 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
154447 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
154448 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
154449 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
154450 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
154451 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
154452
154453 ELSE null
154454 END object_name
154455 , CASE r
154456 WHEN 1 THEN 'LINE'
154457 WHEN 2 THEN 'LINE'
154458 WHEN 3 THEN 'LINE'
154459 WHEN 4 THEN 'LINE'
154460 WHEN 5 THEN 'LINE'
154461 WHEN 6 THEN 'LINE'
154462 WHEN 7 THEN 'LINE'
154463 WHEN 8 THEN 'LINE'
154464 WHEN 9 THEN 'LINE'
154465
154466 ELSE null
154467 END object_type_code
154468 , CASE r
154469 WHEN 1 THEN '707'
154470 WHEN 2 THEN '707'
154471 WHEN 3 THEN '707'
154472 WHEN 4 THEN '707'
154473 WHEN 5 THEN '707'
154474 WHEN 6 THEN '707'
154475 WHEN 7 THEN '707'
154476 WHEN 8 THEN '707'
154477 WHEN 9 THEN '707'
154478
154479 ELSE null
154480 END source_application_id
154481 , 'S' source_type_code
154482 , CASE r
154483 WHEN 1 THEN 'CODE_COMBINATION_ID'
154484 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
154485 WHEN 3 THEN 'CURRENCY_CODE'
154486 WHEN 4 THEN 'ENTERED_AMOUNT'
154487 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
154488 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
154489 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
154490 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
154491 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
154492
154493 ELSE null
154494 END source_code
154495 , CASE r
154496 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
154497 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
154498 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
154499 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
154500 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
154501 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
154502 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
154503 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
154504 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
154505
154506 ELSE null
154507 END source_value
154508 , null source_meaning
154509 FROM xla_events_gt xet
154510 , CST_XLA_INV_LINES_V l2
154511 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
154512 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
154513 AND xet.event_class_code = C_EVENT_CLASS_CODE
154514 AND l2.event_id = xet.event_id
154515
154516 )
154517 ;
154518 --
154519 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154520
154521 trace
154522 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
154523 ,p_level => C_LEVEL_STATEMENT
154524 ,p_module => l_log_module);
154525
154526 END IF;
154527
154528
154529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154530 trace
154531 (p_msg => 'END of insert_sources_267'
154532 ,p_level => C_LEVEL_PROCEDURE
154533 ,p_module => l_log_module);
154534 END IF;
154535 EXCEPTION
154536 WHEN xla_exceptions_pkg.application_exception THEN
154537 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154538 trace
154539 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154540 ,p_level => C_LEVEL_EXCEPTION
154541 ,p_module => l_log_module);
154542 END IF;
154543 RAISE;
154544 WHEN OTHERS THEN
154545 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
154546 trace
154547 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
154548 ,p_level => C_LEVEL_EXCEPTION
154549 ,p_module => l_log_module);
154550 END IF;
154551 xla_exceptions_pkg.raise_message
154552 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_267');
154553 END insert_sources_267;
154554 --
154555
154556 ---------------------------------------
154557 --
154558 -- PRIVATE FUNCTION
154559 -- EventClass_267
154560 --
154561 ----------------------------------------
154562 --
154563 FUNCTION EventClass_267
154564 (p_application_id IN NUMBER
154565 ,p_base_ledger_id IN NUMBER
154566 ,p_target_ledger_id IN NUMBER
154567 ,p_language IN VARCHAR2
154568 ,p_currency_code IN VARCHAR2
154569 ,p_sla_ledger_id IN NUMBER
154570 ,p_pad_start_date IN DATE
154571 ,p_pad_end_date IN DATE
154572 ,p_primary_ledger_id IN NUMBER)
154573 RETURN BOOLEAN IS
154574 --
154575 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP_ALL';
154576 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_RCPT_SENDER_SHIP';
154577
154578 l_calculate_acctd_flag VARCHAR2(1) :='N';
154579 l_calculate_g_l_flag VARCHAR2(1) :='N';
154580 --
154581 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154582 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154583 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154584 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154585 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154586 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154587 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154588 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154589 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154590 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154591 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154592 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154593 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154594 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
154595 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154596 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154597 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154598 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
154599 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154600 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154601 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154602 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
154603 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
154604 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
154605 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
154606 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
154607
154608 l_event_id NUMBER;
154609 l_previous_event_id NUMBER;
154610 l_first_event_id NUMBER;
154611 l_last_event_id NUMBER;
154612
154613 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
154614 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
154615 --
154616 --
154617 l_result BOOLEAN := TRUE;
154618 l_rows NUMBER := 1000;
154619 l_event_type_name VARCHAR2(80) := 'All';
154620 l_event_class_name VARCHAR2(80) := 'Intransit Interorg Shipment for FOB Receipt';
154621 l_description VARCHAR2(4000);
154622 l_transaction_reversal NUMBER;
154623 l_ae_header_id NUMBER;
154624 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
154625 l_log_module VARCHAR2(240);
154626 --
154627 l_acct_reversal_source VARCHAR2(30);
154628 l_trx_reversal_source VARCHAR2(30);
154629
154630 l_continue_with_lines BOOLEAN := TRUE;
154631 --
154632 l_acc_rev_gl_date_source DATE; -- 4262811
154633 --
154634 type t_array_event_id is table of number index by binary_integer;
154635
154636 l_rec_array_event t_rec_array_event;
154637 l_null_rec_array_event t_rec_array_event;
154638 l_array_ae_header_id xla_number_array_type;
154639 l_actual_flag VARCHAR2(1) := NULL;
154640 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
154641 l_balance_type_code VARCHAR2(1) :=NULL;
154642 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
154643
154644 --
154645 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
154646 --
154647
154648 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
154649 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
154650
154651 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
154652 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
154653 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
154654 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
154655 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
154656 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
154657 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
154658 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
154659 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
154660
154661 l_array_source_12 t_array_source_12;
154662 l_array_source_12_meaning t_array_lookup_meaning;
154663 l_array_source_38 t_array_source_38;
154664 l_array_source_38_meaning t_array_lookup_meaning;
154665
154666 l_array_source_4 t_array_source_4;
154667 l_array_source_11 t_array_source_11;
154668 l_array_source_15 t_array_source_15;
154669 l_array_source_18 t_array_source_18;
154670 l_array_source_19 t_array_source_19;
154671 l_array_source_20 t_array_source_20;
154672 l_array_source_21 t_array_source_21;
154673 l_array_source_22 t_array_source_22;
154674 l_array_source_24 t_array_source_24;
154675
154676 --
154677 CURSOR header_cur
154678 IS
154679 SELECT /*+ leading(xet) cardinality(xet,1) */
154680 -- Event Class Code: FOB_RCPT_SENDER_SHIP
154681 xet.entity_id
154682 ,xet.legal_entity_id
154683 ,xet.entity_code
154684 ,xet.transaction_number
154685 ,xet.event_id
154686 ,xet.event_class_code
154687 ,xet.event_type_code
154688 ,xet.event_number
154689 ,xet.event_date
154690 ,xet.transaction_date
154691 ,xet.reference_num_1
154692 ,xet.reference_num_2
154693 ,xet.reference_num_3
154694 ,xet.reference_num_4
154695 ,xet.reference_char_1
154696 ,xet.reference_char_2
154697 ,xet.reference_char_3
154698 ,xet.reference_char_4
154699 ,xet.reference_date_1
154700 ,xet.reference_date_2
154701 ,xet.reference_date_3
154702 ,xet.reference_date_4
154703 ,xet.event_created_by
154704 ,xet.budgetary_control_flag
154705 , h1.DISTRIBUTION_TYPE source_12
154706 , fvl12.meaning source_12_meaning
154707 , h1.TRANSFER_TO_GL_INDICATOR source_38
154708 , fvl38.meaning source_38_meaning
154709 FROM xla_events_gt xet
154710 , CST_XLA_INV_HEADERS_V h1
154711 , fnd_lookup_values fvl12
154712 , fnd_lookup_values fvl38
154713 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
154714 and xet.event_class_code = C_EVENT_CLASS_CODE
154715 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
154716 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
154717 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
154718 AND fvl12.view_application_id(+) = 700
154719 AND fvl12.language(+) = USERENV('LANG')
154720 AND fvl38.lookup_type(+) = 'YES_NO'
154721 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
154722 AND fvl38.view_application_id(+) = 0
154723 AND fvl38.language(+) = USERENV('LANG')
154724
154725 ORDER BY event_id
154726 ;
154727
154728
154729 --
154730 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
154731 IS
154732 SELECT /*+ leading(xet) cardinality(xet,1) */
154733 -- Event Class Code: FOB_RCPT_SENDER_SHIP
154734 xet.entity_id
154735 ,xet.legal_entity_id
154736 ,xet.entity_code
154737 ,xet.transaction_number
154738 ,xet.event_id
154739 ,xet.event_class_code
154740 ,xet.event_type_code
154741 ,xet.event_number
154742 ,xet.event_date
154743 ,xet.transaction_date
154744 ,xet.reference_num_1
154745 ,xet.reference_num_2
154746 ,xet.reference_num_3
154747 ,xet.reference_num_4
154748 ,xet.reference_char_1
154749 ,xet.reference_char_2
154750 ,xet.reference_char_3
154751 ,xet.reference_char_4
154752 ,xet.reference_date_1
154753 ,xet.reference_date_2
154754 ,xet.reference_date_3
154755 ,xet.reference_date_4
154756 ,xet.event_created_by
154757 ,xet.budgetary_control_flag
154758 , l2.LINE_NUMBER
154759 , l2.CODE_COMBINATION_ID source_4
154760 , l2.DISTRIBUTION_IDENTIFIER source_11
154761 , l2.CURRENCY_CODE source_15
154762 , l2.ENTERED_AMOUNT source_18
154763 , l2.CURRENCY_CONVERSION_DATE source_19
154764 , l2.CURRENCY_CONVERSION_RATE source_20
154765 , l2.CURRENCY_CONVERSION_TYPE source_21
154766 , l2.ACCOUNTED_AMOUNT source_22
154767 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
154768 FROM xla_events_gt xet
154769 , CST_XLA_INV_LINES_V l2
154770 WHERE xet.event_id between x_first_event_id and x_last_event_id
154771 and xet.event_date between p_pad_start_date and p_pad_end_date
154772 and xet.event_class_code = C_EVENT_CLASS_CODE
154773 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
154774 ;
154775
154776 --
154777 BEGIN
154778 IF g_log_enabled THEN
154779 l_log_module := C_DEFAULT_MODULE||'.EventClass_267';
154780 END IF;
154781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
154782 trace
154783 (p_msg => 'BEGIN of EventClass_267'
154784 ,p_level => C_LEVEL_PROCEDURE
154785 ,p_module => l_log_module);
154786 END IF;
154787
154788 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154789 trace
154790 (p_msg => 'p_application_id = '||p_application_id||
154791 ' - p_base_ledger_id = '||p_base_ledger_id||
154792 ' - p_target_ledger_id = '||p_target_ledger_id||
154793 ' - p_language = '||p_language||
154794 ' - p_currency_code = '||p_currency_code||
154795 ' - p_sla_ledger_id = '||p_sla_ledger_id
154796 ,p_level => C_LEVEL_STATEMENT
154797 ,p_module => l_log_module);
154798 END IF;
154799 --
154800 -- initialze arrays
154801 --
154802 g_array_event.DELETE;
154803 l_rec_array_event := l_null_rec_array_event;
154804 --
154805 --------------------------------------
154806 -- 4262811 Initialze MPA Line Number
154807 --------------------------------------
154808 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
154809
154810 --
154811
154812 --
154813 OPEN header_cur;
154814 --
154815 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
154816 trace
154817 (p_msg => 'SQL - FETCH header_cur'
154818 ,p_level => C_LEVEL_STATEMENT
154819 ,p_module => l_log_module);
154820 END IF;
154821 --
154822 LOOP
154823 FETCH header_cur BULK COLLECT INTO
154824 l_array_entity_id
154825 , l_array_legal_entity_id
154826 , l_array_entity_code
154827 , l_array_transaction_num
154828 , l_array_event_id
154829 , l_array_class_code
154830 , l_array_event_type
154831 , l_array_event_number
154832 , l_array_event_date
154833 , l_array_transaction_date
154834 , l_array_reference_num_1
154835 , l_array_reference_num_2
154836 , l_array_reference_num_3
154837 , l_array_reference_num_4
154838 , l_array_reference_char_1
154839 , l_array_reference_char_2
154840 , l_array_reference_char_3
154841 , l_array_reference_char_4
154842 , l_array_reference_date_1
154843 , l_array_reference_date_2
154844 , l_array_reference_date_3
154845 , l_array_reference_date_4
154846 , l_array_event_created_by
154847 , l_array_budgetary_control_flag
154848 , l_array_source_12
154849 , l_array_source_12_meaning
154850 , l_array_source_38
154851 , l_array_source_38_meaning
154852 LIMIT l_rows;
154853 --
154854 IF (C_LEVEL_EVENT >= g_log_level) THEN
154855 trace
154856 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
154857 ,p_level => C_LEVEL_EVENT
154858 ,p_module => l_log_module);
154859 END IF;
154860 --
154861 EXIT WHEN l_array_entity_id.COUNT = 0;
154862
154863 -- initialize arrays
154864 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
154865 XLA_AE_LINES_PKG.g_rec_lines := NULL;
154866
154867 --
154868 -- Bug 4458708
154869 --
154870 XLA_AE_LINES_PKG.g_LineNumber := 0;
154871
154872
154873 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
154874 g_last_hdr_idx := l_array_event_id.LAST;
154875 --
154876 -- loop for the headers. Each iteration is for each header extract row
154877 -- fetched in header cursor
154878 --
154879 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
154880
154881 --
154882 -- set event info as cache for other routines to refer event attributes
154883 --
154884 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
154885 (p_application_id => p_application_id
154886 ,p_primary_ledger_id => p_primary_ledger_id
154887 ,p_base_ledger_id => p_base_ledger_id
154888 ,p_target_ledger_id => p_target_ledger_id
154889 ,p_entity_id => l_array_entity_id(hdr_idx)
154890 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
154891 ,p_entity_code => l_array_entity_code(hdr_idx)
154892 ,p_transaction_num => l_array_transaction_num(hdr_idx)
154893 ,p_event_id => l_array_event_id(hdr_idx)
154894 ,p_event_class_code => l_array_class_code(hdr_idx)
154895 ,p_event_type_code => l_array_event_type(hdr_idx)
154896 ,p_event_number => l_array_event_number(hdr_idx)
154897 ,p_event_date => l_array_event_date(hdr_idx)
154898 ,p_transaction_date => l_array_transaction_date(hdr_idx)
154899 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
154900 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
154901 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
154902 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
154903 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
154904 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
154905 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
154906 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
154907 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
154908 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
154909 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
154910 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
154911 ,p_event_created_by => l_array_event_created_by(hdr_idx)
154912 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
154913
154914 --
154915 -- set the status of entry to C_VALID (0)
154916 --
154917 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
154918
154919 --
154920 -- initialize a row for ae header
154921 --
154922 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
154923
154924 l_event_id := l_array_event_id(hdr_idx);
154925
154926 --
154927 -- storing the hdr_idx for event. May be used by line cursor.
154928 --
154929 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
154930
154931 --
154932 -- store sources from header extract. This can be improved to
154933 -- store only those sources from header extract that may be used in lines
154934 --
154935
154936 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
154937 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
154938 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
154939 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
154940
154941 --
154942 -- initilaize the status of ae headers for diffrent balance types
154943 -- the status is initialised to C_NOT_CREATED (2)
154944 --
154945 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154946 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154947 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
154948
154949 --
154950 -- call api to validate and store accounting attributes for header
154951 --
154952
154953 ------------------------------------------------------------
154954 -- Accrual Reversal : to get date for Standard Source (NONE)
154955 ------------------------------------------------------------
154956 l_acc_rev_gl_date_source := NULL;
154957
154958 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
154959 l_rec_acct_attrs.array_date_value(1) :=
154960 xla_ae_sources_pkg.GetSystemSourceDate(
154961 p_source_code => 'XLA_REFERENCE_DATE_1'
154962 , p_source_type_code => 'Y'
154963 , p_source_application_id => 602
154964 );
154965 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
154966 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
154967
154968
154969 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
154970
154971 XLA_AE_HEADER_PKG.SetJeCategoryName;
154972
154973 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
154974 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
154975 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
154976 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
154977 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
154978
154979
154980 -- No header level analytical criteria
154981
154982 --
154983 --accounting attribute enhancement, bug 3612931
154984 --
154985 l_trx_reversal_source := SUBSTR(NULL, 1,30);
154986
154987 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
154988 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
154989
154990 xla_accounting_err_pkg.build_message
154991 (p_appli_s_name => 'XLA'
154992 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
154993 ,p_token_1 => 'ACCT_ATTR_NAME'
154994 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
154995 ,p_token_2 => 'PRODUCT_NAME'
154996 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
154997 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
154998 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
154999 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
155000
155001 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
155002 --
155003 -- following sets the accounting attributes needed to reverse
155004 -- accounting for a distributeion
155005 --
155006 xla_ae_lines_pkg.SetTrxReversalAttrs
155007 (p_event_id => l_event_id
155008 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
155009 ,p_trx_reversal_source => l_trx_reversal_source);
155010
155011 END IF;
155012
155013
155014 ----------------------------------------------------------------
155015 -- 4262811 - update the header statuses to invalid in need be
155016 ----------------------------------------------------------------
155017 --
155018 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
155019
155020
155021 -----------------------------------------------
155022 -- No accrual reversal for the event class/type
155023 -----------------------------------------------
155024 ----------------------------------------------------------------
155025
155026 --
155027 -- this ends the header loop iteration for one bulk fetch
155028 --
155029 END LOOP;
155030
155031 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
155032 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
155033
155034 --
155035 -- insert dummy rows into lines gt table that were created due to
155036 -- transaction reversals
155037 --
155038 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
155039 l_result := XLA_AE_LINES_PKG.InsertLines;
155040 END IF;
155041
155042 --
155043 -- reset the temp_line_num for each set of events fetched from header
155044 -- cursor rather than doing it for each new event in line cursor
155045 -- Bug 3939231
155046 --
155047 xla_ae_lines_pkg.g_temp_line_num := 0;
155048
155049
155050
155051 --
155052 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
155053 --
155054 --
155055 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155056
155057 trace
155058 (p_msg => 'SQL - FETCH line_cur'
155059 ,p_level => C_LEVEL_STATEMENT
155060 ,p_module => l_log_module);
155061
155062 END IF;
155063 --
155064 --
155065 LOOP
155066 --
155067 FETCH line_cur BULK COLLECT INTO
155068 l_array_entity_id
155069 , l_array_legal_entity_id
155070 , l_array_entity_code
155071 , l_array_transaction_num
155072 , l_array_event_id
155073 , l_array_class_code
155074 , l_array_event_type
155075 , l_array_event_number
155076 , l_array_event_date
155077 , l_array_transaction_date
155078 , l_array_reference_num_1
155079 , l_array_reference_num_2
155080 , l_array_reference_num_3
155081 , l_array_reference_num_4
155082 , l_array_reference_char_1
155083 , l_array_reference_char_2
155084 , l_array_reference_char_3
155085 , l_array_reference_char_4
155086 , l_array_reference_date_1
155087 , l_array_reference_date_2
155088 , l_array_reference_date_3
155089 , l_array_reference_date_4
155090 , l_array_event_created_by
155091 , l_array_budgetary_control_flag
155092 , l_array_extract_line_num
155093 , l_array_source_4
155094 , l_array_source_11
155095 , l_array_source_15
155096 , l_array_source_18
155097 , l_array_source_19
155098 , l_array_source_20
155099 , l_array_source_21
155100 , l_array_source_22
155101 , l_array_source_24
155102 LIMIT l_rows;
155103
155104 --
155105 IF (C_LEVEL_EVENT >= g_log_level) THEN
155106 trace
155107 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
155108 ,p_level => C_LEVEL_EVENT
155109 ,p_module => l_log_module);
155110 END IF;
155111 --
155112 EXIT WHEN l_array_entity_id.count = 0;
155113
155114 XLA_AE_LINES_PKG.g_rec_lines := null;
155115
155116 --
155117 -- Bug 4458708
155118 --
155119 XLA_AE_LINES_PKG.g_LineNumber := 0;
155120 --
155121 --
155122
155123 FOR Idx IN 1..l_array_event_id.count LOOP
155124 --
155125 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
155126 --
155127 l_event_id := l_array_event_id(idx); -- 5648433
155128
155129 --
155130 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
155131 --
155132
155133 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
155134 (g_array_event(l_event_id).array_value_num('header_index'))
155135 ,'N'
155136 ) <> 'Y'
155137 THEN
155138 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155139 trace
155140 (p_msg => 'Trancaction revesal option is not Y '
155141 ,p_level => C_LEVEL_STATEMENT
155142 ,p_module => l_log_module);
155143 END IF;
155144
155145 --
155146 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
155147 --
155148 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
155149 --
155150 -- set event info as cache for other routines to refer event attributes
155151 --
155152
155153 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
155154 l_previous_event_id := l_event_id;
155155
155156 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
155157 (p_application_id => p_application_id
155158 ,p_primary_ledger_id => p_primary_ledger_id
155159 ,p_base_ledger_id => p_base_ledger_id
155160 ,p_target_ledger_id => p_target_ledger_id
155161 ,p_entity_id => l_array_entity_id(Idx)
155162 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
155163 ,p_entity_code => l_array_entity_code(Idx)
155164 ,p_transaction_num => l_array_transaction_num(Idx)
155165 ,p_event_id => l_array_event_id(Idx)
155166 ,p_event_class_code => l_array_class_code(Idx)
155167 ,p_event_type_code => l_array_event_type(Idx)
155168 ,p_event_number => l_array_event_number(Idx)
155169 ,p_event_date => l_array_event_date(Idx)
155170 ,p_transaction_date => l_array_transaction_date(Idx)
155171 ,p_reference_num_1 => l_array_reference_num_1(Idx)
155172 ,p_reference_num_2 => l_array_reference_num_2(Idx)
155173 ,p_reference_num_3 => l_array_reference_num_3(Idx)
155174 ,p_reference_num_4 => l_array_reference_num_4(Idx)
155175 ,p_reference_char_1 => l_array_reference_char_1(Idx)
155176 ,p_reference_char_2 => l_array_reference_char_2(Idx)
155177 ,p_reference_char_3 => l_array_reference_char_3(Idx)
155178 ,p_reference_char_4 => l_array_reference_char_4(Idx)
155179 ,p_reference_date_1 => l_array_reference_date_1(Idx)
155180 ,p_reference_date_2 => l_array_reference_date_2(Idx)
155181 ,p_reference_date_3 => l_array_reference_date_3(Idx)
155182 ,p_reference_date_4 => l_array_reference_date_4(Idx)
155183 ,p_event_created_by => l_array_event_created_by(Idx)
155184 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
155185 --
155186 END IF;
155187
155188
155189
155190 --
155191 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
155192
155193 l_acct_reversal_source := SUBSTR(NULL, 1,30);
155194
155195 IF l_continue_with_lines THEN
155196 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
155197 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
155198
155199 xla_accounting_err_pkg.build_message
155200 (p_appli_s_name => 'XLA'
155201 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
155202 ,p_token_1 => 'LINE_NUMBER'
155203 ,p_value_1 => l_array_extract_line_num(Idx)
155204 ,p_token_2 => 'PRODUCT_NAME'
155205 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
155206 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
155207 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
155208 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
155209
155210 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
155211 --
155212 -- following sets the accounting attributes needed to reverse
155213 -- accounting for a distributeion
155214 --
155215
155216 --
155217 -- 5217187
155218 --
155219 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
155220 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
155221 g_array_event(l_event_id).array_value_num('header_index'));
155222 --
155223 --
155224
155225 -- No reversal code generated
155226
155227 xla_ae_lines_pkg.SetAcctReversalAttrs
155228 (p_event_id => l_event_id
155229 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
155230 ,p_calculate_acctd_flag => l_calculate_acctd_flag
155231 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
155232 END IF;
155233
155234 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
155235 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
155236
155237 --
155238 AcctLineType_128 (
155239 p_application_id => p_application_id
155240 ,p_event_id => l_event_id
155241 ,p_calculate_acctd_flag => l_calculate_acctd_flag
155242 ,p_calculate_g_l_flag => l_calculate_g_l_flag
155243 ,p_actual_flag => l_actual_flag
155244 ,p_balance_type_code => l_balance_type_code
155245 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155246
155247 , p_source_4 => l_array_source_4(Idx)
155248 , p_source_11 => l_array_source_11(Idx)
155249 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155250 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155251 , p_source_15 => l_array_source_15(Idx)
155252 , p_source_18 => l_array_source_18(Idx)
155253 , p_source_19 => l_array_source_19(Idx)
155254 , p_source_20 => l_array_source_20(Idx)
155255 , p_source_21 => l_array_source_21(Idx)
155256 , p_source_22 => l_array_source_22(Idx)
155257 , p_source_24 => l_array_source_24(Idx)
155258 );
155259 If(l_balance_type_code = 'A') THEN
155260 l_actual_gain_loss_ref := l_gain_or_loss_ref;
155261 END IF;
155262
155263 --
155264
155265
155266 --
155267 AcctLineType_149 (
155268 p_application_id => p_application_id
155269 ,p_event_id => l_event_id
155270 ,p_calculate_acctd_flag => l_calculate_acctd_flag
155271 ,p_calculate_g_l_flag => l_calculate_g_l_flag
155272 ,p_actual_flag => l_actual_flag
155273 ,p_balance_type_code => l_balance_type_code
155274 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155275
155276 , p_source_4 => l_array_source_4(Idx)
155277 , p_source_11 => l_array_source_11(Idx)
155278 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155279 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155280 , p_source_15 => l_array_source_15(Idx)
155281 , p_source_18 => l_array_source_18(Idx)
155282 , p_source_19 => l_array_source_19(Idx)
155283 , p_source_20 => l_array_source_20(Idx)
155284 , p_source_21 => l_array_source_21(Idx)
155285 , p_source_22 => l_array_source_22(Idx)
155286 , p_source_24 => l_array_source_24(Idx)
155287 );
155288 If(l_balance_type_code = 'A') THEN
155289 l_actual_gain_loss_ref := l_gain_or_loss_ref;
155290 END IF;
155291
155292 --
155293
155294
155295 --
155296 AcctLineType_197 (
155297 p_application_id => p_application_id
155298 ,p_event_id => l_event_id
155299 ,p_calculate_acctd_flag => l_calculate_acctd_flag
155300 ,p_calculate_g_l_flag => l_calculate_g_l_flag
155301 ,p_actual_flag => l_actual_flag
155302 ,p_balance_type_code => l_balance_type_code
155303 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
155304
155305 , p_source_4 => l_array_source_4(Idx)
155306 , p_source_11 => l_array_source_11(Idx)
155307 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
155308 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
155309 , p_source_15 => l_array_source_15(Idx)
155310 , p_source_18 => l_array_source_18(Idx)
155311 , p_source_19 => l_array_source_19(Idx)
155312 , p_source_20 => l_array_source_20(Idx)
155313 , p_source_21 => l_array_source_21(Idx)
155314 , p_source_22 => l_array_source_22(Idx)
155315 , p_source_24 => l_array_source_24(Idx)
155316 );
155317 If(l_balance_type_code = 'A') THEN
155318 l_actual_gain_loss_ref := l_gain_or_loss_ref;
155319 END IF;
155320
155321 --
155322
155323 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
155324 -- or secondary ledger that has different currency with primary
155325 -- or alc that is calculated by sla
155326 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
155327 (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'))
155328
155329 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
155330 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
155331 AND (l_actual_flag = 'A')) THEN
155332 XLA_AE_LINES_PKG.CreateGainOrLossLines(
155333 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
155334 ,p_application_id => p_application_id
155335 ,p_amb_context_code => 'DEFAULT'
155336 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
155337 ,p_event_class_code => C_EVENT_CLASS_CODE
155338 ,p_event_type_code => C_EVENT_TYPE_CODE
155339
155340 ,p_gain_ccid => -1
155341 ,p_loss_ccid => -1
155342
155343 ,p_actual_flag => l_actual_flag
155344 ,p_enc_flag => null
155345 ,p_actual_g_l_ref => l_actual_gain_loss_ref
155346 ,p_enc_g_l_ref => null
155347 );
155348 END IF;
155349 END IF;
155350 END IF;
155351
155352 ELSE
155353 --
155354 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
155355 --
155356 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155357 trace
155358 (p_msg => 'Trancaction revesal option is Y'
155359 ,p_level => C_LEVEL_STATEMENT
155360 ,p_module => l_log_module);
155361 END IF;
155362 END IF;
155363
155364 END LOOP;
155365 l_result := XLA_AE_LINES_PKG.InsertLines ;
155366 end loop;
155367 close line_cur;
155368
155369
155370 --
155371 -- insert headers into xla_ae_headers_gt table
155372 --
155373 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
155374
155375 -- insert into errors table here.
155376
155377 END LOOP;
155378
155379 --
155380 -- 4865292
155381 --
155382 -- Compare g_hdr_extract_count with event count in
155383 -- CreateHeadersAndLines.
155384 --
155385 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
155386
155387 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155388 trace (p_msg => '# rows extracted from header extract objects '
155389 || ' (running total): '
155390 || g_hdr_extract_count
155391 ,p_level => C_LEVEL_STATEMENT
155392 ,p_module => l_log_module);
155393 END IF;
155394
155395 CLOSE header_cur;
155396 --
155397
155398 --
155399 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155400 trace
155401 (p_msg => 'END of EventClass_267'
155402 ,p_level => C_LEVEL_PROCEDURE
155403 ,p_module => l_log_module);
155404 END IF;
155405 --
155406 RETURN l_result;
155407 EXCEPTION
155408 WHEN xla_exceptions_pkg.application_exception THEN
155409
155410 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155411
155412
155413 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
155414
155415 RAISE;
155416
155417 WHEN NO_DATA_FOUND THEN
155418
155419 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
155420 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
155421
155422 FOR header_record IN header_cur
155423 LOOP
155424 l_array_header_events(header_record.event_id) := header_record.event_id;
155425 END LOOP;
155426
155427 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
155428 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
155429
155430 fnd_file.put_line(fnd_file.LOG, ' ');
155431 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155432 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
155433 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
155434
155435 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
155436 LOOP
155437 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
155438 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
155439 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
155440 END IF;
155441 END LOOP;
155442
155443 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
155444 fnd_file.put_line(fnd_file.LOG, ' ');
155445
155446
155447 xla_exceptions_pkg.raise_message
155448 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_267');
155449
155450
155451 WHEN OTHERS THEN
155452 xla_exceptions_pkg.raise_message
155453 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_267');
155454 END EventClass_267;
155455 --
155456
155457 ---------------------------------------
155458 --
155459 -- PRIVATE PROCEDURE
155460 -- insert_sources_268
155461 --
155462 ----------------------------------------
155463 --
155464 PROCEDURE insert_sources_268(
155465 p_target_ledger_id IN NUMBER
155466 , p_language IN VARCHAR2
155467 , p_sla_ledger_id IN NUMBER
155468 , p_pad_start_date IN DATE
155469 , p_pad_end_date IN DATE
155470 )
155471 IS
155472
155473 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
155474 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
155475 p_apps_owner VARCHAR2(30);
155476 l_log_module VARCHAR2(240);
155477 BEGIN
155478 IF g_log_enabled THEN
155479 l_log_module := C_DEFAULT_MODULE||'.insert_sources_268';
155480 END IF;
155481 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155482
155483 trace
155484 (p_msg => 'BEGIN of insert_sources_268'
155485 ,p_level => C_LEVEL_PROCEDURE
155486 ,p_module => l_log_module);
155487
155488 END IF;
155489
155490 -- select APPS owner
155491 SELECT oracle_username
155492 INTO p_apps_owner
155493 FROM fnd_oracle_userid
155494 WHERE read_only_flag = 'U'
155495 ;
155496
155497 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155498 trace
155499 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
155500 ' - p_language = '||p_language||
155501 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
155502 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
155503 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
155504 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
155505 ,p_level => C_LEVEL_STATEMENT
155506 ,p_module => l_log_module);
155507 END IF;
155508
155509
155510 --
155511 INSERT INTO xla_diag_sources --hdr2
155512 (
155513 event_id
155514 , ledger_id
155515 , sla_ledger_id
155516 , description_language
155517 , object_name
155518 , object_type_code
155519 , line_number
155520 , source_application_id
155521 , source_type_code
155522 , source_code
155523 , source_value
155524 , source_meaning
155525 , created_by
155526 , creation_date
155527 , last_update_date
155528 , last_updated_by
155529 , last_update_login
155530 , program_update_date
155531 , program_application_id
155532 , program_id
155533 , request_id
155534 )
155535 SELECT
155536 event_id
155537 , p_target_ledger_id
155538 , p_sla_ledger_id
155539 , p_language
155540 , object_name
155541 , object_type_code
155542 , line_number
155543 , source_application_id
155544 , source_type_code
155545 , source_code
155546 , SUBSTR(source_value ,1,1996)
155547 , SUBSTR(source_meaning ,1,200)
155548 , xla_environment_pkg.g_Usr_Id
155549 , TRUNC(SYSDATE)
155550 , TRUNC(SYSDATE)
155551 , xla_environment_pkg.g_Usr_Id
155552 , xla_environment_pkg.g_Login_Id
155553 , TRUNC(SYSDATE)
155554 , xla_environment_pkg.g_Prog_Appl_Id
155555 , xla_environment_pkg.g_Prog_Id
155556 , xla_environment_pkg.g_Req_Id
155557 FROM (
155558 SELECT xet.event_id event_id
155559 , 0 line_number
155560 , CASE r
155561 WHEN 1 THEN 'CST_XLA_INV_REF_V'
155562 WHEN 2 THEN 'CST_XLA_INV_REF_V'
155563 WHEN 3 THEN 'CST_XLA_INV_REF_V'
155564 WHEN 4 THEN 'CST_XLA_INV_HEADERS_V'
155565 WHEN 5 THEN 'CST_XLA_INV_REF_V'
155566 WHEN 6 THEN 'CST_XLA_INV_REF_V'
155567 WHEN 7 THEN 'PSA_CST_XLA_UPG_V'
155568 WHEN 8 THEN 'CST_XLA_INV_REF_V'
155569 WHEN 9 THEN 'CST_XLA_INV_REF_V'
155570 WHEN 10 THEN 'PO_REQ_DISTS_REF_V'
155571 WHEN 11 THEN 'PO_REQ_HEADERS_REF_V'
155572 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V'
155573
155574 ELSE null
155575 END object_name
155576 , CASE r
155577 WHEN 1 THEN 'HEADER'
155578 WHEN 2 THEN 'HEADER'
155579 WHEN 3 THEN 'HEADER'
155580 WHEN 4 THEN 'HEADER'
155581 WHEN 5 THEN 'HEADER'
155582 WHEN 6 THEN 'HEADER'
155583 WHEN 7 THEN 'HEADER'
155584 WHEN 8 THEN 'HEADER'
155585 WHEN 9 THEN 'HEADER'
155586 WHEN 10 THEN 'HEADER'
155587 WHEN 11 THEN 'HEADER'
155588 WHEN 12 THEN 'HEADER'
155589
155590 ELSE null
155591 END object_type_code
155592 , CASE r
155593 WHEN 1 THEN '707'
155594 WHEN 2 THEN '707'
155595 WHEN 3 THEN '707'
155596 WHEN 4 THEN '707'
155597 WHEN 5 THEN '707'
155598 WHEN 6 THEN '707'
155599 WHEN 7 THEN '707'
155600 WHEN 8 THEN '707'
155601 WHEN 9 THEN '707'
155602 WHEN 10 THEN '201'
155603 WHEN 11 THEN '201'
155604 WHEN 12 THEN '707'
155605
155606 ELSE null
155607 END source_application_id
155608 , 'S' source_type_code
155609 , CASE r
155610 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
155611 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
155612 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
155613 WHEN 4 THEN 'DISTRIBUTION_TYPE'
155614 WHEN 5 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
155615 WHEN 6 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
155616 WHEN 7 THEN 'CST_ENCUM_UPG_OPTION'
155617 WHEN 8 THEN 'TXN_PO_DISTRIBUTION_ID'
155618 WHEN 9 THEN 'TXN_PO_HEADER_ID'
155619 WHEN 10 THEN 'REQ_BUDGET_ACCOUNT'
155620 WHEN 11 THEN 'REQ_ENCUMBRANCE_TYPE_ID'
155621 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR'
155622
155623 ELSE null
155624 END source_code
155625 , CASE r
155626 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
155627 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
155628 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
155629 WHEN 4 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
155630 WHEN 5 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
155631 WHEN 6 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
155632 WHEN 7 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
155633 WHEN 8 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
155634 WHEN 9 THEN TO_CHAR(h3.TXN_PO_HEADER_ID)
155635 WHEN 10 THEN TO_CHAR(h4.REQ_BUDGET_ACCOUNT)
155636 WHEN 11 THEN TO_CHAR(h5.REQ_ENCUMBRANCE_TYPE_ID)
155637 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
155638
155639 ELSE null
155640 END source_value
155641 , CASE r
155642 WHEN 4 THEN fvl12.meaning
155643 WHEN 12 THEN fvl38.meaning
155644
155645 ELSE null
155646 END source_meaning
155647 FROM xla_events_gt xet
155648 , CST_XLA_INV_HEADERS_V h1
155649 , CST_XLA_INV_REF_V h3
155650 , PO_REQ_DISTS_REF_V h4
155651 , PO_REQ_HEADERS_REF_V h5
155652 , PSA_CST_XLA_UPG_V h6
155653 , fnd_lookup_values fvl12
155654 , fnd_lookup_values fvl38
155655 ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
155656 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
155657 AND xet.event_class_code = C_EVENT_CLASS_CODE
155658 AND h1.event_id = xet.event_id
155659 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'
155660 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
155661 AND fvl12.view_application_id(+) = 700
155662 AND fvl12.language(+) = USERENV('LANG')
155663 AND fvl38.lookup_type(+) = 'YES_NO'
155664 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
155665 AND fvl38.view_application_id(+) = 0
155666 AND fvl38.language(+) = USERENV('LANG')
155667
155668 )
155669 ;
155670 --
155671 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155672
155673 trace
155674 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
155675 ,p_level => C_LEVEL_STATEMENT
155676 ,p_module => l_log_module);
155677
155678 END IF;
155679 --
155680
155681
155682
155683 --
155684 INSERT INTO xla_diag_sources --line2
155685 (
155686 event_id
155687 , ledger_id
155688 , sla_ledger_id
155689 , description_language
155690 , object_name
155691 , object_type_code
155692 , line_number
155693 , source_application_id
155694 , source_type_code
155695 , source_code
155696 , source_value
155697 , source_meaning
155698 , created_by
155699 , creation_date
155700 , last_update_date
155701 , last_updated_by
155702 , last_update_login
155703 , program_update_date
155704 , program_application_id
155705 , program_id
155706 , request_id
155707 )
155708 SELECT event_id
155709 , p_target_ledger_id
155710 , p_sla_ledger_id
155711 , p_language
155712 , object_name
155713 , object_type_code
155714 , line_number
155715 , source_application_id
155716 , source_type_code
155717 , source_code
155718 , SUBSTR(source_value,1,1996)
155719 , SUBSTR(source_meaning ,1,200)
155720 , xla_environment_pkg.g_Usr_Id
155721 , TRUNC(SYSDATE)
155722 , TRUNC(SYSDATE)
155723 , xla_environment_pkg.g_Usr_Id
155724 , xla_environment_pkg.g_Login_Id
155725 , TRUNC(SYSDATE)
155726 , xla_environment_pkg.g_Prog_Appl_Id
155727 , xla_environment_pkg.g_Prog_Id
155728 , xla_environment_pkg.g_Req_Id
155729 FROM (
155730 SELECT xet.event_id event_id
155731 , l2.line_number line_number
155732 , CASE r
155733 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
155734 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
155735 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
155736 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
155737 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
155738 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
155739 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
155740 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
155741 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
155742
155743 ELSE null
155744 END object_name
155745 , CASE r
155746 WHEN 1 THEN 'LINE'
155747 WHEN 2 THEN 'LINE'
155748 WHEN 3 THEN 'LINE'
155749 WHEN 4 THEN 'LINE'
155750 WHEN 5 THEN 'LINE'
155751 WHEN 6 THEN 'LINE'
155752 WHEN 7 THEN 'LINE'
155753 WHEN 8 THEN 'LINE'
155754 WHEN 9 THEN 'LINE'
155755
155756 ELSE null
155757 END object_type_code
155758 , CASE r
155759 WHEN 1 THEN '707'
155760 WHEN 2 THEN '707'
155761 WHEN 3 THEN '707'
155762 WHEN 4 THEN '707'
155763 WHEN 5 THEN '707'
155764 WHEN 6 THEN '707'
155765 WHEN 7 THEN '707'
155766 WHEN 8 THEN '707'
155767 WHEN 9 THEN '707'
155768
155769 ELSE null
155770 END source_application_id
155771 , 'S' source_type_code
155772 , CASE r
155773 WHEN 1 THEN 'CODE_COMBINATION_ID'
155774 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
155775 WHEN 3 THEN 'CURRENCY_CODE'
155776 WHEN 4 THEN 'ENTERED_AMOUNT'
155777 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
155778 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
155779 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
155780 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
155781 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
155782
155783 ELSE null
155784 END source_code
155785 , CASE r
155786 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
155787 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
155788 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
155789 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
155790 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
155791 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
155792 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
155793 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
155794 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
155795
155796 ELSE null
155797 END source_value
155798 , null source_meaning
155799 FROM xla_events_gt xet
155800 , CST_XLA_INV_LINES_V l2
155801 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
155802 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
155803 AND xet.event_class_code = C_EVENT_CLASS_CODE
155804 AND l2.event_id = xet.event_id
155805
155806 )
155807 ;
155808 --
155809 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
155810
155811 trace
155812 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
155813 ,p_level => C_LEVEL_STATEMENT
155814 ,p_module => l_log_module);
155815
155816 END IF;
155817
155818
155819 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
155820 trace
155821 (p_msg => 'END of insert_sources_268'
155822 ,p_level => C_LEVEL_PROCEDURE
155823 ,p_module => l_log_module);
155824 END IF;
155825 EXCEPTION
155826 WHEN xla_exceptions_pkg.application_exception THEN
155827 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
155828 trace
155829 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
155830 ,p_level => C_LEVEL_EXCEPTION
155831 ,p_module => l_log_module);
155832 END IF;
155833 RAISE;
155834 WHEN OTHERS THEN
155835 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
155836 trace
155837 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
155838 ,p_level => C_LEVEL_EXCEPTION
155839 ,p_module => l_log_module);
155840 END IF;
155841 xla_exceptions_pkg.raise_message
155842 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_268');
155843 END insert_sources_268;
155844 --
155845
155846 ---------------------------------------
155847 --
155848 -- PRIVATE FUNCTION
155849 -- EventClass_268
155850 --
155851 ----------------------------------------
155852 --
155853 FUNCTION EventClass_268
155854 (p_application_id IN NUMBER
155855 ,p_base_ledger_id IN NUMBER
155856 ,p_target_ledger_id IN NUMBER
155857 ,p_language IN VARCHAR2
155858 ,p_currency_code IN VARCHAR2
155859 ,p_sla_ledger_id IN NUMBER
155860 ,p_pad_start_date IN DATE
155861 ,p_pad_end_date IN DATE
155862 ,p_primary_ledger_id IN NUMBER)
155863 RETURN BOOLEAN IS
155864 --
155865 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT_ALL';
155866 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_RCPT';
155867
155868 l_calculate_acctd_flag VARCHAR2(1) :='N';
155869 l_calculate_g_l_flag VARCHAR2(1) :='N';
155870 --
155871 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155872 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155873 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155874 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155875 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155876 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155877 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155878 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155879 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155880 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155881 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155882 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155883 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155884 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
155885 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155886 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155887 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155888 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
155889 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155890 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155891 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155892 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
155893 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
155894 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
155895 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
155896 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
155897
155898 l_event_id NUMBER;
155899 l_previous_event_id NUMBER;
155900 l_first_event_id NUMBER;
155901 l_last_event_id NUMBER;
155902
155903 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
155904 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
155905 --
155906 --
155907 l_result BOOLEAN := TRUE;
155908 l_rows NUMBER := 1000;
155909 l_event_type_name VARCHAR2(80) := 'All';
155910 l_event_class_name VARCHAR2(80) := 'Intransit Interorg Receipt for FOB Shipment';
155911 l_description VARCHAR2(4000);
155912 l_transaction_reversal NUMBER;
155913 l_ae_header_id NUMBER;
155914 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
155915 l_log_module VARCHAR2(240);
155916 --
155917 l_acct_reversal_source VARCHAR2(30);
155918 l_trx_reversal_source VARCHAR2(30);
155919
155920 l_continue_with_lines BOOLEAN := TRUE;
155921 --
155922 l_acc_rev_gl_date_source DATE; -- 4262811
155923 --
155924 type t_array_event_id is table of number index by binary_integer;
155925
155926 l_rec_array_event t_rec_array_event;
155927 l_null_rec_array_event t_rec_array_event;
155928 l_array_ae_header_id xla_number_array_type;
155929 l_actual_flag VARCHAR2(1) := NULL;
155930 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
155931 l_balance_type_code VARCHAR2(1) :=NULL;
155932 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
155933
155934 --
155935 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
155936 --
155937
155938 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
155939 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
155940 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
155941 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
155942 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
155943 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155944 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
155945 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
155946 TYPE t_array_source_29 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_HEADER_ID%TYPE INDEX BY BINARY_INTEGER;
155947 TYPE t_array_source_30 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
155948 TYPE t_array_source_31 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
155949 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
155950
155951 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
155952 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
155953 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
155954 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155955 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
155956 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
155957 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
155958 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
155959 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
155960
155961 l_array_source_6 t_array_source_6;
155962 l_array_source_7 t_array_source_7;
155963 l_array_source_8 t_array_source_8;
155964 l_array_source_12 t_array_source_12;
155965 l_array_source_12_meaning t_array_lookup_meaning;
155966 l_array_source_14 t_array_source_14;
155967 l_array_source_16 t_array_source_16;
155968 l_array_source_27 t_array_source_27;
155969 l_array_source_28 t_array_source_28;
155970 l_array_source_29 t_array_source_29;
155971 l_array_source_30 t_array_source_30;
155972 l_array_source_31 t_array_source_31;
155973 l_array_source_38 t_array_source_38;
155974 l_array_source_38_meaning t_array_lookup_meaning;
155975
155976 l_array_source_4 t_array_source_4;
155977 l_array_source_11 t_array_source_11;
155978 l_array_source_15 t_array_source_15;
155979 l_array_source_18 t_array_source_18;
155980 l_array_source_19 t_array_source_19;
155981 l_array_source_20 t_array_source_20;
155982 l_array_source_21 t_array_source_21;
155983 l_array_source_22 t_array_source_22;
155984 l_array_source_24 t_array_source_24;
155985
155986 --
155987 CURSOR header_cur
155988 IS
155989 SELECT /*+ leading(xet) cardinality(xet,1) */
155990 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
155991 xet.entity_id
155992 ,xet.legal_entity_id
155993 ,xet.entity_code
155994 ,xet.transaction_number
155995 ,xet.event_id
155996 ,xet.event_class_code
155997 ,xet.event_type_code
155998 ,xet.event_number
155999 ,xet.event_date
156000 ,xet.transaction_date
156001 ,xet.reference_num_1
156002 ,xet.reference_num_2
156003 ,xet.reference_num_3
156004 ,xet.reference_num_4
156005 ,xet.reference_char_1
156006 ,xet.reference_char_2
156007 ,xet.reference_char_3
156008 ,xet.reference_char_4
156009 ,xet.reference_date_1
156010 ,xet.reference_date_2
156011 ,xet.reference_date_3
156012 ,xet.reference_date_4
156013 ,xet.event_created_by
156014 ,xet.budgetary_control_flag
156015 , h3.APPLIED_TO_APPL_ID source_6
156016 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
156017 , h3.APPLIED_TO_ENTITY_CODE source_8
156018 , h1.DISTRIBUTION_TYPE source_12
156019 , fvl12.meaning source_12_meaning
156020 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
156021 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
156022 , h6.CST_ENCUM_UPG_OPTION source_27
156023 , h3.TXN_PO_DISTRIBUTION_ID source_28
156024 , h3.TXN_PO_HEADER_ID source_29
156025 , h4.REQ_BUDGET_ACCOUNT source_30
156026 , h5.REQ_ENCUMBRANCE_TYPE_ID source_31
156027 , h1.TRANSFER_TO_GL_INDICATOR source_38
156028 , fvl38.meaning source_38_meaning
156029 FROM xla_events_gt xet
156030 , CST_XLA_INV_HEADERS_V h1
156031 , CST_XLA_INV_REF_V h3
156032 , PO_REQ_DISTS_REF_V h4
156033 , PO_REQ_HEADERS_REF_V h5
156034 , PSA_CST_XLA_UPG_V h6
156035 , fnd_lookup_values fvl12
156036 , fnd_lookup_values fvl38
156037 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
156038 and xet.event_class_code = C_EVENT_CLASS_CODE
156039 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
156040 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'
156041 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
156042 AND fvl12.view_application_id(+) = 700
156043 AND fvl12.language(+) = USERENV('LANG')
156044 AND fvl38.lookup_type(+) = 'YES_NO'
156045 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
156046 AND fvl38.view_application_id(+) = 0
156047 AND fvl38.language(+) = USERENV('LANG')
156048
156049 ORDER BY event_id
156050 ;
156051
156052
156053 --
156054 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
156055 IS
156056 SELECT /*+ leading(xet) cardinality(xet,1) */
156057 -- Event Class Code: FOB_SHIP_RECIPIENT_RCPT
156058 xet.entity_id
156059 ,xet.legal_entity_id
156060 ,xet.entity_code
156061 ,xet.transaction_number
156062 ,xet.event_id
156063 ,xet.event_class_code
156064 ,xet.event_type_code
156065 ,xet.event_number
156066 ,xet.event_date
156067 ,xet.transaction_date
156068 ,xet.reference_num_1
156069 ,xet.reference_num_2
156070 ,xet.reference_num_3
156071 ,xet.reference_num_4
156072 ,xet.reference_char_1
156073 ,xet.reference_char_2
156074 ,xet.reference_char_3
156075 ,xet.reference_char_4
156076 ,xet.reference_date_1
156077 ,xet.reference_date_2
156078 ,xet.reference_date_3
156079 ,xet.reference_date_4
156080 ,xet.event_created_by
156081 ,xet.budgetary_control_flag
156082 , l2.LINE_NUMBER
156083 , l2.CODE_COMBINATION_ID source_4
156084 , l2.DISTRIBUTION_IDENTIFIER source_11
156085 , l2.CURRENCY_CODE source_15
156086 , l2.ENTERED_AMOUNT source_18
156087 , l2.CURRENCY_CONVERSION_DATE source_19
156088 , l2.CURRENCY_CONVERSION_RATE source_20
156089 , l2.CURRENCY_CONVERSION_TYPE source_21
156090 , l2.ACCOUNTED_AMOUNT source_22
156091 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
156092 FROM xla_events_gt xet
156093 , CST_XLA_INV_LINES_V l2
156094 WHERE xet.event_id between x_first_event_id and x_last_event_id
156095 and xet.event_date between p_pad_start_date and p_pad_end_date
156096 and xet.event_class_code = C_EVENT_CLASS_CODE
156097 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
156098 ;
156099
156100 --
156101 BEGIN
156102 IF g_log_enabled THEN
156103 l_log_module := C_DEFAULT_MODULE||'.EventClass_268';
156104 END IF;
156105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156106 trace
156107 (p_msg => 'BEGIN of EventClass_268'
156108 ,p_level => C_LEVEL_PROCEDURE
156109 ,p_module => l_log_module);
156110 END IF;
156111
156112 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156113 trace
156114 (p_msg => 'p_application_id = '||p_application_id||
156115 ' - p_base_ledger_id = '||p_base_ledger_id||
156116 ' - p_target_ledger_id = '||p_target_ledger_id||
156117 ' - p_language = '||p_language||
156118 ' - p_currency_code = '||p_currency_code||
156119 ' - p_sla_ledger_id = '||p_sla_ledger_id
156120 ,p_level => C_LEVEL_STATEMENT
156121 ,p_module => l_log_module);
156122 END IF;
156123 --
156124 -- initialze arrays
156125 --
156126 g_array_event.DELETE;
156127 l_rec_array_event := l_null_rec_array_event;
156128 --
156129 --------------------------------------
156130 -- 4262811 Initialze MPA Line Number
156131 --------------------------------------
156132 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
156133
156134 --
156135
156136 --
156137 OPEN header_cur;
156138 --
156139 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156140 trace
156141 (p_msg => 'SQL - FETCH header_cur'
156142 ,p_level => C_LEVEL_STATEMENT
156143 ,p_module => l_log_module);
156144 END IF;
156145 --
156146 LOOP
156147 FETCH header_cur BULK COLLECT INTO
156148 l_array_entity_id
156149 , l_array_legal_entity_id
156150 , l_array_entity_code
156151 , l_array_transaction_num
156152 , l_array_event_id
156153 , l_array_class_code
156154 , l_array_event_type
156155 , l_array_event_number
156156 , l_array_event_date
156157 , l_array_transaction_date
156158 , l_array_reference_num_1
156159 , l_array_reference_num_2
156160 , l_array_reference_num_3
156161 , l_array_reference_num_4
156162 , l_array_reference_char_1
156163 , l_array_reference_char_2
156164 , l_array_reference_char_3
156165 , l_array_reference_char_4
156166 , l_array_reference_date_1
156167 , l_array_reference_date_2
156168 , l_array_reference_date_3
156169 , l_array_reference_date_4
156170 , l_array_event_created_by
156171 , l_array_budgetary_control_flag
156172 , l_array_source_6
156173 , l_array_source_7
156174 , l_array_source_8
156175 , l_array_source_12
156176 , l_array_source_12_meaning
156177 , l_array_source_14
156178 , l_array_source_16
156179 , l_array_source_27
156180 , l_array_source_28
156181 , l_array_source_29
156182 , l_array_source_30
156183 , l_array_source_31
156184 , l_array_source_38
156185 , l_array_source_38_meaning
156186 LIMIT l_rows;
156187 --
156188 IF (C_LEVEL_EVENT >= g_log_level) THEN
156189 trace
156190 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
156191 ,p_level => C_LEVEL_EVENT
156192 ,p_module => l_log_module);
156193 END IF;
156194 --
156195 EXIT WHEN l_array_entity_id.COUNT = 0;
156196
156197 -- initialize arrays
156198 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
156199 XLA_AE_LINES_PKG.g_rec_lines := NULL;
156200
156201 --
156202 -- Bug 4458708
156203 --
156204 XLA_AE_LINES_PKG.g_LineNumber := 0;
156205
156206
156207 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
156208 g_last_hdr_idx := l_array_event_id.LAST;
156209 --
156210 -- loop for the headers. Each iteration is for each header extract row
156211 -- fetched in header cursor
156212 --
156213 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
156214
156215 --
156216 -- set event info as cache for other routines to refer event attributes
156217 --
156218 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
156219 (p_application_id => p_application_id
156220 ,p_primary_ledger_id => p_primary_ledger_id
156221 ,p_base_ledger_id => p_base_ledger_id
156222 ,p_target_ledger_id => p_target_ledger_id
156223 ,p_entity_id => l_array_entity_id(hdr_idx)
156224 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
156225 ,p_entity_code => l_array_entity_code(hdr_idx)
156226 ,p_transaction_num => l_array_transaction_num(hdr_idx)
156227 ,p_event_id => l_array_event_id(hdr_idx)
156228 ,p_event_class_code => l_array_class_code(hdr_idx)
156229 ,p_event_type_code => l_array_event_type(hdr_idx)
156230 ,p_event_number => l_array_event_number(hdr_idx)
156231 ,p_event_date => l_array_event_date(hdr_idx)
156232 ,p_transaction_date => l_array_transaction_date(hdr_idx)
156233 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
156234 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
156235 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
156236 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
156237 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
156238 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
156239 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
156240 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
156241 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
156242 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
156243 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
156244 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
156245 ,p_event_created_by => l_array_event_created_by(hdr_idx)
156246 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
156247
156248 --
156249 -- set the status of entry to C_VALID (0)
156250 --
156251 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
156252
156253 --
156254 -- initialize a row for ae header
156255 --
156256 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
156257
156258 l_event_id := l_array_event_id(hdr_idx);
156259
156260 --
156261 -- storing the hdr_idx for event. May be used by line cursor.
156262 --
156263 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
156264
156265 --
156266 -- store sources from header extract. This can be improved to
156267 -- store only those sources from header extract that may be used in lines
156268 --
156269
156270 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
156271 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
156272 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
156273 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
156274 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
156275 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
156276 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
156277 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
156278 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
156279 g_array_event(l_event_id).array_value_num('source_29') := l_array_source_29(hdr_idx);
156280 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
156281 g_array_event(l_event_id).array_value_num('source_31') := l_array_source_31(hdr_idx);
156282 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
156283 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
156284
156285 --
156286 -- initilaize the status of ae headers for diffrent balance types
156287 -- the status is initialised to C_NOT_CREATED (2)
156288 --
156289 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156290 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156291 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
156292
156293 --
156294 -- call api to validate and store accounting attributes for header
156295 --
156296
156297 ------------------------------------------------------------
156298 -- Accrual Reversal : to get date for Standard Source (NONE)
156299 ------------------------------------------------------------
156300 l_acc_rev_gl_date_source := NULL;
156301
156302 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
156303 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_31');
156304 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
156305 l_rec_acct_attrs.array_date_value(2) :=
156306 xla_ae_sources_pkg.GetSystemSourceDate(
156307 p_source_code => 'XLA_REFERENCE_DATE_1'
156308 , p_source_type_code => 'Y'
156309 , p_source_application_id => 602
156310 );
156311 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
156312 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
156313
156314
156315 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
156316
156317 XLA_AE_HEADER_PKG.SetJeCategoryName;
156318
156319 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
156320 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
156321 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
156322 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
156323 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
156324
156325
156326 -- No header level analytical criteria
156327
156328 --
156329 --accounting attribute enhancement, bug 3612931
156330 --
156331 l_trx_reversal_source := SUBSTR(NULL, 1,30);
156332
156333 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
156334 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
156335
156336 xla_accounting_err_pkg.build_message
156337 (p_appli_s_name => 'XLA'
156338 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
156339 ,p_token_1 => 'ACCT_ATTR_NAME'
156340 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
156341 ,p_token_2 => 'PRODUCT_NAME'
156342 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
156343 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
156344 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
156345 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
156346
156347 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
156348 --
156349 -- following sets the accounting attributes needed to reverse
156350 -- accounting for a distributeion
156351 --
156352 xla_ae_lines_pkg.SetTrxReversalAttrs
156353 (p_event_id => l_event_id
156354 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
156355 ,p_trx_reversal_source => l_trx_reversal_source);
156356
156357 END IF;
156358
156359
156360 ----------------------------------------------------------------
156361 -- 4262811 - update the header statuses to invalid in need be
156362 ----------------------------------------------------------------
156363 --
156364 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
156365
156366
156367 -----------------------------------------------
156368 -- No accrual reversal for the event class/type
156369 -----------------------------------------------
156370 ----------------------------------------------------------------
156371
156372 --
156373 -- this ends the header loop iteration for one bulk fetch
156374 --
156375 END LOOP;
156376
156377 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
156378 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
156379
156380 --
156381 -- insert dummy rows into lines gt table that were created due to
156382 -- transaction reversals
156383 --
156384 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
156385 l_result := XLA_AE_LINES_PKG.InsertLines;
156386 END IF;
156387
156388 --
156389 -- reset the temp_line_num for each set of events fetched from header
156390 -- cursor rather than doing it for each new event in line cursor
156391 -- Bug 3939231
156392 --
156393 xla_ae_lines_pkg.g_temp_line_num := 0;
156394
156395
156396
156397 --
156398 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
156399 --
156400 --
156401 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156402
156403 trace
156404 (p_msg => 'SQL - FETCH line_cur'
156405 ,p_level => C_LEVEL_STATEMENT
156406 ,p_module => l_log_module);
156407
156408 END IF;
156409 --
156410 --
156411 LOOP
156412 --
156413 FETCH line_cur BULK COLLECT INTO
156414 l_array_entity_id
156415 , l_array_legal_entity_id
156416 , l_array_entity_code
156417 , l_array_transaction_num
156418 , l_array_event_id
156419 , l_array_class_code
156420 , l_array_event_type
156421 , l_array_event_number
156422 , l_array_event_date
156423 , l_array_transaction_date
156424 , l_array_reference_num_1
156425 , l_array_reference_num_2
156426 , l_array_reference_num_3
156427 , l_array_reference_num_4
156428 , l_array_reference_char_1
156429 , l_array_reference_char_2
156430 , l_array_reference_char_3
156431 , l_array_reference_char_4
156432 , l_array_reference_date_1
156433 , l_array_reference_date_2
156434 , l_array_reference_date_3
156435 , l_array_reference_date_4
156436 , l_array_event_created_by
156437 , l_array_budgetary_control_flag
156438 , l_array_extract_line_num
156439 , l_array_source_4
156440 , l_array_source_11
156441 , l_array_source_15
156442 , l_array_source_18
156443 , l_array_source_19
156444 , l_array_source_20
156445 , l_array_source_21
156446 , l_array_source_22
156447 , l_array_source_24
156448 LIMIT l_rows;
156449
156450 --
156451 IF (C_LEVEL_EVENT >= g_log_level) THEN
156452 trace
156453 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
156454 ,p_level => C_LEVEL_EVENT
156455 ,p_module => l_log_module);
156456 END IF;
156457 --
156458 EXIT WHEN l_array_entity_id.count = 0;
156459
156460 XLA_AE_LINES_PKG.g_rec_lines := null;
156461
156462 --
156463 -- Bug 4458708
156464 --
156465 XLA_AE_LINES_PKG.g_LineNumber := 0;
156466 --
156467 --
156468
156469 FOR Idx IN 1..l_array_event_id.count LOOP
156470 --
156471 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
156472 --
156473 l_event_id := l_array_event_id(idx); -- 5648433
156474
156475 --
156476 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
156477 --
156478
156479 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
156480 (g_array_event(l_event_id).array_value_num('header_index'))
156481 ,'N'
156482 ) <> 'Y'
156483 THEN
156484 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156485 trace
156486 (p_msg => 'Trancaction revesal option is not Y '
156487 ,p_level => C_LEVEL_STATEMENT
156488 ,p_module => l_log_module);
156489 END IF;
156490
156491 --
156492 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
156493 --
156494 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
156495 --
156496 -- set event info as cache for other routines to refer event attributes
156497 --
156498
156499 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
156500 l_previous_event_id := l_event_id;
156501
156502 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
156503 (p_application_id => p_application_id
156504 ,p_primary_ledger_id => p_primary_ledger_id
156505 ,p_base_ledger_id => p_base_ledger_id
156506 ,p_target_ledger_id => p_target_ledger_id
156507 ,p_entity_id => l_array_entity_id(Idx)
156508 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
156509 ,p_entity_code => l_array_entity_code(Idx)
156510 ,p_transaction_num => l_array_transaction_num(Idx)
156511 ,p_event_id => l_array_event_id(Idx)
156512 ,p_event_class_code => l_array_class_code(Idx)
156513 ,p_event_type_code => l_array_event_type(Idx)
156514 ,p_event_number => l_array_event_number(Idx)
156515 ,p_event_date => l_array_event_date(Idx)
156516 ,p_transaction_date => l_array_transaction_date(Idx)
156517 ,p_reference_num_1 => l_array_reference_num_1(Idx)
156518 ,p_reference_num_2 => l_array_reference_num_2(Idx)
156519 ,p_reference_num_3 => l_array_reference_num_3(Idx)
156520 ,p_reference_num_4 => l_array_reference_num_4(Idx)
156521 ,p_reference_char_1 => l_array_reference_char_1(Idx)
156522 ,p_reference_char_2 => l_array_reference_char_2(Idx)
156523 ,p_reference_char_3 => l_array_reference_char_3(Idx)
156524 ,p_reference_char_4 => l_array_reference_char_4(Idx)
156525 ,p_reference_date_1 => l_array_reference_date_1(Idx)
156526 ,p_reference_date_2 => l_array_reference_date_2(Idx)
156527 ,p_reference_date_3 => l_array_reference_date_3(Idx)
156528 ,p_reference_date_4 => l_array_reference_date_4(Idx)
156529 ,p_event_created_by => l_array_event_created_by(Idx)
156530 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
156531 --
156532 END IF;
156533
156534
156535
156536 --
156537 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
156538
156539 l_acct_reversal_source := SUBSTR(NULL, 1,30);
156540
156541 IF l_continue_with_lines THEN
156542 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
156543 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
156544
156545 xla_accounting_err_pkg.build_message
156546 (p_appli_s_name => 'XLA'
156547 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
156548 ,p_token_1 => 'LINE_NUMBER'
156549 ,p_value_1 => l_array_extract_line_num(Idx)
156550 ,p_token_2 => 'PRODUCT_NAME'
156551 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
156552 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
156553 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
156554 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
156555
156556 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
156557 --
156558 -- following sets the accounting attributes needed to reverse
156559 -- accounting for a distributeion
156560 --
156561
156562 --
156563 -- 5217187
156564 --
156565 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
156566 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
156567 g_array_event(l_event_id).array_value_num('header_index'));
156568 --
156569 --
156570
156571 -- No reversal code generated
156572
156573 xla_ae_lines_pkg.SetAcctReversalAttrs
156574 (p_event_id => l_event_id
156575 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
156576 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156577 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
156578 END IF;
156579
156580 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
156581 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
156582
156583 --
156584 AcctLineType_129 (
156585 p_application_id => p_application_id
156586 ,p_event_id => l_event_id
156587 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156588 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156589 ,p_actual_flag => l_actual_flag
156590 ,p_balance_type_code => l_balance_type_code
156591 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156592
156593 , p_source_4 => l_array_source_4(Idx)
156594 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
156595 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156596 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
156597 , p_source_11 => l_array_source_11(Idx)
156598 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156599 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156600 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
156601 , p_source_15 => l_array_source_15(Idx)
156602 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
156603 , p_source_18 => l_array_source_18(Idx)
156604 , p_source_19 => l_array_source_19(Idx)
156605 , p_source_20 => l_array_source_20(Idx)
156606 , p_source_21 => l_array_source_21(Idx)
156607 , p_source_22 => l_array_source_22(Idx)
156608 , p_source_24 => l_array_source_24(Idx)
156609 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
156610 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
156611 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
156612 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
156613 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
156614 );
156615 If(l_balance_type_code = 'A') THEN
156616 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156617 END IF;
156618
156619 --
156620
156621
156622 --
156623 AcctLineType_141 (
156624 p_application_id => p_application_id
156625 ,p_event_id => l_event_id
156626 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156627 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156628 ,p_actual_flag => l_actual_flag
156629 ,p_balance_type_code => l_balance_type_code
156630 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156631
156632 , p_source_4 => l_array_source_4(Idx)
156633 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
156634 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156635 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
156636 , p_source_11 => l_array_source_11(Idx)
156637 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156638 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156639 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
156640 , p_source_15 => l_array_source_15(Idx)
156641 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
156642 , p_source_18 => l_array_source_18(Idx)
156643 , p_source_19 => l_array_source_19(Idx)
156644 , p_source_20 => l_array_source_20(Idx)
156645 , p_source_21 => l_array_source_21(Idx)
156646 , p_source_22 => l_array_source_22(Idx)
156647 , p_source_24 => l_array_source_24(Idx)
156648 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
156649 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
156650 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
156651 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
156652 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
156653 );
156654 If(l_balance_type_code = 'A') THEN
156655 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156656 END IF;
156657
156658 --
156659
156660
156661 --
156662 AcctLineType_209 (
156663 p_application_id => p_application_id
156664 ,p_event_id => l_event_id
156665 ,p_calculate_acctd_flag => l_calculate_acctd_flag
156666 ,p_calculate_g_l_flag => l_calculate_g_l_flag
156667 ,p_actual_flag => l_actual_flag
156668 ,p_balance_type_code => l_balance_type_code
156669 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
156670
156671 , p_source_4 => l_array_source_4(Idx)
156672 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
156673 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
156674 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
156675 , p_source_11 => l_array_source_11(Idx)
156676 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
156677 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
156678 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
156679 , p_source_15 => l_array_source_15(Idx)
156680 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
156681 , p_source_18 => l_array_source_18(Idx)
156682 , p_source_19 => l_array_source_19(Idx)
156683 , p_source_20 => l_array_source_20(Idx)
156684 , p_source_21 => l_array_source_21(Idx)
156685 , p_source_22 => l_array_source_22(Idx)
156686 , p_source_24 => l_array_source_24(Idx)
156687 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
156688 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
156689 , p_source_29 => g_array_event(l_event_id).array_value_num('source_29')
156690 , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
156691 , p_source_31 => g_array_event(l_event_id).array_value_num('source_31')
156692 );
156693 If(l_balance_type_code = 'A') THEN
156694 l_actual_gain_loss_ref := l_gain_or_loss_ref;
156695 END IF;
156696
156697 --
156698
156699 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
156700 -- or secondary ledger that has different currency with primary
156701 -- or alc that is calculated by sla
156702 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
156703 (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'))
156704
156705 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
156706 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
156707 AND (l_actual_flag = 'A')) THEN
156708 XLA_AE_LINES_PKG.CreateGainOrLossLines(
156709 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
156710 ,p_application_id => p_application_id
156711 ,p_amb_context_code => 'DEFAULT'
156712 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
156713 ,p_event_class_code => C_EVENT_CLASS_CODE
156714 ,p_event_type_code => C_EVENT_TYPE_CODE
156715
156716 ,p_gain_ccid => -1
156717 ,p_loss_ccid => -1
156718
156719 ,p_actual_flag => l_actual_flag
156720 ,p_enc_flag => null
156721 ,p_actual_g_l_ref => l_actual_gain_loss_ref
156722 ,p_enc_g_l_ref => null
156723 );
156724 END IF;
156725 END IF;
156726 END IF;
156727
156728 ELSE
156729 --
156730 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
156731 --
156732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156733 trace
156734 (p_msg => 'Trancaction revesal option is Y'
156735 ,p_level => C_LEVEL_STATEMENT
156736 ,p_module => l_log_module);
156737 END IF;
156738 END IF;
156739
156740 END LOOP;
156741 l_result := XLA_AE_LINES_PKG.InsertLines ;
156742 end loop;
156743 close line_cur;
156744
156745
156746 --
156747 -- insert headers into xla_ae_headers_gt table
156748 --
156749 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
156750
156751 -- insert into errors table here.
156752
156753 END LOOP;
156754
156755 --
156756 -- 4865292
156757 --
156758 -- Compare g_hdr_extract_count with event count in
156759 -- CreateHeadersAndLines.
156760 --
156761 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
156762
156763 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156764 trace (p_msg => '# rows extracted from header extract objects '
156765 || ' (running total): '
156766 || g_hdr_extract_count
156767 ,p_level => C_LEVEL_STATEMENT
156768 ,p_module => l_log_module);
156769 END IF;
156770
156771 CLOSE header_cur;
156772 --
156773
156774 --
156775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156776 trace
156777 (p_msg => 'END of EventClass_268'
156778 ,p_level => C_LEVEL_PROCEDURE
156779 ,p_module => l_log_module);
156780 END IF;
156781 --
156782 RETURN l_result;
156783 EXCEPTION
156784 WHEN xla_exceptions_pkg.application_exception THEN
156785
156786 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
156787
156788
156789 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
156790
156791 RAISE;
156792
156793 WHEN NO_DATA_FOUND THEN
156794
156795 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
156796 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
156797
156798 FOR header_record IN header_cur
156799 LOOP
156800 l_array_header_events(header_record.event_id) := header_record.event_id;
156801 END LOOP;
156802
156803 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
156804 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
156805
156806 fnd_file.put_line(fnd_file.LOG, ' ');
156807 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
156808 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
156809 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
156810
156811 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
156812 LOOP
156813 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
156814 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
156815 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
156816 END IF;
156817 END LOOP;
156818
156819 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
156820 fnd_file.put_line(fnd_file.LOG, ' ');
156821
156822
156823 xla_exceptions_pkg.raise_message
156824 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_268');
156825
156826
156827 WHEN OTHERS THEN
156828 xla_exceptions_pkg.raise_message
156829 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_268');
156830 END EventClass_268;
156831 --
156832
156833 ---------------------------------------
156834 --
156835 -- PRIVATE PROCEDURE
156836 -- insert_sources_269
156837 --
156838 ----------------------------------------
156839 --
156840 PROCEDURE insert_sources_269(
156841 p_target_ledger_id IN NUMBER
156842 , p_language IN VARCHAR2
156843 , p_sla_ledger_id IN NUMBER
156844 , p_pad_start_date IN DATE
156845 , p_pad_end_date IN DATE
156846 )
156847 IS
156848
156849 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
156850 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
156851 p_apps_owner VARCHAR2(30);
156852 l_log_module VARCHAR2(240);
156853 BEGIN
156854 IF g_log_enabled THEN
156855 l_log_module := C_DEFAULT_MODULE||'.insert_sources_269';
156856 END IF;
156857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
156858
156859 trace
156860 (p_msg => 'BEGIN of insert_sources_269'
156861 ,p_level => C_LEVEL_PROCEDURE
156862 ,p_module => l_log_module);
156863
156864 END IF;
156865
156866 -- select APPS owner
156867 SELECT oracle_username
156868 INTO p_apps_owner
156869 FROM fnd_oracle_userid
156870 WHERE read_only_flag = 'U'
156871 ;
156872
156873 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156874 trace
156875 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
156876 ' - p_language = '||p_language||
156877 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
156878 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
156879 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
156880 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
156881 ,p_level => C_LEVEL_STATEMENT
156882 ,p_module => l_log_module);
156883 END IF;
156884
156885
156886 --
156887 INSERT INTO xla_diag_sources --hdr2
156888 (
156889 event_id
156890 , ledger_id
156891 , sla_ledger_id
156892 , description_language
156893 , object_name
156894 , object_type_code
156895 , line_number
156896 , source_application_id
156897 , source_type_code
156898 , source_code
156899 , source_value
156900 , source_meaning
156901 , created_by
156902 , creation_date
156903 , last_update_date
156904 , last_updated_by
156905 , last_update_login
156906 , program_update_date
156907 , program_application_id
156908 , program_id
156909 , request_id
156910 )
156911 SELECT
156912 event_id
156913 , p_target_ledger_id
156914 , p_sla_ledger_id
156915 , p_language
156916 , object_name
156917 , object_type_code
156918 , line_number
156919 , source_application_id
156920 , source_type_code
156921 , source_code
156922 , SUBSTR(source_value ,1,1996)
156923 , SUBSTR(source_meaning ,1,200)
156924 , xla_environment_pkg.g_Usr_Id
156925 , TRUNC(SYSDATE)
156926 , TRUNC(SYSDATE)
156927 , xla_environment_pkg.g_Usr_Id
156928 , xla_environment_pkg.g_Login_Id
156929 , TRUNC(SYSDATE)
156930 , xla_environment_pkg.g_Prog_Appl_Id
156931 , xla_environment_pkg.g_Prog_Id
156932 , xla_environment_pkg.g_Req_Id
156933 FROM (
156934 SELECT xet.event_id event_id
156935 , 0 line_number
156936 , CASE r
156937 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
156938 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
156939
156940 ELSE null
156941 END object_name
156942 , CASE r
156943 WHEN 1 THEN 'HEADER'
156944 WHEN 2 THEN 'HEADER'
156945
156946 ELSE null
156947 END object_type_code
156948 , CASE r
156949 WHEN 1 THEN '707'
156950 WHEN 2 THEN '707'
156951
156952 ELSE null
156953 END source_application_id
156954 , 'S' source_type_code
156955 , CASE r
156956 WHEN 1 THEN 'DISTRIBUTION_TYPE'
156957 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
156958
156959 ELSE null
156960 END source_code
156961 , CASE r
156962 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
156963 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
156964
156965 ELSE null
156966 END source_value
156967 , CASE r
156968 WHEN 1 THEN fvl12.meaning
156969 WHEN 2 THEN fvl38.meaning
156970
156971 ELSE null
156972 END source_meaning
156973 FROM xla_events_gt xet
156974 , CST_XLA_INV_HEADERS_V h1
156975 , fnd_lookup_values fvl12
156976 , fnd_lookup_values fvl38
156977 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
156978 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
156979 AND xet.event_class_code = C_EVENT_CLASS_CODE
156980 AND h1.event_id = xet.event_id
156981 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
156982 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
156983 AND fvl12.view_application_id(+) = 700
156984 AND fvl12.language(+) = USERENV('LANG')
156985 AND fvl38.lookup_type(+) = 'YES_NO'
156986 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
156987 AND fvl38.view_application_id(+) = 0
156988 AND fvl38.language(+) = USERENV('LANG')
156989
156990 )
156991 ;
156992 --
156993 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
156994
156995 trace
156996 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
156997 ,p_level => C_LEVEL_STATEMENT
156998 ,p_module => l_log_module);
156999
157000 END IF;
157001 --
157002
157003
157004
157005 --
157006 INSERT INTO xla_diag_sources --line2
157007 (
157008 event_id
157009 , ledger_id
157010 , sla_ledger_id
157011 , description_language
157012 , object_name
157013 , object_type_code
157014 , line_number
157015 , source_application_id
157016 , source_type_code
157017 , source_code
157018 , source_value
157019 , source_meaning
157020 , created_by
157021 , creation_date
157022 , last_update_date
157023 , last_updated_by
157024 , last_update_login
157025 , program_update_date
157026 , program_application_id
157027 , program_id
157028 , request_id
157029 )
157030 SELECT event_id
157031 , p_target_ledger_id
157032 , p_sla_ledger_id
157033 , p_language
157034 , object_name
157035 , object_type_code
157036 , line_number
157037 , source_application_id
157038 , source_type_code
157039 , source_code
157040 , SUBSTR(source_value,1,1996)
157041 , SUBSTR(source_meaning ,1,200)
157042 , xla_environment_pkg.g_Usr_Id
157043 , TRUNC(SYSDATE)
157044 , TRUNC(SYSDATE)
157045 , xla_environment_pkg.g_Usr_Id
157046 , xla_environment_pkg.g_Login_Id
157047 , TRUNC(SYSDATE)
157048 , xla_environment_pkg.g_Prog_Appl_Id
157049 , xla_environment_pkg.g_Prog_Id
157050 , xla_environment_pkg.g_Req_Id
157051 FROM (
157052 SELECT xet.event_id event_id
157053 , l2.line_number line_number
157054 , CASE r
157055 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
157056 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
157057 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
157058 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
157059 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
157060 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
157061 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
157062 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
157063 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
157064
157065 ELSE null
157066 END object_name
157067 , CASE r
157068 WHEN 1 THEN 'LINE'
157069 WHEN 2 THEN 'LINE'
157070 WHEN 3 THEN 'LINE'
157071 WHEN 4 THEN 'LINE'
157072 WHEN 5 THEN 'LINE'
157073 WHEN 6 THEN 'LINE'
157074 WHEN 7 THEN 'LINE'
157075 WHEN 8 THEN 'LINE'
157076 WHEN 9 THEN 'LINE'
157077
157078 ELSE null
157079 END object_type_code
157080 , CASE r
157081 WHEN 1 THEN '707'
157082 WHEN 2 THEN '707'
157083 WHEN 3 THEN '707'
157084 WHEN 4 THEN '707'
157085 WHEN 5 THEN '707'
157086 WHEN 6 THEN '707'
157087 WHEN 7 THEN '707'
157088 WHEN 8 THEN '707'
157089 WHEN 9 THEN '707'
157090
157091 ELSE null
157092 END source_application_id
157093 , 'S' source_type_code
157094 , CASE r
157095 WHEN 1 THEN 'CODE_COMBINATION_ID'
157096 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
157097 WHEN 3 THEN 'CURRENCY_CODE'
157098 WHEN 4 THEN 'ENTERED_AMOUNT'
157099 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
157100 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
157101 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
157102 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
157103 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
157104
157105 ELSE null
157106 END source_code
157107 , CASE r
157108 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
157109 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
157110 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
157111 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
157112 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
157113 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
157114 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
157115 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
157116 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
157117
157118 ELSE null
157119 END source_value
157120 , null source_meaning
157121 FROM xla_events_gt xet
157122 , CST_XLA_INV_LINES_V l2
157123 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
157124 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
157125 AND xet.event_class_code = C_EVENT_CLASS_CODE
157126 AND l2.event_id = xet.event_id
157127
157128 )
157129 ;
157130 --
157131 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157132
157133 trace
157134 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
157135 ,p_level => C_LEVEL_STATEMENT
157136 ,p_module => l_log_module);
157137
157138 END IF;
157139
157140
157141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157142 trace
157143 (p_msg => 'END of insert_sources_269'
157144 ,p_level => C_LEVEL_PROCEDURE
157145 ,p_module => l_log_module);
157146 END IF;
157147 EXCEPTION
157148 WHEN xla_exceptions_pkg.application_exception THEN
157149 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157150 trace
157151 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157152 ,p_level => C_LEVEL_EXCEPTION
157153 ,p_module => l_log_module);
157154 END IF;
157155 RAISE;
157156 WHEN OTHERS THEN
157157 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
157158 trace
157159 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
157160 ,p_level => C_LEVEL_EXCEPTION
157161 ,p_module => l_log_module);
157162 END IF;
157163 xla_exceptions_pkg.raise_message
157164 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_269');
157165 END insert_sources_269;
157166 --
157167
157168 ---------------------------------------
157169 --
157170 -- PRIVATE FUNCTION
157171 -- EventClass_269
157172 --
157173 ----------------------------------------
157174 --
157175 FUNCTION EventClass_269
157176 (p_application_id IN NUMBER
157177 ,p_base_ledger_id IN NUMBER
157178 ,p_target_ledger_id IN NUMBER
157179 ,p_language IN VARCHAR2
157180 ,p_currency_code IN VARCHAR2
157181 ,p_sla_ledger_id IN NUMBER
157182 ,p_pad_start_date IN DATE
157183 ,p_pad_end_date IN DATE
157184 ,p_primary_ledger_id IN NUMBER)
157185 RETURN BOOLEAN IS
157186 --
157187 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP_ALL';
157188 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_RECIPIENT_SHIP';
157189
157190 l_calculate_acctd_flag VARCHAR2(1) :='N';
157191 l_calculate_g_l_flag VARCHAR2(1) :='N';
157192 --
157193 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157194 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157195 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157196 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157197 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157198 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157199 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157200 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157201 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157202 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157203 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157204 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157205 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157206 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
157207 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157208 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157209 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157210 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
157211 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157212 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157213 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157214 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
157215 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
157216 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
157217 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
157218 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
157219
157220 l_event_id NUMBER;
157221 l_previous_event_id NUMBER;
157222 l_first_event_id NUMBER;
157223 l_last_event_id NUMBER;
157224
157225 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
157226 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
157227 --
157228 --
157229 l_result BOOLEAN := TRUE;
157230 l_rows NUMBER := 1000;
157231 l_event_type_name VARCHAR2(80) := 'All';
157232 l_event_class_name VARCHAR2(80) := 'Recipient-side Intransit Interorg Shipment for FOB Shipment';
157233 l_description VARCHAR2(4000);
157234 l_transaction_reversal NUMBER;
157235 l_ae_header_id NUMBER;
157236 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
157237 l_log_module VARCHAR2(240);
157238 --
157239 l_acct_reversal_source VARCHAR2(30);
157240 l_trx_reversal_source VARCHAR2(30);
157241
157242 l_continue_with_lines BOOLEAN := TRUE;
157243 --
157244 l_acc_rev_gl_date_source DATE; -- 4262811
157245 --
157246 type t_array_event_id is table of number index by binary_integer;
157247
157248 l_rec_array_event t_rec_array_event;
157249 l_null_rec_array_event t_rec_array_event;
157250 l_array_ae_header_id xla_number_array_type;
157251 l_actual_flag VARCHAR2(1) := NULL;
157252 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
157253 l_balance_type_code VARCHAR2(1) :=NULL;
157254 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
157255
157256 --
157257 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
157258 --
157259
157260 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
157261 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
157262
157263 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
157264 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
157265 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
157266 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
157267 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
157268 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
157269 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
157270 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
157271 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
157272
157273 l_array_source_12 t_array_source_12;
157274 l_array_source_12_meaning t_array_lookup_meaning;
157275 l_array_source_38 t_array_source_38;
157276 l_array_source_38_meaning t_array_lookup_meaning;
157277
157278 l_array_source_4 t_array_source_4;
157279 l_array_source_11 t_array_source_11;
157280 l_array_source_15 t_array_source_15;
157281 l_array_source_18 t_array_source_18;
157282 l_array_source_19 t_array_source_19;
157283 l_array_source_20 t_array_source_20;
157284 l_array_source_21 t_array_source_21;
157285 l_array_source_22 t_array_source_22;
157286 l_array_source_24 t_array_source_24;
157287
157288 --
157289 CURSOR header_cur
157290 IS
157291 SELECT /*+ leading(xet) cardinality(xet,1) */
157292 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
157293 xet.entity_id
157294 ,xet.legal_entity_id
157295 ,xet.entity_code
157296 ,xet.transaction_number
157297 ,xet.event_id
157298 ,xet.event_class_code
157299 ,xet.event_type_code
157300 ,xet.event_number
157301 ,xet.event_date
157302 ,xet.transaction_date
157303 ,xet.reference_num_1
157304 ,xet.reference_num_2
157305 ,xet.reference_num_3
157306 ,xet.reference_num_4
157307 ,xet.reference_char_1
157308 ,xet.reference_char_2
157309 ,xet.reference_char_3
157310 ,xet.reference_char_4
157311 ,xet.reference_date_1
157312 ,xet.reference_date_2
157313 ,xet.reference_date_3
157314 ,xet.reference_date_4
157315 ,xet.event_created_by
157316 ,xet.budgetary_control_flag
157317 , h1.DISTRIBUTION_TYPE source_12
157318 , fvl12.meaning source_12_meaning
157319 , h1.TRANSFER_TO_GL_INDICATOR source_38
157320 , fvl38.meaning source_38_meaning
157321 FROM xla_events_gt xet
157322 , CST_XLA_INV_HEADERS_V h1
157323 , fnd_lookup_values fvl12
157324 , fnd_lookup_values fvl38
157325 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
157326 and xet.event_class_code = C_EVENT_CLASS_CODE
157327 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
157328 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
157329 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
157330 AND fvl12.view_application_id(+) = 700
157331 AND fvl12.language(+) = USERENV('LANG')
157332 AND fvl38.lookup_type(+) = 'YES_NO'
157333 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
157334 AND fvl38.view_application_id(+) = 0
157335 AND fvl38.language(+) = USERENV('LANG')
157336
157337 ORDER BY event_id
157338 ;
157339
157340
157341 --
157342 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
157343 IS
157344 SELECT /*+ leading(xet) cardinality(xet,1) */
157345 -- Event Class Code: FOB_SHIP_RECIPIENT_SHIP
157346 xet.entity_id
157347 ,xet.legal_entity_id
157348 ,xet.entity_code
157349 ,xet.transaction_number
157350 ,xet.event_id
157351 ,xet.event_class_code
157352 ,xet.event_type_code
157353 ,xet.event_number
157354 ,xet.event_date
157355 ,xet.transaction_date
157356 ,xet.reference_num_1
157357 ,xet.reference_num_2
157358 ,xet.reference_num_3
157359 ,xet.reference_num_4
157360 ,xet.reference_char_1
157361 ,xet.reference_char_2
157362 ,xet.reference_char_3
157363 ,xet.reference_char_4
157364 ,xet.reference_date_1
157365 ,xet.reference_date_2
157366 ,xet.reference_date_3
157367 ,xet.reference_date_4
157368 ,xet.event_created_by
157369 ,xet.budgetary_control_flag
157370 , l2.LINE_NUMBER
157371 , l2.CODE_COMBINATION_ID source_4
157372 , l2.DISTRIBUTION_IDENTIFIER source_11
157373 , l2.CURRENCY_CODE source_15
157374 , l2.ENTERED_AMOUNT source_18
157375 , l2.CURRENCY_CONVERSION_DATE source_19
157376 , l2.CURRENCY_CONVERSION_RATE source_20
157377 , l2.CURRENCY_CONVERSION_TYPE source_21
157378 , l2.ACCOUNTED_AMOUNT source_22
157379 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
157380 FROM xla_events_gt xet
157381 , CST_XLA_INV_LINES_V l2
157382 WHERE xet.event_id between x_first_event_id and x_last_event_id
157383 and xet.event_date between p_pad_start_date and p_pad_end_date
157384 and xet.event_class_code = C_EVENT_CLASS_CODE
157385 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
157386 ;
157387
157388 --
157389 BEGIN
157390 IF g_log_enabled THEN
157391 l_log_module := C_DEFAULT_MODULE||'.EventClass_269';
157392 END IF;
157393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
157394 trace
157395 (p_msg => 'BEGIN of EventClass_269'
157396 ,p_level => C_LEVEL_PROCEDURE
157397 ,p_module => l_log_module);
157398 END IF;
157399
157400 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157401 trace
157402 (p_msg => 'p_application_id = '||p_application_id||
157403 ' - p_base_ledger_id = '||p_base_ledger_id||
157404 ' - p_target_ledger_id = '||p_target_ledger_id||
157405 ' - p_language = '||p_language||
157406 ' - p_currency_code = '||p_currency_code||
157407 ' - p_sla_ledger_id = '||p_sla_ledger_id
157408 ,p_level => C_LEVEL_STATEMENT
157409 ,p_module => l_log_module);
157410 END IF;
157411 --
157412 -- initialze arrays
157413 --
157414 g_array_event.DELETE;
157415 l_rec_array_event := l_null_rec_array_event;
157416 --
157417 --------------------------------------
157418 -- 4262811 Initialze MPA Line Number
157419 --------------------------------------
157420 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
157421
157422 --
157423
157424 --
157425 OPEN header_cur;
157426 --
157427 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157428 trace
157429 (p_msg => 'SQL - FETCH header_cur'
157430 ,p_level => C_LEVEL_STATEMENT
157431 ,p_module => l_log_module);
157432 END IF;
157433 --
157434 LOOP
157435 FETCH header_cur BULK COLLECT INTO
157436 l_array_entity_id
157437 , l_array_legal_entity_id
157438 , l_array_entity_code
157439 , l_array_transaction_num
157440 , l_array_event_id
157441 , l_array_class_code
157442 , l_array_event_type
157443 , l_array_event_number
157444 , l_array_event_date
157445 , l_array_transaction_date
157446 , l_array_reference_num_1
157447 , l_array_reference_num_2
157448 , l_array_reference_num_3
157449 , l_array_reference_num_4
157450 , l_array_reference_char_1
157451 , l_array_reference_char_2
157452 , l_array_reference_char_3
157453 , l_array_reference_char_4
157454 , l_array_reference_date_1
157455 , l_array_reference_date_2
157456 , l_array_reference_date_3
157457 , l_array_reference_date_4
157458 , l_array_event_created_by
157459 , l_array_budgetary_control_flag
157460 , l_array_source_12
157461 , l_array_source_12_meaning
157462 , l_array_source_38
157463 , l_array_source_38_meaning
157464 LIMIT l_rows;
157465 --
157466 IF (C_LEVEL_EVENT >= g_log_level) THEN
157467 trace
157468 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
157469 ,p_level => C_LEVEL_EVENT
157470 ,p_module => l_log_module);
157471 END IF;
157472 --
157473 EXIT WHEN l_array_entity_id.COUNT = 0;
157474
157475 -- initialize arrays
157476 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
157477 XLA_AE_LINES_PKG.g_rec_lines := NULL;
157478
157479 --
157480 -- Bug 4458708
157481 --
157482 XLA_AE_LINES_PKG.g_LineNumber := 0;
157483
157484
157485 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
157486 g_last_hdr_idx := l_array_event_id.LAST;
157487 --
157488 -- loop for the headers. Each iteration is for each header extract row
157489 -- fetched in header cursor
157490 --
157491 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
157492
157493 --
157494 -- set event info as cache for other routines to refer event attributes
157495 --
157496 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
157497 (p_application_id => p_application_id
157498 ,p_primary_ledger_id => p_primary_ledger_id
157499 ,p_base_ledger_id => p_base_ledger_id
157500 ,p_target_ledger_id => p_target_ledger_id
157501 ,p_entity_id => l_array_entity_id(hdr_idx)
157502 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
157503 ,p_entity_code => l_array_entity_code(hdr_idx)
157504 ,p_transaction_num => l_array_transaction_num(hdr_idx)
157505 ,p_event_id => l_array_event_id(hdr_idx)
157506 ,p_event_class_code => l_array_class_code(hdr_idx)
157507 ,p_event_type_code => l_array_event_type(hdr_idx)
157508 ,p_event_number => l_array_event_number(hdr_idx)
157509 ,p_event_date => l_array_event_date(hdr_idx)
157510 ,p_transaction_date => l_array_transaction_date(hdr_idx)
157511 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
157512 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
157513 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
157514 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
157515 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
157516 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
157517 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
157518 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
157519 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
157520 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
157521 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
157522 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
157523 ,p_event_created_by => l_array_event_created_by(hdr_idx)
157524 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
157525
157526 --
157527 -- set the status of entry to C_VALID (0)
157528 --
157529 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
157530
157531 --
157532 -- initialize a row for ae header
157533 --
157534 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
157535
157536 l_event_id := l_array_event_id(hdr_idx);
157537
157538 --
157539 -- storing the hdr_idx for event. May be used by line cursor.
157540 --
157541 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
157542
157543 --
157544 -- store sources from header extract. This can be improved to
157545 -- store only those sources from header extract that may be used in lines
157546 --
157547
157548 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
157549 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
157550 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
157551 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
157552
157553 --
157554 -- initilaize the status of ae headers for diffrent balance types
157555 -- the status is initialised to C_NOT_CREATED (2)
157556 --
157557 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157558 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157559 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
157560
157561 --
157562 -- call api to validate and store accounting attributes for header
157563 --
157564
157565 ------------------------------------------------------------
157566 -- Accrual Reversal : to get date for Standard Source (NONE)
157567 ------------------------------------------------------------
157568 l_acc_rev_gl_date_source := NULL;
157569
157570 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
157571 l_rec_acct_attrs.array_date_value(1) :=
157572 xla_ae_sources_pkg.GetSystemSourceDate(
157573 p_source_code => 'XLA_REFERENCE_DATE_1'
157574 , p_source_type_code => 'Y'
157575 , p_source_application_id => 602
157576 );
157577 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
157578 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
157579
157580
157581 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
157582
157583 XLA_AE_HEADER_PKG.SetJeCategoryName;
157584
157585 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
157586 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
157587 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
157588 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
157589 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
157590
157591
157592 -- No header level analytical criteria
157593
157594 --
157595 --accounting attribute enhancement, bug 3612931
157596 --
157597 l_trx_reversal_source := SUBSTR(NULL, 1,30);
157598
157599 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
157600 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
157601
157602 xla_accounting_err_pkg.build_message
157603 (p_appli_s_name => 'XLA'
157604 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
157605 ,p_token_1 => 'ACCT_ATTR_NAME'
157606 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
157607 ,p_token_2 => 'PRODUCT_NAME'
157608 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
157609 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
157610 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
157611 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
157612
157613 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
157614 --
157615 -- following sets the accounting attributes needed to reverse
157616 -- accounting for a distributeion
157617 --
157618 xla_ae_lines_pkg.SetTrxReversalAttrs
157619 (p_event_id => l_event_id
157620 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
157621 ,p_trx_reversal_source => l_trx_reversal_source);
157622
157623 END IF;
157624
157625
157626 ----------------------------------------------------------------
157627 -- 4262811 - update the header statuses to invalid in need be
157628 ----------------------------------------------------------------
157629 --
157630 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
157631
157632
157633 -----------------------------------------------
157634 -- No accrual reversal for the event class/type
157635 -----------------------------------------------
157636 ----------------------------------------------------------------
157637
157638 --
157639 -- this ends the header loop iteration for one bulk fetch
157640 --
157641 END LOOP;
157642
157643 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
157644 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
157645
157646 --
157647 -- insert dummy rows into lines gt table that were created due to
157648 -- transaction reversals
157649 --
157650 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
157651 l_result := XLA_AE_LINES_PKG.InsertLines;
157652 END IF;
157653
157654 --
157655 -- reset the temp_line_num for each set of events fetched from header
157656 -- cursor rather than doing it for each new event in line cursor
157657 -- Bug 3939231
157658 --
157659 xla_ae_lines_pkg.g_temp_line_num := 0;
157660
157661
157662
157663 --
157664 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
157665 --
157666 --
157667 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157668
157669 trace
157670 (p_msg => 'SQL - FETCH line_cur'
157671 ,p_level => C_LEVEL_STATEMENT
157672 ,p_module => l_log_module);
157673
157674 END IF;
157675 --
157676 --
157677 LOOP
157678 --
157679 FETCH line_cur BULK COLLECT INTO
157680 l_array_entity_id
157681 , l_array_legal_entity_id
157682 , l_array_entity_code
157683 , l_array_transaction_num
157684 , l_array_event_id
157685 , l_array_class_code
157686 , l_array_event_type
157687 , l_array_event_number
157688 , l_array_event_date
157689 , l_array_transaction_date
157690 , l_array_reference_num_1
157691 , l_array_reference_num_2
157692 , l_array_reference_num_3
157693 , l_array_reference_num_4
157694 , l_array_reference_char_1
157695 , l_array_reference_char_2
157696 , l_array_reference_char_3
157697 , l_array_reference_char_4
157698 , l_array_reference_date_1
157699 , l_array_reference_date_2
157700 , l_array_reference_date_3
157701 , l_array_reference_date_4
157702 , l_array_event_created_by
157703 , l_array_budgetary_control_flag
157704 , l_array_extract_line_num
157705 , l_array_source_4
157706 , l_array_source_11
157707 , l_array_source_15
157708 , l_array_source_18
157709 , l_array_source_19
157710 , l_array_source_20
157711 , l_array_source_21
157712 , l_array_source_22
157713 , l_array_source_24
157714 LIMIT l_rows;
157715
157716 --
157717 IF (C_LEVEL_EVENT >= g_log_level) THEN
157718 trace
157719 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
157720 ,p_level => C_LEVEL_EVENT
157721 ,p_module => l_log_module);
157722 END IF;
157723 --
157724 EXIT WHEN l_array_entity_id.count = 0;
157725
157726 XLA_AE_LINES_PKG.g_rec_lines := null;
157727
157728 --
157729 -- Bug 4458708
157730 --
157731 XLA_AE_LINES_PKG.g_LineNumber := 0;
157732 --
157733 --
157734
157735 FOR Idx IN 1..l_array_event_id.count LOOP
157736 --
157737 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
157738 --
157739 l_event_id := l_array_event_id(idx); -- 5648433
157740
157741 --
157742 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
157743 --
157744
157745 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
157746 (g_array_event(l_event_id).array_value_num('header_index'))
157747 ,'N'
157748 ) <> 'Y'
157749 THEN
157750 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
157751 trace
157752 (p_msg => 'Trancaction revesal option is not Y '
157753 ,p_level => C_LEVEL_STATEMENT
157754 ,p_module => l_log_module);
157755 END IF;
157756
157757 --
157758 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
157759 --
157760 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
157761 --
157762 -- set event info as cache for other routines to refer event attributes
157763 --
157764
157765 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
157766 l_previous_event_id := l_event_id;
157767
157768 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
157769 (p_application_id => p_application_id
157770 ,p_primary_ledger_id => p_primary_ledger_id
157771 ,p_base_ledger_id => p_base_ledger_id
157772 ,p_target_ledger_id => p_target_ledger_id
157773 ,p_entity_id => l_array_entity_id(Idx)
157774 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
157775 ,p_entity_code => l_array_entity_code(Idx)
157776 ,p_transaction_num => l_array_transaction_num(Idx)
157777 ,p_event_id => l_array_event_id(Idx)
157778 ,p_event_class_code => l_array_class_code(Idx)
157779 ,p_event_type_code => l_array_event_type(Idx)
157780 ,p_event_number => l_array_event_number(Idx)
157781 ,p_event_date => l_array_event_date(Idx)
157782 ,p_transaction_date => l_array_transaction_date(Idx)
157783 ,p_reference_num_1 => l_array_reference_num_1(Idx)
157784 ,p_reference_num_2 => l_array_reference_num_2(Idx)
157785 ,p_reference_num_3 => l_array_reference_num_3(Idx)
157786 ,p_reference_num_4 => l_array_reference_num_4(Idx)
157787 ,p_reference_char_1 => l_array_reference_char_1(Idx)
157788 ,p_reference_char_2 => l_array_reference_char_2(Idx)
157789 ,p_reference_char_3 => l_array_reference_char_3(Idx)
157790 ,p_reference_char_4 => l_array_reference_char_4(Idx)
157791 ,p_reference_date_1 => l_array_reference_date_1(Idx)
157792 ,p_reference_date_2 => l_array_reference_date_2(Idx)
157793 ,p_reference_date_3 => l_array_reference_date_3(Idx)
157794 ,p_reference_date_4 => l_array_reference_date_4(Idx)
157795 ,p_event_created_by => l_array_event_created_by(Idx)
157796 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
157797 --
157798 END IF;
157799
157800
157801
157802 --
157803 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
157804
157805 l_acct_reversal_source := SUBSTR(NULL, 1,30);
157806
157807 IF l_continue_with_lines THEN
157808 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
157809 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
157810
157811 xla_accounting_err_pkg.build_message
157812 (p_appli_s_name => 'XLA'
157813 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
157814 ,p_token_1 => 'LINE_NUMBER'
157815 ,p_value_1 => l_array_extract_line_num(Idx)
157816 ,p_token_2 => 'PRODUCT_NAME'
157817 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
157818 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
157819 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
157820 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
157821
157822 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
157823 --
157824 -- following sets the accounting attributes needed to reverse
157825 -- accounting for a distributeion
157826 --
157827
157828 --
157829 -- 5217187
157830 --
157831 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
157832 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
157833 g_array_event(l_event_id).array_value_num('header_index'));
157834 --
157835 --
157836
157837 -- No reversal code generated
157838
157839 xla_ae_lines_pkg.SetAcctReversalAttrs
157840 (p_event_id => l_event_id
157841 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
157842 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157843 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
157844 END IF;
157845
157846 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
157847 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
157848
157849 --
157850 AcctLineType_30 (
157851 p_application_id => p_application_id
157852 ,p_event_id => l_event_id
157853 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157854 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157855 ,p_actual_flag => l_actual_flag
157856 ,p_balance_type_code => l_balance_type_code
157857 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157858
157859 , p_source_4 => l_array_source_4(Idx)
157860 , p_source_11 => l_array_source_11(Idx)
157861 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
157862 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
157863 , p_source_15 => l_array_source_15(Idx)
157864 , p_source_18 => l_array_source_18(Idx)
157865 , p_source_19 => l_array_source_19(Idx)
157866 , p_source_20 => l_array_source_20(Idx)
157867 , p_source_21 => l_array_source_21(Idx)
157868 , p_source_22 => l_array_source_22(Idx)
157869 , p_source_24 => l_array_source_24(Idx)
157870 );
157871 If(l_balance_type_code = 'A') THEN
157872 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157873 END IF;
157874
157875 --
157876
157877
157878 --
157879 AcctLineType_56 (
157880 p_application_id => p_application_id
157881 ,p_event_id => l_event_id
157882 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157883 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157884 ,p_actual_flag => l_actual_flag
157885 ,p_balance_type_code => l_balance_type_code
157886 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157887
157888 , p_source_4 => l_array_source_4(Idx)
157889 , p_source_11 => l_array_source_11(Idx)
157890 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
157891 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
157892 , p_source_15 => l_array_source_15(Idx)
157893 , p_source_18 => l_array_source_18(Idx)
157894 , p_source_19 => l_array_source_19(Idx)
157895 , p_source_20 => l_array_source_20(Idx)
157896 , p_source_21 => l_array_source_21(Idx)
157897 , p_source_22 => l_array_source_22(Idx)
157898 , p_source_24 => l_array_source_24(Idx)
157899 );
157900 If(l_balance_type_code = 'A') THEN
157901 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157902 END IF;
157903
157904 --
157905
157906
157907 --
157908 AcctLineType_73 (
157909 p_application_id => p_application_id
157910 ,p_event_id => l_event_id
157911 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157912 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157913 ,p_actual_flag => l_actual_flag
157914 ,p_balance_type_code => l_balance_type_code
157915 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157916
157917 , p_source_4 => l_array_source_4(Idx)
157918 , p_source_11 => l_array_source_11(Idx)
157919 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
157920 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
157921 , p_source_15 => l_array_source_15(Idx)
157922 , p_source_18 => l_array_source_18(Idx)
157923 , p_source_19 => l_array_source_19(Idx)
157924 , p_source_20 => l_array_source_20(Idx)
157925 , p_source_21 => l_array_source_21(Idx)
157926 , p_source_22 => l_array_source_22(Idx)
157927 , p_source_24 => l_array_source_24(Idx)
157928 );
157929 If(l_balance_type_code = 'A') THEN
157930 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157931 END IF;
157932
157933 --
157934
157935
157936 --
157937 AcctLineType_75 (
157938 p_application_id => p_application_id
157939 ,p_event_id => l_event_id
157940 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157941 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157942 ,p_actual_flag => l_actual_flag
157943 ,p_balance_type_code => l_balance_type_code
157944 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157945
157946 , p_source_4 => l_array_source_4(Idx)
157947 , p_source_11 => l_array_source_11(Idx)
157948 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
157949 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
157950 , p_source_15 => l_array_source_15(Idx)
157951 , p_source_18 => l_array_source_18(Idx)
157952 , p_source_19 => l_array_source_19(Idx)
157953 , p_source_20 => l_array_source_20(Idx)
157954 , p_source_21 => l_array_source_21(Idx)
157955 , p_source_22 => l_array_source_22(Idx)
157956 , p_source_24 => l_array_source_24(Idx)
157957 );
157958 If(l_balance_type_code = 'A') THEN
157959 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157960 END IF;
157961
157962 --
157963
157964
157965 --
157966 AcctLineType_124 (
157967 p_application_id => p_application_id
157968 ,p_event_id => l_event_id
157969 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157970 ,p_calculate_g_l_flag => l_calculate_g_l_flag
157971 ,p_actual_flag => l_actual_flag
157972 ,p_balance_type_code => l_balance_type_code
157973 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
157974
157975 , p_source_4 => l_array_source_4(Idx)
157976 , p_source_11 => l_array_source_11(Idx)
157977 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
157978 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
157979 , p_source_15 => l_array_source_15(Idx)
157980 , p_source_18 => l_array_source_18(Idx)
157981 , p_source_19 => l_array_source_19(Idx)
157982 , p_source_20 => l_array_source_20(Idx)
157983 , p_source_21 => l_array_source_21(Idx)
157984 , p_source_22 => l_array_source_22(Idx)
157985 , p_source_24 => l_array_source_24(Idx)
157986 );
157987 If(l_balance_type_code = 'A') THEN
157988 l_actual_gain_loss_ref := l_gain_or_loss_ref;
157989 END IF;
157990
157991 --
157992
157993
157994 --
157995 AcctLineType_167 (
157996 p_application_id => p_application_id
157997 ,p_event_id => l_event_id
157998 ,p_calculate_acctd_flag => l_calculate_acctd_flag
157999 ,p_calculate_g_l_flag => l_calculate_g_l_flag
158000 ,p_actual_flag => l_actual_flag
158001 ,p_balance_type_code => l_balance_type_code
158002 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158003
158004 , p_source_4 => l_array_source_4(Idx)
158005 , p_source_11 => l_array_source_11(Idx)
158006 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158007 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158008 , p_source_15 => l_array_source_15(Idx)
158009 , p_source_18 => l_array_source_18(Idx)
158010 , p_source_19 => l_array_source_19(Idx)
158011 , p_source_20 => l_array_source_20(Idx)
158012 , p_source_21 => l_array_source_21(Idx)
158013 , p_source_22 => l_array_source_22(Idx)
158014 , p_source_24 => l_array_source_24(Idx)
158015 );
158016 If(l_balance_type_code = 'A') THEN
158017 l_actual_gain_loss_ref := l_gain_or_loss_ref;
158018 END IF;
158019
158020 --
158021
158022
158023 --
158024 AcctLineType_203 (
158025 p_application_id => p_application_id
158026 ,p_event_id => l_event_id
158027 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158028 ,p_calculate_g_l_flag => l_calculate_g_l_flag
158029 ,p_actual_flag => l_actual_flag
158030 ,p_balance_type_code => l_balance_type_code
158031 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158032
158033 , p_source_4 => l_array_source_4(Idx)
158034 , p_source_11 => l_array_source_11(Idx)
158035 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158036 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158037 , p_source_15 => l_array_source_15(Idx)
158038 , p_source_18 => l_array_source_18(Idx)
158039 , p_source_19 => l_array_source_19(Idx)
158040 , p_source_20 => l_array_source_20(Idx)
158041 , p_source_21 => l_array_source_21(Idx)
158042 , p_source_22 => l_array_source_22(Idx)
158043 , p_source_24 => l_array_source_24(Idx)
158044 );
158045 If(l_balance_type_code = 'A') THEN
158046 l_actual_gain_loss_ref := l_gain_or_loss_ref;
158047 END IF;
158048
158049 --
158050
158051
158052 --
158053 AcctLineType_214 (
158054 p_application_id => p_application_id
158055 ,p_event_id => l_event_id
158056 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158057 ,p_calculate_g_l_flag => l_calculate_g_l_flag
158058 ,p_actual_flag => l_actual_flag
158059 ,p_balance_type_code => l_balance_type_code
158060 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158061
158062 , p_source_4 => l_array_source_4(Idx)
158063 , p_source_11 => l_array_source_11(Idx)
158064 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158065 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158066 , p_source_15 => l_array_source_15(Idx)
158067 , p_source_18 => l_array_source_18(Idx)
158068 , p_source_19 => l_array_source_19(Idx)
158069 , p_source_20 => l_array_source_20(Idx)
158070 , p_source_21 => l_array_source_21(Idx)
158071 , p_source_22 => l_array_source_22(Idx)
158072 , p_source_24 => l_array_source_24(Idx)
158073 );
158074 If(l_balance_type_code = 'A') THEN
158075 l_actual_gain_loss_ref := l_gain_or_loss_ref;
158076 END IF;
158077
158078 --
158079
158080
158081 --
158082 AcctLineType_226 (
158083 p_application_id => p_application_id
158084 ,p_event_id => l_event_id
158085 ,p_calculate_acctd_flag => l_calculate_acctd_flag
158086 ,p_calculate_g_l_flag => l_calculate_g_l_flag
158087 ,p_actual_flag => l_actual_flag
158088 ,p_balance_type_code => l_balance_type_code
158089 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
158090
158091 , p_source_4 => l_array_source_4(Idx)
158092 , p_source_11 => l_array_source_11(Idx)
158093 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
158094 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
158095 , p_source_15 => l_array_source_15(Idx)
158096 , p_source_18 => l_array_source_18(Idx)
158097 , p_source_19 => l_array_source_19(Idx)
158098 , p_source_20 => l_array_source_20(Idx)
158099 , p_source_21 => l_array_source_21(Idx)
158100 , p_source_22 => l_array_source_22(Idx)
158101 , p_source_24 => l_array_source_24(Idx)
158102 );
158103 If(l_balance_type_code = 'A') THEN
158104 l_actual_gain_loss_ref := l_gain_or_loss_ref;
158105 END IF;
158106
158107 --
158108
158109 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
158110 -- or secondary ledger that has different currency with primary
158111 -- or alc that is calculated by sla
158112 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
158113 (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'))
158114
158115 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
158116 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
158117 AND (l_actual_flag = 'A')) THEN
158118 XLA_AE_LINES_PKG.CreateGainOrLossLines(
158119 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
158120 ,p_application_id => p_application_id
158121 ,p_amb_context_code => 'DEFAULT'
158122 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
158123 ,p_event_class_code => C_EVENT_CLASS_CODE
158124 ,p_event_type_code => C_EVENT_TYPE_CODE
158125
158126 ,p_gain_ccid => -1
158127 ,p_loss_ccid => -1
158128
158129 ,p_actual_flag => l_actual_flag
158130 ,p_enc_flag => null
158131 ,p_actual_g_l_ref => l_actual_gain_loss_ref
158132 ,p_enc_g_l_ref => null
158133 );
158134 END IF;
158135 END IF;
158136 END IF;
158137
158138 ELSE
158139 --
158140 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
158141 --
158142 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158143 trace
158144 (p_msg => 'Trancaction revesal option is Y'
158145 ,p_level => C_LEVEL_STATEMENT
158146 ,p_module => l_log_module);
158147 END IF;
158148 END IF;
158149
158150 END LOOP;
158151 l_result := XLA_AE_LINES_PKG.InsertLines ;
158152 end loop;
158153 close line_cur;
158154
158155
158156 --
158157 -- insert headers into xla_ae_headers_gt table
158158 --
158159 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
158160
158161 -- insert into errors table here.
158162
158163 END LOOP;
158164
158165 --
158166 -- 4865292
158167 --
158168 -- Compare g_hdr_extract_count with event count in
158169 -- CreateHeadersAndLines.
158170 --
158171 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
158172
158173 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158174 trace (p_msg => '# rows extracted from header extract objects '
158175 || ' (running total): '
158176 || g_hdr_extract_count
158177 ,p_level => C_LEVEL_STATEMENT
158178 ,p_module => l_log_module);
158179 END IF;
158180
158181 CLOSE header_cur;
158182 --
158183
158184 --
158185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158186 trace
158187 (p_msg => 'END of EventClass_269'
158188 ,p_level => C_LEVEL_PROCEDURE
158189 ,p_module => l_log_module);
158190 END IF;
158191 --
158192 RETURN l_result;
158193 EXCEPTION
158194 WHEN xla_exceptions_pkg.application_exception THEN
158195
158196 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158197
158198
158199 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
158200
158201 RAISE;
158202
158203 WHEN NO_DATA_FOUND THEN
158204
158205 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
158206 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
158207
158208 FOR header_record IN header_cur
158209 LOOP
158210 l_array_header_events(header_record.event_id) := header_record.event_id;
158211 END LOOP;
158212
158213 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
158214 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
158215
158216 fnd_file.put_line(fnd_file.LOG, ' ');
158217 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158218 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
158219 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
158220
158221 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
158222 LOOP
158223 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
158224 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
158225 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
158226 END IF;
158227 END LOOP;
158228
158229 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
158230 fnd_file.put_line(fnd_file.LOG, ' ');
158231
158232
158233 xla_exceptions_pkg.raise_message
158234 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_269');
158235
158236
158237 WHEN OTHERS THEN
158238 xla_exceptions_pkg.raise_message
158239 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_269');
158240 END EventClass_269;
158241 --
158242
158243 ---------------------------------------
158244 --
158245 -- PRIVATE PROCEDURE
158246 -- insert_sources_270
158247 --
158248 ----------------------------------------
158249 --
158250 PROCEDURE insert_sources_270(
158251 p_target_ledger_id IN NUMBER
158252 , p_language IN VARCHAR2
158253 , p_sla_ledger_id IN NUMBER
158254 , p_pad_start_date IN DATE
158255 , p_pad_end_date IN DATE
158256 )
158257 IS
158258
158259 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP_ALL';
158260 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
158261 p_apps_owner VARCHAR2(30);
158262 l_log_module VARCHAR2(240);
158263 BEGIN
158264 IF g_log_enabled THEN
158265 l_log_module := C_DEFAULT_MODULE||'.insert_sources_270';
158266 END IF;
158267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158268
158269 trace
158270 (p_msg => 'BEGIN of insert_sources_270'
158271 ,p_level => C_LEVEL_PROCEDURE
158272 ,p_module => l_log_module);
158273
158274 END IF;
158275
158276 -- select APPS owner
158277 SELECT oracle_username
158278 INTO p_apps_owner
158279 FROM fnd_oracle_userid
158280 WHERE read_only_flag = 'U'
158281 ;
158282
158283 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158284 trace
158285 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
158286 ' - p_language = '||p_language||
158287 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
158288 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
158289 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
158290 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
158291 ,p_level => C_LEVEL_STATEMENT
158292 ,p_module => l_log_module);
158293 END IF;
158294
158295
158296 --
158297 INSERT INTO xla_diag_sources --hdr2
158298 (
158299 event_id
158300 , ledger_id
158301 , sla_ledger_id
158302 , description_language
158303 , object_name
158304 , object_type_code
158305 , line_number
158306 , source_application_id
158307 , source_type_code
158308 , source_code
158309 , source_value
158310 , source_meaning
158311 , created_by
158312 , creation_date
158313 , last_update_date
158314 , last_updated_by
158315 , last_update_login
158316 , program_update_date
158317 , program_application_id
158318 , program_id
158319 , request_id
158320 )
158321 SELECT
158322 event_id
158323 , p_target_ledger_id
158324 , p_sla_ledger_id
158325 , p_language
158326 , object_name
158327 , object_type_code
158328 , line_number
158329 , source_application_id
158330 , source_type_code
158331 , source_code
158332 , SUBSTR(source_value ,1,1996)
158333 , SUBSTR(source_meaning ,1,200)
158334 , xla_environment_pkg.g_Usr_Id
158335 , TRUNC(SYSDATE)
158336 , TRUNC(SYSDATE)
158337 , xla_environment_pkg.g_Usr_Id
158338 , xla_environment_pkg.g_Login_Id
158339 , TRUNC(SYSDATE)
158340 , xla_environment_pkg.g_Prog_Appl_Id
158341 , xla_environment_pkg.g_Prog_Id
158342 , xla_environment_pkg.g_Req_Id
158343 FROM (
158344 SELECT xet.event_id event_id
158345 , 0 line_number
158346 , CASE r
158347 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
158348 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
158349
158350 ELSE null
158351 END object_name
158352 , CASE r
158353 WHEN 1 THEN 'HEADER'
158354 WHEN 2 THEN 'HEADER'
158355
158356 ELSE null
158357 END object_type_code
158358 , CASE r
158359 WHEN 1 THEN '707'
158360 WHEN 2 THEN '707'
158361
158362 ELSE null
158363 END source_application_id
158364 , 'S' source_type_code
158365 , CASE r
158366 WHEN 1 THEN 'DISTRIBUTION_TYPE'
158367 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
158368
158369 ELSE null
158370 END source_code
158371 , CASE r
158372 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
158373 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
158374
158375 ELSE null
158376 END source_value
158377 , CASE r
158378 WHEN 1 THEN fvl12.meaning
158379 WHEN 2 THEN fvl38.meaning
158380
158381 ELSE null
158382 END source_meaning
158383 FROM xla_events_gt xet
158384 , CST_XLA_INV_HEADERS_V h1
158385 , fnd_lookup_values fvl12
158386 , fnd_lookup_values fvl38
158387 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
158388 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
158389 AND xet.event_class_code = C_EVENT_CLASS_CODE
158390 AND h1.event_id = xet.event_id
158391 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
158392 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
158393 AND fvl12.view_application_id(+) = 700
158394 AND fvl12.language(+) = USERENV('LANG')
158395 AND fvl38.lookup_type(+) = 'YES_NO'
158396 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
158397 AND fvl38.view_application_id(+) = 0
158398 AND fvl38.language(+) = USERENV('LANG')
158399
158400 )
158401 ;
158402 --
158403 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158404
158405 trace
158406 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
158407 ,p_level => C_LEVEL_STATEMENT
158408 ,p_module => l_log_module);
158409
158410 END IF;
158411 --
158412
158413
158414
158415 --
158416 INSERT INTO xla_diag_sources --line2
158417 (
158418 event_id
158419 , ledger_id
158420 , sla_ledger_id
158421 , description_language
158422 , object_name
158423 , object_type_code
158424 , line_number
158425 , source_application_id
158426 , source_type_code
158427 , source_code
158428 , source_value
158429 , source_meaning
158430 , created_by
158431 , creation_date
158432 , last_update_date
158433 , last_updated_by
158434 , last_update_login
158435 , program_update_date
158436 , program_application_id
158437 , program_id
158438 , request_id
158439 )
158440 SELECT event_id
158441 , p_target_ledger_id
158442 , p_sla_ledger_id
158443 , p_language
158444 , object_name
158445 , object_type_code
158446 , line_number
158447 , source_application_id
158448 , source_type_code
158449 , source_code
158450 , SUBSTR(source_value,1,1996)
158451 , SUBSTR(source_meaning ,1,200)
158452 , xla_environment_pkg.g_Usr_Id
158453 , TRUNC(SYSDATE)
158454 , TRUNC(SYSDATE)
158455 , xla_environment_pkg.g_Usr_Id
158456 , xla_environment_pkg.g_Login_Id
158457 , TRUNC(SYSDATE)
158458 , xla_environment_pkg.g_Prog_Appl_Id
158459 , xla_environment_pkg.g_Prog_Id
158460 , xla_environment_pkg.g_Req_Id
158461 FROM (
158462 SELECT xet.event_id event_id
158463 , l2.line_number line_number
158464 , CASE r
158465 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
158466 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
158467 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
158468 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
158469 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
158470 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
158471 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
158472 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
158473 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
158474
158475 ELSE null
158476 END object_name
158477 , CASE r
158478 WHEN 1 THEN 'LINE'
158479 WHEN 2 THEN 'LINE'
158480 WHEN 3 THEN 'LINE'
158481 WHEN 4 THEN 'LINE'
158482 WHEN 5 THEN 'LINE'
158483 WHEN 6 THEN 'LINE'
158484 WHEN 7 THEN 'LINE'
158485 WHEN 8 THEN 'LINE'
158486 WHEN 9 THEN 'LINE'
158487
158488 ELSE null
158489 END object_type_code
158490 , CASE r
158491 WHEN 1 THEN '707'
158492 WHEN 2 THEN '707'
158493 WHEN 3 THEN '707'
158494 WHEN 4 THEN '707'
158495 WHEN 5 THEN '707'
158496 WHEN 6 THEN '707'
158497 WHEN 7 THEN '707'
158498 WHEN 8 THEN '707'
158499 WHEN 9 THEN '707'
158500
158501 ELSE null
158502 END source_application_id
158503 , 'S' source_type_code
158504 , CASE r
158505 WHEN 1 THEN 'CODE_COMBINATION_ID'
158506 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
158507 WHEN 3 THEN 'CURRENCY_CODE'
158508 WHEN 4 THEN 'ENTERED_AMOUNT'
158509 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
158510 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
158511 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
158512 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
158513 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
158514
158515 ELSE null
158516 END source_code
158517 , CASE r
158518 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
158519 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
158520 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
158521 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
158522 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
158523 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
158524 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
158525 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
158526 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
158527
158528 ELSE null
158529 END source_value
158530 , null source_meaning
158531 FROM xla_events_gt xet
158532 , CST_XLA_INV_LINES_V l2
158533 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
158534 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
158535 AND xet.event_class_code = C_EVENT_CLASS_CODE
158536 AND l2.event_id = xet.event_id
158537
158538 )
158539 ;
158540 --
158541 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158542
158543 trace
158544 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
158545 ,p_level => C_LEVEL_STATEMENT
158546 ,p_module => l_log_module);
158547
158548 END IF;
158549
158550
158551 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158552 trace
158553 (p_msg => 'END of insert_sources_270'
158554 ,p_level => C_LEVEL_PROCEDURE
158555 ,p_module => l_log_module);
158556 END IF;
158557 EXCEPTION
158558 WHEN xla_exceptions_pkg.application_exception THEN
158559 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
158560 trace
158561 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
158562 ,p_level => C_LEVEL_EXCEPTION
158563 ,p_module => l_log_module);
158564 END IF;
158565 RAISE;
158566 WHEN OTHERS THEN
158567 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
158568 trace
158569 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
158570 ,p_level => C_LEVEL_EXCEPTION
158571 ,p_module => l_log_module);
158572 END IF;
158573 xla_exceptions_pkg.raise_message
158574 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_270');
158575 END insert_sources_270;
158576 --
158577
158578 ---------------------------------------
158579 --
158580 -- PRIVATE FUNCTION
158581 -- EventClass_270
158582 --
158583 ----------------------------------------
158584 --
158585 FUNCTION EventClass_270
158586 (p_application_id IN NUMBER
158587 ,p_base_ledger_id IN NUMBER
158588 ,p_target_ledger_id IN NUMBER
158589 ,p_language IN VARCHAR2
158590 ,p_currency_code IN VARCHAR2
158591 ,p_sla_ledger_id IN NUMBER
158592 ,p_pad_start_date IN DATE
158593 ,p_pad_end_date IN DATE
158594 ,p_primary_ledger_id IN NUMBER)
158595 RETURN BOOLEAN IS
158596 --
158597 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP_ALL';
158598 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
158599
158600 l_calculate_acctd_flag VARCHAR2(1) :='N';
158601 l_calculate_g_l_flag VARCHAR2(1) :='N';
158602 --
158603 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158604 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158605 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158606 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158607 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158608 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158609 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158610 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158611 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158612 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158613 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158614 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158615 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158616 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
158617 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158618 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158619 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158620 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
158621 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158622 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158623 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158624 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
158625 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
158626 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
158627 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
158628 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
158629
158630 l_event_id NUMBER;
158631 l_previous_event_id NUMBER;
158632 l_first_event_id NUMBER;
158633 l_last_event_id NUMBER;
158634
158635 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
158636 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
158637 --
158638 --
158639 l_result BOOLEAN := TRUE;
158640 l_rows NUMBER := 1000;
158641 l_event_type_name VARCHAR2(80) := 'All';
158642 l_event_class_name VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
158643 l_description VARCHAR2(4000);
158644 l_transaction_reversal NUMBER;
158645 l_ae_header_id NUMBER;
158646 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
158647 l_log_module VARCHAR2(240);
158648 --
158649 l_acct_reversal_source VARCHAR2(30);
158650 l_trx_reversal_source VARCHAR2(30);
158651
158652 l_continue_with_lines BOOLEAN := TRUE;
158653 --
158654 l_acc_rev_gl_date_source DATE; -- 4262811
158655 --
158656 type t_array_event_id is table of number index by binary_integer;
158657
158658 l_rec_array_event t_rec_array_event;
158659 l_null_rec_array_event t_rec_array_event;
158660 l_array_ae_header_id xla_number_array_type;
158661 l_actual_flag VARCHAR2(1) := NULL;
158662 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
158663 l_balance_type_code VARCHAR2(1) :=NULL;
158664 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
158665
158666 --
158667 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
158668 --
158669
158670 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
158671 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
158672
158673 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
158674 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
158675 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
158676 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158677 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
158678 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
158679 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
158680 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
158681 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
158682
158683 l_array_source_12 t_array_source_12;
158684 l_array_source_12_meaning t_array_lookup_meaning;
158685 l_array_source_38 t_array_source_38;
158686 l_array_source_38_meaning t_array_lookup_meaning;
158687
158688 l_array_source_4 t_array_source_4;
158689 l_array_source_11 t_array_source_11;
158690 l_array_source_15 t_array_source_15;
158691 l_array_source_18 t_array_source_18;
158692 l_array_source_19 t_array_source_19;
158693 l_array_source_20 t_array_source_20;
158694 l_array_source_21 t_array_source_21;
158695 l_array_source_22 t_array_source_22;
158696 l_array_source_24 t_array_source_24;
158697
158698 --
158699 CURSOR header_cur
158700 IS
158701 SELECT /*+ leading(xet) cardinality(xet,1) */
158702 -- Event Class Code: FOB_SHIP_SENDER_SHIP
158703 xet.entity_id
158704 ,xet.legal_entity_id
158705 ,xet.entity_code
158706 ,xet.transaction_number
158707 ,xet.event_id
158708 ,xet.event_class_code
158709 ,xet.event_type_code
158710 ,xet.event_number
158711 ,xet.event_date
158712 ,xet.transaction_date
158713 ,xet.reference_num_1
158714 ,xet.reference_num_2
158715 ,xet.reference_num_3
158716 ,xet.reference_num_4
158717 ,xet.reference_char_1
158718 ,xet.reference_char_2
158719 ,xet.reference_char_3
158720 ,xet.reference_char_4
158721 ,xet.reference_date_1
158722 ,xet.reference_date_2
158723 ,xet.reference_date_3
158724 ,xet.reference_date_4
158725 ,xet.event_created_by
158726 ,xet.budgetary_control_flag
158727 , h1.DISTRIBUTION_TYPE source_12
158728 , fvl12.meaning source_12_meaning
158729 , h1.TRANSFER_TO_GL_INDICATOR source_38
158730 , fvl38.meaning source_38_meaning
158731 FROM xla_events_gt xet
158732 , CST_XLA_INV_HEADERS_V h1
158733 , fnd_lookup_values fvl12
158734 , fnd_lookup_values fvl38
158735 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
158736 and xet.event_class_code = C_EVENT_CLASS_CODE
158737 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
158738 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
158739 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
158740 AND fvl12.view_application_id(+) = 700
158741 AND fvl12.language(+) = USERENV('LANG')
158742 AND fvl38.lookup_type(+) = 'YES_NO'
158743 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
158744 AND fvl38.view_application_id(+) = 0
158745 AND fvl38.language(+) = USERENV('LANG')
158746
158747 ORDER BY event_id
158748 ;
158749
158750
158751 --
158752 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
158753 IS
158754 SELECT /*+ leading(xet) cardinality(xet,1) */
158755 -- Event Class Code: FOB_SHIP_SENDER_SHIP
158756 xet.entity_id
158757 ,xet.legal_entity_id
158758 ,xet.entity_code
158759 ,xet.transaction_number
158760 ,xet.event_id
158761 ,xet.event_class_code
158762 ,xet.event_type_code
158763 ,xet.event_number
158764 ,xet.event_date
158765 ,xet.transaction_date
158766 ,xet.reference_num_1
158767 ,xet.reference_num_2
158768 ,xet.reference_num_3
158769 ,xet.reference_num_4
158770 ,xet.reference_char_1
158771 ,xet.reference_char_2
158772 ,xet.reference_char_3
158773 ,xet.reference_char_4
158774 ,xet.reference_date_1
158775 ,xet.reference_date_2
158776 ,xet.reference_date_3
158777 ,xet.reference_date_4
158778 ,xet.event_created_by
158779 ,xet.budgetary_control_flag
158780 , l2.LINE_NUMBER
158781 , l2.CODE_COMBINATION_ID source_4
158782 , l2.DISTRIBUTION_IDENTIFIER source_11
158783 , l2.CURRENCY_CODE source_15
158784 , l2.ENTERED_AMOUNT source_18
158785 , l2.CURRENCY_CONVERSION_DATE source_19
158786 , l2.CURRENCY_CONVERSION_RATE source_20
158787 , l2.CURRENCY_CONVERSION_TYPE source_21
158788 , l2.ACCOUNTED_AMOUNT source_22
158789 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
158790 FROM xla_events_gt xet
158791 , CST_XLA_INV_LINES_V l2
158792 WHERE xet.event_id between x_first_event_id and x_last_event_id
158793 and xet.event_date between p_pad_start_date and p_pad_end_date
158794 and xet.event_class_code = C_EVENT_CLASS_CODE
158795 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
158796 ;
158797
158798 --
158799 BEGIN
158800 IF g_log_enabled THEN
158801 l_log_module := C_DEFAULT_MODULE||'.EventClass_270';
158802 END IF;
158803 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
158804 trace
158805 (p_msg => 'BEGIN of EventClass_270'
158806 ,p_level => C_LEVEL_PROCEDURE
158807 ,p_module => l_log_module);
158808 END IF;
158809
158810 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158811 trace
158812 (p_msg => 'p_application_id = '||p_application_id||
158813 ' - p_base_ledger_id = '||p_base_ledger_id||
158814 ' - p_target_ledger_id = '||p_target_ledger_id||
158815 ' - p_language = '||p_language||
158816 ' - p_currency_code = '||p_currency_code||
158817 ' - p_sla_ledger_id = '||p_sla_ledger_id
158818 ,p_level => C_LEVEL_STATEMENT
158819 ,p_module => l_log_module);
158820 END IF;
158821 --
158822 -- initialze arrays
158823 --
158824 g_array_event.DELETE;
158825 l_rec_array_event := l_null_rec_array_event;
158826 --
158827 --------------------------------------
158828 -- 4262811 Initialze MPA Line Number
158829 --------------------------------------
158830 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
158831
158832 --
158833
158834 --
158835 OPEN header_cur;
158836 --
158837 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
158838 trace
158839 (p_msg => 'SQL - FETCH header_cur'
158840 ,p_level => C_LEVEL_STATEMENT
158841 ,p_module => l_log_module);
158842 END IF;
158843 --
158844 LOOP
158845 FETCH header_cur BULK COLLECT INTO
158846 l_array_entity_id
158847 , l_array_legal_entity_id
158848 , l_array_entity_code
158849 , l_array_transaction_num
158850 , l_array_event_id
158851 , l_array_class_code
158852 , l_array_event_type
158853 , l_array_event_number
158854 , l_array_event_date
158855 , l_array_transaction_date
158856 , l_array_reference_num_1
158857 , l_array_reference_num_2
158858 , l_array_reference_num_3
158859 , l_array_reference_num_4
158860 , l_array_reference_char_1
158861 , l_array_reference_char_2
158862 , l_array_reference_char_3
158863 , l_array_reference_char_4
158864 , l_array_reference_date_1
158865 , l_array_reference_date_2
158866 , l_array_reference_date_3
158867 , l_array_reference_date_4
158868 , l_array_event_created_by
158869 , l_array_budgetary_control_flag
158870 , l_array_source_12
158871 , l_array_source_12_meaning
158872 , l_array_source_38
158873 , l_array_source_38_meaning
158874 LIMIT l_rows;
158875 --
158876 IF (C_LEVEL_EVENT >= g_log_level) THEN
158877 trace
158878 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
158879 ,p_level => C_LEVEL_EVENT
158880 ,p_module => l_log_module);
158881 END IF;
158882 --
158883 EXIT WHEN l_array_entity_id.COUNT = 0;
158884
158885 -- initialize arrays
158886 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
158887 XLA_AE_LINES_PKG.g_rec_lines := NULL;
158888
158889 --
158890 -- Bug 4458708
158891 --
158892 XLA_AE_LINES_PKG.g_LineNumber := 0;
158893
158894
158895 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
158896 g_last_hdr_idx := l_array_event_id.LAST;
158897 --
158898 -- loop for the headers. Each iteration is for each header extract row
158899 -- fetched in header cursor
158900 --
158901 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
158902
158903 --
158904 -- set event info as cache for other routines to refer event attributes
158905 --
158906 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
158907 (p_application_id => p_application_id
158908 ,p_primary_ledger_id => p_primary_ledger_id
158909 ,p_base_ledger_id => p_base_ledger_id
158910 ,p_target_ledger_id => p_target_ledger_id
158911 ,p_entity_id => l_array_entity_id(hdr_idx)
158912 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
158913 ,p_entity_code => l_array_entity_code(hdr_idx)
158914 ,p_transaction_num => l_array_transaction_num(hdr_idx)
158915 ,p_event_id => l_array_event_id(hdr_idx)
158916 ,p_event_class_code => l_array_class_code(hdr_idx)
158917 ,p_event_type_code => l_array_event_type(hdr_idx)
158918 ,p_event_number => l_array_event_number(hdr_idx)
158919 ,p_event_date => l_array_event_date(hdr_idx)
158920 ,p_transaction_date => l_array_transaction_date(hdr_idx)
158921 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
158922 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
158923 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
158924 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
158925 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
158926 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
158927 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
158928 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
158929 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
158930 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
158931 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
158932 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
158933 ,p_event_created_by => l_array_event_created_by(hdr_idx)
158934 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
158935
158936 --
158937 -- set the status of entry to C_VALID (0)
158938 --
158939 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
158940
158941 --
158942 -- initialize a row for ae header
158943 --
158944 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
158945
158946 l_event_id := l_array_event_id(hdr_idx);
158947
158948 --
158949 -- storing the hdr_idx for event. May be used by line cursor.
158950 --
158951 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
158952
158953 --
158954 -- store sources from header extract. This can be improved to
158955 -- store only those sources from header extract that may be used in lines
158956 --
158957
158958 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
158959 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
158960 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
158961 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
158962
158963 --
158964 -- initilaize the status of ae headers for diffrent balance types
158965 -- the status is initialised to C_NOT_CREATED (2)
158966 --
158967 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158968 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158969 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
158970
158971 --
158972 -- call api to validate and store accounting attributes for header
158973 --
158974
158975 ------------------------------------------------------------
158976 -- Accrual Reversal : to get date for Standard Source (NONE)
158977 ------------------------------------------------------------
158978 l_acc_rev_gl_date_source := NULL;
158979
158980 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
158981 l_rec_acct_attrs.array_date_value(1) :=
158982 xla_ae_sources_pkg.GetSystemSourceDate(
158983 p_source_code => 'XLA_REFERENCE_DATE_1'
158984 , p_source_type_code => 'Y'
158985 , p_source_application_id => 602
158986 );
158987 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
158988 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
158989
158990
158991 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
158992
158993 XLA_AE_HEADER_PKG.SetJeCategoryName;
158994
158995 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
158996 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
158997 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
158998 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
158999 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
159000
159001
159002 -- No header level analytical criteria
159003
159004 --
159005 --accounting attribute enhancement, bug 3612931
159006 --
159007 l_trx_reversal_source := SUBSTR(NULL, 1,30);
159008
159009 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
159010 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
159011
159012 xla_accounting_err_pkg.build_message
159013 (p_appli_s_name => 'XLA'
159014 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
159015 ,p_token_1 => 'ACCT_ATTR_NAME'
159016 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
159017 ,p_token_2 => 'PRODUCT_NAME'
159018 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159019 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159020 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
159021 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159022
159023 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
159024 --
159025 -- following sets the accounting attributes needed to reverse
159026 -- accounting for a distributeion
159027 --
159028 xla_ae_lines_pkg.SetTrxReversalAttrs
159029 (p_event_id => l_event_id
159030 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
159031 ,p_trx_reversal_source => l_trx_reversal_source);
159032
159033 END IF;
159034
159035
159036 ----------------------------------------------------------------
159037 -- 4262811 - update the header statuses to invalid in need be
159038 ----------------------------------------------------------------
159039 --
159040 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
159041
159042
159043 -----------------------------------------------
159044 -- No accrual reversal for the event class/type
159045 -----------------------------------------------
159046 ----------------------------------------------------------------
159047
159048 --
159049 -- this ends the header loop iteration for one bulk fetch
159050 --
159051 END LOOP;
159052
159053 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
159054 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
159055
159056 --
159057 -- insert dummy rows into lines gt table that were created due to
159058 -- transaction reversals
159059 --
159060 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
159061 l_result := XLA_AE_LINES_PKG.InsertLines;
159062 END IF;
159063
159064 --
159065 -- reset the temp_line_num for each set of events fetched from header
159066 -- cursor rather than doing it for each new event in line cursor
159067 -- Bug 3939231
159068 --
159069 xla_ae_lines_pkg.g_temp_line_num := 0;
159070
159071
159072
159073 --
159074 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
159075 --
159076 --
159077 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159078
159079 trace
159080 (p_msg => 'SQL - FETCH line_cur'
159081 ,p_level => C_LEVEL_STATEMENT
159082 ,p_module => l_log_module);
159083
159084 END IF;
159085 --
159086 --
159087 LOOP
159088 --
159089 FETCH line_cur BULK COLLECT INTO
159090 l_array_entity_id
159091 , l_array_legal_entity_id
159092 , l_array_entity_code
159093 , l_array_transaction_num
159094 , l_array_event_id
159095 , l_array_class_code
159096 , l_array_event_type
159097 , l_array_event_number
159098 , l_array_event_date
159099 , l_array_transaction_date
159100 , l_array_reference_num_1
159101 , l_array_reference_num_2
159102 , l_array_reference_num_3
159103 , l_array_reference_num_4
159104 , l_array_reference_char_1
159105 , l_array_reference_char_2
159106 , l_array_reference_char_3
159107 , l_array_reference_char_4
159108 , l_array_reference_date_1
159109 , l_array_reference_date_2
159110 , l_array_reference_date_3
159111 , l_array_reference_date_4
159112 , l_array_event_created_by
159113 , l_array_budgetary_control_flag
159114 , l_array_extract_line_num
159115 , l_array_source_4
159116 , l_array_source_11
159117 , l_array_source_15
159118 , l_array_source_18
159119 , l_array_source_19
159120 , l_array_source_20
159121 , l_array_source_21
159122 , l_array_source_22
159123 , l_array_source_24
159124 LIMIT l_rows;
159125
159126 --
159127 IF (C_LEVEL_EVENT >= g_log_level) THEN
159128 trace
159129 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
159130 ,p_level => C_LEVEL_EVENT
159131 ,p_module => l_log_module);
159132 END IF;
159133 --
159134 EXIT WHEN l_array_entity_id.count = 0;
159135
159136 XLA_AE_LINES_PKG.g_rec_lines := null;
159137
159138 --
159139 -- Bug 4458708
159140 --
159141 XLA_AE_LINES_PKG.g_LineNumber := 0;
159142 --
159143 --
159144
159145 FOR Idx IN 1..l_array_event_id.count LOOP
159146 --
159147 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
159148 --
159149 l_event_id := l_array_event_id(idx); -- 5648433
159150
159151 --
159152 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159153 --
159154
159155 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
159156 (g_array_event(l_event_id).array_value_num('header_index'))
159157 ,'N'
159158 ) <> 'Y'
159159 THEN
159160 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159161 trace
159162 (p_msg => 'Trancaction revesal option is not Y '
159163 ,p_level => C_LEVEL_STATEMENT
159164 ,p_module => l_log_module);
159165 END IF;
159166
159167 --
159168 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
159169 --
159170 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
159171 --
159172 -- set event info as cache for other routines to refer event attributes
159173 --
159174
159175 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
159176 l_previous_event_id := l_event_id;
159177
159178 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
159179 (p_application_id => p_application_id
159180 ,p_primary_ledger_id => p_primary_ledger_id
159181 ,p_base_ledger_id => p_base_ledger_id
159182 ,p_target_ledger_id => p_target_ledger_id
159183 ,p_entity_id => l_array_entity_id(Idx)
159184 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
159185 ,p_entity_code => l_array_entity_code(Idx)
159186 ,p_transaction_num => l_array_transaction_num(Idx)
159187 ,p_event_id => l_array_event_id(Idx)
159188 ,p_event_class_code => l_array_class_code(Idx)
159189 ,p_event_type_code => l_array_event_type(Idx)
159190 ,p_event_number => l_array_event_number(Idx)
159191 ,p_event_date => l_array_event_date(Idx)
159192 ,p_transaction_date => l_array_transaction_date(Idx)
159193 ,p_reference_num_1 => l_array_reference_num_1(Idx)
159194 ,p_reference_num_2 => l_array_reference_num_2(Idx)
159195 ,p_reference_num_3 => l_array_reference_num_3(Idx)
159196 ,p_reference_num_4 => l_array_reference_num_4(Idx)
159197 ,p_reference_char_1 => l_array_reference_char_1(Idx)
159198 ,p_reference_char_2 => l_array_reference_char_2(Idx)
159199 ,p_reference_char_3 => l_array_reference_char_3(Idx)
159200 ,p_reference_char_4 => l_array_reference_char_4(Idx)
159201 ,p_reference_date_1 => l_array_reference_date_1(Idx)
159202 ,p_reference_date_2 => l_array_reference_date_2(Idx)
159203 ,p_reference_date_3 => l_array_reference_date_3(Idx)
159204 ,p_reference_date_4 => l_array_reference_date_4(Idx)
159205 ,p_event_created_by => l_array_event_created_by(Idx)
159206 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
159207 --
159208 END IF;
159209
159210
159211
159212 --
159213 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
159214
159215 l_acct_reversal_source := SUBSTR(NULL, 1,30);
159216
159217 IF l_continue_with_lines THEN
159218 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
159219 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
159220
159221 xla_accounting_err_pkg.build_message
159222 (p_appli_s_name => 'XLA'
159223 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
159224 ,p_token_1 => 'LINE_NUMBER'
159225 ,p_value_1 => l_array_extract_line_num(Idx)
159226 ,p_token_2 => 'PRODUCT_NAME'
159227 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
159228 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
159229 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
159230 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
159231
159232 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
159233 --
159234 -- following sets the accounting attributes needed to reverse
159235 -- accounting for a distributeion
159236 --
159237
159238 --
159239 -- 5217187
159240 --
159241 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
159242 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
159243 g_array_event(l_event_id).array_value_num('header_index'));
159244 --
159245 --
159246
159247 -- No reversal code generated
159248
159249 xla_ae_lines_pkg.SetAcctReversalAttrs
159250 (p_event_id => l_event_id
159251 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
159252 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159253 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
159254 END IF;
159255
159256 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
159257 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
159258
159259 --
159260 AcctLineType_17 (
159261 p_application_id => p_application_id
159262 ,p_event_id => l_event_id
159263 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159264 ,p_calculate_g_l_flag => l_calculate_g_l_flag
159265 ,p_actual_flag => l_actual_flag
159266 ,p_balance_type_code => l_balance_type_code
159267 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159268
159269 , p_source_4 => l_array_source_4(Idx)
159270 , p_source_11 => l_array_source_11(Idx)
159271 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159272 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159273 , p_source_15 => l_array_source_15(Idx)
159274 , p_source_18 => l_array_source_18(Idx)
159275 , p_source_19 => l_array_source_19(Idx)
159276 , p_source_20 => l_array_source_20(Idx)
159277 , p_source_21 => l_array_source_21(Idx)
159278 , p_source_22 => l_array_source_22(Idx)
159279 , p_source_24 => l_array_source_24(Idx)
159280 );
159281 If(l_balance_type_code = 'A') THEN
159282 l_actual_gain_loss_ref := l_gain_or_loss_ref;
159283 END IF;
159284
159285 --
159286
159287
159288 --
159289 AcctLineType_92 (
159290 p_application_id => p_application_id
159291 ,p_event_id => l_event_id
159292 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159293 ,p_calculate_g_l_flag => l_calculate_g_l_flag
159294 ,p_actual_flag => l_actual_flag
159295 ,p_balance_type_code => l_balance_type_code
159296 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159297
159298 , p_source_4 => l_array_source_4(Idx)
159299 , p_source_11 => l_array_source_11(Idx)
159300 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159301 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159302 , p_source_15 => l_array_source_15(Idx)
159303 , p_source_18 => l_array_source_18(Idx)
159304 , p_source_19 => l_array_source_19(Idx)
159305 , p_source_20 => l_array_source_20(Idx)
159306 , p_source_21 => l_array_source_21(Idx)
159307 , p_source_22 => l_array_source_22(Idx)
159308 , p_source_24 => l_array_source_24(Idx)
159309 );
159310 If(l_balance_type_code = 'A') THEN
159311 l_actual_gain_loss_ref := l_gain_or_loss_ref;
159312 END IF;
159313
159314 --
159315
159316
159317 --
159318 AcctLineType_104 (
159319 p_application_id => p_application_id
159320 ,p_event_id => l_event_id
159321 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159322 ,p_calculate_g_l_flag => l_calculate_g_l_flag
159323 ,p_actual_flag => l_actual_flag
159324 ,p_balance_type_code => l_balance_type_code
159325 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159326
159327 , p_source_4 => l_array_source_4(Idx)
159328 , p_source_11 => l_array_source_11(Idx)
159329 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159330 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159331 , p_source_15 => l_array_source_15(Idx)
159332 , p_source_18 => l_array_source_18(Idx)
159333 , p_source_19 => l_array_source_19(Idx)
159334 , p_source_20 => l_array_source_20(Idx)
159335 , p_source_21 => l_array_source_21(Idx)
159336 , p_source_22 => l_array_source_22(Idx)
159337 , p_source_24 => l_array_source_24(Idx)
159338 );
159339 If(l_balance_type_code = 'A') THEN
159340 l_actual_gain_loss_ref := l_gain_or_loss_ref;
159341 END IF;
159342
159343 --
159344
159345
159346 --
159347 AcctLineType_115 (
159348 p_application_id => p_application_id
159349 ,p_event_id => l_event_id
159350 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159351 ,p_calculate_g_l_flag => l_calculate_g_l_flag
159352 ,p_actual_flag => l_actual_flag
159353 ,p_balance_type_code => l_balance_type_code
159354 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159355
159356 , p_source_4 => l_array_source_4(Idx)
159357 , p_source_11 => l_array_source_11(Idx)
159358 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159359 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159360 , p_source_15 => l_array_source_15(Idx)
159361 , p_source_18 => l_array_source_18(Idx)
159362 , p_source_19 => l_array_source_19(Idx)
159363 , p_source_20 => l_array_source_20(Idx)
159364 , p_source_21 => l_array_source_21(Idx)
159365 , p_source_22 => l_array_source_22(Idx)
159366 , p_source_24 => l_array_source_24(Idx)
159367 );
159368 If(l_balance_type_code = 'A') THEN
159369 l_actual_gain_loss_ref := l_gain_or_loss_ref;
159370 END IF;
159371
159372 --
159373
159374
159375 --
159376 AcctLineType_150 (
159377 p_application_id => p_application_id
159378 ,p_event_id => l_event_id
159379 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159380 ,p_calculate_g_l_flag => l_calculate_g_l_flag
159381 ,p_actual_flag => l_actual_flag
159382 ,p_balance_type_code => l_balance_type_code
159383 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159384
159385 , p_source_4 => l_array_source_4(Idx)
159386 , p_source_11 => l_array_source_11(Idx)
159387 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159388 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159389 , p_source_15 => l_array_source_15(Idx)
159390 , p_source_18 => l_array_source_18(Idx)
159391 , p_source_19 => l_array_source_19(Idx)
159392 , p_source_20 => l_array_source_20(Idx)
159393 , p_source_21 => l_array_source_21(Idx)
159394 , p_source_22 => l_array_source_22(Idx)
159395 , p_source_24 => l_array_source_24(Idx)
159396 );
159397 If(l_balance_type_code = 'A') THEN
159398 l_actual_gain_loss_ref := l_gain_or_loss_ref;
159399 END IF;
159400
159401 --
159402
159403
159404 --
159405 AcctLineType_185 (
159406 p_application_id => p_application_id
159407 ,p_event_id => l_event_id
159408 ,p_calculate_acctd_flag => l_calculate_acctd_flag
159409 ,p_calculate_g_l_flag => l_calculate_g_l_flag
159410 ,p_actual_flag => l_actual_flag
159411 ,p_balance_type_code => l_balance_type_code
159412 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
159413
159414 , p_source_4 => l_array_source_4(Idx)
159415 , p_source_11 => l_array_source_11(Idx)
159416 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
159417 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
159418 , p_source_15 => l_array_source_15(Idx)
159419 , p_source_18 => l_array_source_18(Idx)
159420 , p_source_19 => l_array_source_19(Idx)
159421 , p_source_20 => l_array_source_20(Idx)
159422 , p_source_21 => l_array_source_21(Idx)
159423 , p_source_22 => l_array_source_22(Idx)
159424 , p_source_24 => l_array_source_24(Idx)
159425 );
159426 If(l_balance_type_code = 'A') THEN
159427 l_actual_gain_loss_ref := l_gain_or_loss_ref;
159428 END IF;
159429
159430 --
159431
159432 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
159433 -- or secondary ledger that has different currency with primary
159434 -- or alc that is calculated by sla
159435 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
159436 (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'))
159437
159438 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
159439 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
159440 AND (l_actual_flag = 'A')) THEN
159441 XLA_AE_LINES_PKG.CreateGainOrLossLines(
159442 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
159443 ,p_application_id => p_application_id
159444 ,p_amb_context_code => 'DEFAULT'
159445 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
159446 ,p_event_class_code => C_EVENT_CLASS_CODE
159447 ,p_event_type_code => C_EVENT_TYPE_CODE
159448
159449 ,p_gain_ccid => -1
159450 ,p_loss_ccid => -1
159451
159452 ,p_actual_flag => l_actual_flag
159453 ,p_enc_flag => null
159454 ,p_actual_g_l_ref => l_actual_gain_loss_ref
159455 ,p_enc_g_l_ref => null
159456 );
159457 END IF;
159458 END IF;
159459 END IF;
159460
159461 ELSE
159462 --
159463 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
159464 --
159465 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159466 trace
159467 (p_msg => 'Trancaction revesal option is Y'
159468 ,p_level => C_LEVEL_STATEMENT
159469 ,p_module => l_log_module);
159470 END IF;
159471 END IF;
159472
159473 END LOOP;
159474 l_result := XLA_AE_LINES_PKG.InsertLines ;
159475 end loop;
159476 close line_cur;
159477
159478
159479 --
159480 -- insert headers into xla_ae_headers_gt table
159481 --
159482 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
159483
159484 -- insert into errors table here.
159485
159486 END LOOP;
159487
159488 --
159489 -- 4865292
159490 --
159491 -- Compare g_hdr_extract_count with event count in
159492 -- CreateHeadersAndLines.
159493 --
159494 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
159495
159496 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159497 trace (p_msg => '# rows extracted from header extract objects '
159498 || ' (running total): '
159499 || g_hdr_extract_count
159500 ,p_level => C_LEVEL_STATEMENT
159501 ,p_module => l_log_module);
159502 END IF;
159503
159504 CLOSE header_cur;
159505 --
159506
159507 --
159508 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159509 trace
159510 (p_msg => 'END of EventClass_270'
159511 ,p_level => C_LEVEL_PROCEDURE
159512 ,p_module => l_log_module);
159513 END IF;
159514 --
159515 RETURN l_result;
159516 EXCEPTION
159517 WHEN xla_exceptions_pkg.application_exception THEN
159518
159519 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159520
159521
159522 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
159523
159524 RAISE;
159525
159526 WHEN NO_DATA_FOUND THEN
159527
159528 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
159529 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
159530
159531 FOR header_record IN header_cur
159532 LOOP
159533 l_array_header_events(header_record.event_id) := header_record.event_id;
159534 END LOOP;
159535
159536 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
159537 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
159538
159539 fnd_file.put_line(fnd_file.LOG, ' ');
159540 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159541 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
159542 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
159543
159544 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
159545 LOOP
159546 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
159547 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
159548 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
159549 END IF;
159550 END LOOP;
159551
159552 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
159553 fnd_file.put_line(fnd_file.LOG, ' ');
159554
159555
159556 xla_exceptions_pkg.raise_message
159557 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_270');
159558
159559
159560 WHEN OTHERS THEN
159561 xla_exceptions_pkg.raise_message
159562 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_270');
159563 END EventClass_270;
159564 --
159565
159566 ---------------------------------------
159567 --
159568 -- PRIVATE PROCEDURE
159569 -- insert_sources_271
159570 --
159571 ----------------------------------------
159572 --
159573 PROCEDURE insert_sources_271(
159574 p_target_ledger_id IN NUMBER
159575 , p_language IN VARCHAR2
159576 , p_sla_ledger_id IN NUMBER
159577 , p_pad_start_date IN DATE
159578 , p_pad_end_date IN DATE
159579 )
159580 IS
159581
159582 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INTRAORG_TXFR_ALL';
159583 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INTRAORG_TXFR';
159584 p_apps_owner VARCHAR2(30);
159585 l_log_module VARCHAR2(240);
159586 BEGIN
159587 IF g_log_enabled THEN
159588 l_log_module := C_DEFAULT_MODULE||'.insert_sources_271';
159589 END IF;
159590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159591
159592 trace
159593 (p_msg => 'BEGIN of insert_sources_271'
159594 ,p_level => C_LEVEL_PROCEDURE
159595 ,p_module => l_log_module);
159596
159597 END IF;
159598
159599 -- select APPS owner
159600 SELECT oracle_username
159601 INTO p_apps_owner
159602 FROM fnd_oracle_userid
159603 WHERE read_only_flag = 'U'
159604 ;
159605
159606 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159607 trace
159608 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
159609 ' - p_language = '||p_language||
159610 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
159611 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
159612 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
159613 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
159614 ,p_level => C_LEVEL_STATEMENT
159615 ,p_module => l_log_module);
159616 END IF;
159617
159618
159619 --
159620 INSERT INTO xla_diag_sources --hdr2
159621 (
159622 event_id
159623 , ledger_id
159624 , sla_ledger_id
159625 , description_language
159626 , object_name
159627 , object_type_code
159628 , line_number
159629 , source_application_id
159630 , source_type_code
159631 , source_code
159632 , source_value
159633 , source_meaning
159634 , created_by
159635 , creation_date
159636 , last_update_date
159637 , last_updated_by
159638 , last_update_login
159639 , program_update_date
159640 , program_application_id
159641 , program_id
159642 , request_id
159643 )
159644 SELECT
159645 event_id
159646 , p_target_ledger_id
159647 , p_sla_ledger_id
159648 , p_language
159649 , object_name
159650 , object_type_code
159651 , line_number
159652 , source_application_id
159653 , source_type_code
159654 , source_code
159655 , SUBSTR(source_value ,1,1996)
159656 , SUBSTR(source_meaning ,1,200)
159657 , xla_environment_pkg.g_Usr_Id
159658 , TRUNC(SYSDATE)
159659 , TRUNC(SYSDATE)
159660 , xla_environment_pkg.g_Usr_Id
159661 , xla_environment_pkg.g_Login_Id
159662 , TRUNC(SYSDATE)
159663 , xla_environment_pkg.g_Prog_Appl_Id
159664 , xla_environment_pkg.g_Prog_Id
159665 , xla_environment_pkg.g_Req_Id
159666 FROM (
159667 SELECT xet.event_id event_id
159668 , 0 line_number
159669 , CASE r
159670 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
159671 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
159672
159673 ELSE null
159674 END object_name
159675 , CASE r
159676 WHEN 1 THEN 'HEADER'
159677 WHEN 2 THEN 'HEADER'
159678
159679 ELSE null
159680 END object_type_code
159681 , CASE r
159682 WHEN 1 THEN '707'
159683 WHEN 2 THEN '707'
159684
159685 ELSE null
159686 END source_application_id
159687 , 'S' source_type_code
159688 , CASE r
159689 WHEN 1 THEN 'DISTRIBUTION_TYPE'
159690 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
159691
159692 ELSE null
159693 END source_code
159694 , CASE r
159695 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
159696 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
159697
159698 ELSE null
159699 END source_value
159700 , CASE r
159701 WHEN 1 THEN fvl12.meaning
159702 WHEN 2 THEN fvl38.meaning
159703
159704 ELSE null
159705 END source_meaning
159706 FROM xla_events_gt xet
159707 , CST_XLA_INV_HEADERS_V h1
159708 , fnd_lookup_values fvl12
159709 , fnd_lookup_values fvl38
159710 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
159711 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
159712 AND xet.event_class_code = C_EVENT_CLASS_CODE
159713 AND h1.event_id = xet.event_id
159714 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
159715 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
159716 AND fvl12.view_application_id(+) = 700
159717 AND fvl12.language(+) = USERENV('LANG')
159718 AND fvl38.lookup_type(+) = 'YES_NO'
159719 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
159720 AND fvl38.view_application_id(+) = 0
159721 AND fvl38.language(+) = USERENV('LANG')
159722
159723 )
159724 ;
159725 --
159726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159727
159728 trace
159729 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
159730 ,p_level => C_LEVEL_STATEMENT
159731 ,p_module => l_log_module);
159732
159733 END IF;
159734 --
159735
159736
159737
159738 --
159739 INSERT INTO xla_diag_sources --line2
159740 (
159741 event_id
159742 , ledger_id
159743 , sla_ledger_id
159744 , description_language
159745 , object_name
159746 , object_type_code
159747 , line_number
159748 , source_application_id
159749 , source_type_code
159750 , source_code
159751 , source_value
159752 , source_meaning
159753 , created_by
159754 , creation_date
159755 , last_update_date
159756 , last_updated_by
159757 , last_update_login
159758 , program_update_date
159759 , program_application_id
159760 , program_id
159761 , request_id
159762 )
159763 SELECT event_id
159764 , p_target_ledger_id
159765 , p_sla_ledger_id
159766 , p_language
159767 , object_name
159768 , object_type_code
159769 , line_number
159770 , source_application_id
159771 , source_type_code
159772 , source_code
159773 , SUBSTR(source_value,1,1996)
159774 , SUBSTR(source_meaning ,1,200)
159775 , xla_environment_pkg.g_Usr_Id
159776 , TRUNC(SYSDATE)
159777 , TRUNC(SYSDATE)
159778 , xla_environment_pkg.g_Usr_Id
159779 , xla_environment_pkg.g_Login_Id
159780 , TRUNC(SYSDATE)
159781 , xla_environment_pkg.g_Prog_Appl_Id
159782 , xla_environment_pkg.g_Prog_Id
159783 , xla_environment_pkg.g_Req_Id
159784 FROM (
159785 SELECT xet.event_id event_id
159786 , l2.line_number line_number
159787 , CASE r
159788 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
159789 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
159790 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
159791 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
159792 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
159793 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
159794 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
159795 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
159796 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
159797
159798 ELSE null
159799 END object_name
159800 , CASE r
159801 WHEN 1 THEN 'LINE'
159802 WHEN 2 THEN 'LINE'
159803 WHEN 3 THEN 'LINE'
159804 WHEN 4 THEN 'LINE'
159805 WHEN 5 THEN 'LINE'
159806 WHEN 6 THEN 'LINE'
159807 WHEN 7 THEN 'LINE'
159808 WHEN 8 THEN 'LINE'
159809 WHEN 9 THEN 'LINE'
159810
159811 ELSE null
159812 END object_type_code
159813 , CASE r
159814 WHEN 1 THEN '707'
159815 WHEN 2 THEN '707'
159816 WHEN 3 THEN '707'
159817 WHEN 4 THEN '707'
159818 WHEN 5 THEN '707'
159819 WHEN 6 THEN '707'
159820 WHEN 7 THEN '707'
159821 WHEN 8 THEN '707'
159822 WHEN 9 THEN '707'
159823
159824 ELSE null
159825 END source_application_id
159826 , 'S' source_type_code
159827 , CASE r
159828 WHEN 1 THEN 'CODE_COMBINATION_ID'
159829 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
159830 WHEN 3 THEN 'CURRENCY_CODE'
159831 WHEN 4 THEN 'ENTERED_AMOUNT'
159832 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
159833 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
159834 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
159835 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
159836 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
159837
159838 ELSE null
159839 END source_code
159840 , CASE r
159841 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
159842 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
159843 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
159844 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
159845 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
159846 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
159847 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
159848 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
159849 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
159850
159851 ELSE null
159852 END source_value
159853 , null source_meaning
159854 FROM xla_events_gt xet
159855 , CST_XLA_INV_LINES_V l2
159856 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
159857 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
159858 AND xet.event_class_code = C_EVENT_CLASS_CODE
159859 AND l2.event_id = xet.event_id
159860
159861 )
159862 ;
159863 --
159864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
159865
159866 trace
159867 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
159868 ,p_level => C_LEVEL_STATEMENT
159869 ,p_module => l_log_module);
159870
159871 END IF;
159872
159873
159874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
159875 trace
159876 (p_msg => 'END of insert_sources_271'
159877 ,p_level => C_LEVEL_PROCEDURE
159878 ,p_module => l_log_module);
159879 END IF;
159880 EXCEPTION
159881 WHEN xla_exceptions_pkg.application_exception THEN
159882 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159883 trace
159884 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159885 ,p_level => C_LEVEL_EXCEPTION
159886 ,p_module => l_log_module);
159887 END IF;
159888 RAISE;
159889 WHEN OTHERS THEN
159890 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
159891 trace
159892 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
159893 ,p_level => C_LEVEL_EXCEPTION
159894 ,p_module => l_log_module);
159895 END IF;
159896 xla_exceptions_pkg.raise_message
159897 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_271');
159898 END insert_sources_271;
159899 --
159900
159901 ---------------------------------------
159902 --
159903 -- PRIVATE FUNCTION
159904 -- EventClass_271
159905 --
159906 ----------------------------------------
159907 --
159908 FUNCTION EventClass_271
159909 (p_application_id IN NUMBER
159910 ,p_base_ledger_id IN NUMBER
159911 ,p_target_ledger_id IN NUMBER
159912 ,p_language IN VARCHAR2
159913 ,p_currency_code IN VARCHAR2
159914 ,p_sla_ledger_id IN NUMBER
159915 ,p_pad_start_date IN DATE
159916 ,p_pad_end_date IN DATE
159917 ,p_primary_ledger_id IN NUMBER)
159918 RETURN BOOLEAN IS
159919 --
159920 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INTRAORG_TXFR_ALL';
159921 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INTRAORG_TXFR';
159922
159923 l_calculate_acctd_flag VARCHAR2(1) :='N';
159924 l_calculate_g_l_flag VARCHAR2(1) :='N';
159925 --
159926 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159927 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159928 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159929 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159930 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159931 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159932 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159933 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159934 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159935 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159936 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159937 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159938 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159939 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
159940 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159941 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159942 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159943 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
159944 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159945 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159946 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159947 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
159948 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
159949 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
159950 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
159951 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
159952
159953 l_event_id NUMBER;
159954 l_previous_event_id NUMBER;
159955 l_first_event_id NUMBER;
159956 l_last_event_id NUMBER;
159957
159958 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
159959 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
159960 --
159961 --
159962 l_result BOOLEAN := TRUE;
159963 l_rows NUMBER := 1000;
159964 l_event_type_name VARCHAR2(80) := 'All';
159965 l_event_class_name VARCHAR2(80) := 'Intraorg Transfer';
159966 l_description VARCHAR2(4000);
159967 l_transaction_reversal NUMBER;
159968 l_ae_header_id NUMBER;
159969 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
159970 l_log_module VARCHAR2(240);
159971 --
159972 l_acct_reversal_source VARCHAR2(30);
159973 l_trx_reversal_source VARCHAR2(30);
159974
159975 l_continue_with_lines BOOLEAN := TRUE;
159976 --
159977 l_acc_rev_gl_date_source DATE; -- 4262811
159978 --
159979 type t_array_event_id is table of number index by binary_integer;
159980
159981 l_rec_array_event t_rec_array_event;
159982 l_null_rec_array_event t_rec_array_event;
159983 l_array_ae_header_id xla_number_array_type;
159984 l_actual_flag VARCHAR2(1) := NULL;
159985 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
159986 l_balance_type_code VARCHAR2(1) :=NULL;
159987 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
159988
159989 --
159990 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
159991 --
159992
159993 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
159994 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
159995
159996 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
159997 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
159998 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
159999 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160000 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
160001 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
160002 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
160003 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
160004 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
160005
160006 l_array_source_12 t_array_source_12;
160007 l_array_source_12_meaning t_array_lookup_meaning;
160008 l_array_source_38 t_array_source_38;
160009 l_array_source_38_meaning t_array_lookup_meaning;
160010
160011 l_array_source_4 t_array_source_4;
160012 l_array_source_11 t_array_source_11;
160013 l_array_source_15 t_array_source_15;
160014 l_array_source_18 t_array_source_18;
160015 l_array_source_19 t_array_source_19;
160016 l_array_source_20 t_array_source_20;
160017 l_array_source_21 t_array_source_21;
160018 l_array_source_22 t_array_source_22;
160019 l_array_source_24 t_array_source_24;
160020
160021 --
160022 CURSOR header_cur
160023 IS
160024 SELECT /*+ leading(xet) cardinality(xet,1) */
160025 -- Event Class Code: INTRAORG_TXFR
160026 xet.entity_id
160027 ,xet.legal_entity_id
160028 ,xet.entity_code
160029 ,xet.transaction_number
160030 ,xet.event_id
160031 ,xet.event_class_code
160032 ,xet.event_type_code
160033 ,xet.event_number
160034 ,xet.event_date
160035 ,xet.transaction_date
160036 ,xet.reference_num_1
160037 ,xet.reference_num_2
160038 ,xet.reference_num_3
160039 ,xet.reference_num_4
160040 ,xet.reference_char_1
160041 ,xet.reference_char_2
160042 ,xet.reference_char_3
160043 ,xet.reference_char_4
160044 ,xet.reference_date_1
160045 ,xet.reference_date_2
160046 ,xet.reference_date_3
160047 ,xet.reference_date_4
160048 ,xet.event_created_by
160049 ,xet.budgetary_control_flag
160050 , h1.DISTRIBUTION_TYPE source_12
160051 , fvl12.meaning source_12_meaning
160052 , h1.TRANSFER_TO_GL_INDICATOR source_38
160053 , fvl38.meaning source_38_meaning
160054 FROM xla_events_gt xet
160055 , CST_XLA_INV_HEADERS_V h1
160056 , fnd_lookup_values fvl12
160057 , fnd_lookup_values fvl38
160058 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
160059 and xet.event_class_code = C_EVENT_CLASS_CODE
160060 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
160061 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
160062 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
160063 AND fvl12.view_application_id(+) = 700
160064 AND fvl12.language(+) = USERENV('LANG')
160065 AND fvl38.lookup_type(+) = 'YES_NO'
160066 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
160067 AND fvl38.view_application_id(+) = 0
160068 AND fvl38.language(+) = USERENV('LANG')
160069
160070 ORDER BY event_id
160071 ;
160072
160073
160074 --
160075 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
160076 IS
160077 SELECT /*+ leading(xet) cardinality(xet,1) */
160078 -- Event Class Code: INTRAORG_TXFR
160079 xet.entity_id
160080 ,xet.legal_entity_id
160081 ,xet.entity_code
160082 ,xet.transaction_number
160083 ,xet.event_id
160084 ,xet.event_class_code
160085 ,xet.event_type_code
160086 ,xet.event_number
160087 ,xet.event_date
160088 ,xet.transaction_date
160089 ,xet.reference_num_1
160090 ,xet.reference_num_2
160091 ,xet.reference_num_3
160092 ,xet.reference_num_4
160093 ,xet.reference_char_1
160094 ,xet.reference_char_2
160095 ,xet.reference_char_3
160096 ,xet.reference_char_4
160097 ,xet.reference_date_1
160098 ,xet.reference_date_2
160099 ,xet.reference_date_3
160100 ,xet.reference_date_4
160101 ,xet.event_created_by
160102 ,xet.budgetary_control_flag
160103 , l2.LINE_NUMBER
160104 , l2.CODE_COMBINATION_ID source_4
160105 , l2.DISTRIBUTION_IDENTIFIER source_11
160106 , l2.CURRENCY_CODE source_15
160107 , l2.ENTERED_AMOUNT source_18
160108 , l2.CURRENCY_CONVERSION_DATE source_19
160109 , l2.CURRENCY_CONVERSION_RATE source_20
160110 , l2.CURRENCY_CONVERSION_TYPE source_21
160111 , l2.ACCOUNTED_AMOUNT source_22
160112 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
160113 FROM xla_events_gt xet
160114 , CST_XLA_INV_LINES_V l2
160115 WHERE xet.event_id between x_first_event_id and x_last_event_id
160116 and xet.event_date between p_pad_start_date and p_pad_end_date
160117 and xet.event_class_code = C_EVENT_CLASS_CODE
160118 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
160119 ;
160120
160121 --
160122 BEGIN
160123 IF g_log_enabled THEN
160124 l_log_module := C_DEFAULT_MODULE||'.EventClass_271';
160125 END IF;
160126 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160127 trace
160128 (p_msg => 'BEGIN of EventClass_271'
160129 ,p_level => C_LEVEL_PROCEDURE
160130 ,p_module => l_log_module);
160131 END IF;
160132
160133 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160134 trace
160135 (p_msg => 'p_application_id = '||p_application_id||
160136 ' - p_base_ledger_id = '||p_base_ledger_id||
160137 ' - p_target_ledger_id = '||p_target_ledger_id||
160138 ' - p_language = '||p_language||
160139 ' - p_currency_code = '||p_currency_code||
160140 ' - p_sla_ledger_id = '||p_sla_ledger_id
160141 ,p_level => C_LEVEL_STATEMENT
160142 ,p_module => l_log_module);
160143 END IF;
160144 --
160145 -- initialze arrays
160146 --
160147 g_array_event.DELETE;
160148 l_rec_array_event := l_null_rec_array_event;
160149 --
160150 --------------------------------------
160151 -- 4262811 Initialze MPA Line Number
160152 --------------------------------------
160153 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
160154
160155 --
160156
160157 --
160158 OPEN header_cur;
160159 --
160160 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160161 trace
160162 (p_msg => 'SQL - FETCH header_cur'
160163 ,p_level => C_LEVEL_STATEMENT
160164 ,p_module => l_log_module);
160165 END IF;
160166 --
160167 LOOP
160168 FETCH header_cur BULK COLLECT INTO
160169 l_array_entity_id
160170 , l_array_legal_entity_id
160171 , l_array_entity_code
160172 , l_array_transaction_num
160173 , l_array_event_id
160174 , l_array_class_code
160175 , l_array_event_type
160176 , l_array_event_number
160177 , l_array_event_date
160178 , l_array_transaction_date
160179 , l_array_reference_num_1
160180 , l_array_reference_num_2
160181 , l_array_reference_num_3
160182 , l_array_reference_num_4
160183 , l_array_reference_char_1
160184 , l_array_reference_char_2
160185 , l_array_reference_char_3
160186 , l_array_reference_char_4
160187 , l_array_reference_date_1
160188 , l_array_reference_date_2
160189 , l_array_reference_date_3
160190 , l_array_reference_date_4
160191 , l_array_event_created_by
160192 , l_array_budgetary_control_flag
160193 , l_array_source_12
160194 , l_array_source_12_meaning
160195 , l_array_source_38
160196 , l_array_source_38_meaning
160197 LIMIT l_rows;
160198 --
160199 IF (C_LEVEL_EVENT >= g_log_level) THEN
160200 trace
160201 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
160202 ,p_level => C_LEVEL_EVENT
160203 ,p_module => l_log_module);
160204 END IF;
160205 --
160206 EXIT WHEN l_array_entity_id.COUNT = 0;
160207
160208 -- initialize arrays
160209 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
160210 XLA_AE_LINES_PKG.g_rec_lines := NULL;
160211
160212 --
160213 -- Bug 4458708
160214 --
160215 XLA_AE_LINES_PKG.g_LineNumber := 0;
160216
160217
160218 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
160219 g_last_hdr_idx := l_array_event_id.LAST;
160220 --
160221 -- loop for the headers. Each iteration is for each header extract row
160222 -- fetched in header cursor
160223 --
160224 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
160225
160226 --
160227 -- set event info as cache for other routines to refer event attributes
160228 --
160229 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160230 (p_application_id => p_application_id
160231 ,p_primary_ledger_id => p_primary_ledger_id
160232 ,p_base_ledger_id => p_base_ledger_id
160233 ,p_target_ledger_id => p_target_ledger_id
160234 ,p_entity_id => l_array_entity_id(hdr_idx)
160235 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
160236 ,p_entity_code => l_array_entity_code(hdr_idx)
160237 ,p_transaction_num => l_array_transaction_num(hdr_idx)
160238 ,p_event_id => l_array_event_id(hdr_idx)
160239 ,p_event_class_code => l_array_class_code(hdr_idx)
160240 ,p_event_type_code => l_array_event_type(hdr_idx)
160241 ,p_event_number => l_array_event_number(hdr_idx)
160242 ,p_event_date => l_array_event_date(hdr_idx)
160243 ,p_transaction_date => l_array_transaction_date(hdr_idx)
160244 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
160245 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
160246 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
160247 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
160248 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
160249 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
160250 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
160251 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
160252 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
160253 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
160254 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
160255 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
160256 ,p_event_created_by => l_array_event_created_by(hdr_idx)
160257 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
160258
160259 --
160260 -- set the status of entry to C_VALID (0)
160261 --
160262 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160263
160264 --
160265 -- initialize a row for ae header
160266 --
160267 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
160268
160269 l_event_id := l_array_event_id(hdr_idx);
160270
160271 --
160272 -- storing the hdr_idx for event. May be used by line cursor.
160273 --
160274 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
160275
160276 --
160277 -- store sources from header extract. This can be improved to
160278 -- store only those sources from header extract that may be used in lines
160279 --
160280
160281 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
160282 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
160283 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
160284 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
160285
160286 --
160287 -- initilaize the status of ae headers for diffrent balance types
160288 -- the status is initialised to C_NOT_CREATED (2)
160289 --
160290 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160291 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160292 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
160293
160294 --
160295 -- call api to validate and store accounting attributes for header
160296 --
160297
160298 ------------------------------------------------------------
160299 -- Accrual Reversal : to get date for Standard Source (NONE)
160300 ------------------------------------------------------------
160301 l_acc_rev_gl_date_source := NULL;
160302
160303 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
160304 l_rec_acct_attrs.array_date_value(1) :=
160305 xla_ae_sources_pkg.GetSystemSourceDate(
160306 p_source_code => 'XLA_REFERENCE_DATE_1'
160307 , p_source_type_code => 'Y'
160308 , p_source_application_id => 602
160309 );
160310 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
160311 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
160312
160313
160314 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
160315
160316 XLA_AE_HEADER_PKG.SetJeCategoryName;
160317
160318 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
160319 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
160320 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
160321 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
160322 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
160323
160324
160325 -- No header level analytical criteria
160326
160327 --
160328 --accounting attribute enhancement, bug 3612931
160329 --
160330 l_trx_reversal_source := SUBSTR(NULL, 1,30);
160331
160332 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
160333 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
160334
160335 xla_accounting_err_pkg.build_message
160336 (p_appli_s_name => 'XLA'
160337 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
160338 ,p_token_1 => 'ACCT_ATTR_NAME'
160339 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
160340 ,p_token_2 => 'PRODUCT_NAME'
160341 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160342 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160343 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
160344 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160345
160346 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
160347 --
160348 -- following sets the accounting attributes needed to reverse
160349 -- accounting for a distributeion
160350 --
160351 xla_ae_lines_pkg.SetTrxReversalAttrs
160352 (p_event_id => l_event_id
160353 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
160354 ,p_trx_reversal_source => l_trx_reversal_source);
160355
160356 END IF;
160357
160358
160359 ----------------------------------------------------------------
160360 -- 4262811 - update the header statuses to invalid in need be
160361 ----------------------------------------------------------------
160362 --
160363 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
160364
160365
160366 -----------------------------------------------
160367 -- No accrual reversal for the event class/type
160368 -----------------------------------------------
160369 ----------------------------------------------------------------
160370
160371 --
160372 -- this ends the header loop iteration for one bulk fetch
160373 --
160374 END LOOP;
160375
160376 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
160377 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
160378
160379 --
160380 -- insert dummy rows into lines gt table that were created due to
160381 -- transaction reversals
160382 --
160383 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
160384 l_result := XLA_AE_LINES_PKG.InsertLines;
160385 END IF;
160386
160387 --
160388 -- reset the temp_line_num for each set of events fetched from header
160389 -- cursor rather than doing it for each new event in line cursor
160390 -- Bug 3939231
160391 --
160392 xla_ae_lines_pkg.g_temp_line_num := 0;
160393
160394
160395
160396 --
160397 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
160398 --
160399 --
160400 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160401
160402 trace
160403 (p_msg => 'SQL - FETCH line_cur'
160404 ,p_level => C_LEVEL_STATEMENT
160405 ,p_module => l_log_module);
160406
160407 END IF;
160408 --
160409 --
160410 LOOP
160411 --
160412 FETCH line_cur BULK COLLECT INTO
160413 l_array_entity_id
160414 , l_array_legal_entity_id
160415 , l_array_entity_code
160416 , l_array_transaction_num
160417 , l_array_event_id
160418 , l_array_class_code
160419 , l_array_event_type
160420 , l_array_event_number
160421 , l_array_event_date
160422 , l_array_transaction_date
160423 , l_array_reference_num_1
160424 , l_array_reference_num_2
160425 , l_array_reference_num_3
160426 , l_array_reference_num_4
160427 , l_array_reference_char_1
160428 , l_array_reference_char_2
160429 , l_array_reference_char_3
160430 , l_array_reference_char_4
160431 , l_array_reference_date_1
160432 , l_array_reference_date_2
160433 , l_array_reference_date_3
160434 , l_array_reference_date_4
160435 , l_array_event_created_by
160436 , l_array_budgetary_control_flag
160437 , l_array_extract_line_num
160438 , l_array_source_4
160439 , l_array_source_11
160440 , l_array_source_15
160441 , l_array_source_18
160442 , l_array_source_19
160443 , l_array_source_20
160444 , l_array_source_21
160445 , l_array_source_22
160446 , l_array_source_24
160447 LIMIT l_rows;
160448
160449 --
160450 IF (C_LEVEL_EVENT >= g_log_level) THEN
160451 trace
160452 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
160453 ,p_level => C_LEVEL_EVENT
160454 ,p_module => l_log_module);
160455 END IF;
160456 --
160457 EXIT WHEN l_array_entity_id.count = 0;
160458
160459 XLA_AE_LINES_PKG.g_rec_lines := null;
160460
160461 --
160462 -- Bug 4458708
160463 --
160464 XLA_AE_LINES_PKG.g_LineNumber := 0;
160465 --
160466 --
160467
160468 FOR Idx IN 1..l_array_event_id.count LOOP
160469 --
160470 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
160471 --
160472 l_event_id := l_array_event_id(idx); -- 5648433
160473
160474 --
160475 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
160476 --
160477
160478 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
160479 (g_array_event(l_event_id).array_value_num('header_index'))
160480 ,'N'
160481 ) <> 'Y'
160482 THEN
160483 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160484 trace
160485 (p_msg => 'Trancaction revesal option is not Y '
160486 ,p_level => C_LEVEL_STATEMENT
160487 ,p_module => l_log_module);
160488 END IF;
160489
160490 --
160491 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
160492 --
160493 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
160494 --
160495 -- set event info as cache for other routines to refer event attributes
160496 --
160497
160498 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
160499 l_previous_event_id := l_event_id;
160500
160501 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
160502 (p_application_id => p_application_id
160503 ,p_primary_ledger_id => p_primary_ledger_id
160504 ,p_base_ledger_id => p_base_ledger_id
160505 ,p_target_ledger_id => p_target_ledger_id
160506 ,p_entity_id => l_array_entity_id(Idx)
160507 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
160508 ,p_entity_code => l_array_entity_code(Idx)
160509 ,p_transaction_num => l_array_transaction_num(Idx)
160510 ,p_event_id => l_array_event_id(Idx)
160511 ,p_event_class_code => l_array_class_code(Idx)
160512 ,p_event_type_code => l_array_event_type(Idx)
160513 ,p_event_number => l_array_event_number(Idx)
160514 ,p_event_date => l_array_event_date(Idx)
160515 ,p_transaction_date => l_array_transaction_date(Idx)
160516 ,p_reference_num_1 => l_array_reference_num_1(Idx)
160517 ,p_reference_num_2 => l_array_reference_num_2(Idx)
160518 ,p_reference_num_3 => l_array_reference_num_3(Idx)
160519 ,p_reference_num_4 => l_array_reference_num_4(Idx)
160520 ,p_reference_char_1 => l_array_reference_char_1(Idx)
160521 ,p_reference_char_2 => l_array_reference_char_2(Idx)
160522 ,p_reference_char_3 => l_array_reference_char_3(Idx)
160523 ,p_reference_char_4 => l_array_reference_char_4(Idx)
160524 ,p_reference_date_1 => l_array_reference_date_1(Idx)
160525 ,p_reference_date_2 => l_array_reference_date_2(Idx)
160526 ,p_reference_date_3 => l_array_reference_date_3(Idx)
160527 ,p_reference_date_4 => l_array_reference_date_4(Idx)
160528 ,p_event_created_by => l_array_event_created_by(Idx)
160529 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
160530 --
160531 END IF;
160532
160533
160534
160535 --
160536 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
160537
160538 l_acct_reversal_source := SUBSTR(NULL, 1,30);
160539
160540 IF l_continue_with_lines THEN
160541 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
160542 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
160543
160544 xla_accounting_err_pkg.build_message
160545 (p_appli_s_name => 'XLA'
160546 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
160547 ,p_token_1 => 'LINE_NUMBER'
160548 ,p_value_1 => l_array_extract_line_num(Idx)
160549 ,p_token_2 => 'PRODUCT_NAME'
160550 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
160551 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
160552 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
160553 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
160554
160555 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
160556 --
160557 -- following sets the accounting attributes needed to reverse
160558 -- accounting for a distributeion
160559 --
160560
160561 --
160562 -- 5217187
160563 --
160564 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
160565 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
160566 g_array_event(l_event_id).array_value_num('header_index'));
160567 --
160568 --
160569
160570 -- No reversal code generated
160571
160572 xla_ae_lines_pkg.SetAcctReversalAttrs
160573 (p_event_id => l_event_id
160574 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
160575 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160576 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
160577 END IF;
160578
160579 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
160580 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
160581
160582 --
160583 AcctLineType_31 (
160584 p_application_id => p_application_id
160585 ,p_event_id => l_event_id
160586 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160587 ,p_calculate_g_l_flag => l_calculate_g_l_flag
160588 ,p_actual_flag => l_actual_flag
160589 ,p_balance_type_code => l_balance_type_code
160590 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160591
160592 , p_source_4 => l_array_source_4(Idx)
160593 , p_source_11 => l_array_source_11(Idx)
160594 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160595 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160596 , p_source_15 => l_array_source_15(Idx)
160597 , p_source_18 => l_array_source_18(Idx)
160598 , p_source_19 => l_array_source_19(Idx)
160599 , p_source_20 => l_array_source_20(Idx)
160600 , p_source_21 => l_array_source_21(Idx)
160601 , p_source_22 => l_array_source_22(Idx)
160602 , p_source_24 => l_array_source_24(Idx)
160603 );
160604 If(l_balance_type_code = 'A') THEN
160605 l_actual_gain_loss_ref := l_gain_or_loss_ref;
160606 END IF;
160607
160608 --
160609
160610
160611 --
160612 AcctLineType_142 (
160613 p_application_id => p_application_id
160614 ,p_event_id => l_event_id
160615 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160616 ,p_calculate_g_l_flag => l_calculate_g_l_flag
160617 ,p_actual_flag => l_actual_flag
160618 ,p_balance_type_code => l_balance_type_code
160619 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160620
160621 , p_source_4 => l_array_source_4(Idx)
160622 , p_source_11 => l_array_source_11(Idx)
160623 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160624 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160625 , p_source_15 => l_array_source_15(Idx)
160626 , p_source_18 => l_array_source_18(Idx)
160627 , p_source_19 => l_array_source_19(Idx)
160628 , p_source_20 => l_array_source_20(Idx)
160629 , p_source_21 => l_array_source_21(Idx)
160630 , p_source_22 => l_array_source_22(Idx)
160631 , p_source_24 => l_array_source_24(Idx)
160632 );
160633 If(l_balance_type_code = 'A') THEN
160634 l_actual_gain_loss_ref := l_gain_or_loss_ref;
160635 END IF;
160636
160637 --
160638
160639
160640 --
160641 AcctLineType_198 (
160642 p_application_id => p_application_id
160643 ,p_event_id => l_event_id
160644 ,p_calculate_acctd_flag => l_calculate_acctd_flag
160645 ,p_calculate_g_l_flag => l_calculate_g_l_flag
160646 ,p_actual_flag => l_actual_flag
160647 ,p_balance_type_code => l_balance_type_code
160648 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
160649
160650 , p_source_4 => l_array_source_4(Idx)
160651 , p_source_11 => l_array_source_11(Idx)
160652 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
160653 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
160654 , p_source_15 => l_array_source_15(Idx)
160655 , p_source_18 => l_array_source_18(Idx)
160656 , p_source_19 => l_array_source_19(Idx)
160657 , p_source_20 => l_array_source_20(Idx)
160658 , p_source_21 => l_array_source_21(Idx)
160659 , p_source_22 => l_array_source_22(Idx)
160660 , p_source_24 => l_array_source_24(Idx)
160661 );
160662 If(l_balance_type_code = 'A') THEN
160663 l_actual_gain_loss_ref := l_gain_or_loss_ref;
160664 END IF;
160665
160666 --
160667
160668 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
160669 -- or secondary ledger that has different currency with primary
160670 -- or alc that is calculated by sla
160671 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
160672 (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'))
160673
160674 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
160675 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
160676 AND (l_actual_flag = 'A')) THEN
160677 XLA_AE_LINES_PKG.CreateGainOrLossLines(
160678 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
160679 ,p_application_id => p_application_id
160680 ,p_amb_context_code => 'DEFAULT'
160681 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
160682 ,p_event_class_code => C_EVENT_CLASS_CODE
160683 ,p_event_type_code => C_EVENT_TYPE_CODE
160684
160685 ,p_gain_ccid => -1
160686 ,p_loss_ccid => -1
160687
160688 ,p_actual_flag => l_actual_flag
160689 ,p_enc_flag => null
160690 ,p_actual_g_l_ref => l_actual_gain_loss_ref
160691 ,p_enc_g_l_ref => null
160692 );
160693 END IF;
160694 END IF;
160695 END IF;
160696
160697 ELSE
160698 --
160699 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
160700 --
160701 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160702 trace
160703 (p_msg => 'Trancaction revesal option is Y'
160704 ,p_level => C_LEVEL_STATEMENT
160705 ,p_module => l_log_module);
160706 END IF;
160707 END IF;
160708
160709 END LOOP;
160710 l_result := XLA_AE_LINES_PKG.InsertLines ;
160711 end loop;
160712 close line_cur;
160713
160714
160715 --
160716 -- insert headers into xla_ae_headers_gt table
160717 --
160718 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
160719
160720 -- insert into errors table here.
160721
160722 END LOOP;
160723
160724 --
160725 -- 4865292
160726 --
160727 -- Compare g_hdr_extract_count with event count in
160728 -- CreateHeadersAndLines.
160729 --
160730 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
160731
160732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160733 trace (p_msg => '# rows extracted from header extract objects '
160734 || ' (running total): '
160735 || g_hdr_extract_count
160736 ,p_level => C_LEVEL_STATEMENT
160737 ,p_module => l_log_module);
160738 END IF;
160739
160740 CLOSE header_cur;
160741 --
160742
160743 --
160744 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160745 trace
160746 (p_msg => 'END of EventClass_271'
160747 ,p_level => C_LEVEL_PROCEDURE
160748 ,p_module => l_log_module);
160749 END IF;
160750 --
160751 RETURN l_result;
160752 EXCEPTION
160753 WHEN xla_exceptions_pkg.application_exception THEN
160754
160755 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
160756
160757
160758 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
160759
160760 RAISE;
160761
160762 WHEN NO_DATA_FOUND THEN
160763
160764 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
160765 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
160766
160767 FOR header_record IN header_cur
160768 LOOP
160769 l_array_header_events(header_record.event_id) := header_record.event_id;
160770 END LOOP;
160771
160772 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
160773 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
160774
160775 fnd_file.put_line(fnd_file.LOG, ' ');
160776 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
160777 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
160778 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
160779
160780 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
160781 LOOP
160782 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
160783 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
160784 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
160785 END IF;
160786 END LOOP;
160787
160788 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
160789 fnd_file.put_line(fnd_file.LOG, ' ');
160790
160791
160792 xla_exceptions_pkg.raise_message
160793 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_271');
160794
160795
160796 WHEN OTHERS THEN
160797 xla_exceptions_pkg.raise_message
160798 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_271');
160799 END EventClass_271;
160800 --
160801
160802 ---------------------------------------
160803 --
160804 -- PRIVATE PROCEDURE
160805 -- insert_sources_272
160806 --
160807 ----------------------------------------
160808 --
160809 PROCEDURE insert_sources_272(
160810 p_target_ledger_id IN NUMBER
160811 , p_language IN VARCHAR2
160812 , p_sla_ledger_id IN NUMBER
160813 , p_pad_start_date IN DATE
160814 , p_pad_end_date IN DATE
160815 )
160816 IS
160817
160818 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP_ALL';
160819 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
160820 p_apps_owner VARCHAR2(30);
160821 l_log_module VARCHAR2(240);
160822 BEGIN
160823 IF g_log_enabled THEN
160824 l_log_module := C_DEFAULT_MODULE||'.insert_sources_272';
160825 END IF;
160826 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
160827
160828 trace
160829 (p_msg => 'BEGIN of insert_sources_272'
160830 ,p_level => C_LEVEL_PROCEDURE
160831 ,p_module => l_log_module);
160832
160833 END IF;
160834
160835 -- select APPS owner
160836 SELECT oracle_username
160837 INTO p_apps_owner
160838 FROM fnd_oracle_userid
160839 WHERE read_only_flag = 'U'
160840 ;
160841
160842 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160843 trace
160844 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
160845 ' - p_language = '||p_language||
160846 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
160847 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
160848 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
160849 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
160850 ,p_level => C_LEVEL_STATEMENT
160851 ,p_module => l_log_module);
160852 END IF;
160853
160854
160855 --
160856 INSERT INTO xla_diag_sources --hdr2
160857 (
160858 event_id
160859 , ledger_id
160860 , sla_ledger_id
160861 , description_language
160862 , object_name
160863 , object_type_code
160864 , line_number
160865 , source_application_id
160866 , source_type_code
160867 , source_code
160868 , source_value
160869 , source_meaning
160870 , created_by
160871 , creation_date
160872 , last_update_date
160873 , last_updated_by
160874 , last_update_login
160875 , program_update_date
160876 , program_application_id
160877 , program_id
160878 , request_id
160879 )
160880 SELECT
160881 event_id
160882 , p_target_ledger_id
160883 , p_sla_ledger_id
160884 , p_language
160885 , object_name
160886 , object_type_code
160887 , line_number
160888 , source_application_id
160889 , source_type_code
160890 , source_code
160891 , SUBSTR(source_value ,1,1996)
160892 , SUBSTR(source_meaning ,1,200)
160893 , xla_environment_pkg.g_Usr_Id
160894 , TRUNC(SYSDATE)
160895 , TRUNC(SYSDATE)
160896 , xla_environment_pkg.g_Usr_Id
160897 , xla_environment_pkg.g_Login_Id
160898 , TRUNC(SYSDATE)
160899 , xla_environment_pkg.g_Prog_Appl_Id
160900 , xla_environment_pkg.g_Prog_Id
160901 , xla_environment_pkg.g_Req_Id
160902 FROM (
160903 SELECT xet.event_id event_id
160904 , 0 line_number
160905 , CASE r
160906 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
160907 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
160908
160909 ELSE null
160910 END object_name
160911 , CASE r
160912 WHEN 1 THEN 'HEADER'
160913 WHEN 2 THEN 'HEADER'
160914
160915 ELSE null
160916 END object_type_code
160917 , CASE r
160918 WHEN 1 THEN '707'
160919 WHEN 2 THEN '707'
160920
160921 ELSE null
160922 END source_application_id
160923 , 'S' source_type_code
160924 , CASE r
160925 WHEN 1 THEN 'DISTRIBUTION_TYPE'
160926 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
160927
160928 ELSE null
160929 END source_code
160930 , CASE r
160931 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
160932 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
160933
160934 ELSE null
160935 END source_value
160936 , CASE r
160937 WHEN 1 THEN fvl12.meaning
160938 WHEN 2 THEN fvl38.meaning
160939
160940 ELSE null
160941 END source_meaning
160942 FROM xla_events_gt xet
160943 , CST_XLA_INV_HEADERS_V h1
160944 , fnd_lookup_values fvl12
160945 , fnd_lookup_values fvl38
160946 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
160947 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
160948 AND xet.event_class_code = C_EVENT_CLASS_CODE
160949 AND h1.event_id = xet.event_id
160950 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
160951 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
160952 AND fvl12.view_application_id(+) = 700
160953 AND fvl12.language(+) = USERENV('LANG')
160954 AND fvl38.lookup_type(+) = 'YES_NO'
160955 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
160956 AND fvl38.view_application_id(+) = 0
160957 AND fvl38.language(+) = USERENV('LANG')
160958
160959 )
160960 ;
160961 --
160962 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
160963
160964 trace
160965 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
160966 ,p_level => C_LEVEL_STATEMENT
160967 ,p_module => l_log_module);
160968
160969 END IF;
160970 --
160971
160972
160973
160974 --
160975 INSERT INTO xla_diag_sources --line2
160976 (
160977 event_id
160978 , ledger_id
160979 , sla_ledger_id
160980 , description_language
160981 , object_name
160982 , object_type_code
160983 , line_number
160984 , source_application_id
160985 , source_type_code
160986 , source_code
160987 , source_value
160988 , source_meaning
160989 , created_by
160990 , creation_date
160991 , last_update_date
160992 , last_updated_by
160993 , last_update_login
160994 , program_update_date
160995 , program_application_id
160996 , program_id
160997 , request_id
160998 )
160999 SELECT event_id
161000 , p_target_ledger_id
161001 , p_sla_ledger_id
161002 , p_language
161003 , object_name
161004 , object_type_code
161005 , line_number
161006 , source_application_id
161007 , source_type_code
161008 , source_code
161009 , SUBSTR(source_value,1,1996)
161010 , SUBSTR(source_meaning ,1,200)
161011 , xla_environment_pkg.g_Usr_Id
161012 , TRUNC(SYSDATE)
161013 , TRUNC(SYSDATE)
161014 , xla_environment_pkg.g_Usr_Id
161015 , xla_environment_pkg.g_Login_Id
161016 , TRUNC(SYSDATE)
161017 , xla_environment_pkg.g_Prog_Appl_Id
161018 , xla_environment_pkg.g_Prog_Id
161019 , xla_environment_pkg.g_Req_Id
161020 FROM (
161021 SELECT xet.event_id event_id
161022 , l2.line_number line_number
161023 , CASE r
161024 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
161025 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
161026 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
161027 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
161028 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
161029 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
161030 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
161031 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
161032 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
161033
161034 ELSE null
161035 END object_name
161036 , CASE r
161037 WHEN 1 THEN 'LINE'
161038 WHEN 2 THEN 'LINE'
161039 WHEN 3 THEN 'LINE'
161040 WHEN 4 THEN 'LINE'
161041 WHEN 5 THEN 'LINE'
161042 WHEN 6 THEN 'LINE'
161043 WHEN 7 THEN 'LINE'
161044 WHEN 8 THEN 'LINE'
161045 WHEN 9 THEN 'LINE'
161046
161047 ELSE null
161048 END object_type_code
161049 , CASE r
161050 WHEN 1 THEN '707'
161051 WHEN 2 THEN '707'
161052 WHEN 3 THEN '707'
161053 WHEN 4 THEN '707'
161054 WHEN 5 THEN '707'
161055 WHEN 6 THEN '707'
161056 WHEN 7 THEN '707'
161057 WHEN 8 THEN '707'
161058 WHEN 9 THEN '707'
161059
161060 ELSE null
161061 END source_application_id
161062 , 'S' source_type_code
161063 , CASE r
161064 WHEN 1 THEN 'CODE_COMBINATION_ID'
161065 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
161066 WHEN 3 THEN 'CURRENCY_CODE'
161067 WHEN 4 THEN 'ENTERED_AMOUNT'
161068 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
161069 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
161070 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
161071 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
161072 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
161073
161074 ELSE null
161075 END source_code
161076 , CASE r
161077 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
161078 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
161079 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
161080 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
161081 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
161082 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
161083 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
161084 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
161085 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
161086
161087 ELSE null
161088 END source_value
161089 , null source_meaning
161090 FROM xla_events_gt xet
161091 , CST_XLA_INV_LINES_V l2
161092 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
161093 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
161094 AND xet.event_class_code = C_EVENT_CLASS_CODE
161095 AND l2.event_id = xet.event_id
161096
161097 )
161098 ;
161099 --
161100 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161101
161102 trace
161103 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
161104 ,p_level => C_LEVEL_STATEMENT
161105 ,p_module => l_log_module);
161106
161107 END IF;
161108
161109
161110 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161111 trace
161112 (p_msg => 'END of insert_sources_272'
161113 ,p_level => C_LEVEL_PROCEDURE
161114 ,p_module => l_log_module);
161115 END IF;
161116 EXCEPTION
161117 WHEN xla_exceptions_pkg.application_exception THEN
161118 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161119 trace
161120 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161121 ,p_level => C_LEVEL_EXCEPTION
161122 ,p_module => l_log_module);
161123 END IF;
161124 RAISE;
161125 WHEN OTHERS THEN
161126 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
161127 trace
161128 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
161129 ,p_level => C_LEVEL_EXCEPTION
161130 ,p_module => l_log_module);
161131 END IF;
161132 xla_exceptions_pkg.raise_message
161133 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_272');
161134 END insert_sources_272;
161135 --
161136
161137 ---------------------------------------
161138 --
161139 -- PRIVATE FUNCTION
161140 -- EventClass_272
161141 --
161142 ----------------------------------------
161143 --
161144 FUNCTION EventClass_272
161145 (p_application_id IN NUMBER
161146 ,p_base_ledger_id IN NUMBER
161147 ,p_target_ledger_id IN NUMBER
161148 ,p_language IN VARCHAR2
161149 ,p_currency_code IN VARCHAR2
161150 ,p_sla_ledger_id IN NUMBER
161151 ,p_pad_start_date IN DATE
161152 ,p_pad_end_date IN DATE
161153 ,p_primary_ledger_id IN NUMBER)
161154 RETURN BOOLEAN IS
161155 --
161156 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP_ALL';
161157 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'INT_ORDER_TO_EXP';
161158
161159 l_calculate_acctd_flag VARCHAR2(1) :='N';
161160 l_calculate_g_l_flag VARCHAR2(1) :='N';
161161 --
161162 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161163 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161164 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161165 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161166 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161167 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161168 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161169 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161170 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161171 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161172 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161173 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161174 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161175 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
161176 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161177 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161178 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161179 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
161180 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161181 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161182 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161183 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
161184 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
161185 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
161186 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
161187 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
161188
161189 l_event_id NUMBER;
161190 l_previous_event_id NUMBER;
161191 l_first_event_id NUMBER;
161192 l_last_event_id NUMBER;
161193
161194 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
161195 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
161196 --
161197 --
161198 l_result BOOLEAN := TRUE;
161199 l_rows NUMBER := 1000;
161200 l_event_type_name VARCHAR2(80) := 'All';
161201 l_event_class_name VARCHAR2(80) := 'Internal Order to Expense';
161202 l_description VARCHAR2(4000);
161203 l_transaction_reversal NUMBER;
161204 l_ae_header_id NUMBER;
161205 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
161206 l_log_module VARCHAR2(240);
161207 --
161208 l_acct_reversal_source VARCHAR2(30);
161209 l_trx_reversal_source VARCHAR2(30);
161210
161211 l_continue_with_lines BOOLEAN := TRUE;
161212 --
161213 l_acc_rev_gl_date_source DATE; -- 4262811
161214 --
161215 type t_array_event_id is table of number index by binary_integer;
161216
161217 l_rec_array_event t_rec_array_event;
161218 l_null_rec_array_event t_rec_array_event;
161219 l_array_ae_header_id xla_number_array_type;
161220 l_actual_flag VARCHAR2(1) := NULL;
161221 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
161222 l_balance_type_code VARCHAR2(1) :=NULL;
161223 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
161224
161225 --
161226 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
161227 --
161228
161229 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
161230 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
161231
161232 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
161233 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
161234 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
161235 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161236 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
161237 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
161238 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
161239 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
161240 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
161241
161242 l_array_source_12 t_array_source_12;
161243 l_array_source_12_meaning t_array_lookup_meaning;
161244 l_array_source_38 t_array_source_38;
161245 l_array_source_38_meaning t_array_lookup_meaning;
161246
161247 l_array_source_4 t_array_source_4;
161248 l_array_source_11 t_array_source_11;
161249 l_array_source_15 t_array_source_15;
161250 l_array_source_18 t_array_source_18;
161251 l_array_source_19 t_array_source_19;
161252 l_array_source_20 t_array_source_20;
161253 l_array_source_21 t_array_source_21;
161254 l_array_source_22 t_array_source_22;
161255 l_array_source_24 t_array_source_24;
161256
161257 --
161258 CURSOR header_cur
161259 IS
161260 SELECT /*+ leading(xet) cardinality(xet,1) */
161261 -- Event Class Code: INT_ORDER_TO_EXP
161262 xet.entity_id
161263 ,xet.legal_entity_id
161264 ,xet.entity_code
161265 ,xet.transaction_number
161266 ,xet.event_id
161267 ,xet.event_class_code
161268 ,xet.event_type_code
161269 ,xet.event_number
161270 ,xet.event_date
161271 ,xet.transaction_date
161272 ,xet.reference_num_1
161273 ,xet.reference_num_2
161274 ,xet.reference_num_3
161275 ,xet.reference_num_4
161276 ,xet.reference_char_1
161277 ,xet.reference_char_2
161278 ,xet.reference_char_3
161279 ,xet.reference_char_4
161280 ,xet.reference_date_1
161281 ,xet.reference_date_2
161282 ,xet.reference_date_3
161283 ,xet.reference_date_4
161284 ,xet.event_created_by
161285 ,xet.budgetary_control_flag
161286 , h1.DISTRIBUTION_TYPE source_12
161287 , fvl12.meaning source_12_meaning
161288 , h1.TRANSFER_TO_GL_INDICATOR source_38
161289 , fvl38.meaning source_38_meaning
161290 FROM xla_events_gt xet
161291 , CST_XLA_INV_HEADERS_V h1
161292 , fnd_lookup_values fvl12
161293 , fnd_lookup_values fvl38
161294 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
161295 and xet.event_class_code = C_EVENT_CLASS_CODE
161296 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
161297 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
161298 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
161299 AND fvl12.view_application_id(+) = 700
161300 AND fvl12.language(+) = USERENV('LANG')
161301 AND fvl38.lookup_type(+) = 'YES_NO'
161302 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
161303 AND fvl38.view_application_id(+) = 0
161304 AND fvl38.language(+) = USERENV('LANG')
161305
161306 ORDER BY event_id
161307 ;
161308
161309
161310 --
161311 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
161312 IS
161313 SELECT /*+ leading(xet) cardinality(xet,1) */
161314 -- Event Class Code: INT_ORDER_TO_EXP
161315 xet.entity_id
161316 ,xet.legal_entity_id
161317 ,xet.entity_code
161318 ,xet.transaction_number
161319 ,xet.event_id
161320 ,xet.event_class_code
161321 ,xet.event_type_code
161322 ,xet.event_number
161323 ,xet.event_date
161324 ,xet.transaction_date
161325 ,xet.reference_num_1
161326 ,xet.reference_num_2
161327 ,xet.reference_num_3
161328 ,xet.reference_num_4
161329 ,xet.reference_char_1
161330 ,xet.reference_char_2
161331 ,xet.reference_char_3
161332 ,xet.reference_char_4
161333 ,xet.reference_date_1
161334 ,xet.reference_date_2
161335 ,xet.reference_date_3
161336 ,xet.reference_date_4
161337 ,xet.event_created_by
161338 ,xet.budgetary_control_flag
161339 , l2.LINE_NUMBER
161340 , l2.CODE_COMBINATION_ID source_4
161341 , l2.DISTRIBUTION_IDENTIFIER source_11
161342 , l2.CURRENCY_CODE source_15
161343 , l2.ENTERED_AMOUNT source_18
161344 , l2.CURRENCY_CONVERSION_DATE source_19
161345 , l2.CURRENCY_CONVERSION_RATE source_20
161346 , l2.CURRENCY_CONVERSION_TYPE source_21
161347 , l2.ACCOUNTED_AMOUNT source_22
161348 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
161349 FROM xla_events_gt xet
161350 , CST_XLA_INV_LINES_V l2
161351 WHERE xet.event_id between x_first_event_id and x_last_event_id
161352 and xet.event_date between p_pad_start_date and p_pad_end_date
161353 and xet.event_class_code = C_EVENT_CLASS_CODE
161354 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
161355 ;
161356
161357 --
161358 BEGIN
161359 IF g_log_enabled THEN
161360 l_log_module := C_DEFAULT_MODULE||'.EventClass_272';
161361 END IF;
161362 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
161363 trace
161364 (p_msg => 'BEGIN of EventClass_272'
161365 ,p_level => C_LEVEL_PROCEDURE
161366 ,p_module => l_log_module);
161367 END IF;
161368
161369 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161370 trace
161371 (p_msg => 'p_application_id = '||p_application_id||
161372 ' - p_base_ledger_id = '||p_base_ledger_id||
161373 ' - p_target_ledger_id = '||p_target_ledger_id||
161374 ' - p_language = '||p_language||
161375 ' - p_currency_code = '||p_currency_code||
161376 ' - p_sla_ledger_id = '||p_sla_ledger_id
161377 ,p_level => C_LEVEL_STATEMENT
161378 ,p_module => l_log_module);
161379 END IF;
161380 --
161381 -- initialze arrays
161382 --
161383 g_array_event.DELETE;
161384 l_rec_array_event := l_null_rec_array_event;
161385 --
161386 --------------------------------------
161387 -- 4262811 Initialze MPA Line Number
161388 --------------------------------------
161389 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
161390
161391 --
161392
161393 --
161394 OPEN header_cur;
161395 --
161396 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161397 trace
161398 (p_msg => 'SQL - FETCH header_cur'
161399 ,p_level => C_LEVEL_STATEMENT
161400 ,p_module => l_log_module);
161401 END IF;
161402 --
161403 LOOP
161404 FETCH header_cur BULK COLLECT INTO
161405 l_array_entity_id
161406 , l_array_legal_entity_id
161407 , l_array_entity_code
161408 , l_array_transaction_num
161409 , l_array_event_id
161410 , l_array_class_code
161411 , l_array_event_type
161412 , l_array_event_number
161413 , l_array_event_date
161414 , l_array_transaction_date
161415 , l_array_reference_num_1
161416 , l_array_reference_num_2
161417 , l_array_reference_num_3
161418 , l_array_reference_num_4
161419 , l_array_reference_char_1
161420 , l_array_reference_char_2
161421 , l_array_reference_char_3
161422 , l_array_reference_char_4
161423 , l_array_reference_date_1
161424 , l_array_reference_date_2
161425 , l_array_reference_date_3
161426 , l_array_reference_date_4
161427 , l_array_event_created_by
161428 , l_array_budgetary_control_flag
161429 , l_array_source_12
161430 , l_array_source_12_meaning
161431 , l_array_source_38
161432 , l_array_source_38_meaning
161433 LIMIT l_rows;
161434 --
161435 IF (C_LEVEL_EVENT >= g_log_level) THEN
161436 trace
161437 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
161438 ,p_level => C_LEVEL_EVENT
161439 ,p_module => l_log_module);
161440 END IF;
161441 --
161442 EXIT WHEN l_array_entity_id.COUNT = 0;
161443
161444 -- initialize arrays
161445 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
161446 XLA_AE_LINES_PKG.g_rec_lines := NULL;
161447
161448 --
161449 -- Bug 4458708
161450 --
161451 XLA_AE_LINES_PKG.g_LineNumber := 0;
161452
161453
161454 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
161455 g_last_hdr_idx := l_array_event_id.LAST;
161456 --
161457 -- loop for the headers. Each iteration is for each header extract row
161458 -- fetched in header cursor
161459 --
161460 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
161461
161462 --
161463 -- set event info as cache for other routines to refer event attributes
161464 --
161465 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
161466 (p_application_id => p_application_id
161467 ,p_primary_ledger_id => p_primary_ledger_id
161468 ,p_base_ledger_id => p_base_ledger_id
161469 ,p_target_ledger_id => p_target_ledger_id
161470 ,p_entity_id => l_array_entity_id(hdr_idx)
161471 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
161472 ,p_entity_code => l_array_entity_code(hdr_idx)
161473 ,p_transaction_num => l_array_transaction_num(hdr_idx)
161474 ,p_event_id => l_array_event_id(hdr_idx)
161475 ,p_event_class_code => l_array_class_code(hdr_idx)
161476 ,p_event_type_code => l_array_event_type(hdr_idx)
161477 ,p_event_number => l_array_event_number(hdr_idx)
161478 ,p_event_date => l_array_event_date(hdr_idx)
161479 ,p_transaction_date => l_array_transaction_date(hdr_idx)
161480 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
161481 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
161482 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
161483 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
161484 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
161485 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
161486 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
161487 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
161488 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
161489 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
161490 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
161491 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
161492 ,p_event_created_by => l_array_event_created_by(hdr_idx)
161493 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
161494
161495 --
161496 -- set the status of entry to C_VALID (0)
161497 --
161498 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
161499
161500 --
161501 -- initialize a row for ae header
161502 --
161503 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
161504
161505 l_event_id := l_array_event_id(hdr_idx);
161506
161507 --
161508 -- storing the hdr_idx for event. May be used by line cursor.
161509 --
161510 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
161511
161512 --
161513 -- store sources from header extract. This can be improved to
161514 -- store only those sources from header extract that may be used in lines
161515 --
161516
161517 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
161518 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
161519 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
161520 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
161521
161522 --
161523 -- initilaize the status of ae headers for diffrent balance types
161524 -- the status is initialised to C_NOT_CREATED (2)
161525 --
161526 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161527 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161528 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
161529
161530 --
161531 -- call api to validate and store accounting attributes for header
161532 --
161533
161534 ------------------------------------------------------------
161535 -- Accrual Reversal : to get date for Standard Source (NONE)
161536 ------------------------------------------------------------
161537 l_acc_rev_gl_date_source := NULL;
161538
161539 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
161540 l_rec_acct_attrs.array_date_value(1) :=
161541 xla_ae_sources_pkg.GetSystemSourceDate(
161542 p_source_code => 'XLA_REFERENCE_DATE_1'
161543 , p_source_type_code => 'Y'
161544 , p_source_application_id => 602
161545 );
161546 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
161547 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
161548
161549
161550 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
161551
161552 XLA_AE_HEADER_PKG.SetJeCategoryName;
161553
161554 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
161555 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
161556 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
161557 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
161558 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
161559
161560
161561 -- No header level analytical criteria
161562
161563 --
161564 --accounting attribute enhancement, bug 3612931
161565 --
161566 l_trx_reversal_source := SUBSTR(NULL, 1,30);
161567
161568 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
161569 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
161570
161571 xla_accounting_err_pkg.build_message
161572 (p_appli_s_name => 'XLA'
161573 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
161574 ,p_token_1 => 'ACCT_ATTR_NAME'
161575 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
161576 ,p_token_2 => 'PRODUCT_NAME'
161577 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
161578 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
161579 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
161580 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
161581
161582 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
161583 --
161584 -- following sets the accounting attributes needed to reverse
161585 -- accounting for a distributeion
161586 --
161587 xla_ae_lines_pkg.SetTrxReversalAttrs
161588 (p_event_id => l_event_id
161589 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
161590 ,p_trx_reversal_source => l_trx_reversal_source);
161591
161592 END IF;
161593
161594
161595 ----------------------------------------------------------------
161596 -- 4262811 - update the header statuses to invalid in need be
161597 ----------------------------------------------------------------
161598 --
161599 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
161600
161601
161602 -----------------------------------------------
161603 -- No accrual reversal for the event class/type
161604 -----------------------------------------------
161605 ----------------------------------------------------------------
161606
161607 --
161608 -- this ends the header loop iteration for one bulk fetch
161609 --
161610 END LOOP;
161611
161612 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
161613 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
161614
161615 --
161616 -- insert dummy rows into lines gt table that were created due to
161617 -- transaction reversals
161618 --
161619 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
161620 l_result := XLA_AE_LINES_PKG.InsertLines;
161621 END IF;
161622
161623 --
161624 -- reset the temp_line_num for each set of events fetched from header
161625 -- cursor rather than doing it for each new event in line cursor
161626 -- Bug 3939231
161627 --
161628 xla_ae_lines_pkg.g_temp_line_num := 0;
161629
161630
161631
161632 --
161633 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
161634 --
161635 --
161636 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161637
161638 trace
161639 (p_msg => 'SQL - FETCH line_cur'
161640 ,p_level => C_LEVEL_STATEMENT
161641 ,p_module => l_log_module);
161642
161643 END IF;
161644 --
161645 --
161646 LOOP
161647 --
161648 FETCH line_cur BULK COLLECT INTO
161649 l_array_entity_id
161650 , l_array_legal_entity_id
161651 , l_array_entity_code
161652 , l_array_transaction_num
161653 , l_array_event_id
161654 , l_array_class_code
161655 , l_array_event_type
161656 , l_array_event_number
161657 , l_array_event_date
161658 , l_array_transaction_date
161659 , l_array_reference_num_1
161660 , l_array_reference_num_2
161661 , l_array_reference_num_3
161662 , l_array_reference_num_4
161663 , l_array_reference_char_1
161664 , l_array_reference_char_2
161665 , l_array_reference_char_3
161666 , l_array_reference_char_4
161667 , l_array_reference_date_1
161668 , l_array_reference_date_2
161669 , l_array_reference_date_3
161670 , l_array_reference_date_4
161671 , l_array_event_created_by
161672 , l_array_budgetary_control_flag
161673 , l_array_extract_line_num
161674 , l_array_source_4
161675 , l_array_source_11
161676 , l_array_source_15
161677 , l_array_source_18
161678 , l_array_source_19
161679 , l_array_source_20
161680 , l_array_source_21
161681 , l_array_source_22
161682 , l_array_source_24
161683 LIMIT l_rows;
161684
161685 --
161686 IF (C_LEVEL_EVENT >= g_log_level) THEN
161687 trace
161688 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
161689 ,p_level => C_LEVEL_EVENT
161690 ,p_module => l_log_module);
161691 END IF;
161692 --
161693 EXIT WHEN l_array_entity_id.count = 0;
161694
161695 XLA_AE_LINES_PKG.g_rec_lines := null;
161696
161697 --
161698 -- Bug 4458708
161699 --
161700 XLA_AE_LINES_PKG.g_LineNumber := 0;
161701 --
161702 --
161703
161704 FOR Idx IN 1..l_array_event_id.count LOOP
161705 --
161706 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
161707 --
161708 l_event_id := l_array_event_id(idx); -- 5648433
161709
161710 --
161711 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
161712 --
161713
161714 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
161715 (g_array_event(l_event_id).array_value_num('header_index'))
161716 ,'N'
161717 ) <> 'Y'
161718 THEN
161719 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161720 trace
161721 (p_msg => 'Trancaction revesal option is not Y '
161722 ,p_level => C_LEVEL_STATEMENT
161723 ,p_module => l_log_module);
161724 END IF;
161725
161726 --
161727 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
161728 --
161729 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
161730 --
161731 -- set event info as cache for other routines to refer event attributes
161732 --
161733
161734 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
161735 l_previous_event_id := l_event_id;
161736
161737 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
161738 (p_application_id => p_application_id
161739 ,p_primary_ledger_id => p_primary_ledger_id
161740 ,p_base_ledger_id => p_base_ledger_id
161741 ,p_target_ledger_id => p_target_ledger_id
161742 ,p_entity_id => l_array_entity_id(Idx)
161743 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
161744 ,p_entity_code => l_array_entity_code(Idx)
161745 ,p_transaction_num => l_array_transaction_num(Idx)
161746 ,p_event_id => l_array_event_id(Idx)
161747 ,p_event_class_code => l_array_class_code(Idx)
161748 ,p_event_type_code => l_array_event_type(Idx)
161749 ,p_event_number => l_array_event_number(Idx)
161750 ,p_event_date => l_array_event_date(Idx)
161751 ,p_transaction_date => l_array_transaction_date(Idx)
161752 ,p_reference_num_1 => l_array_reference_num_1(Idx)
161753 ,p_reference_num_2 => l_array_reference_num_2(Idx)
161754 ,p_reference_num_3 => l_array_reference_num_3(Idx)
161755 ,p_reference_num_4 => l_array_reference_num_4(Idx)
161756 ,p_reference_char_1 => l_array_reference_char_1(Idx)
161757 ,p_reference_char_2 => l_array_reference_char_2(Idx)
161758 ,p_reference_char_3 => l_array_reference_char_3(Idx)
161759 ,p_reference_char_4 => l_array_reference_char_4(Idx)
161760 ,p_reference_date_1 => l_array_reference_date_1(Idx)
161761 ,p_reference_date_2 => l_array_reference_date_2(Idx)
161762 ,p_reference_date_3 => l_array_reference_date_3(Idx)
161763 ,p_reference_date_4 => l_array_reference_date_4(Idx)
161764 ,p_event_created_by => l_array_event_created_by(Idx)
161765 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
161766 --
161767 END IF;
161768
161769
161770
161771 --
161772 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
161773
161774 l_acct_reversal_source := SUBSTR(NULL, 1,30);
161775
161776 IF l_continue_with_lines THEN
161777 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
161778 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
161779
161780 xla_accounting_err_pkg.build_message
161781 (p_appli_s_name => 'XLA'
161782 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
161783 ,p_token_1 => 'LINE_NUMBER'
161784 ,p_value_1 => l_array_extract_line_num(Idx)
161785 ,p_token_2 => 'PRODUCT_NAME'
161786 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
161787 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
161788 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
161789 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
161790
161791 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
161792 --
161793 -- following sets the accounting attributes needed to reverse
161794 -- accounting for a distributeion
161795 --
161796
161797 --
161798 -- 5217187
161799 --
161800 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
161801 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
161802 g_array_event(l_event_id).array_value_num('header_index'));
161803 --
161804 --
161805
161806 -- No reversal code generated
161807
161808 xla_ae_lines_pkg.SetAcctReversalAttrs
161809 (p_event_id => l_event_id
161810 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
161811 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161812 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
161813 END IF;
161814
161815 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
161816 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
161817
161818 --
161819 AcctLineType_77 (
161820 p_application_id => p_application_id
161821 ,p_event_id => l_event_id
161822 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161823 ,p_calculate_g_l_flag => l_calculate_g_l_flag
161824 ,p_actual_flag => l_actual_flag
161825 ,p_balance_type_code => l_balance_type_code
161826 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161827
161828 , p_source_4 => l_array_source_4(Idx)
161829 , p_source_11 => l_array_source_11(Idx)
161830 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161831 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161832 , p_source_15 => l_array_source_15(Idx)
161833 , p_source_18 => l_array_source_18(Idx)
161834 , p_source_19 => l_array_source_19(Idx)
161835 , p_source_20 => l_array_source_20(Idx)
161836 , p_source_21 => l_array_source_21(Idx)
161837 , p_source_22 => l_array_source_22(Idx)
161838 , p_source_24 => l_array_source_24(Idx)
161839 );
161840 If(l_balance_type_code = 'A') THEN
161841 l_actual_gain_loss_ref := l_gain_or_loss_ref;
161842 END IF;
161843
161844 --
161845
161846
161847 --
161848 AcctLineType_94 (
161849 p_application_id => p_application_id
161850 ,p_event_id => l_event_id
161851 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161852 ,p_calculate_g_l_flag => l_calculate_g_l_flag
161853 ,p_actual_flag => l_actual_flag
161854 ,p_balance_type_code => l_balance_type_code
161855 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161856
161857 , p_source_4 => l_array_source_4(Idx)
161858 , p_source_11 => l_array_source_11(Idx)
161859 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161860 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161861 , p_source_15 => l_array_source_15(Idx)
161862 , p_source_18 => l_array_source_18(Idx)
161863 , p_source_19 => l_array_source_19(Idx)
161864 , p_source_20 => l_array_source_20(Idx)
161865 , p_source_21 => l_array_source_21(Idx)
161866 , p_source_22 => l_array_source_22(Idx)
161867 , p_source_24 => l_array_source_24(Idx)
161868 );
161869 If(l_balance_type_code = 'A') THEN
161870 l_actual_gain_loss_ref := l_gain_or_loss_ref;
161871 END IF;
161872
161873 --
161874
161875
161876 --
161877 AcctLineType_97 (
161878 p_application_id => p_application_id
161879 ,p_event_id => l_event_id
161880 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161881 ,p_calculate_g_l_flag => l_calculate_g_l_flag
161882 ,p_actual_flag => l_actual_flag
161883 ,p_balance_type_code => l_balance_type_code
161884 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161885
161886 , p_source_4 => l_array_source_4(Idx)
161887 , p_source_11 => l_array_source_11(Idx)
161888 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161889 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161890 , p_source_15 => l_array_source_15(Idx)
161891 , p_source_18 => l_array_source_18(Idx)
161892 , p_source_19 => l_array_source_19(Idx)
161893 , p_source_20 => l_array_source_20(Idx)
161894 , p_source_21 => l_array_source_21(Idx)
161895 , p_source_22 => l_array_source_22(Idx)
161896 , p_source_24 => l_array_source_24(Idx)
161897 );
161898 If(l_balance_type_code = 'A') THEN
161899 l_actual_gain_loss_ref := l_gain_or_loss_ref;
161900 END IF;
161901
161902 --
161903
161904
161905 --
161906 AcctLineType_137 (
161907 p_application_id => p_application_id
161908 ,p_event_id => l_event_id
161909 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161910 ,p_calculate_g_l_flag => l_calculate_g_l_flag
161911 ,p_actual_flag => l_actual_flag
161912 ,p_balance_type_code => l_balance_type_code
161913 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161914
161915 , p_source_4 => l_array_source_4(Idx)
161916 , p_source_11 => l_array_source_11(Idx)
161917 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161918 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161919 , p_source_15 => l_array_source_15(Idx)
161920 , p_source_18 => l_array_source_18(Idx)
161921 , p_source_19 => l_array_source_19(Idx)
161922 , p_source_20 => l_array_source_20(Idx)
161923 , p_source_21 => l_array_source_21(Idx)
161924 , p_source_22 => l_array_source_22(Idx)
161925 , p_source_24 => l_array_source_24(Idx)
161926 );
161927 If(l_balance_type_code = 'A') THEN
161928 l_actual_gain_loss_ref := l_gain_or_loss_ref;
161929 END IF;
161930
161931 --
161932
161933
161934 --
161935 AcctLineType_199 (
161936 p_application_id => p_application_id
161937 ,p_event_id => l_event_id
161938 ,p_calculate_acctd_flag => l_calculate_acctd_flag
161939 ,p_calculate_g_l_flag => l_calculate_g_l_flag
161940 ,p_actual_flag => l_actual_flag
161941 ,p_balance_type_code => l_balance_type_code
161942 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
161943
161944 , p_source_4 => l_array_source_4(Idx)
161945 , p_source_11 => l_array_source_11(Idx)
161946 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
161947 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
161948 , p_source_15 => l_array_source_15(Idx)
161949 , p_source_18 => l_array_source_18(Idx)
161950 , p_source_19 => l_array_source_19(Idx)
161951 , p_source_20 => l_array_source_20(Idx)
161952 , p_source_21 => l_array_source_21(Idx)
161953 , p_source_22 => l_array_source_22(Idx)
161954 , p_source_24 => l_array_source_24(Idx)
161955 );
161956 If(l_balance_type_code = 'A') THEN
161957 l_actual_gain_loss_ref := l_gain_or_loss_ref;
161958 END IF;
161959
161960 --
161961
161962 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
161963 -- or secondary ledger that has different currency with primary
161964 -- or alc that is calculated by sla
161965 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
161966 (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'))
161967
161968 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
161969 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
161970 AND (l_actual_flag = 'A')) THEN
161971 XLA_AE_LINES_PKG.CreateGainOrLossLines(
161972 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
161973 ,p_application_id => p_application_id
161974 ,p_amb_context_code => 'DEFAULT'
161975 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
161976 ,p_event_class_code => C_EVENT_CLASS_CODE
161977 ,p_event_type_code => C_EVENT_TYPE_CODE
161978
161979 ,p_gain_ccid => -1
161980 ,p_loss_ccid => -1
161981
161982 ,p_actual_flag => l_actual_flag
161983 ,p_enc_flag => null
161984 ,p_actual_g_l_ref => l_actual_gain_loss_ref
161985 ,p_enc_g_l_ref => null
161986 );
161987 END IF;
161988 END IF;
161989 END IF;
161990
161991 ELSE
161992 --
161993 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
161994 --
161995 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
161996 trace
161997 (p_msg => 'Trancaction revesal option is Y'
161998 ,p_level => C_LEVEL_STATEMENT
161999 ,p_module => l_log_module);
162000 END IF;
162001 END IF;
162002
162003 END LOOP;
162004 l_result := XLA_AE_LINES_PKG.InsertLines ;
162005 end loop;
162006 close line_cur;
162007
162008
162009 --
162010 -- insert headers into xla_ae_headers_gt table
162011 --
162012 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
162013
162014 -- insert into errors table here.
162015
162016 END LOOP;
162017
162018 --
162019 -- 4865292
162020 --
162021 -- Compare g_hdr_extract_count with event count in
162022 -- CreateHeadersAndLines.
162023 --
162024 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
162025
162026 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162027 trace (p_msg => '# rows extracted from header extract objects '
162028 || ' (running total): '
162029 || g_hdr_extract_count
162030 ,p_level => C_LEVEL_STATEMENT
162031 ,p_module => l_log_module);
162032 END IF;
162033
162034 CLOSE header_cur;
162035 --
162036
162037 --
162038 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162039 trace
162040 (p_msg => 'END of EventClass_272'
162041 ,p_level => C_LEVEL_PROCEDURE
162042 ,p_module => l_log_module);
162043 END IF;
162044 --
162045 RETURN l_result;
162046 EXCEPTION
162047 WHEN xla_exceptions_pkg.application_exception THEN
162048
162049 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162050
162051
162052 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
162053
162054 RAISE;
162055
162056 WHEN NO_DATA_FOUND THEN
162057
162058 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
162059 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
162060
162061 FOR header_record IN header_cur
162062 LOOP
162063 l_array_header_events(header_record.event_id) := header_record.event_id;
162064 END LOOP;
162065
162066 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
162067 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
162068
162069 fnd_file.put_line(fnd_file.LOG, ' ');
162070 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162071 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
162072 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
162073
162074 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
162075 LOOP
162076 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
162077 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
162078 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
162079 END IF;
162080 END LOOP;
162081
162082 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
162083 fnd_file.put_line(fnd_file.LOG, ' ');
162084
162085
162086 xla_exceptions_pkg.raise_message
162087 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_272');
162088
162089
162090 WHEN OTHERS THEN
162091 xla_exceptions_pkg.raise_message
162092 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_272');
162093 END EventClass_272;
162094 --
162095
162096 ---------------------------------------
162097 --
162098 -- PRIVATE PROCEDURE
162099 -- insert_sources_273
162100 --
162101 ----------------------------------------
162102 --
162103 PROCEDURE insert_sources_273(
162104 p_target_ledger_id IN NUMBER
162105 , p_language IN VARCHAR2
162106 , p_sla_ledger_id IN NUMBER
162107 , p_pad_start_date IN DATE
162108 , p_pad_end_date IN DATE
162109 )
162110 IS
162111
162112 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_DEL_ALL';
162113 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_DEL';
162114 p_apps_owner VARCHAR2(30);
162115 l_log_module VARCHAR2(240);
162116 BEGIN
162117 IF g_log_enabled THEN
162118 l_log_module := C_DEFAULT_MODULE||'.insert_sources_273';
162119 END IF;
162120 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162121
162122 trace
162123 (p_msg => 'BEGIN of insert_sources_273'
162124 ,p_level => C_LEVEL_PROCEDURE
162125 ,p_module => l_log_module);
162126
162127 END IF;
162128
162129 -- select APPS owner
162130 SELECT oracle_username
162131 INTO p_apps_owner
162132 FROM fnd_oracle_userid
162133 WHERE read_only_flag = 'U'
162134 ;
162135
162136 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162137 trace
162138 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
162139 ' - p_language = '||p_language||
162140 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
162141 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
162142 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
162143 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
162144 ,p_level => C_LEVEL_STATEMENT
162145 ,p_module => l_log_module);
162146 END IF;
162147
162148
162149 --
162150 INSERT INTO xla_diag_sources --hdr2
162151 (
162152 event_id
162153 , ledger_id
162154 , sla_ledger_id
162155 , description_language
162156 , object_name
162157 , object_type_code
162158 , line_number
162159 , source_application_id
162160 , source_type_code
162161 , source_code
162162 , source_value
162163 , source_meaning
162164 , created_by
162165 , creation_date
162166 , last_update_date
162167 , last_updated_by
162168 , last_update_login
162169 , program_update_date
162170 , program_application_id
162171 , program_id
162172 , request_id
162173 )
162174 SELECT
162175 event_id
162176 , p_target_ledger_id
162177 , p_sla_ledger_id
162178 , p_language
162179 , object_name
162180 , object_type_code
162181 , line_number
162182 , source_application_id
162183 , source_type_code
162184 , source_code
162185 , SUBSTR(source_value ,1,1996)
162186 , SUBSTR(source_meaning ,1,200)
162187 , xla_environment_pkg.g_Usr_Id
162188 , TRUNC(SYSDATE)
162189 , TRUNC(SYSDATE)
162190 , xla_environment_pkg.g_Usr_Id
162191 , xla_environment_pkg.g_Login_Id
162192 , TRUNC(SYSDATE)
162193 , xla_environment_pkg.g_Prog_Appl_Id
162194 , xla_environment_pkg.g_Prog_Id
162195 , xla_environment_pkg.g_Req_Id
162196 FROM (
162197 SELECT xet.event_id event_id
162198 , 0 line_number
162199 , CASE r
162200 WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V'
162201 WHEN 2 THEN 'PO_DISTS_REF_V'
162202 WHEN 3 THEN 'PO_DISTS_REF_V'
162203 WHEN 4 THEN 'PO_DISTS_REF_V'
162204 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V'
162205
162206 ELSE null
162207 END object_name
162208 , CASE r
162209 WHEN 1 THEN 'HEADER'
162210 WHEN 2 THEN 'HEADER'
162211 WHEN 3 THEN 'HEADER'
162212 WHEN 4 THEN 'HEADER'
162213 WHEN 5 THEN 'HEADER'
162214
162215 ELSE null
162216 END object_type_code
162217 , CASE r
162218 WHEN 1 THEN '707'
162219 WHEN 2 THEN '201'
162220 WHEN 3 THEN '201'
162221 WHEN 4 THEN '201'
162222 WHEN 5 THEN '707'
162223
162224 ELSE null
162225 END source_application_id
162226 , 'S' source_type_code
162227 , CASE r
162228 WHEN 1 THEN 'DISTRIBUTION_TYPE'
162229 WHEN 2 THEN 'ENTERED_CURRENCY_CODE'
162230 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
162231 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
162232 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR'
162233
162234 ELSE null
162235 END source_code
162236 , CASE r
162237 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
162238 WHEN 2 THEN TO_CHAR(h4.ENTERED_CURRENCY_CODE)
162239 WHEN 3 THEN TO_CHAR(h4.CURRENCY_CONVERSION_DATE)
162240 WHEN 4 THEN TO_CHAR(h4.CURRENCY_CONVERSION_RATE)
162241 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
162242
162243 ELSE null
162244 END source_value
162245 , CASE r
162246 WHEN 1 THEN fvl12.meaning
162247 WHEN 5 THEN fvl38.meaning
162248
162249 ELSE null
162250 END source_meaning
162251 FROM xla_events_gt xet
162252 , CST_XLA_RCV_HEADERS_V h1
162253 , CST_XLA_RCV_REF_V h3
162254 , PO_DISTS_REF_V h4
162255 , fnd_lookup_values fvl12
162256 , fnd_lookup_values fvl38
162257 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
162258 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162259 AND xet.event_class_code = C_EVENT_CLASS_CODE
162260 AND h1.event_id = xet.event_id
162261 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'
162262 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
162263 AND fvl12.view_application_id(+) = 700
162264 AND fvl12.language(+) = USERENV('LANG')
162265 AND fvl38.lookup_type(+) = 'YES_NO'
162266 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
162267 AND fvl38.view_application_id(+) = 0
162268 AND fvl38.language(+) = USERENV('LANG')
162269
162270 )
162271 ;
162272 --
162273 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162274
162275 trace
162276 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
162277 ,p_level => C_LEVEL_STATEMENT
162278 ,p_module => l_log_module);
162279
162280 END IF;
162281 --
162282
162283
162284
162285 --
162286 INSERT INTO xla_diag_sources --line2
162287 (
162288 event_id
162289 , ledger_id
162290 , sla_ledger_id
162291 , description_language
162292 , object_name
162293 , object_type_code
162294 , line_number
162295 , source_application_id
162296 , source_type_code
162297 , source_code
162298 , source_value
162299 , source_meaning
162300 , created_by
162301 , creation_date
162302 , last_update_date
162303 , last_updated_by
162304 , last_update_login
162305 , program_update_date
162306 , program_application_id
162307 , program_id
162308 , request_id
162309 )
162310 SELECT event_id
162311 , p_target_ledger_id
162312 , p_sla_ledger_id
162313 , p_language
162314 , object_name
162315 , object_type_code
162316 , line_number
162317 , source_application_id
162318 , source_type_code
162319 , source_code
162320 , SUBSTR(source_value,1,1996)
162321 , SUBSTR(source_meaning ,1,200)
162322 , xla_environment_pkg.g_Usr_Id
162323 , TRUNC(SYSDATE)
162324 , TRUNC(SYSDATE)
162325 , xla_environment_pkg.g_Usr_Id
162326 , xla_environment_pkg.g_Login_Id
162327 , TRUNC(SYSDATE)
162328 , xla_environment_pkg.g_Prog_Appl_Id
162329 , xla_environment_pkg.g_Prog_Id
162330 , xla_environment_pkg.g_Req_Id
162331 FROM (
162332 SELECT xet.event_id event_id
162333 , l2.line_number line_number
162334 , CASE r
162335 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
162336 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
162337 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
162338 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
162339 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
162340
162341 ELSE null
162342 END object_name
162343 , CASE r
162344 WHEN 1 THEN 'LINE'
162345 WHEN 2 THEN 'LINE'
162346 WHEN 3 THEN 'LINE'
162347 WHEN 4 THEN 'LINE'
162348 WHEN 5 THEN 'LINE'
162349
162350 ELSE null
162351 END object_type_code
162352 , CASE r
162353 WHEN 1 THEN '707'
162354 WHEN 2 THEN '707'
162355 WHEN 3 THEN '707'
162356 WHEN 4 THEN '707'
162357 WHEN 5 THEN '707'
162358
162359 ELSE null
162360 END source_application_id
162361 , 'S' source_type_code
162362 , CASE r
162363 WHEN 1 THEN 'CODE_COMBINATION_ID'
162364 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
162365 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
162366 WHEN 4 THEN 'ENTERED_AMOUNT'
162367 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
162368
162369 ELSE null
162370 END source_code
162371 , CASE r
162372 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
162373 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
162374 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
162375 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
162376 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
162377
162378 ELSE null
162379 END source_value
162380 , null source_meaning
162381 FROM xla_events_gt xet
162382 , CST_XLA_RCV_LINES_V l2
162383 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
162384 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
162385 AND xet.event_class_code = C_EVENT_CLASS_CODE
162386 AND l2.event_id = xet.event_id
162387
162388 )
162389 ;
162390 --
162391 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162392
162393 trace
162394 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
162395 ,p_level => C_LEVEL_STATEMENT
162396 ,p_module => l_log_module);
162397
162398 END IF;
162399
162400
162401 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162402 trace
162403 (p_msg => 'END of insert_sources_273'
162404 ,p_level => C_LEVEL_PROCEDURE
162405 ,p_module => l_log_module);
162406 END IF;
162407 EXCEPTION
162408 WHEN xla_exceptions_pkg.application_exception THEN
162409 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162410 trace
162411 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162412 ,p_level => C_LEVEL_EXCEPTION
162413 ,p_module => l_log_module);
162414 END IF;
162415 RAISE;
162416 WHEN OTHERS THEN
162417 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
162418 trace
162419 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
162420 ,p_level => C_LEVEL_EXCEPTION
162421 ,p_module => l_log_module);
162422 END IF;
162423 xla_exceptions_pkg.raise_message
162424 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_273');
162425 END insert_sources_273;
162426 --
162427
162428 ---------------------------------------
162429 --
162430 -- PRIVATE FUNCTION
162431 -- EventClass_273
162432 --
162433 ----------------------------------------
162434 --
162435 FUNCTION EventClass_273
162436 (p_application_id IN NUMBER
162437 ,p_base_ledger_id IN NUMBER
162438 ,p_target_ledger_id IN NUMBER
162439 ,p_language IN VARCHAR2
162440 ,p_currency_code IN VARCHAR2
162441 ,p_sla_ledger_id IN NUMBER
162442 ,p_pad_start_date IN DATE
162443 ,p_pad_end_date IN DATE
162444 ,p_primary_ledger_id IN NUMBER)
162445 RETURN BOOLEAN IS
162446 --
162447 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_DEL_ALL';
162448 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_DEL';
162449
162450 l_calculate_acctd_flag VARCHAR2(1) :='N';
162451 l_calculate_g_l_flag VARCHAR2(1) :='N';
162452 --
162453 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162454 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162455 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162456 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162457 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162458 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162459 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162460 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162461 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162462 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162463 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162464 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162465 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162466 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
162467 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162468 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162469 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162470 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
162471 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162472 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162473 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162474 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
162475 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
162476 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
162477 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
162478 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
162479
162480 l_event_id NUMBER;
162481 l_previous_event_id NUMBER;
162482 l_first_event_id NUMBER;
162483 l_last_event_id NUMBER;
162484
162485 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
162486 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
162487 --
162488 --
162489 l_result BOOLEAN := TRUE;
162490 l_rows NUMBER := 1000;
162491 l_event_type_name VARCHAR2(80) := 'All';
162492 l_event_class_name VARCHAR2(80) := 'Landed Cost Adjustment to Delivery';
162493 l_description VARCHAR2(4000);
162494 l_transaction_reversal NUMBER;
162495 l_ae_header_id NUMBER;
162496 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
162497 l_log_module VARCHAR2(240);
162498 --
162499 l_acct_reversal_source VARCHAR2(30);
162500 l_trx_reversal_source VARCHAR2(30);
162501
162502 l_continue_with_lines BOOLEAN := TRUE;
162503 --
162504 l_acc_rev_gl_date_source DATE; -- 4262811
162505 --
162506 type t_array_event_id is table of number index by binary_integer;
162507
162508 l_rec_array_event t_rec_array_event;
162509 l_null_rec_array_event t_rec_array_event;
162510 l_array_ae_header_id xla_number_array_type;
162511 l_actual_flag VARCHAR2(1) := NULL;
162512 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
162513 l_balance_type_code VARCHAR2(1) :=NULL;
162514 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
162515
162516 --
162517 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
162518 --
162519
162520 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
162521 TYPE t_array_source_32 IS TABLE OF PO_DISTS_REF_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
162522 TYPE t_array_source_33 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
162523 TYPE t_array_source_34 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
162524 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
162525
162526 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
162527 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
162528 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
162529 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162530 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
162531
162532 l_array_source_12 t_array_source_12;
162533 l_array_source_12_meaning t_array_lookup_meaning;
162534 l_array_source_32 t_array_source_32;
162535 l_array_source_33 t_array_source_33;
162536 l_array_source_34 t_array_source_34;
162537 l_array_source_38 t_array_source_38;
162538 l_array_source_38_meaning t_array_lookup_meaning;
162539
162540 l_array_source_4 t_array_source_4;
162541 l_array_source_5 t_array_source_5;
162542 l_array_source_11 t_array_source_11;
162543 l_array_source_18 t_array_source_18;
162544 l_array_source_22 t_array_source_22;
162545
162546 --
162547 CURSOR header_cur
162548 IS
162549 SELECT /*+ leading(xet) cardinality(xet,1) */
162550 -- Event Class Code: LDD_COST_ADJ_DEL
162551 xet.entity_id
162552 ,xet.legal_entity_id
162553 ,xet.entity_code
162554 ,xet.transaction_number
162555 ,xet.event_id
162556 ,xet.event_class_code
162557 ,xet.event_type_code
162558 ,xet.event_number
162559 ,xet.event_date
162560 ,xet.transaction_date
162561 ,xet.reference_num_1
162562 ,xet.reference_num_2
162563 ,xet.reference_num_3
162564 ,xet.reference_num_4
162565 ,xet.reference_char_1
162566 ,xet.reference_char_2
162567 ,xet.reference_char_3
162568 ,xet.reference_char_4
162569 ,xet.reference_date_1
162570 ,xet.reference_date_2
162571 ,xet.reference_date_3
162572 ,xet.reference_date_4
162573 ,xet.event_created_by
162574 ,xet.budgetary_control_flag
162575 , h1.DISTRIBUTION_TYPE source_12
162576 , fvl12.meaning source_12_meaning
162577 , h4.ENTERED_CURRENCY_CODE source_32
162578 , h4.CURRENCY_CONVERSION_DATE source_33
162579 , h4.CURRENCY_CONVERSION_RATE source_34
162580 , h1.TRANSFER_TO_GL_INDICATOR source_38
162581 , fvl38.meaning source_38_meaning
162582 FROM xla_events_gt xet
162583 , CST_XLA_RCV_HEADERS_V h1
162584 , CST_XLA_RCV_REF_V h3
162585 , PO_DISTS_REF_V h4
162586 , fnd_lookup_values fvl12
162587 , fnd_lookup_values fvl38
162588 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
162589 and xet.event_class_code = C_EVENT_CLASS_CODE
162590 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
162591 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'
162592 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
162593 AND fvl12.view_application_id(+) = 700
162594 AND fvl12.language(+) = USERENV('LANG')
162595 AND fvl38.lookup_type(+) = 'YES_NO'
162596 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
162597 AND fvl38.view_application_id(+) = 0
162598 AND fvl38.language(+) = USERENV('LANG')
162599
162600 ORDER BY event_id
162601 ;
162602
162603
162604 --
162605 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
162606 IS
162607 SELECT /*+ leading(xet) cardinality(xet,1) */
162608 -- Event Class Code: LDD_COST_ADJ_DEL
162609 xet.entity_id
162610 ,xet.legal_entity_id
162611 ,xet.entity_code
162612 ,xet.transaction_number
162613 ,xet.event_id
162614 ,xet.event_class_code
162615 ,xet.event_type_code
162616 ,xet.event_number
162617 ,xet.event_date
162618 ,xet.transaction_date
162619 ,xet.reference_num_1
162620 ,xet.reference_num_2
162621 ,xet.reference_num_3
162622 ,xet.reference_num_4
162623 ,xet.reference_char_1
162624 ,xet.reference_char_2
162625 ,xet.reference_char_3
162626 ,xet.reference_char_4
162627 ,xet.reference_date_1
162628 ,xet.reference_date_2
162629 ,xet.reference_date_3
162630 ,xet.reference_date_4
162631 ,xet.event_created_by
162632 ,xet.budgetary_control_flag
162633 , l2.LINE_NUMBER
162634 , l2.CODE_COMBINATION_ID source_4
162635 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
162636 , l2.DISTRIBUTION_IDENTIFIER source_11
162637 , l2.ENTERED_AMOUNT source_18
162638 , l2.ACCOUNTED_AMOUNT source_22
162639 FROM xla_events_gt xet
162640 , CST_XLA_RCV_LINES_V l2
162641 WHERE xet.event_id between x_first_event_id and x_last_event_id
162642 and xet.event_date between p_pad_start_date and p_pad_end_date
162643 and xet.event_class_code = C_EVENT_CLASS_CODE
162644 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
162645 ;
162646
162647 --
162648 BEGIN
162649 IF g_log_enabled THEN
162650 l_log_module := C_DEFAULT_MODULE||'.EventClass_273';
162651 END IF;
162652 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
162653 trace
162654 (p_msg => 'BEGIN of EventClass_273'
162655 ,p_level => C_LEVEL_PROCEDURE
162656 ,p_module => l_log_module);
162657 END IF;
162658
162659 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162660 trace
162661 (p_msg => 'p_application_id = '||p_application_id||
162662 ' - p_base_ledger_id = '||p_base_ledger_id||
162663 ' - p_target_ledger_id = '||p_target_ledger_id||
162664 ' - p_language = '||p_language||
162665 ' - p_currency_code = '||p_currency_code||
162666 ' - p_sla_ledger_id = '||p_sla_ledger_id
162667 ,p_level => C_LEVEL_STATEMENT
162668 ,p_module => l_log_module);
162669 END IF;
162670 --
162671 -- initialze arrays
162672 --
162673 g_array_event.DELETE;
162674 l_rec_array_event := l_null_rec_array_event;
162675 --
162676 --------------------------------------
162677 -- 4262811 Initialze MPA Line Number
162678 --------------------------------------
162679 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
162680
162681 --
162682
162683 --
162684 OPEN header_cur;
162685 --
162686 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162687 trace
162688 (p_msg => 'SQL - FETCH header_cur'
162689 ,p_level => C_LEVEL_STATEMENT
162690 ,p_module => l_log_module);
162691 END IF;
162692 --
162693 LOOP
162694 FETCH header_cur BULK COLLECT INTO
162695 l_array_entity_id
162696 , l_array_legal_entity_id
162697 , l_array_entity_code
162698 , l_array_transaction_num
162699 , l_array_event_id
162700 , l_array_class_code
162701 , l_array_event_type
162702 , l_array_event_number
162703 , l_array_event_date
162704 , l_array_transaction_date
162705 , l_array_reference_num_1
162706 , l_array_reference_num_2
162707 , l_array_reference_num_3
162708 , l_array_reference_num_4
162709 , l_array_reference_char_1
162710 , l_array_reference_char_2
162711 , l_array_reference_char_3
162712 , l_array_reference_char_4
162713 , l_array_reference_date_1
162714 , l_array_reference_date_2
162715 , l_array_reference_date_3
162716 , l_array_reference_date_4
162717 , l_array_event_created_by
162718 , l_array_budgetary_control_flag
162719 , l_array_source_12
162720 , l_array_source_12_meaning
162721 , l_array_source_32
162722 , l_array_source_33
162723 , l_array_source_34
162724 , l_array_source_38
162725 , l_array_source_38_meaning
162726 LIMIT l_rows;
162727 --
162728 IF (C_LEVEL_EVENT >= g_log_level) THEN
162729 trace
162730 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
162731 ,p_level => C_LEVEL_EVENT
162732 ,p_module => l_log_module);
162733 END IF;
162734 --
162735 EXIT WHEN l_array_entity_id.COUNT = 0;
162736
162737 -- initialize arrays
162738 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
162739 XLA_AE_LINES_PKG.g_rec_lines := NULL;
162740
162741 --
162742 -- Bug 4458708
162743 --
162744 XLA_AE_LINES_PKG.g_LineNumber := 0;
162745
162746
162747 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
162748 g_last_hdr_idx := l_array_event_id.LAST;
162749 --
162750 -- loop for the headers. Each iteration is for each header extract row
162751 -- fetched in header cursor
162752 --
162753 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
162754
162755 --
162756 -- set event info as cache for other routines to refer event attributes
162757 --
162758 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
162759 (p_application_id => p_application_id
162760 ,p_primary_ledger_id => p_primary_ledger_id
162761 ,p_base_ledger_id => p_base_ledger_id
162762 ,p_target_ledger_id => p_target_ledger_id
162763 ,p_entity_id => l_array_entity_id(hdr_idx)
162764 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
162765 ,p_entity_code => l_array_entity_code(hdr_idx)
162766 ,p_transaction_num => l_array_transaction_num(hdr_idx)
162767 ,p_event_id => l_array_event_id(hdr_idx)
162768 ,p_event_class_code => l_array_class_code(hdr_idx)
162769 ,p_event_type_code => l_array_event_type(hdr_idx)
162770 ,p_event_number => l_array_event_number(hdr_idx)
162771 ,p_event_date => l_array_event_date(hdr_idx)
162772 ,p_transaction_date => l_array_transaction_date(hdr_idx)
162773 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
162774 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
162775 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
162776 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
162777 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
162778 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
162779 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
162780 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
162781 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
162782 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
162783 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
162784 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
162785 ,p_event_created_by => l_array_event_created_by(hdr_idx)
162786 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
162787
162788 --
162789 -- set the status of entry to C_VALID (0)
162790 --
162791 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
162792
162793 --
162794 -- initialize a row for ae header
162795 --
162796 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
162797
162798 l_event_id := l_array_event_id(hdr_idx);
162799
162800 --
162801 -- storing the hdr_idx for event. May be used by line cursor.
162802 --
162803 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
162804
162805 --
162806 -- store sources from header extract. This can be improved to
162807 -- store only those sources from header extract that may be used in lines
162808 --
162809
162810 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
162811 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
162812 g_array_event(l_event_id).array_value_char('source_32') := l_array_source_32(hdr_idx);
162813 g_array_event(l_event_id).array_value_date('source_33') := l_array_source_33(hdr_idx);
162814 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
162815 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
162816 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
162817
162818 --
162819 -- initilaize the status of ae headers for diffrent balance types
162820 -- the status is initialised to C_NOT_CREATED (2)
162821 --
162822 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162823 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162824 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
162825
162826 --
162827 -- call api to validate and store accounting attributes for header
162828 --
162829
162830 ------------------------------------------------------------
162831 -- Accrual Reversal : to get date for Standard Source (NONE)
162832 ------------------------------------------------------------
162833 l_acc_rev_gl_date_source := NULL;
162834
162835 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
162836 l_rec_acct_attrs.array_date_value(1) :=
162837 xla_ae_sources_pkg.GetSystemSourceDate(
162838 p_source_code => 'XLA_REFERENCE_DATE_1'
162839 , p_source_type_code => 'Y'
162840 , p_source_application_id => 602
162841 );
162842 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
162843 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
162844
162845
162846 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
162847
162848 XLA_AE_HEADER_PKG.SetJeCategoryName;
162849
162850 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
162851 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
162852 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
162853 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
162854 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
162855
162856
162857 -- No header level analytical criteria
162858
162859 --
162860 --accounting attribute enhancement, bug 3612931
162861 --
162862 l_trx_reversal_source := SUBSTR(NULL, 1,30);
162863
162864 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
162865 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
162866
162867 xla_accounting_err_pkg.build_message
162868 (p_appli_s_name => 'XLA'
162869 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
162870 ,p_token_1 => 'ACCT_ATTR_NAME'
162871 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
162872 ,p_token_2 => 'PRODUCT_NAME'
162873 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
162874 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
162875 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
162876 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
162877
162878 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
162879 --
162880 -- following sets the accounting attributes needed to reverse
162881 -- accounting for a distributeion
162882 --
162883 xla_ae_lines_pkg.SetTrxReversalAttrs
162884 (p_event_id => l_event_id
162885 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
162886 ,p_trx_reversal_source => l_trx_reversal_source);
162887
162888 END IF;
162889
162890
162891 ----------------------------------------------------------------
162892 -- 4262811 - update the header statuses to invalid in need be
162893 ----------------------------------------------------------------
162894 --
162895 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
162896
162897
162898 -----------------------------------------------
162899 -- No accrual reversal for the event class/type
162900 -----------------------------------------------
162901 ----------------------------------------------------------------
162902
162903 --
162904 -- this ends the header loop iteration for one bulk fetch
162905 --
162906 END LOOP;
162907
162908 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
162909 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
162910
162911 --
162912 -- insert dummy rows into lines gt table that were created due to
162913 -- transaction reversals
162914 --
162915 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
162916 l_result := XLA_AE_LINES_PKG.InsertLines;
162917 END IF;
162918
162919 --
162920 -- reset the temp_line_num for each set of events fetched from header
162921 -- cursor rather than doing it for each new event in line cursor
162922 -- Bug 3939231
162923 --
162924 xla_ae_lines_pkg.g_temp_line_num := 0;
162925
162926
162927
162928 --
162929 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
162930 --
162931 --
162932 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
162933
162934 trace
162935 (p_msg => 'SQL - FETCH line_cur'
162936 ,p_level => C_LEVEL_STATEMENT
162937 ,p_module => l_log_module);
162938
162939 END IF;
162940 --
162941 --
162942 LOOP
162943 --
162944 FETCH line_cur BULK COLLECT INTO
162945 l_array_entity_id
162946 , l_array_legal_entity_id
162947 , l_array_entity_code
162948 , l_array_transaction_num
162949 , l_array_event_id
162950 , l_array_class_code
162951 , l_array_event_type
162952 , l_array_event_number
162953 , l_array_event_date
162954 , l_array_transaction_date
162955 , l_array_reference_num_1
162956 , l_array_reference_num_2
162957 , l_array_reference_num_3
162958 , l_array_reference_num_4
162959 , l_array_reference_char_1
162960 , l_array_reference_char_2
162961 , l_array_reference_char_3
162962 , l_array_reference_char_4
162963 , l_array_reference_date_1
162964 , l_array_reference_date_2
162965 , l_array_reference_date_3
162966 , l_array_reference_date_4
162967 , l_array_event_created_by
162968 , l_array_budgetary_control_flag
162969 , l_array_extract_line_num
162970 , l_array_source_4
162971 , l_array_source_5
162972 , l_array_source_11
162973 , l_array_source_18
162974 , l_array_source_22
162975 LIMIT l_rows;
162976
162977 --
162978 IF (C_LEVEL_EVENT >= g_log_level) THEN
162979 trace
162980 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
162981 ,p_level => C_LEVEL_EVENT
162982 ,p_module => l_log_module);
162983 END IF;
162984 --
162985 EXIT WHEN l_array_entity_id.count = 0;
162986
162987 XLA_AE_LINES_PKG.g_rec_lines := null;
162988
162989 --
162990 -- Bug 4458708
162991 --
162992 XLA_AE_LINES_PKG.g_LineNumber := 0;
162993 --
162994 --
162995
162996 FOR Idx IN 1..l_array_event_id.count LOOP
162997 --
162998 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
162999 --
163000 l_event_id := l_array_event_id(idx); -- 5648433
163001
163002 --
163003 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163004 --
163005
163006 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
163007 (g_array_event(l_event_id).array_value_num('header_index'))
163008 ,'N'
163009 ) <> 'Y'
163010 THEN
163011 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163012 trace
163013 (p_msg => 'Trancaction revesal option is not Y '
163014 ,p_level => C_LEVEL_STATEMENT
163015 ,p_module => l_log_module);
163016 END IF;
163017
163018 --
163019 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
163020 --
163021 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
163022 --
163023 -- set event info as cache for other routines to refer event attributes
163024 --
163025
163026 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
163027 l_previous_event_id := l_event_id;
163028
163029 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
163030 (p_application_id => p_application_id
163031 ,p_primary_ledger_id => p_primary_ledger_id
163032 ,p_base_ledger_id => p_base_ledger_id
163033 ,p_target_ledger_id => p_target_ledger_id
163034 ,p_entity_id => l_array_entity_id(Idx)
163035 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
163036 ,p_entity_code => l_array_entity_code(Idx)
163037 ,p_transaction_num => l_array_transaction_num(Idx)
163038 ,p_event_id => l_array_event_id(Idx)
163039 ,p_event_class_code => l_array_class_code(Idx)
163040 ,p_event_type_code => l_array_event_type(Idx)
163041 ,p_event_number => l_array_event_number(Idx)
163042 ,p_event_date => l_array_event_date(Idx)
163043 ,p_transaction_date => l_array_transaction_date(Idx)
163044 ,p_reference_num_1 => l_array_reference_num_1(Idx)
163045 ,p_reference_num_2 => l_array_reference_num_2(Idx)
163046 ,p_reference_num_3 => l_array_reference_num_3(Idx)
163047 ,p_reference_num_4 => l_array_reference_num_4(Idx)
163048 ,p_reference_char_1 => l_array_reference_char_1(Idx)
163049 ,p_reference_char_2 => l_array_reference_char_2(Idx)
163050 ,p_reference_char_3 => l_array_reference_char_3(Idx)
163051 ,p_reference_char_4 => l_array_reference_char_4(Idx)
163052 ,p_reference_date_1 => l_array_reference_date_1(Idx)
163053 ,p_reference_date_2 => l_array_reference_date_2(Idx)
163054 ,p_reference_date_3 => l_array_reference_date_3(Idx)
163055 ,p_reference_date_4 => l_array_reference_date_4(Idx)
163056 ,p_event_created_by => l_array_event_created_by(Idx)
163057 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
163058 --
163059 END IF;
163060
163061
163062
163063 --
163064 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
163065
163066 l_acct_reversal_source := SUBSTR(NULL, 1,30);
163067
163068 IF l_continue_with_lines THEN
163069 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
163070 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
163071
163072 xla_accounting_err_pkg.build_message
163073 (p_appli_s_name => 'XLA'
163074 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
163075 ,p_token_1 => 'LINE_NUMBER'
163076 ,p_value_1 => l_array_extract_line_num(Idx)
163077 ,p_token_2 => 'PRODUCT_NAME'
163078 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
163079 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
163080 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
163081 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
163082
163083 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
163084 --
163085 -- following sets the accounting attributes needed to reverse
163086 -- accounting for a distributeion
163087 --
163088
163089 --
163090 -- 5217187
163091 --
163092 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
163093 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
163094 g_array_event(l_event_id).array_value_num('header_index'));
163095 --
163096 --
163097
163098 -- No reversal code generated
163099
163100 xla_ae_lines_pkg.SetAcctReversalAttrs
163101 (p_event_id => l_event_id
163102 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
163103 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163104 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
163105 END IF;
163106
163107 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
163108 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
163109
163110 --
163111 AcctLineType_50 (
163112 p_application_id => p_application_id
163113 ,p_event_id => l_event_id
163114 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163115 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163116 ,p_actual_flag => l_actual_flag
163117 ,p_balance_type_code => l_balance_type_code
163118 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163119
163120 , p_source_4 => l_array_source_4(Idx)
163121 , p_source_5 => l_array_source_5(Idx)
163122 , p_source_11 => l_array_source_11(Idx)
163123 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163124 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163125 , p_source_18 => l_array_source_18(Idx)
163126 , p_source_22 => l_array_source_22(Idx)
163127 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
163128 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
163129 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
163130 );
163131 If(l_balance_type_code = 'A') THEN
163132 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163133 END IF;
163134
163135 --
163136
163137
163138 --
163139 AcctLineType_163 (
163140 p_application_id => p_application_id
163141 ,p_event_id => l_event_id
163142 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163143 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163144 ,p_actual_flag => l_actual_flag
163145 ,p_balance_type_code => l_balance_type_code
163146 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163147
163148 , p_source_4 => l_array_source_4(Idx)
163149 , p_source_5 => l_array_source_5(Idx)
163150 , p_source_11 => l_array_source_11(Idx)
163151 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163152 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163153 , p_source_18 => l_array_source_18(Idx)
163154 , p_source_22 => l_array_source_22(Idx)
163155 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
163156 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
163157 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
163158 );
163159 If(l_balance_type_code = 'A') THEN
163160 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163161 END IF;
163162
163163 --
163164
163165
163166 --
163167 AcctLineType_231 (
163168 p_application_id => p_application_id
163169 ,p_event_id => l_event_id
163170 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163171 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163172 ,p_actual_flag => l_actual_flag
163173 ,p_balance_type_code => l_balance_type_code
163174 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163175
163176 , p_source_4 => l_array_source_4(Idx)
163177 , p_source_5 => l_array_source_5(Idx)
163178 , p_source_11 => l_array_source_11(Idx)
163179 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163180 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163181 , p_source_18 => l_array_source_18(Idx)
163182 , p_source_22 => l_array_source_22(Idx)
163183 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
163184 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
163185 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
163186 );
163187 If(l_balance_type_code = 'A') THEN
163188 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163189 END IF;
163190
163191 --
163192
163193
163194 --
163195 AcctLineType_236 (
163196 p_application_id => p_application_id
163197 ,p_event_id => l_event_id
163198 ,p_calculate_acctd_flag => l_calculate_acctd_flag
163199 ,p_calculate_g_l_flag => l_calculate_g_l_flag
163200 ,p_actual_flag => l_actual_flag
163201 ,p_balance_type_code => l_balance_type_code
163202 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
163203
163204 , p_source_4 => l_array_source_4(Idx)
163205 , p_source_5 => l_array_source_5(Idx)
163206 , p_source_11 => l_array_source_11(Idx)
163207 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
163208 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
163209 , p_source_18 => l_array_source_18(Idx)
163210 , p_source_22 => l_array_source_22(Idx)
163211 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
163212 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
163213 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
163214 );
163215 If(l_balance_type_code = 'A') THEN
163216 l_actual_gain_loss_ref := l_gain_or_loss_ref;
163217 END IF;
163218
163219 --
163220
163221 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
163222 -- or secondary ledger that has different currency with primary
163223 -- or alc that is calculated by sla
163224 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
163225 (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'))
163226
163227 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
163228 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
163229 AND (l_actual_flag = 'A')) THEN
163230 XLA_AE_LINES_PKG.CreateGainOrLossLines(
163231 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
163232 ,p_application_id => p_application_id
163233 ,p_amb_context_code => 'DEFAULT'
163234 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
163235 ,p_event_class_code => C_EVENT_CLASS_CODE
163236 ,p_event_type_code => C_EVENT_TYPE_CODE
163237
163238 ,p_gain_ccid => -1
163239 ,p_loss_ccid => -1
163240
163241 ,p_actual_flag => l_actual_flag
163242 ,p_enc_flag => null
163243 ,p_actual_g_l_ref => l_actual_gain_loss_ref
163244 ,p_enc_g_l_ref => null
163245 );
163246 END IF;
163247 END IF;
163248 END IF;
163249
163250 ELSE
163251 --
163252 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
163253 --
163254 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163255 trace
163256 (p_msg => 'Trancaction revesal option is Y'
163257 ,p_level => C_LEVEL_STATEMENT
163258 ,p_module => l_log_module);
163259 END IF;
163260 END IF;
163261
163262 END LOOP;
163263 l_result := XLA_AE_LINES_PKG.InsertLines ;
163264 end loop;
163265 close line_cur;
163266
163267
163268 --
163269 -- insert headers into xla_ae_headers_gt table
163270 --
163271 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
163272
163273 -- insert into errors table here.
163274
163275 END LOOP;
163276
163277 --
163278 -- 4865292
163279 --
163280 -- Compare g_hdr_extract_count with event count in
163281 -- CreateHeadersAndLines.
163282 --
163283 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
163284
163285 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163286 trace (p_msg => '# rows extracted from header extract objects '
163287 || ' (running total): '
163288 || g_hdr_extract_count
163289 ,p_level => C_LEVEL_STATEMENT
163290 ,p_module => l_log_module);
163291 END IF;
163292
163293 CLOSE header_cur;
163294 --
163295
163296 --
163297 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163298 trace
163299 (p_msg => 'END of EventClass_273'
163300 ,p_level => C_LEVEL_PROCEDURE
163301 ,p_module => l_log_module);
163302 END IF;
163303 --
163304 RETURN l_result;
163305 EXCEPTION
163306 WHEN xla_exceptions_pkg.application_exception THEN
163307
163308 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163309
163310
163311 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
163312
163313 RAISE;
163314
163315 WHEN NO_DATA_FOUND THEN
163316
163317 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
163318 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
163319
163320 FOR header_record IN header_cur
163321 LOOP
163322 l_array_header_events(header_record.event_id) := header_record.event_id;
163323 END LOOP;
163324
163325 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
163326 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
163327
163328 fnd_file.put_line(fnd_file.LOG, ' ');
163329 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163330 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
163331 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
163332
163333 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
163334 LOOP
163335 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
163336 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
163337 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
163338 END IF;
163339 END LOOP;
163340
163341 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
163342 fnd_file.put_line(fnd_file.LOG, ' ');
163343
163344
163345 xla_exceptions_pkg.raise_message
163346 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_273');
163347
163348
163349 WHEN OTHERS THEN
163350 xla_exceptions_pkg.raise_message
163351 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_273');
163352 END EventClass_273;
163353 --
163354
163355 ---------------------------------------
163356 --
163357 -- PRIVATE PROCEDURE
163358 -- insert_sources_274
163359 --
163360 ----------------------------------------
163361 --
163362 PROCEDURE insert_sources_274(
163363 p_target_ledger_id IN NUMBER
163364 , p_language IN VARCHAR2
163365 , p_sla_ledger_id IN NUMBER
163366 , p_pad_start_date IN DATE
163367 , p_pad_end_date IN DATE
163368 )
163369 IS
163370
163371 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_RCV_ALL';
163372 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_RCV';
163373 p_apps_owner VARCHAR2(30);
163374 l_log_module VARCHAR2(240);
163375 BEGIN
163376 IF g_log_enabled THEN
163377 l_log_module := C_DEFAULT_MODULE||'.insert_sources_274';
163378 END IF;
163379 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163380
163381 trace
163382 (p_msg => 'BEGIN of insert_sources_274'
163383 ,p_level => C_LEVEL_PROCEDURE
163384 ,p_module => l_log_module);
163385
163386 END IF;
163387
163388 -- select APPS owner
163389 SELECT oracle_username
163390 INTO p_apps_owner
163391 FROM fnd_oracle_userid
163392 WHERE read_only_flag = 'U'
163393 ;
163394
163395 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163396 trace
163397 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
163398 ' - p_language = '||p_language||
163399 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
163400 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
163401 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
163402 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
163403 ,p_level => C_LEVEL_STATEMENT
163404 ,p_module => l_log_module);
163405 END IF;
163406
163407
163408 --
163409 INSERT INTO xla_diag_sources --hdr2
163410 (
163411 event_id
163412 , ledger_id
163413 , sla_ledger_id
163414 , description_language
163415 , object_name
163416 , object_type_code
163417 , line_number
163418 , source_application_id
163419 , source_type_code
163420 , source_code
163421 , source_value
163422 , source_meaning
163423 , created_by
163424 , creation_date
163425 , last_update_date
163426 , last_updated_by
163427 , last_update_login
163428 , program_update_date
163429 , program_application_id
163430 , program_id
163431 , request_id
163432 )
163433 SELECT
163434 event_id
163435 , p_target_ledger_id
163436 , p_sla_ledger_id
163437 , p_language
163438 , object_name
163439 , object_type_code
163440 , line_number
163441 , source_application_id
163442 , source_type_code
163443 , source_code
163444 , SUBSTR(source_value ,1,1996)
163445 , SUBSTR(source_meaning ,1,200)
163446 , xla_environment_pkg.g_Usr_Id
163447 , TRUNC(SYSDATE)
163448 , TRUNC(SYSDATE)
163449 , xla_environment_pkg.g_Usr_Id
163450 , xla_environment_pkg.g_Login_Id
163451 , TRUNC(SYSDATE)
163452 , xla_environment_pkg.g_Prog_Appl_Id
163453 , xla_environment_pkg.g_Prog_Id
163454 , xla_environment_pkg.g_Req_Id
163455 FROM (
163456 SELECT xet.event_id event_id
163457 , 0 line_number
163458 , CASE r
163459 WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V'
163460 WHEN 2 THEN 'PO_DISTS_REF_V'
163461 WHEN 3 THEN 'PO_DISTS_REF_V'
163462 WHEN 4 THEN 'PO_DISTS_REF_V'
163463 WHEN 5 THEN 'PO_DISTS_REF_V'
163464 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V'
163465
163466 ELSE null
163467 END object_name
163468 , CASE r
163469 WHEN 1 THEN 'HEADER'
163470 WHEN 2 THEN 'HEADER'
163471 WHEN 3 THEN 'HEADER'
163472 WHEN 4 THEN 'HEADER'
163473 WHEN 5 THEN 'HEADER'
163474 WHEN 6 THEN 'HEADER'
163475
163476 ELSE null
163477 END object_type_code
163478 , CASE r
163479 WHEN 1 THEN '707'
163480 WHEN 2 THEN '201'
163481 WHEN 3 THEN '201'
163482 WHEN 4 THEN '201'
163483 WHEN 5 THEN '201'
163484 WHEN 6 THEN '707'
163485
163486 ELSE null
163487 END source_application_id
163488 , 'S' source_type_code
163489 , CASE r
163490 WHEN 1 THEN 'DISTRIBUTION_TYPE'
163491 WHEN 2 THEN 'ENTERED_CURRENCY_CODE'
163492 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
163493 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
163494 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
163495 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
163496
163497 ELSE null
163498 END source_code
163499 , CASE r
163500 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
163501 WHEN 2 THEN TO_CHAR(h4.ENTERED_CURRENCY_CODE)
163502 WHEN 3 THEN TO_CHAR(h4.CURRENCY_CONVERSION_DATE)
163503 WHEN 4 THEN TO_CHAR(h4.CURRENCY_CONVERSION_RATE)
163504 WHEN 5 THEN TO_CHAR(h4.CURRENCY_CONVERSION_TYPE)
163505 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
163506
163507 ELSE null
163508 END source_value
163509 , CASE r
163510 WHEN 1 THEN fvl12.meaning
163511 WHEN 6 THEN fvl38.meaning
163512
163513 ELSE null
163514 END source_meaning
163515 FROM xla_events_gt xet
163516 , CST_XLA_RCV_HEADERS_V h1
163517 , CST_XLA_RCV_REF_V h3
163518 , PO_DISTS_REF_V h4
163519 , fnd_lookup_values fvl12
163520 , fnd_lookup_values fvl38
163521 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
163522 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163523 AND xet.event_class_code = C_EVENT_CLASS_CODE
163524 AND h1.event_id = xet.event_id
163525 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'
163526 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
163527 AND fvl12.view_application_id(+) = 700
163528 AND fvl12.language(+) = USERENV('LANG')
163529 AND fvl38.lookup_type(+) = 'YES_NO'
163530 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
163531 AND fvl38.view_application_id(+) = 0
163532 AND fvl38.language(+) = USERENV('LANG')
163533
163534 )
163535 ;
163536 --
163537 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163538
163539 trace
163540 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
163541 ,p_level => C_LEVEL_STATEMENT
163542 ,p_module => l_log_module);
163543
163544 END IF;
163545 --
163546
163547
163548
163549 --
163550 INSERT INTO xla_diag_sources --line2
163551 (
163552 event_id
163553 , ledger_id
163554 , sla_ledger_id
163555 , description_language
163556 , object_name
163557 , object_type_code
163558 , line_number
163559 , source_application_id
163560 , source_type_code
163561 , source_code
163562 , source_value
163563 , source_meaning
163564 , created_by
163565 , creation_date
163566 , last_update_date
163567 , last_updated_by
163568 , last_update_login
163569 , program_update_date
163570 , program_application_id
163571 , program_id
163572 , request_id
163573 )
163574 SELECT event_id
163575 , p_target_ledger_id
163576 , p_sla_ledger_id
163577 , p_language
163578 , object_name
163579 , object_type_code
163580 , line_number
163581 , source_application_id
163582 , source_type_code
163583 , source_code
163584 , SUBSTR(source_value,1,1996)
163585 , SUBSTR(source_meaning ,1,200)
163586 , xla_environment_pkg.g_Usr_Id
163587 , TRUNC(SYSDATE)
163588 , TRUNC(SYSDATE)
163589 , xla_environment_pkg.g_Usr_Id
163590 , xla_environment_pkg.g_Login_Id
163591 , TRUNC(SYSDATE)
163592 , xla_environment_pkg.g_Prog_Appl_Id
163593 , xla_environment_pkg.g_Prog_Id
163594 , xla_environment_pkg.g_Req_Id
163595 FROM (
163596 SELECT xet.event_id event_id
163597 , l2.line_number line_number
163598 , CASE r
163599 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
163600 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
163601 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
163602 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
163603 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
163604
163605 ELSE null
163606 END object_name
163607 , CASE r
163608 WHEN 1 THEN 'LINE'
163609 WHEN 2 THEN 'LINE'
163610 WHEN 3 THEN 'LINE'
163611 WHEN 4 THEN 'LINE'
163612 WHEN 5 THEN 'LINE'
163613
163614 ELSE null
163615 END object_type_code
163616 , CASE r
163617 WHEN 1 THEN '707'
163618 WHEN 2 THEN '707'
163619 WHEN 3 THEN '707'
163620 WHEN 4 THEN '707'
163621 WHEN 5 THEN '707'
163622
163623 ELSE null
163624 END source_application_id
163625 , 'S' source_type_code
163626 , CASE r
163627 WHEN 1 THEN 'CODE_COMBINATION_ID'
163628 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
163629 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
163630 WHEN 4 THEN 'ENTERED_AMOUNT'
163631 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
163632
163633 ELSE null
163634 END source_code
163635 , CASE r
163636 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
163637 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
163638 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
163639 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
163640 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
163641
163642 ELSE null
163643 END source_value
163644 , null source_meaning
163645 FROM xla_events_gt xet
163646 , CST_XLA_RCV_LINES_V l2
163647 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
163648 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
163649 AND xet.event_class_code = C_EVENT_CLASS_CODE
163650 AND l2.event_id = xet.event_id
163651
163652 )
163653 ;
163654 --
163655 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163656
163657 trace
163658 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
163659 ,p_level => C_LEVEL_STATEMENT
163660 ,p_module => l_log_module);
163661
163662 END IF;
163663
163664
163665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163666 trace
163667 (p_msg => 'END of insert_sources_274'
163668 ,p_level => C_LEVEL_PROCEDURE
163669 ,p_module => l_log_module);
163670 END IF;
163671 EXCEPTION
163672 WHEN xla_exceptions_pkg.application_exception THEN
163673 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163674 trace
163675 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163676 ,p_level => C_LEVEL_EXCEPTION
163677 ,p_module => l_log_module);
163678 END IF;
163679 RAISE;
163680 WHEN OTHERS THEN
163681 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
163682 trace
163683 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
163684 ,p_level => C_LEVEL_EXCEPTION
163685 ,p_module => l_log_module);
163686 END IF;
163687 xla_exceptions_pkg.raise_message
163688 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_274');
163689 END insert_sources_274;
163690 --
163691
163692 ---------------------------------------
163693 --
163694 -- PRIVATE FUNCTION
163695 -- EventClass_274
163696 --
163697 ----------------------------------------
163698 --
163699 FUNCTION EventClass_274
163700 (p_application_id IN NUMBER
163701 ,p_base_ledger_id IN NUMBER
163702 ,p_target_ledger_id IN NUMBER
163703 ,p_language IN VARCHAR2
163704 ,p_currency_code IN VARCHAR2
163705 ,p_sla_ledger_id IN NUMBER
163706 ,p_pad_start_date IN DATE
163707 ,p_pad_end_date IN DATE
163708 ,p_primary_ledger_id IN NUMBER)
163709 RETURN BOOLEAN IS
163710 --
163711 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_RCV_ALL';
163712 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LDD_COST_ADJ_RCV';
163713
163714 l_calculate_acctd_flag VARCHAR2(1) :='N';
163715 l_calculate_g_l_flag VARCHAR2(1) :='N';
163716 --
163717 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163718 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163719 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163720 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163721 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163722 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163723 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163724 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163725 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163726 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163727 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163728 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163729 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163730 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
163731 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163732 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163733 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163734 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
163735 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163736 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163737 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163738 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
163739 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
163740 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
163741 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
163742 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
163743
163744 l_event_id NUMBER;
163745 l_previous_event_id NUMBER;
163746 l_first_event_id NUMBER;
163747 l_last_event_id NUMBER;
163748
163749 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
163750 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
163751 --
163752 --
163753 l_result BOOLEAN := TRUE;
163754 l_rows NUMBER := 1000;
163755 l_event_type_name VARCHAR2(80) := 'All';
163756 l_event_class_name VARCHAR2(80) := 'Landed Cost Adjustment to Receipt';
163757 l_description VARCHAR2(4000);
163758 l_transaction_reversal NUMBER;
163759 l_ae_header_id NUMBER;
163760 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
163761 l_log_module VARCHAR2(240);
163762 --
163763 l_acct_reversal_source VARCHAR2(30);
163764 l_trx_reversal_source VARCHAR2(30);
163765
163766 l_continue_with_lines BOOLEAN := TRUE;
163767 --
163768 l_acc_rev_gl_date_source DATE; -- 4262811
163769 --
163770 type t_array_event_id is table of number index by binary_integer;
163771
163772 l_rec_array_event t_rec_array_event;
163773 l_null_rec_array_event t_rec_array_event;
163774 l_array_ae_header_id xla_number_array_type;
163775 l_actual_flag VARCHAR2(1) := NULL;
163776 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
163777 l_balance_type_code VARCHAR2(1) :=NULL;
163778 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
163779
163780 --
163781 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
163782 --
163783
163784 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
163785 TYPE t_array_source_32 IS TABLE OF PO_DISTS_REF_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
163786 TYPE t_array_source_33 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
163787 TYPE t_array_source_34 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
163788 TYPE t_array_source_36 IS TABLE OF PO_DISTS_REF_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
163789 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
163790
163791 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
163792 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
163793 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
163794 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
163795 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
163796
163797 l_array_source_12 t_array_source_12;
163798 l_array_source_12_meaning t_array_lookup_meaning;
163799 l_array_source_32 t_array_source_32;
163800 l_array_source_33 t_array_source_33;
163801 l_array_source_34 t_array_source_34;
163802 l_array_source_36 t_array_source_36;
163803 l_array_source_38 t_array_source_38;
163804 l_array_source_38_meaning t_array_lookup_meaning;
163805
163806 l_array_source_4 t_array_source_4;
163807 l_array_source_5 t_array_source_5;
163808 l_array_source_11 t_array_source_11;
163809 l_array_source_18 t_array_source_18;
163810 l_array_source_22 t_array_source_22;
163811
163812 --
163813 CURSOR header_cur
163814 IS
163815 SELECT /*+ leading(xet) cardinality(xet,1) */
163816 -- Event Class Code: LDD_COST_ADJ_RCV
163817 xet.entity_id
163818 ,xet.legal_entity_id
163819 ,xet.entity_code
163820 ,xet.transaction_number
163821 ,xet.event_id
163822 ,xet.event_class_code
163823 ,xet.event_type_code
163824 ,xet.event_number
163825 ,xet.event_date
163826 ,xet.transaction_date
163827 ,xet.reference_num_1
163828 ,xet.reference_num_2
163829 ,xet.reference_num_3
163830 ,xet.reference_num_4
163831 ,xet.reference_char_1
163832 ,xet.reference_char_2
163833 ,xet.reference_char_3
163834 ,xet.reference_char_4
163835 ,xet.reference_date_1
163836 ,xet.reference_date_2
163837 ,xet.reference_date_3
163838 ,xet.reference_date_4
163839 ,xet.event_created_by
163840 ,xet.budgetary_control_flag
163841 , h1.DISTRIBUTION_TYPE source_12
163842 , fvl12.meaning source_12_meaning
163843 , h4.ENTERED_CURRENCY_CODE source_32
163844 , h4.CURRENCY_CONVERSION_DATE source_33
163845 , h4.CURRENCY_CONVERSION_RATE source_34
163846 , h4.CURRENCY_CONVERSION_TYPE source_36
163847 , h1.TRANSFER_TO_GL_INDICATOR source_38
163848 , fvl38.meaning source_38_meaning
163849 FROM xla_events_gt xet
163850 , CST_XLA_RCV_HEADERS_V h1
163851 , CST_XLA_RCV_REF_V h3
163852 , PO_DISTS_REF_V h4
163853 , fnd_lookup_values fvl12
163854 , fnd_lookup_values fvl38
163855 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
163856 and xet.event_class_code = C_EVENT_CLASS_CODE
163857 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
163858 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'
163859 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
163860 AND fvl12.view_application_id(+) = 700
163861 AND fvl12.language(+) = USERENV('LANG')
163862 AND fvl38.lookup_type(+) = 'YES_NO'
163863 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
163864 AND fvl38.view_application_id(+) = 0
163865 AND fvl38.language(+) = USERENV('LANG')
163866
163867 ORDER BY event_id
163868 ;
163869
163870
163871 --
163872 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
163873 IS
163874 SELECT /*+ leading(xet) cardinality(xet,1) */
163875 -- Event Class Code: LDD_COST_ADJ_RCV
163876 xet.entity_id
163877 ,xet.legal_entity_id
163878 ,xet.entity_code
163879 ,xet.transaction_number
163880 ,xet.event_id
163881 ,xet.event_class_code
163882 ,xet.event_type_code
163883 ,xet.event_number
163884 ,xet.event_date
163885 ,xet.transaction_date
163886 ,xet.reference_num_1
163887 ,xet.reference_num_2
163888 ,xet.reference_num_3
163889 ,xet.reference_num_4
163890 ,xet.reference_char_1
163891 ,xet.reference_char_2
163892 ,xet.reference_char_3
163893 ,xet.reference_char_4
163894 ,xet.reference_date_1
163895 ,xet.reference_date_2
163896 ,xet.reference_date_3
163897 ,xet.reference_date_4
163898 ,xet.event_created_by
163899 ,xet.budgetary_control_flag
163900 , l2.LINE_NUMBER
163901 , l2.CODE_COMBINATION_ID source_4
163902 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
163903 , l2.DISTRIBUTION_IDENTIFIER source_11
163904 , l2.ENTERED_AMOUNT source_18
163905 , l2.ACCOUNTED_AMOUNT source_22
163906 FROM xla_events_gt xet
163907 , CST_XLA_RCV_LINES_V l2
163908 WHERE xet.event_id between x_first_event_id and x_last_event_id
163909 and xet.event_date between p_pad_start_date and p_pad_end_date
163910 and xet.event_class_code = C_EVENT_CLASS_CODE
163911 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
163912 ;
163913
163914 --
163915 BEGIN
163916 IF g_log_enabled THEN
163917 l_log_module := C_DEFAULT_MODULE||'.EventClass_274';
163918 END IF;
163919 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
163920 trace
163921 (p_msg => 'BEGIN of EventClass_274'
163922 ,p_level => C_LEVEL_PROCEDURE
163923 ,p_module => l_log_module);
163924 END IF;
163925
163926 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163927 trace
163928 (p_msg => 'p_application_id = '||p_application_id||
163929 ' - p_base_ledger_id = '||p_base_ledger_id||
163930 ' - p_target_ledger_id = '||p_target_ledger_id||
163931 ' - p_language = '||p_language||
163932 ' - p_currency_code = '||p_currency_code||
163933 ' - p_sla_ledger_id = '||p_sla_ledger_id
163934 ,p_level => C_LEVEL_STATEMENT
163935 ,p_module => l_log_module);
163936 END IF;
163937 --
163938 -- initialze arrays
163939 --
163940 g_array_event.DELETE;
163941 l_rec_array_event := l_null_rec_array_event;
163942 --
163943 --------------------------------------
163944 -- 4262811 Initialze MPA Line Number
163945 --------------------------------------
163946 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
163947
163948 --
163949
163950 --
163951 OPEN header_cur;
163952 --
163953 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
163954 trace
163955 (p_msg => 'SQL - FETCH header_cur'
163956 ,p_level => C_LEVEL_STATEMENT
163957 ,p_module => l_log_module);
163958 END IF;
163959 --
163960 LOOP
163961 FETCH header_cur BULK COLLECT INTO
163962 l_array_entity_id
163963 , l_array_legal_entity_id
163964 , l_array_entity_code
163965 , l_array_transaction_num
163966 , l_array_event_id
163967 , l_array_class_code
163968 , l_array_event_type
163969 , l_array_event_number
163970 , l_array_event_date
163971 , l_array_transaction_date
163972 , l_array_reference_num_1
163973 , l_array_reference_num_2
163974 , l_array_reference_num_3
163975 , l_array_reference_num_4
163976 , l_array_reference_char_1
163977 , l_array_reference_char_2
163978 , l_array_reference_char_3
163979 , l_array_reference_char_4
163980 , l_array_reference_date_1
163981 , l_array_reference_date_2
163982 , l_array_reference_date_3
163983 , l_array_reference_date_4
163984 , l_array_event_created_by
163985 , l_array_budgetary_control_flag
163986 , l_array_source_12
163987 , l_array_source_12_meaning
163988 , l_array_source_32
163989 , l_array_source_33
163990 , l_array_source_34
163991 , l_array_source_36
163992 , l_array_source_38
163993 , l_array_source_38_meaning
163994 LIMIT l_rows;
163995 --
163996 IF (C_LEVEL_EVENT >= g_log_level) THEN
163997 trace
163998 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
163999 ,p_level => C_LEVEL_EVENT
164000 ,p_module => l_log_module);
164001 END IF;
164002 --
164003 EXIT WHEN l_array_entity_id.COUNT = 0;
164004
164005 -- initialize arrays
164006 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
164007 XLA_AE_LINES_PKG.g_rec_lines := NULL;
164008
164009 --
164010 -- Bug 4458708
164011 --
164012 XLA_AE_LINES_PKG.g_LineNumber := 0;
164013
164014
164015 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
164016 g_last_hdr_idx := l_array_event_id.LAST;
164017 --
164018 -- loop for the headers. Each iteration is for each header extract row
164019 -- fetched in header cursor
164020 --
164021 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
164022
164023 --
164024 -- set event info as cache for other routines to refer event attributes
164025 --
164026 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164027 (p_application_id => p_application_id
164028 ,p_primary_ledger_id => p_primary_ledger_id
164029 ,p_base_ledger_id => p_base_ledger_id
164030 ,p_target_ledger_id => p_target_ledger_id
164031 ,p_entity_id => l_array_entity_id(hdr_idx)
164032 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
164033 ,p_entity_code => l_array_entity_code(hdr_idx)
164034 ,p_transaction_num => l_array_transaction_num(hdr_idx)
164035 ,p_event_id => l_array_event_id(hdr_idx)
164036 ,p_event_class_code => l_array_class_code(hdr_idx)
164037 ,p_event_type_code => l_array_event_type(hdr_idx)
164038 ,p_event_number => l_array_event_number(hdr_idx)
164039 ,p_event_date => l_array_event_date(hdr_idx)
164040 ,p_transaction_date => l_array_transaction_date(hdr_idx)
164041 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
164042 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
164043 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
164044 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
164045 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
164046 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
164047 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
164048 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
164049 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
164050 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
164051 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
164052 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
164053 ,p_event_created_by => l_array_event_created_by(hdr_idx)
164054 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
164055
164056 --
164057 -- set the status of entry to C_VALID (0)
164058 --
164059 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164060
164061 --
164062 -- initialize a row for ae header
164063 --
164064 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
164065
164066 l_event_id := l_array_event_id(hdr_idx);
164067
164068 --
164069 -- storing the hdr_idx for event. May be used by line cursor.
164070 --
164071 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
164072
164073 --
164074 -- store sources from header extract. This can be improved to
164075 -- store only those sources from header extract that may be used in lines
164076 --
164077
164078 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
164079 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
164080 g_array_event(l_event_id).array_value_char('source_32') := l_array_source_32(hdr_idx);
164081 g_array_event(l_event_id).array_value_date('source_33') := l_array_source_33(hdr_idx);
164082 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
164083 g_array_event(l_event_id).array_value_char('source_36') := l_array_source_36(hdr_idx);
164084 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
164085 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
164086
164087 --
164088 -- initilaize the status of ae headers for diffrent balance types
164089 -- the status is initialised to C_NOT_CREATED (2)
164090 --
164091 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164092 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164093 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
164094
164095 --
164096 -- call api to validate and store accounting attributes for header
164097 --
164098
164099 ------------------------------------------------------------
164100 -- Accrual Reversal : to get date for Standard Source (NONE)
164101 ------------------------------------------------------------
164102 l_acc_rev_gl_date_source := NULL;
164103
164104 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
164105 l_rec_acct_attrs.array_date_value(1) :=
164106 xla_ae_sources_pkg.GetSystemSourceDate(
164107 p_source_code => 'XLA_REFERENCE_DATE_1'
164108 , p_source_type_code => 'Y'
164109 , p_source_application_id => 602
164110 );
164111 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
164112 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
164113
164114
164115 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
164116
164117 XLA_AE_HEADER_PKG.SetJeCategoryName;
164118
164119 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
164120 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
164121 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
164122 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
164123 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
164124
164125
164126 -- No header level analytical criteria
164127
164128 --
164129 --accounting attribute enhancement, bug 3612931
164130 --
164131 l_trx_reversal_source := SUBSTR(NULL, 1,30);
164132
164133 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
164134 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
164135
164136 xla_accounting_err_pkg.build_message
164137 (p_appli_s_name => 'XLA'
164138 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
164139 ,p_token_1 => 'ACCT_ATTR_NAME'
164140 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
164141 ,p_token_2 => 'PRODUCT_NAME'
164142 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164143 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164144 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
164145 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164146
164147 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
164148 --
164149 -- following sets the accounting attributes needed to reverse
164150 -- accounting for a distributeion
164151 --
164152 xla_ae_lines_pkg.SetTrxReversalAttrs
164153 (p_event_id => l_event_id
164154 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
164155 ,p_trx_reversal_source => l_trx_reversal_source);
164156
164157 END IF;
164158
164159
164160 ----------------------------------------------------------------
164161 -- 4262811 - update the header statuses to invalid in need be
164162 ----------------------------------------------------------------
164163 --
164164 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
164165
164166
164167 -----------------------------------------------
164168 -- No accrual reversal for the event class/type
164169 -----------------------------------------------
164170 ----------------------------------------------------------------
164171
164172 --
164173 -- this ends the header loop iteration for one bulk fetch
164174 --
164175 END LOOP;
164176
164177 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
164178 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
164179
164180 --
164181 -- insert dummy rows into lines gt table that were created due to
164182 -- transaction reversals
164183 --
164184 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
164185 l_result := XLA_AE_LINES_PKG.InsertLines;
164186 END IF;
164187
164188 --
164189 -- reset the temp_line_num for each set of events fetched from header
164190 -- cursor rather than doing it for each new event in line cursor
164191 -- Bug 3939231
164192 --
164193 xla_ae_lines_pkg.g_temp_line_num := 0;
164194
164195
164196
164197 --
164198 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
164199 --
164200 --
164201 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164202
164203 trace
164204 (p_msg => 'SQL - FETCH line_cur'
164205 ,p_level => C_LEVEL_STATEMENT
164206 ,p_module => l_log_module);
164207
164208 END IF;
164209 --
164210 --
164211 LOOP
164212 --
164213 FETCH line_cur BULK COLLECT INTO
164214 l_array_entity_id
164215 , l_array_legal_entity_id
164216 , l_array_entity_code
164217 , l_array_transaction_num
164218 , l_array_event_id
164219 , l_array_class_code
164220 , l_array_event_type
164221 , l_array_event_number
164222 , l_array_event_date
164223 , l_array_transaction_date
164224 , l_array_reference_num_1
164225 , l_array_reference_num_2
164226 , l_array_reference_num_3
164227 , l_array_reference_num_4
164228 , l_array_reference_char_1
164229 , l_array_reference_char_2
164230 , l_array_reference_char_3
164231 , l_array_reference_char_4
164232 , l_array_reference_date_1
164233 , l_array_reference_date_2
164234 , l_array_reference_date_3
164235 , l_array_reference_date_4
164236 , l_array_event_created_by
164237 , l_array_budgetary_control_flag
164238 , l_array_extract_line_num
164239 , l_array_source_4
164240 , l_array_source_5
164241 , l_array_source_11
164242 , l_array_source_18
164243 , l_array_source_22
164244 LIMIT l_rows;
164245
164246 --
164247 IF (C_LEVEL_EVENT >= g_log_level) THEN
164248 trace
164249 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
164250 ,p_level => C_LEVEL_EVENT
164251 ,p_module => l_log_module);
164252 END IF;
164253 --
164254 EXIT WHEN l_array_entity_id.count = 0;
164255
164256 XLA_AE_LINES_PKG.g_rec_lines := null;
164257
164258 --
164259 -- Bug 4458708
164260 --
164261 XLA_AE_LINES_PKG.g_LineNumber := 0;
164262 --
164263 --
164264
164265 FOR Idx IN 1..l_array_event_id.count LOOP
164266 --
164267 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
164268 --
164269 l_event_id := l_array_event_id(idx); -- 5648433
164270
164271 --
164272 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164273 --
164274
164275 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
164276 (g_array_event(l_event_id).array_value_num('header_index'))
164277 ,'N'
164278 ) <> 'Y'
164279 THEN
164280 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164281 trace
164282 (p_msg => 'Trancaction revesal option is not Y '
164283 ,p_level => C_LEVEL_STATEMENT
164284 ,p_module => l_log_module);
164285 END IF;
164286
164287 --
164288 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
164289 --
164290 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
164291 --
164292 -- set event info as cache for other routines to refer event attributes
164293 --
164294
164295 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
164296 l_previous_event_id := l_event_id;
164297
164298 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
164299 (p_application_id => p_application_id
164300 ,p_primary_ledger_id => p_primary_ledger_id
164301 ,p_base_ledger_id => p_base_ledger_id
164302 ,p_target_ledger_id => p_target_ledger_id
164303 ,p_entity_id => l_array_entity_id(Idx)
164304 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
164305 ,p_entity_code => l_array_entity_code(Idx)
164306 ,p_transaction_num => l_array_transaction_num(Idx)
164307 ,p_event_id => l_array_event_id(Idx)
164308 ,p_event_class_code => l_array_class_code(Idx)
164309 ,p_event_type_code => l_array_event_type(Idx)
164310 ,p_event_number => l_array_event_number(Idx)
164311 ,p_event_date => l_array_event_date(Idx)
164312 ,p_transaction_date => l_array_transaction_date(Idx)
164313 ,p_reference_num_1 => l_array_reference_num_1(Idx)
164314 ,p_reference_num_2 => l_array_reference_num_2(Idx)
164315 ,p_reference_num_3 => l_array_reference_num_3(Idx)
164316 ,p_reference_num_4 => l_array_reference_num_4(Idx)
164317 ,p_reference_char_1 => l_array_reference_char_1(Idx)
164318 ,p_reference_char_2 => l_array_reference_char_2(Idx)
164319 ,p_reference_char_3 => l_array_reference_char_3(Idx)
164320 ,p_reference_char_4 => l_array_reference_char_4(Idx)
164321 ,p_reference_date_1 => l_array_reference_date_1(Idx)
164322 ,p_reference_date_2 => l_array_reference_date_2(Idx)
164323 ,p_reference_date_3 => l_array_reference_date_3(Idx)
164324 ,p_reference_date_4 => l_array_reference_date_4(Idx)
164325 ,p_event_created_by => l_array_event_created_by(Idx)
164326 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
164327 --
164328 END IF;
164329
164330
164331
164332 --
164333 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
164334
164335 l_acct_reversal_source := SUBSTR(NULL, 1,30);
164336
164337 IF l_continue_with_lines THEN
164338 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
164339 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
164340
164341 xla_accounting_err_pkg.build_message
164342 (p_appli_s_name => 'XLA'
164343 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
164344 ,p_token_1 => 'LINE_NUMBER'
164345 ,p_value_1 => l_array_extract_line_num(Idx)
164346 ,p_token_2 => 'PRODUCT_NAME'
164347 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
164348 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
164349 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
164350 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
164351
164352 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
164353 --
164354 -- following sets the accounting attributes needed to reverse
164355 -- accounting for a distributeion
164356 --
164357
164358 --
164359 -- 5217187
164360 --
164361 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
164362 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
164363 g_array_event(l_event_id).array_value_num('header_index'));
164364 --
164365 --
164366
164367 -- No reversal code generated
164368
164369 xla_ae_lines_pkg.SetAcctReversalAttrs
164370 (p_event_id => l_event_id
164371 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
164372 ,p_calculate_acctd_flag => l_calculate_acctd_flag
164373 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
164374 END IF;
164375
164376 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
164377 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
164378
164379 --
164380 AcctLineType_161 (
164381 p_application_id => p_application_id
164382 ,p_event_id => l_event_id
164383 ,p_calculate_acctd_flag => l_calculate_acctd_flag
164384 ,p_calculate_g_l_flag => l_calculate_g_l_flag
164385 ,p_actual_flag => l_actual_flag
164386 ,p_balance_type_code => l_balance_type_code
164387 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164388
164389 , p_source_4 => l_array_source_4(Idx)
164390 , p_source_5 => l_array_source_5(Idx)
164391 , p_source_11 => l_array_source_11(Idx)
164392 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
164393 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
164394 , p_source_18 => l_array_source_18(Idx)
164395 , p_source_22 => l_array_source_22(Idx)
164396 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
164397 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
164398 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
164399 , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
164400 );
164401 If(l_balance_type_code = 'A') THEN
164402 l_actual_gain_loss_ref := l_gain_or_loss_ref;
164403 END IF;
164404
164405 --
164406
164407
164408 --
164409 AcctLineType_237 (
164410 p_application_id => p_application_id
164411 ,p_event_id => l_event_id
164412 ,p_calculate_acctd_flag => l_calculate_acctd_flag
164413 ,p_calculate_g_l_flag => l_calculate_g_l_flag
164414 ,p_actual_flag => l_actual_flag
164415 ,p_balance_type_code => l_balance_type_code
164416 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
164417
164418 , p_source_4 => l_array_source_4(Idx)
164419 , p_source_5 => l_array_source_5(Idx)
164420 , p_source_11 => l_array_source_11(Idx)
164421 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
164422 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
164423 , p_source_18 => l_array_source_18(Idx)
164424 , p_source_22 => l_array_source_22(Idx)
164425 , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
164426 , p_source_33 => g_array_event(l_event_id).array_value_date('source_33')
164427 , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
164428 , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
164429 );
164430 If(l_balance_type_code = 'A') THEN
164431 l_actual_gain_loss_ref := l_gain_or_loss_ref;
164432 END IF;
164433
164434 --
164435
164436 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
164437 -- or secondary ledger that has different currency with primary
164438 -- or alc that is calculated by sla
164439 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
164440 (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'))
164441
164442 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
164443 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
164444 AND (l_actual_flag = 'A')) THEN
164445 XLA_AE_LINES_PKG.CreateGainOrLossLines(
164446 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
164447 ,p_application_id => p_application_id
164448 ,p_amb_context_code => 'DEFAULT'
164449 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
164450 ,p_event_class_code => C_EVENT_CLASS_CODE
164451 ,p_event_type_code => C_EVENT_TYPE_CODE
164452
164453 ,p_gain_ccid => -1
164454 ,p_loss_ccid => -1
164455
164456 ,p_actual_flag => l_actual_flag
164457 ,p_enc_flag => null
164458 ,p_actual_g_l_ref => l_actual_gain_loss_ref
164459 ,p_enc_g_l_ref => null
164460 );
164461 END IF;
164462 END IF;
164463 END IF;
164464
164465 ELSE
164466 --
164467 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
164468 --
164469 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164470 trace
164471 (p_msg => 'Trancaction revesal option is Y'
164472 ,p_level => C_LEVEL_STATEMENT
164473 ,p_module => l_log_module);
164474 END IF;
164475 END IF;
164476
164477 END LOOP;
164478 l_result := XLA_AE_LINES_PKG.InsertLines ;
164479 end loop;
164480 close line_cur;
164481
164482
164483 --
164484 -- insert headers into xla_ae_headers_gt table
164485 --
164486 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
164487
164488 -- insert into errors table here.
164489
164490 END LOOP;
164491
164492 --
164493 -- 4865292
164494 --
164495 -- Compare g_hdr_extract_count with event count in
164496 -- CreateHeadersAndLines.
164497 --
164498 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
164499
164500 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164501 trace (p_msg => '# rows extracted from header extract objects '
164502 || ' (running total): '
164503 || g_hdr_extract_count
164504 ,p_level => C_LEVEL_STATEMENT
164505 ,p_module => l_log_module);
164506 END IF;
164507
164508 CLOSE header_cur;
164509 --
164510
164511 --
164512 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164513 trace
164514 (p_msg => 'END of EventClass_274'
164515 ,p_level => C_LEVEL_PROCEDURE
164516 ,p_module => l_log_module);
164517 END IF;
164518 --
164519 RETURN l_result;
164520 EXCEPTION
164521 WHEN xla_exceptions_pkg.application_exception THEN
164522
164523 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164524
164525
164526 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
164527
164528 RAISE;
164529
164530 WHEN NO_DATA_FOUND THEN
164531
164532 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
164533 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
164534
164535 FOR header_record IN header_cur
164536 LOOP
164537 l_array_header_events(header_record.event_id) := header_record.event_id;
164538 END LOOP;
164539
164540 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
164541 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
164542
164543 fnd_file.put_line(fnd_file.LOG, ' ');
164544 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164545 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
164546 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
164547
164548 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
164549 LOOP
164550 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
164551 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
164552 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
164553 END IF;
164554 END LOOP;
164555
164556 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
164557 fnd_file.put_line(fnd_file.LOG, ' ');
164558
164559
164560 xla_exceptions_pkg.raise_message
164561 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_274');
164562
164563
164564 WHEN OTHERS THEN
164565 xla_exceptions_pkg.raise_message
164566 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_274');
164567 END EventClass_274;
164568 --
164569
164570 ---------------------------------------
164571 --
164572 -- PRIVATE PROCEDURE
164573 -- insert_sources_275
164574 --
164575 ----------------------------------------
164576 --
164577 PROCEDURE insert_sources_275(
164578 p_target_ledger_id IN NUMBER
164579 , p_language IN VARCHAR2
164580 , p_sla_ledger_id IN NUMBER
164581 , p_pad_start_date IN DATE
164582 , p_pad_end_date IN DATE
164583 )
164584 IS
164585
164586 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY_ALL';
164587 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
164588 p_apps_owner VARCHAR2(30);
164589 l_log_module VARCHAR2(240);
164590 BEGIN
164591 IF g_log_enabled THEN
164592 l_log_module := C_DEFAULT_MODULE||'.insert_sources_275';
164593 END IF;
164594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164595
164596 trace
164597 (p_msg => 'BEGIN of insert_sources_275'
164598 ,p_level => C_LEVEL_PROCEDURE
164599 ,p_module => l_log_module);
164600
164601 END IF;
164602
164603 -- select APPS owner
164604 SELECT oracle_username
164605 INTO p_apps_owner
164606 FROM fnd_oracle_userid
164607 WHERE read_only_flag = 'U'
164608 ;
164609
164610 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164611 trace
164612 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
164613 ' - p_language = '||p_language||
164614 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
164615 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
164616 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
164617 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
164618 ,p_level => C_LEVEL_STATEMENT
164619 ,p_module => l_log_module);
164620 END IF;
164621
164622
164623 --
164624 INSERT INTO xla_diag_sources --hdr2
164625 (
164626 event_id
164627 , ledger_id
164628 , sla_ledger_id
164629 , description_language
164630 , object_name
164631 , object_type_code
164632 , line_number
164633 , source_application_id
164634 , source_type_code
164635 , source_code
164636 , source_value
164637 , source_meaning
164638 , created_by
164639 , creation_date
164640 , last_update_date
164641 , last_updated_by
164642 , last_update_login
164643 , program_update_date
164644 , program_application_id
164645 , program_id
164646 , request_id
164647 )
164648 SELECT
164649 event_id
164650 , p_target_ledger_id
164651 , p_sla_ledger_id
164652 , p_language
164653 , object_name
164654 , object_type_code
164655 , line_number
164656 , source_application_id
164657 , source_type_code
164658 , source_code
164659 , SUBSTR(source_value ,1,1996)
164660 , SUBSTR(source_meaning ,1,200)
164661 , xla_environment_pkg.g_Usr_Id
164662 , TRUNC(SYSDATE)
164663 , TRUNC(SYSDATE)
164664 , xla_environment_pkg.g_Usr_Id
164665 , xla_environment_pkg.g_Login_Id
164666 , TRUNC(SYSDATE)
164667 , xla_environment_pkg.g_Prog_Appl_Id
164668 , xla_environment_pkg.g_Prog_Id
164669 , xla_environment_pkg.g_Req_Id
164670 FROM (
164671 SELECT xet.event_id event_id
164672 , 0 line_number
164673 , CASE r
164674 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
164675 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
164676 WHEN 3 THEN 'CST_XLA_INV_HEADERS_V'
164677
164678 ELSE null
164679 END object_name
164680 , CASE r
164681 WHEN 1 THEN 'HEADER'
164682 WHEN 2 THEN 'HEADER'
164683 WHEN 3 THEN 'HEADER'
164684
164685 ELSE null
164686 END object_type_code
164687 , CASE r
164688 WHEN 1 THEN '707'
164689 WHEN 2 THEN '707'
164690 WHEN 3 THEN '707'
164691
164692 ELSE null
164693 END source_application_id
164694 , 'S' source_type_code
164695 , CASE r
164696 WHEN 1 THEN 'DISTRIBUTION_TYPE'
164697 WHEN 2 THEN 'TRANSACTION_ACTION_ID'
164698 WHEN 3 THEN 'TRANSFER_TO_GL_INDICATOR'
164699
164700 ELSE null
164701 END source_code
164702 , CASE r
164703 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
164704 WHEN 2 THEN TO_CHAR(h1.TRANSACTION_ACTION_ID)
164705 WHEN 3 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
164706
164707 ELSE null
164708 END source_value
164709 , CASE r
164710 WHEN 1 THEN fvl12.meaning
164711 WHEN 2 THEN fvl35.meaning
164712 WHEN 3 THEN fvl38.meaning
164713
164714 ELSE null
164715 END source_meaning
164716 FROM xla_events_gt xet
164717 , CST_XLA_INV_HEADERS_V h1
164718 , fnd_lookup_values fvl12
164719 , fnd_lookup_values fvl35
164720 , fnd_lookup_values fvl38
164721 ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
164722 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
164723 AND xet.event_class_code = C_EVENT_CLASS_CODE
164724 AND h1.event_id = xet.event_id
164725 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
164726 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
164727 AND fvl12.view_application_id(+) = 700
164728 AND fvl12.language(+) = USERENV('LANG')
164729 AND fvl35.lookup_type(+) = 'MTL_TRANSACTION_ACTION'
164730 AND fvl35.lookup_code(+) = h1.TRANSACTION_ACTION_ID
164731 AND fvl35.view_application_id(+) = 700
164732 AND fvl35.language(+) = USERENV('LANG')
164733 AND fvl38.lookup_type(+) = 'YES_NO'
164734 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
164735 AND fvl38.view_application_id(+) = 0
164736 AND fvl38.language(+) = USERENV('LANG')
164737
164738 )
164739 ;
164740 --
164741 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164742
164743 trace
164744 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
164745 ,p_level => C_LEVEL_STATEMENT
164746 ,p_module => l_log_module);
164747
164748 END IF;
164749 --
164750
164751
164752
164753 --
164754 INSERT INTO xla_diag_sources --line2
164755 (
164756 event_id
164757 , ledger_id
164758 , sla_ledger_id
164759 , description_language
164760 , object_name
164761 , object_type_code
164762 , line_number
164763 , source_application_id
164764 , source_type_code
164765 , source_code
164766 , source_value
164767 , source_meaning
164768 , created_by
164769 , creation_date
164770 , last_update_date
164771 , last_updated_by
164772 , last_update_login
164773 , program_update_date
164774 , program_application_id
164775 , program_id
164776 , request_id
164777 )
164778 SELECT event_id
164779 , p_target_ledger_id
164780 , p_sla_ledger_id
164781 , p_language
164782 , object_name
164783 , object_type_code
164784 , line_number
164785 , source_application_id
164786 , source_type_code
164787 , source_code
164788 , SUBSTR(source_value,1,1996)
164789 , SUBSTR(source_meaning ,1,200)
164790 , xla_environment_pkg.g_Usr_Id
164791 , TRUNC(SYSDATE)
164792 , TRUNC(SYSDATE)
164793 , xla_environment_pkg.g_Usr_Id
164794 , xla_environment_pkg.g_Login_Id
164795 , TRUNC(SYSDATE)
164796 , xla_environment_pkg.g_Prog_Appl_Id
164797 , xla_environment_pkg.g_Prog_Id
164798 , xla_environment_pkg.g_Req_Id
164799 FROM (
164800 SELECT xet.event_id event_id
164801 , l2.line_number line_number
164802 , CASE r
164803 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
164804 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
164805 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
164806 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
164807 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
164808 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
164809 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
164810 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
164811 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
164812
164813 ELSE null
164814 END object_name
164815 , CASE r
164816 WHEN 1 THEN 'LINE'
164817 WHEN 2 THEN 'LINE'
164818 WHEN 3 THEN 'LINE'
164819 WHEN 4 THEN 'LINE'
164820 WHEN 5 THEN 'LINE'
164821 WHEN 6 THEN 'LINE'
164822 WHEN 7 THEN 'LINE'
164823 WHEN 8 THEN 'LINE'
164824 WHEN 9 THEN 'LINE'
164825
164826 ELSE null
164827 END object_type_code
164828 , CASE r
164829 WHEN 1 THEN '707'
164830 WHEN 2 THEN '707'
164831 WHEN 3 THEN '707'
164832 WHEN 4 THEN '707'
164833 WHEN 5 THEN '707'
164834 WHEN 6 THEN '707'
164835 WHEN 7 THEN '707'
164836 WHEN 8 THEN '707'
164837 WHEN 9 THEN '707'
164838
164839 ELSE null
164840 END source_application_id
164841 , 'S' source_type_code
164842 , CASE r
164843 WHEN 1 THEN 'CODE_COMBINATION_ID'
164844 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
164845 WHEN 3 THEN 'CURRENCY_CODE'
164846 WHEN 4 THEN 'ENTERED_AMOUNT'
164847 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
164848 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
164849 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
164850 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
164851 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
164852
164853 ELSE null
164854 END source_code
164855 , CASE r
164856 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
164857 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
164858 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
164859 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
164860 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
164861 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
164862 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
164863 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
164864 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
164865
164866 ELSE null
164867 END source_value
164868 , null source_meaning
164869 FROM xla_events_gt xet
164870 , CST_XLA_INV_LINES_V l2
164871 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
164872 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
164873 AND xet.event_class_code = C_EVENT_CLASS_CODE
164874 AND l2.event_id = xet.event_id
164875
164876 )
164877 ;
164878 --
164879 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
164880
164881 trace
164882 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
164883 ,p_level => C_LEVEL_STATEMENT
164884 ,p_module => l_log_module);
164885
164886 END IF;
164887
164888
164889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
164890 trace
164891 (p_msg => 'END of insert_sources_275'
164892 ,p_level => C_LEVEL_PROCEDURE
164893 ,p_module => l_log_module);
164894 END IF;
164895 EXCEPTION
164896 WHEN xla_exceptions_pkg.application_exception THEN
164897 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
164898 trace
164899 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
164900 ,p_level => C_LEVEL_EXCEPTION
164901 ,p_module => l_log_module);
164902 END IF;
164903 RAISE;
164904 WHEN OTHERS THEN
164905 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
164906 trace
164907 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
164908 ,p_level => C_LEVEL_EXCEPTION
164909 ,p_module => l_log_module);
164910 END IF;
164911 xla_exceptions_pkg.raise_message
164912 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_275');
164913 END insert_sources_275;
164914 --
164915
164916 ---------------------------------------
164917 --
164918 -- PRIVATE FUNCTION
164919 -- EventClass_275
164920 --
164921 ----------------------------------------
164922 --
164923 FUNCTION EventClass_275
164924 (p_application_id IN NUMBER
164925 ,p_base_ledger_id IN NUMBER
164926 ,p_target_ledger_id IN NUMBER
164927 ,p_language IN VARCHAR2
164928 ,p_currency_code IN VARCHAR2
164929 ,p_sla_ledger_id IN NUMBER
164930 ,p_pad_start_date IN DATE
164931 ,p_pad_end_date IN DATE
164932 ,p_primary_ledger_id IN NUMBER)
164933 RETURN BOOLEAN IS
164934 --
164935 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY_ALL';
164936 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOG_INTERCOMPANY';
164937
164938 l_calculate_acctd_flag VARCHAR2(1) :='N';
164939 l_calculate_g_l_flag VARCHAR2(1) :='N';
164940 --
164941 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164942 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164943 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
164944 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
164945 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164946 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
164947 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
164948 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164949 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164950 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164951 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164952 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164953 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164954 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
164955 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
164956 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
164957 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
164958 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
164959 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164960 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164961 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164962 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
164963 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
164964 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
164965 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
164966 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
164967
164968 l_event_id NUMBER;
164969 l_previous_event_id NUMBER;
164970 l_first_event_id NUMBER;
164971 l_last_event_id NUMBER;
164972
164973 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
164974 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
164975 --
164976 --
164977 l_result BOOLEAN := TRUE;
164978 l_rows NUMBER := 1000;
164979 l_event_type_name VARCHAR2(80) := 'All';
164980 l_event_class_name VARCHAR2(80) := 'Logical Intercompany';
164981 l_description VARCHAR2(4000);
164982 l_transaction_reversal NUMBER;
164983 l_ae_header_id NUMBER;
164984 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
164985 l_log_module VARCHAR2(240);
164986 --
164987 l_acct_reversal_source VARCHAR2(30);
164988 l_trx_reversal_source VARCHAR2(30);
164989
164990 l_continue_with_lines BOOLEAN := TRUE;
164991 --
164992 l_acc_rev_gl_date_source DATE; -- 4262811
164993 --
164994 type t_array_event_id is table of number index by binary_integer;
164995
164996 l_rec_array_event t_rec_array_event;
164997 l_null_rec_array_event t_rec_array_event;
164998 l_array_ae_header_id xla_number_array_type;
164999 l_actual_flag VARCHAR2(1) := NULL;
165000 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
165001 l_balance_type_code VARCHAR2(1) :=NULL;
165002 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
165003
165004 --
165005 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
165006 --
165007
165008 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
165009 TYPE t_array_source_35 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ACTION_ID%TYPE INDEX BY BINARY_INTEGER;
165010 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
165011
165012 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
165013 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
165014 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
165015 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165016 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
165017 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
165018 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
165019 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
165020 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
165021
165022 l_array_source_12 t_array_source_12;
165023 l_array_source_12_meaning t_array_lookup_meaning;
165024 l_array_source_35 t_array_source_35;
165025 l_array_source_35_meaning t_array_lookup_meaning;
165026 l_array_source_38 t_array_source_38;
165027 l_array_source_38_meaning t_array_lookup_meaning;
165028
165029 l_array_source_4 t_array_source_4;
165030 l_array_source_11 t_array_source_11;
165031 l_array_source_15 t_array_source_15;
165032 l_array_source_18 t_array_source_18;
165033 l_array_source_19 t_array_source_19;
165034 l_array_source_20 t_array_source_20;
165035 l_array_source_21 t_array_source_21;
165036 l_array_source_22 t_array_source_22;
165037 l_array_source_24 t_array_source_24;
165038
165039 --
165040 CURSOR header_cur
165041 IS
165042 SELECT /*+ leading(xet) cardinality(xet,1) */
165043 -- Event Class Code: LOG_INTERCOMPANY
165044 xet.entity_id
165045 ,xet.legal_entity_id
165046 ,xet.entity_code
165047 ,xet.transaction_number
165048 ,xet.event_id
165049 ,xet.event_class_code
165050 ,xet.event_type_code
165051 ,xet.event_number
165052 ,xet.event_date
165053 ,xet.transaction_date
165054 ,xet.reference_num_1
165055 ,xet.reference_num_2
165056 ,xet.reference_num_3
165057 ,xet.reference_num_4
165058 ,xet.reference_char_1
165059 ,xet.reference_char_2
165060 ,xet.reference_char_3
165061 ,xet.reference_char_4
165062 ,xet.reference_date_1
165063 ,xet.reference_date_2
165064 ,xet.reference_date_3
165065 ,xet.reference_date_4
165066 ,xet.event_created_by
165067 ,xet.budgetary_control_flag
165068 , h1.DISTRIBUTION_TYPE source_12
165069 , fvl12.meaning source_12_meaning
165070 , h1.TRANSACTION_ACTION_ID source_35
165071 , fvl35.meaning source_35_meaning
165072 , h1.TRANSFER_TO_GL_INDICATOR source_38
165073 , fvl38.meaning source_38_meaning
165074 FROM xla_events_gt xet
165075 , CST_XLA_INV_HEADERS_V h1
165076 , fnd_lookup_values fvl12
165077 , fnd_lookup_values fvl35
165078 , fnd_lookup_values fvl38
165079 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
165080 and xet.event_class_code = C_EVENT_CLASS_CODE
165081 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
165082 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
165083 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
165084 AND fvl12.view_application_id(+) = 700
165085 AND fvl12.language(+) = USERENV('LANG')
165086 AND fvl35.lookup_type(+) = 'MTL_TRANSACTION_ACTION'
165087 AND fvl35.lookup_code(+) = h1.TRANSACTION_ACTION_ID
165088 AND fvl35.view_application_id(+) = 700
165089 AND fvl35.language(+) = USERENV('LANG')
165090 AND fvl38.lookup_type(+) = 'YES_NO'
165091 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
165092 AND fvl38.view_application_id(+) = 0
165093 AND fvl38.language(+) = USERENV('LANG')
165094
165095 ORDER BY event_id
165096 ;
165097
165098
165099 --
165100 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
165101 IS
165102 SELECT /*+ leading(xet) cardinality(xet,1) */
165103 -- Event Class Code: LOG_INTERCOMPANY
165104 xet.entity_id
165105 ,xet.legal_entity_id
165106 ,xet.entity_code
165107 ,xet.transaction_number
165108 ,xet.event_id
165109 ,xet.event_class_code
165110 ,xet.event_type_code
165111 ,xet.event_number
165112 ,xet.event_date
165113 ,xet.transaction_date
165114 ,xet.reference_num_1
165115 ,xet.reference_num_2
165116 ,xet.reference_num_3
165117 ,xet.reference_num_4
165118 ,xet.reference_char_1
165119 ,xet.reference_char_2
165120 ,xet.reference_char_3
165121 ,xet.reference_char_4
165122 ,xet.reference_date_1
165123 ,xet.reference_date_2
165124 ,xet.reference_date_3
165125 ,xet.reference_date_4
165126 ,xet.event_created_by
165127 ,xet.budgetary_control_flag
165128 , l2.LINE_NUMBER
165129 , l2.CODE_COMBINATION_ID source_4
165130 , l2.DISTRIBUTION_IDENTIFIER source_11
165131 , l2.CURRENCY_CODE source_15
165132 , l2.ENTERED_AMOUNT source_18
165133 , l2.CURRENCY_CONVERSION_DATE source_19
165134 , l2.CURRENCY_CONVERSION_RATE source_20
165135 , l2.CURRENCY_CONVERSION_TYPE source_21
165136 , l2.ACCOUNTED_AMOUNT source_22
165137 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
165138 FROM xla_events_gt xet
165139 , CST_XLA_INV_LINES_V l2
165140 WHERE xet.event_id between x_first_event_id and x_last_event_id
165141 and xet.event_date between p_pad_start_date and p_pad_end_date
165142 and xet.event_class_code = C_EVENT_CLASS_CODE
165143 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
165144 ;
165145
165146 --
165147 BEGIN
165148 IF g_log_enabled THEN
165149 l_log_module := C_DEFAULT_MODULE||'.EventClass_275';
165150 END IF;
165151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165152 trace
165153 (p_msg => 'BEGIN of EventClass_275'
165154 ,p_level => C_LEVEL_PROCEDURE
165155 ,p_module => l_log_module);
165156 END IF;
165157
165158 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165159 trace
165160 (p_msg => 'p_application_id = '||p_application_id||
165161 ' - p_base_ledger_id = '||p_base_ledger_id||
165162 ' - p_target_ledger_id = '||p_target_ledger_id||
165163 ' - p_language = '||p_language||
165164 ' - p_currency_code = '||p_currency_code||
165165 ' - p_sla_ledger_id = '||p_sla_ledger_id
165166 ,p_level => C_LEVEL_STATEMENT
165167 ,p_module => l_log_module);
165168 END IF;
165169 --
165170 -- initialze arrays
165171 --
165172 g_array_event.DELETE;
165173 l_rec_array_event := l_null_rec_array_event;
165174 --
165175 --------------------------------------
165176 -- 4262811 Initialze MPA Line Number
165177 --------------------------------------
165178 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
165179
165180 --
165181
165182 --
165183 OPEN header_cur;
165184 --
165185 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165186 trace
165187 (p_msg => 'SQL - FETCH header_cur'
165188 ,p_level => C_LEVEL_STATEMENT
165189 ,p_module => l_log_module);
165190 END IF;
165191 --
165192 LOOP
165193 FETCH header_cur BULK COLLECT INTO
165194 l_array_entity_id
165195 , l_array_legal_entity_id
165196 , l_array_entity_code
165197 , l_array_transaction_num
165198 , l_array_event_id
165199 , l_array_class_code
165200 , l_array_event_type
165201 , l_array_event_number
165202 , l_array_event_date
165203 , l_array_transaction_date
165204 , l_array_reference_num_1
165205 , l_array_reference_num_2
165206 , l_array_reference_num_3
165207 , l_array_reference_num_4
165208 , l_array_reference_char_1
165209 , l_array_reference_char_2
165210 , l_array_reference_char_3
165211 , l_array_reference_char_4
165212 , l_array_reference_date_1
165213 , l_array_reference_date_2
165214 , l_array_reference_date_3
165215 , l_array_reference_date_4
165216 , l_array_event_created_by
165217 , l_array_budgetary_control_flag
165218 , l_array_source_12
165219 , l_array_source_12_meaning
165220 , l_array_source_35
165221 , l_array_source_35_meaning
165222 , l_array_source_38
165223 , l_array_source_38_meaning
165224 LIMIT l_rows;
165225 --
165226 IF (C_LEVEL_EVENT >= g_log_level) THEN
165227 trace
165228 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
165229 ,p_level => C_LEVEL_EVENT
165230 ,p_module => l_log_module);
165231 END IF;
165232 --
165233 EXIT WHEN l_array_entity_id.COUNT = 0;
165234
165235 -- initialize arrays
165236 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
165237 XLA_AE_LINES_PKG.g_rec_lines := NULL;
165238
165239 --
165240 -- Bug 4458708
165241 --
165242 XLA_AE_LINES_PKG.g_LineNumber := 0;
165243
165244
165245 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
165246 g_last_hdr_idx := l_array_event_id.LAST;
165247 --
165248 -- loop for the headers. Each iteration is for each header extract row
165249 -- fetched in header cursor
165250 --
165251 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
165252
165253 --
165254 -- set event info as cache for other routines to refer event attributes
165255 --
165256 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165257 (p_application_id => p_application_id
165258 ,p_primary_ledger_id => p_primary_ledger_id
165259 ,p_base_ledger_id => p_base_ledger_id
165260 ,p_target_ledger_id => p_target_ledger_id
165261 ,p_entity_id => l_array_entity_id(hdr_idx)
165262 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
165263 ,p_entity_code => l_array_entity_code(hdr_idx)
165264 ,p_transaction_num => l_array_transaction_num(hdr_idx)
165265 ,p_event_id => l_array_event_id(hdr_idx)
165266 ,p_event_class_code => l_array_class_code(hdr_idx)
165267 ,p_event_type_code => l_array_event_type(hdr_idx)
165268 ,p_event_number => l_array_event_number(hdr_idx)
165269 ,p_event_date => l_array_event_date(hdr_idx)
165270 ,p_transaction_date => l_array_transaction_date(hdr_idx)
165271 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
165272 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
165273 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
165274 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
165275 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
165276 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
165277 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
165278 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
165279 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
165280 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
165281 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
165282 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
165283 ,p_event_created_by => l_array_event_created_by(hdr_idx)
165284 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
165285
165286 --
165287 -- set the status of entry to C_VALID (0)
165288 --
165289 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165290
165291 --
165292 -- initialize a row for ae header
165293 --
165294 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
165295
165296 l_event_id := l_array_event_id(hdr_idx);
165297
165298 --
165299 -- storing the hdr_idx for event. May be used by line cursor.
165300 --
165301 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
165302
165303 --
165304 -- store sources from header extract. This can be improved to
165305 -- store only those sources from header extract that may be used in lines
165306 --
165307
165308 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
165309 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
165310 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
165311 g_array_event(l_event_id).array_value_char('source_35_meaning') := l_array_source_35_meaning(hdr_idx);
165312 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
165313 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
165314
165315 --
165316 -- initilaize the status of ae headers for diffrent balance types
165317 -- the status is initialised to C_NOT_CREATED (2)
165318 --
165319 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165320 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165321 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
165322
165323 --
165324 -- call api to validate and store accounting attributes for header
165325 --
165326
165327 ------------------------------------------------------------
165328 -- Accrual Reversal : to get date for Standard Source (NONE)
165329 ------------------------------------------------------------
165330 l_acc_rev_gl_date_source := NULL;
165331
165332 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
165333 l_rec_acct_attrs.array_date_value(1) :=
165334 xla_ae_sources_pkg.GetSystemSourceDate(
165335 p_source_code => 'XLA_REFERENCE_DATE_1'
165336 , p_source_type_code => 'Y'
165337 , p_source_application_id => 602
165338 );
165339 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
165340 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
165341
165342
165343 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
165344
165345 XLA_AE_HEADER_PKG.SetJeCategoryName;
165346
165347 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
165348 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
165349 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
165350 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
165351 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
165352
165353
165354 -- No header level analytical criteria
165355
165356 --
165357 --accounting attribute enhancement, bug 3612931
165358 --
165359 l_trx_reversal_source := SUBSTR(NULL, 1,30);
165360
165361 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
165362 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
165363
165364 xla_accounting_err_pkg.build_message
165365 (p_appli_s_name => 'XLA'
165366 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
165367 ,p_token_1 => 'ACCT_ATTR_NAME'
165368 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
165369 ,p_token_2 => 'PRODUCT_NAME'
165370 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165371 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165372 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
165373 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165374
165375 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
165376 --
165377 -- following sets the accounting attributes needed to reverse
165378 -- accounting for a distributeion
165379 --
165380 xla_ae_lines_pkg.SetTrxReversalAttrs
165381 (p_event_id => l_event_id
165382 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
165383 ,p_trx_reversal_source => l_trx_reversal_source);
165384
165385 END IF;
165386
165387
165388 ----------------------------------------------------------------
165389 -- 4262811 - update the header statuses to invalid in need be
165390 ----------------------------------------------------------------
165391 --
165392 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
165393
165394
165395 -----------------------------------------------
165396 -- No accrual reversal for the event class/type
165397 -----------------------------------------------
165398 ----------------------------------------------------------------
165399
165400 --
165401 -- this ends the header loop iteration for one bulk fetch
165402 --
165403 END LOOP;
165404
165405 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
165406 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
165407
165408 --
165409 -- insert dummy rows into lines gt table that were created due to
165410 -- transaction reversals
165411 --
165412 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
165413 l_result := XLA_AE_LINES_PKG.InsertLines;
165414 END IF;
165415
165416 --
165417 -- reset the temp_line_num for each set of events fetched from header
165418 -- cursor rather than doing it for each new event in line cursor
165419 -- Bug 3939231
165420 --
165421 xla_ae_lines_pkg.g_temp_line_num := 0;
165422
165423
165424
165425 --
165426 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
165427 --
165428 --
165429 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165430
165431 trace
165432 (p_msg => 'SQL - FETCH line_cur'
165433 ,p_level => C_LEVEL_STATEMENT
165434 ,p_module => l_log_module);
165435
165436 END IF;
165437 --
165438 --
165439 LOOP
165440 --
165441 FETCH line_cur BULK COLLECT INTO
165442 l_array_entity_id
165443 , l_array_legal_entity_id
165444 , l_array_entity_code
165445 , l_array_transaction_num
165446 , l_array_event_id
165447 , l_array_class_code
165448 , l_array_event_type
165449 , l_array_event_number
165450 , l_array_event_date
165451 , l_array_transaction_date
165452 , l_array_reference_num_1
165453 , l_array_reference_num_2
165454 , l_array_reference_num_3
165455 , l_array_reference_num_4
165456 , l_array_reference_char_1
165457 , l_array_reference_char_2
165458 , l_array_reference_char_3
165459 , l_array_reference_char_4
165460 , l_array_reference_date_1
165461 , l_array_reference_date_2
165462 , l_array_reference_date_3
165463 , l_array_reference_date_4
165464 , l_array_event_created_by
165465 , l_array_budgetary_control_flag
165466 , l_array_extract_line_num
165467 , l_array_source_4
165468 , l_array_source_11
165469 , l_array_source_15
165470 , l_array_source_18
165471 , l_array_source_19
165472 , l_array_source_20
165473 , l_array_source_21
165474 , l_array_source_22
165475 , l_array_source_24
165476 LIMIT l_rows;
165477
165478 --
165479 IF (C_LEVEL_EVENT >= g_log_level) THEN
165480 trace
165481 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
165482 ,p_level => C_LEVEL_EVENT
165483 ,p_module => l_log_module);
165484 END IF;
165485 --
165486 EXIT WHEN l_array_entity_id.count = 0;
165487
165488 XLA_AE_LINES_PKG.g_rec_lines := null;
165489
165490 --
165491 -- Bug 4458708
165492 --
165493 XLA_AE_LINES_PKG.g_LineNumber := 0;
165494 --
165495 --
165496
165497 FOR Idx IN 1..l_array_event_id.count LOOP
165498 --
165499 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
165500 --
165501 l_event_id := l_array_event_id(idx); -- 5648433
165502
165503 --
165504 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
165505 --
165506
165507 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
165508 (g_array_event(l_event_id).array_value_num('header_index'))
165509 ,'N'
165510 ) <> 'Y'
165511 THEN
165512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165513 trace
165514 (p_msg => 'Trancaction revesal option is not Y '
165515 ,p_level => C_LEVEL_STATEMENT
165516 ,p_module => l_log_module);
165517 END IF;
165518
165519 --
165520 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
165521 --
165522 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
165523 --
165524 -- set event info as cache for other routines to refer event attributes
165525 --
165526
165527 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
165528 l_previous_event_id := l_event_id;
165529
165530 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
165531 (p_application_id => p_application_id
165532 ,p_primary_ledger_id => p_primary_ledger_id
165533 ,p_base_ledger_id => p_base_ledger_id
165534 ,p_target_ledger_id => p_target_ledger_id
165535 ,p_entity_id => l_array_entity_id(Idx)
165536 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
165537 ,p_entity_code => l_array_entity_code(Idx)
165538 ,p_transaction_num => l_array_transaction_num(Idx)
165539 ,p_event_id => l_array_event_id(Idx)
165540 ,p_event_class_code => l_array_class_code(Idx)
165541 ,p_event_type_code => l_array_event_type(Idx)
165542 ,p_event_number => l_array_event_number(Idx)
165543 ,p_event_date => l_array_event_date(Idx)
165544 ,p_transaction_date => l_array_transaction_date(Idx)
165545 ,p_reference_num_1 => l_array_reference_num_1(Idx)
165546 ,p_reference_num_2 => l_array_reference_num_2(Idx)
165547 ,p_reference_num_3 => l_array_reference_num_3(Idx)
165548 ,p_reference_num_4 => l_array_reference_num_4(Idx)
165549 ,p_reference_char_1 => l_array_reference_char_1(Idx)
165550 ,p_reference_char_2 => l_array_reference_char_2(Idx)
165551 ,p_reference_char_3 => l_array_reference_char_3(Idx)
165552 ,p_reference_char_4 => l_array_reference_char_4(Idx)
165553 ,p_reference_date_1 => l_array_reference_date_1(Idx)
165554 ,p_reference_date_2 => l_array_reference_date_2(Idx)
165555 ,p_reference_date_3 => l_array_reference_date_3(Idx)
165556 ,p_reference_date_4 => l_array_reference_date_4(Idx)
165557 ,p_event_created_by => l_array_event_created_by(Idx)
165558 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
165559 --
165560 END IF;
165561
165562
165563
165564 --
165565 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
165566
165567 l_acct_reversal_source := SUBSTR(NULL, 1,30);
165568
165569 IF l_continue_with_lines THEN
165570 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
165571 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
165572
165573 xla_accounting_err_pkg.build_message
165574 (p_appli_s_name => 'XLA'
165575 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
165576 ,p_token_1 => 'LINE_NUMBER'
165577 ,p_value_1 => l_array_extract_line_num(Idx)
165578 ,p_token_2 => 'PRODUCT_NAME'
165579 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
165580 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
165581 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
165582 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
165583
165584 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
165585 --
165586 -- following sets the accounting attributes needed to reverse
165587 -- accounting for a distributeion
165588 --
165589
165590 --
165591 -- 5217187
165592 --
165593 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
165594 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
165595 g_array_event(l_event_id).array_value_num('header_index'));
165596 --
165597 --
165598
165599 -- No reversal code generated
165600
165601 xla_ae_lines_pkg.SetAcctReversalAttrs
165602 (p_event_id => l_event_id
165603 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
165604 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165605 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
165606 END IF;
165607
165608 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
165609 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
165610
165611 --
165612 AcctLineType_16 (
165613 p_application_id => p_application_id
165614 ,p_event_id => l_event_id
165615 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165616 ,p_calculate_g_l_flag => l_calculate_g_l_flag
165617 ,p_actual_flag => l_actual_flag
165618 ,p_balance_type_code => l_balance_type_code
165619 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165620
165621 , p_source_4 => l_array_source_4(Idx)
165622 , p_source_11 => l_array_source_11(Idx)
165623 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165624 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165625 , p_source_15 => l_array_source_15(Idx)
165626 , p_source_18 => l_array_source_18(Idx)
165627 , p_source_19 => l_array_source_19(Idx)
165628 , p_source_20 => l_array_source_20(Idx)
165629 , p_source_21 => l_array_source_21(Idx)
165630 , p_source_22 => l_array_source_22(Idx)
165631 , p_source_24 => l_array_source_24(Idx)
165632 );
165633 If(l_balance_type_code = 'A') THEN
165634 l_actual_gain_loss_ref := l_gain_or_loss_ref;
165635 END IF;
165636
165637 --
165638
165639
165640 --
165641 AcctLineType_58 (
165642 p_application_id => p_application_id
165643 ,p_event_id => l_event_id
165644 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165645 ,p_calculate_g_l_flag => l_calculate_g_l_flag
165646 ,p_actual_flag => l_actual_flag
165647 ,p_balance_type_code => l_balance_type_code
165648 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165649
165650 , p_source_4 => l_array_source_4(Idx)
165651 , p_source_11 => l_array_source_11(Idx)
165652 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165653 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165654 , p_source_15 => l_array_source_15(Idx)
165655 , p_source_18 => l_array_source_18(Idx)
165656 , p_source_19 => l_array_source_19(Idx)
165657 , p_source_20 => l_array_source_20(Idx)
165658 , p_source_21 => l_array_source_21(Idx)
165659 , p_source_22 => l_array_source_22(Idx)
165660 , p_source_24 => l_array_source_24(Idx)
165661 );
165662 If(l_balance_type_code = 'A') THEN
165663 l_actual_gain_loss_ref := l_gain_or_loss_ref;
165664 END IF;
165665
165666 --
165667
165668
165669 --
165670 AcctLineType_59 (
165671 p_application_id => p_application_id
165672 ,p_event_id => l_event_id
165673 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165674 ,p_calculate_g_l_flag => l_calculate_g_l_flag
165675 ,p_actual_flag => l_actual_flag
165676 ,p_balance_type_code => l_balance_type_code
165677 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165678
165679 , p_source_4 => l_array_source_4(Idx)
165680 , p_source_11 => l_array_source_11(Idx)
165681 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165682 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165683 , p_source_15 => l_array_source_15(Idx)
165684 , p_source_18 => l_array_source_18(Idx)
165685 , p_source_19 => l_array_source_19(Idx)
165686 , p_source_20 => l_array_source_20(Idx)
165687 , p_source_21 => l_array_source_21(Idx)
165688 , p_source_22 => l_array_source_22(Idx)
165689 , p_source_24 => l_array_source_24(Idx)
165690 , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
165691 , p_source_35_meaning => g_array_event(l_event_id).array_value_char('source_35_meaning')
165692 );
165693 If(l_balance_type_code = 'A') THEN
165694 l_actual_gain_loss_ref := l_gain_or_loss_ref;
165695 END IF;
165696
165697 --
165698
165699
165700 --
165701 AcctLineType_151 (
165702 p_application_id => p_application_id
165703 ,p_event_id => l_event_id
165704 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165705 ,p_calculate_g_l_flag => l_calculate_g_l_flag
165706 ,p_actual_flag => l_actual_flag
165707 ,p_balance_type_code => l_balance_type_code
165708 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165709
165710 , p_source_4 => l_array_source_4(Idx)
165711 , p_source_11 => l_array_source_11(Idx)
165712 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165713 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165714 , p_source_15 => l_array_source_15(Idx)
165715 , p_source_18 => l_array_source_18(Idx)
165716 , p_source_19 => l_array_source_19(Idx)
165717 , p_source_20 => l_array_source_20(Idx)
165718 , p_source_21 => l_array_source_21(Idx)
165719 , p_source_22 => l_array_source_22(Idx)
165720 , p_source_24 => l_array_source_24(Idx)
165721 );
165722 If(l_balance_type_code = 'A') THEN
165723 l_actual_gain_loss_ref := l_gain_or_loss_ref;
165724 END IF;
165725
165726 --
165727
165728
165729 --
165730 AcctLineType_186 (
165731 p_application_id => p_application_id
165732 ,p_event_id => l_event_id
165733 ,p_calculate_acctd_flag => l_calculate_acctd_flag
165734 ,p_calculate_g_l_flag => l_calculate_g_l_flag
165735 ,p_actual_flag => l_actual_flag
165736 ,p_balance_type_code => l_balance_type_code
165737 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
165738
165739 , p_source_4 => l_array_source_4(Idx)
165740 , p_source_11 => l_array_source_11(Idx)
165741 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
165742 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
165743 , p_source_15 => l_array_source_15(Idx)
165744 , p_source_18 => l_array_source_18(Idx)
165745 , p_source_19 => l_array_source_19(Idx)
165746 , p_source_20 => l_array_source_20(Idx)
165747 , p_source_21 => l_array_source_21(Idx)
165748 , p_source_22 => l_array_source_22(Idx)
165749 , p_source_24 => l_array_source_24(Idx)
165750 , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
165751 , p_source_35_meaning => g_array_event(l_event_id).array_value_char('source_35_meaning')
165752 );
165753 If(l_balance_type_code = 'A') THEN
165754 l_actual_gain_loss_ref := l_gain_or_loss_ref;
165755 END IF;
165756
165757 --
165758
165759 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
165760 -- or secondary ledger that has different currency with primary
165761 -- or alc that is calculated by sla
165762 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
165763 (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'))
165764
165765 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
165766 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
165767 AND (l_actual_flag = 'A')) THEN
165768 XLA_AE_LINES_PKG.CreateGainOrLossLines(
165769 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
165770 ,p_application_id => p_application_id
165771 ,p_amb_context_code => 'DEFAULT'
165772 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
165773 ,p_event_class_code => C_EVENT_CLASS_CODE
165774 ,p_event_type_code => C_EVENT_TYPE_CODE
165775
165776 ,p_gain_ccid => -1
165777 ,p_loss_ccid => -1
165778
165779 ,p_actual_flag => l_actual_flag
165780 ,p_enc_flag => null
165781 ,p_actual_g_l_ref => l_actual_gain_loss_ref
165782 ,p_enc_g_l_ref => null
165783 );
165784 END IF;
165785 END IF;
165786 END IF;
165787
165788 ELSE
165789 --
165790 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
165791 --
165792 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165793 trace
165794 (p_msg => 'Trancaction revesal option is Y'
165795 ,p_level => C_LEVEL_STATEMENT
165796 ,p_module => l_log_module);
165797 END IF;
165798 END IF;
165799
165800 END LOOP;
165801 l_result := XLA_AE_LINES_PKG.InsertLines ;
165802 end loop;
165803 close line_cur;
165804
165805
165806 --
165807 -- insert headers into xla_ae_headers_gt table
165808 --
165809 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
165810
165811 -- insert into errors table here.
165812
165813 END LOOP;
165814
165815 --
165816 -- 4865292
165817 --
165818 -- Compare g_hdr_extract_count with event count in
165819 -- CreateHeadersAndLines.
165820 --
165821 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
165822
165823 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165824 trace (p_msg => '# rows extracted from header extract objects '
165825 || ' (running total): '
165826 || g_hdr_extract_count
165827 ,p_level => C_LEVEL_STATEMENT
165828 ,p_module => l_log_module);
165829 END IF;
165830
165831 CLOSE header_cur;
165832 --
165833
165834 --
165835 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165836 trace
165837 (p_msg => 'END of EventClass_275'
165838 ,p_level => C_LEVEL_PROCEDURE
165839 ,p_module => l_log_module);
165840 END IF;
165841 --
165842 RETURN l_result;
165843 EXCEPTION
165844 WHEN xla_exceptions_pkg.application_exception THEN
165845
165846 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
165847
165848
165849 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
165850
165851 RAISE;
165852
165853 WHEN NO_DATA_FOUND THEN
165854
165855 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
165856 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
165857
165858 FOR header_record IN header_cur
165859 LOOP
165860 l_array_header_events(header_record.event_id) := header_record.event_id;
165861 END LOOP;
165862
165863 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
165864 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
165865
165866 fnd_file.put_line(fnd_file.LOG, ' ');
165867 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
165868 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
165869 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
165870
165871 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
165872 LOOP
165873 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
165874 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
165875 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
165876 END IF;
165877 END LOOP;
165878
165879 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
165880 fnd_file.put_line(fnd_file.LOG, ' ');
165881
165882
165883 xla_exceptions_pkg.raise_message
165884 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_275');
165885
165886
165887 WHEN OTHERS THEN
165888 xla_exceptions_pkg.raise_message
165889 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_275');
165890 END EventClass_275;
165891 --
165892
165893 ---------------------------------------
165894 --
165895 -- PRIVATE PROCEDURE
165896 -- insert_sources_276
165897 --
165898 ----------------------------------------
165899 --
165900 PROCEDURE insert_sources_276(
165901 p_target_ledger_id IN NUMBER
165902 , p_language IN VARCHAR2
165903 , p_sla_ledger_id IN NUMBER
165904 , p_pad_start_date IN DATE
165905 , p_pad_end_date IN DATE
165906 )
165907 IS
165908
165909 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOT_ALL';
165910 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOT';
165911 p_apps_owner VARCHAR2(30);
165912 l_log_module VARCHAR2(240);
165913 BEGIN
165914 IF g_log_enabled THEN
165915 l_log_module := C_DEFAULT_MODULE||'.insert_sources_276';
165916 END IF;
165917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
165918
165919 trace
165920 (p_msg => 'BEGIN of insert_sources_276'
165921 ,p_level => C_LEVEL_PROCEDURE
165922 ,p_module => l_log_module);
165923
165924 END IF;
165925
165926 -- select APPS owner
165927 SELECT oracle_username
165928 INTO p_apps_owner
165929 FROM fnd_oracle_userid
165930 WHERE read_only_flag = 'U'
165931 ;
165932
165933 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
165934 trace
165935 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
165936 ' - p_language = '||p_language||
165937 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
165938 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
165939 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
165940 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
165941 ,p_level => C_LEVEL_STATEMENT
165942 ,p_module => l_log_module);
165943 END IF;
165944
165945
165946 --
165947 INSERT INTO xla_diag_sources --hdr2
165948 (
165949 event_id
165950 , ledger_id
165951 , sla_ledger_id
165952 , description_language
165953 , object_name
165954 , object_type_code
165955 , line_number
165956 , source_application_id
165957 , source_type_code
165958 , source_code
165959 , source_value
165960 , source_meaning
165961 , created_by
165962 , creation_date
165963 , last_update_date
165964 , last_updated_by
165965 , last_update_login
165966 , program_update_date
165967 , program_application_id
165968 , program_id
165969 , request_id
165970 )
165971 SELECT
165972 event_id
165973 , p_target_ledger_id
165974 , p_sla_ledger_id
165975 , p_language
165976 , object_name
165977 , object_type_code
165978 , line_number
165979 , source_application_id
165980 , source_type_code
165981 , source_code
165982 , SUBSTR(source_value ,1,1996)
165983 , SUBSTR(source_meaning ,1,200)
165984 , xla_environment_pkg.g_Usr_Id
165985 , TRUNC(SYSDATE)
165986 , TRUNC(SYSDATE)
165987 , xla_environment_pkg.g_Usr_Id
165988 , xla_environment_pkg.g_Login_Id
165989 , TRUNC(SYSDATE)
165990 , xla_environment_pkg.g_Prog_Appl_Id
165991 , xla_environment_pkg.g_Prog_Id
165992 , xla_environment_pkg.g_Req_Id
165993 FROM (
165994 SELECT xet.event_id event_id
165995 , 0 line_number
165996 , CASE r
165997 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
165998 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
165999
166000 ELSE null
166001 END object_name
166002 , CASE r
166003 WHEN 1 THEN 'HEADER'
166004 WHEN 2 THEN 'HEADER'
166005
166006 ELSE null
166007 END object_type_code
166008 , CASE r
166009 WHEN 1 THEN '707'
166010 WHEN 2 THEN '707'
166011
166012 ELSE null
166013 END source_application_id
166014 , 'S' source_type_code
166015 , CASE r
166016 WHEN 1 THEN 'DISTRIBUTION_TYPE'
166017 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
166018
166019 ELSE null
166020 END source_code
166021 , CASE r
166022 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
166023 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
166024
166025 ELSE null
166026 END source_value
166027 , CASE r
166028 WHEN 1 THEN fvl12.meaning
166029 WHEN 2 THEN fvl38.meaning
166030
166031 ELSE null
166032 END source_meaning
166033 FROM xla_events_gt xet
166034 , CST_XLA_INV_HEADERS_V h1
166035 , fnd_lookup_values fvl12
166036 , fnd_lookup_values fvl38
166037 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
166038 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166039 AND xet.event_class_code = C_EVENT_CLASS_CODE
166040 AND h1.event_id = xet.event_id
166041 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
166042 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
166043 AND fvl12.view_application_id(+) = 700
166044 AND fvl12.language(+) = USERENV('LANG')
166045 AND fvl38.lookup_type(+) = 'YES_NO'
166046 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
166047 AND fvl38.view_application_id(+) = 0
166048 AND fvl38.language(+) = USERENV('LANG')
166049
166050 )
166051 ;
166052 --
166053 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166054
166055 trace
166056 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
166057 ,p_level => C_LEVEL_STATEMENT
166058 ,p_module => l_log_module);
166059
166060 END IF;
166061 --
166062
166063
166064
166065 --
166066 INSERT INTO xla_diag_sources --line2
166067 (
166068 event_id
166069 , ledger_id
166070 , sla_ledger_id
166071 , description_language
166072 , object_name
166073 , object_type_code
166074 , line_number
166075 , source_application_id
166076 , source_type_code
166077 , source_code
166078 , source_value
166079 , source_meaning
166080 , created_by
166081 , creation_date
166082 , last_update_date
166083 , last_updated_by
166084 , last_update_login
166085 , program_update_date
166086 , program_application_id
166087 , program_id
166088 , request_id
166089 )
166090 SELECT event_id
166091 , p_target_ledger_id
166092 , p_sla_ledger_id
166093 , p_language
166094 , object_name
166095 , object_type_code
166096 , line_number
166097 , source_application_id
166098 , source_type_code
166099 , source_code
166100 , SUBSTR(source_value,1,1996)
166101 , SUBSTR(source_meaning ,1,200)
166102 , xla_environment_pkg.g_Usr_Id
166103 , TRUNC(SYSDATE)
166104 , TRUNC(SYSDATE)
166105 , xla_environment_pkg.g_Usr_Id
166106 , xla_environment_pkg.g_Login_Id
166107 , TRUNC(SYSDATE)
166108 , xla_environment_pkg.g_Prog_Appl_Id
166109 , xla_environment_pkg.g_Prog_Id
166110 , xla_environment_pkg.g_Req_Id
166111 FROM (
166112 SELECT xet.event_id event_id
166113 , l2.line_number line_number
166114 , CASE r
166115 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
166116 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
166117 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
166118 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
166119 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
166120 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
166121 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
166122 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
166123 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
166124
166125 ELSE null
166126 END object_name
166127 , CASE r
166128 WHEN 1 THEN 'LINE'
166129 WHEN 2 THEN 'LINE'
166130 WHEN 3 THEN 'LINE'
166131 WHEN 4 THEN 'LINE'
166132 WHEN 5 THEN 'LINE'
166133 WHEN 6 THEN 'LINE'
166134 WHEN 7 THEN 'LINE'
166135 WHEN 8 THEN 'LINE'
166136 WHEN 9 THEN 'LINE'
166137
166138 ELSE null
166139 END object_type_code
166140 , CASE r
166141 WHEN 1 THEN '707'
166142 WHEN 2 THEN '707'
166143 WHEN 3 THEN '707'
166144 WHEN 4 THEN '707'
166145 WHEN 5 THEN '707'
166146 WHEN 6 THEN '707'
166147 WHEN 7 THEN '707'
166148 WHEN 8 THEN '707'
166149 WHEN 9 THEN '707'
166150
166151 ELSE null
166152 END source_application_id
166153 , 'S' source_type_code
166154 , CASE r
166155 WHEN 1 THEN 'CODE_COMBINATION_ID'
166156 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
166157 WHEN 3 THEN 'CURRENCY_CODE'
166158 WHEN 4 THEN 'ENTERED_AMOUNT'
166159 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
166160 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
166161 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
166162 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
166163 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
166164
166165 ELSE null
166166 END source_code
166167 , CASE r
166168 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
166169 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
166170 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
166171 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
166172 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
166173 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
166174 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
166175 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
166176 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
166177
166178 ELSE null
166179 END source_value
166180 , null source_meaning
166181 FROM xla_events_gt xet
166182 , CST_XLA_INV_LINES_V l2
166183 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
166184 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
166185 AND xet.event_class_code = C_EVENT_CLASS_CODE
166186 AND l2.event_id = xet.event_id
166187
166188 )
166189 ;
166190 --
166191 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166192
166193 trace
166194 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
166195 ,p_level => C_LEVEL_STATEMENT
166196 ,p_module => l_log_module);
166197
166198 END IF;
166199
166200
166201 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166202 trace
166203 (p_msg => 'END of insert_sources_276'
166204 ,p_level => C_LEVEL_PROCEDURE
166205 ,p_module => l_log_module);
166206 END IF;
166207 EXCEPTION
166208 WHEN xla_exceptions_pkg.application_exception THEN
166209 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166210 trace
166211 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166212 ,p_level => C_LEVEL_EXCEPTION
166213 ,p_module => l_log_module);
166214 END IF;
166215 RAISE;
166216 WHEN OTHERS THEN
166217 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
166218 trace
166219 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
166220 ,p_level => C_LEVEL_EXCEPTION
166221 ,p_module => l_log_module);
166222 END IF;
166223 xla_exceptions_pkg.raise_message
166224 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_276');
166225 END insert_sources_276;
166226 --
166227
166228 ---------------------------------------
166229 --
166230 -- PRIVATE FUNCTION
166231 -- EventClass_276
166232 --
166233 ----------------------------------------
166234 --
166235 FUNCTION EventClass_276
166236 (p_application_id IN NUMBER
166237 ,p_base_ledger_id IN NUMBER
166238 ,p_target_ledger_id IN NUMBER
166239 ,p_language IN VARCHAR2
166240 ,p_currency_code IN VARCHAR2
166241 ,p_sla_ledger_id IN NUMBER
166242 ,p_pad_start_date IN DATE
166243 ,p_pad_end_date IN DATE
166244 ,p_primary_ledger_id IN NUMBER)
166245 RETURN BOOLEAN IS
166246 --
166247 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'LOT_ALL';
166248 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'LOT';
166249
166250 l_calculate_acctd_flag VARCHAR2(1) :='N';
166251 l_calculate_g_l_flag VARCHAR2(1) :='N';
166252 --
166253 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166254 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166255 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166256 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166257 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166258 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166259 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166260 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166261 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166262 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166263 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166264 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166265 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166266 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
166267 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166268 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166269 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166270 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
166271 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166272 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166273 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166274 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
166275 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
166276 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
166277 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
166278 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
166279
166280 l_event_id NUMBER;
166281 l_previous_event_id NUMBER;
166282 l_first_event_id NUMBER;
166283 l_last_event_id NUMBER;
166284
166285 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
166286 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
166287 --
166288 --
166289 l_result BOOLEAN := TRUE;
166290 l_rows NUMBER := 1000;
166291 l_event_type_name VARCHAR2(80) := 'All';
166292 l_event_class_name VARCHAR2(80) := 'WIP Material Lot';
166293 l_description VARCHAR2(4000);
166294 l_transaction_reversal NUMBER;
166295 l_ae_header_id NUMBER;
166296 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
166297 l_log_module VARCHAR2(240);
166298 --
166299 l_acct_reversal_source VARCHAR2(30);
166300 l_trx_reversal_source VARCHAR2(30);
166301
166302 l_continue_with_lines BOOLEAN := TRUE;
166303 --
166304 l_acc_rev_gl_date_source DATE; -- 4262811
166305 --
166306 type t_array_event_id is table of number index by binary_integer;
166307
166308 l_rec_array_event t_rec_array_event;
166309 l_null_rec_array_event t_rec_array_event;
166310 l_array_ae_header_id xla_number_array_type;
166311 l_actual_flag VARCHAR2(1) := NULL;
166312 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
166313 l_balance_type_code VARCHAR2(1) :=NULL;
166314 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
166315
166316 --
166317 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
166318 --
166319
166320 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
166321 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
166322
166323 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
166324 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
166325 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
166326 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166327 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
166328 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
166329 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
166330 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
166331 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
166332
166333 l_array_source_12 t_array_source_12;
166334 l_array_source_12_meaning t_array_lookup_meaning;
166335 l_array_source_38 t_array_source_38;
166336 l_array_source_38_meaning t_array_lookup_meaning;
166337
166338 l_array_source_4 t_array_source_4;
166339 l_array_source_11 t_array_source_11;
166340 l_array_source_15 t_array_source_15;
166341 l_array_source_18 t_array_source_18;
166342 l_array_source_19 t_array_source_19;
166343 l_array_source_20 t_array_source_20;
166344 l_array_source_21 t_array_source_21;
166345 l_array_source_22 t_array_source_22;
166346 l_array_source_24 t_array_source_24;
166347
166348 --
166349 CURSOR header_cur
166350 IS
166351 SELECT /*+ leading(xet) cardinality(xet,1) */
166352 -- Event Class Code: LOT
166353 xet.entity_id
166354 ,xet.legal_entity_id
166355 ,xet.entity_code
166356 ,xet.transaction_number
166357 ,xet.event_id
166358 ,xet.event_class_code
166359 ,xet.event_type_code
166360 ,xet.event_number
166361 ,xet.event_date
166362 ,xet.transaction_date
166363 ,xet.reference_num_1
166364 ,xet.reference_num_2
166365 ,xet.reference_num_3
166366 ,xet.reference_num_4
166367 ,xet.reference_char_1
166368 ,xet.reference_char_2
166369 ,xet.reference_char_3
166370 ,xet.reference_char_4
166371 ,xet.reference_date_1
166372 ,xet.reference_date_2
166373 ,xet.reference_date_3
166374 ,xet.reference_date_4
166375 ,xet.event_created_by
166376 ,xet.budgetary_control_flag
166377 , h1.DISTRIBUTION_TYPE source_12
166378 , fvl12.meaning source_12_meaning
166379 , h1.TRANSFER_TO_GL_INDICATOR source_38
166380 , fvl38.meaning source_38_meaning
166381 FROM xla_events_gt xet
166382 , CST_XLA_INV_HEADERS_V h1
166383 , fnd_lookup_values fvl12
166384 , fnd_lookup_values fvl38
166385 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
166386 and xet.event_class_code = C_EVENT_CLASS_CODE
166387 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
166388 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
166389 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
166390 AND fvl12.view_application_id(+) = 700
166391 AND fvl12.language(+) = USERENV('LANG')
166392 AND fvl38.lookup_type(+) = 'YES_NO'
166393 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
166394 AND fvl38.view_application_id(+) = 0
166395 AND fvl38.language(+) = USERENV('LANG')
166396
166397 ORDER BY event_id
166398 ;
166399
166400
166401 --
166402 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
166403 IS
166404 SELECT /*+ leading(xet) cardinality(xet,1) */
166405 -- Event Class Code: LOT
166406 xet.entity_id
166407 ,xet.legal_entity_id
166408 ,xet.entity_code
166409 ,xet.transaction_number
166410 ,xet.event_id
166411 ,xet.event_class_code
166412 ,xet.event_type_code
166413 ,xet.event_number
166414 ,xet.event_date
166415 ,xet.transaction_date
166416 ,xet.reference_num_1
166417 ,xet.reference_num_2
166418 ,xet.reference_num_3
166419 ,xet.reference_num_4
166420 ,xet.reference_char_1
166421 ,xet.reference_char_2
166422 ,xet.reference_char_3
166423 ,xet.reference_char_4
166424 ,xet.reference_date_1
166425 ,xet.reference_date_2
166426 ,xet.reference_date_3
166427 ,xet.reference_date_4
166428 ,xet.event_created_by
166429 ,xet.budgetary_control_flag
166430 , l2.LINE_NUMBER
166431 , l2.CODE_COMBINATION_ID source_4
166432 , l2.DISTRIBUTION_IDENTIFIER source_11
166433 , l2.CURRENCY_CODE source_15
166434 , l2.ENTERED_AMOUNT source_18
166435 , l2.CURRENCY_CONVERSION_DATE source_19
166436 , l2.CURRENCY_CONVERSION_RATE source_20
166437 , l2.CURRENCY_CONVERSION_TYPE source_21
166438 , l2.ACCOUNTED_AMOUNT source_22
166439 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
166440 FROM xla_events_gt xet
166441 , CST_XLA_INV_LINES_V l2
166442 WHERE xet.event_id between x_first_event_id and x_last_event_id
166443 and xet.event_date between p_pad_start_date and p_pad_end_date
166444 and xet.event_class_code = C_EVENT_CLASS_CODE
166445 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
166446 ;
166447
166448 --
166449 BEGIN
166450 IF g_log_enabled THEN
166451 l_log_module := C_DEFAULT_MODULE||'.EventClass_276';
166452 END IF;
166453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
166454 trace
166455 (p_msg => 'BEGIN of EventClass_276'
166456 ,p_level => C_LEVEL_PROCEDURE
166457 ,p_module => l_log_module);
166458 END IF;
166459
166460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166461 trace
166462 (p_msg => 'p_application_id = '||p_application_id||
166463 ' - p_base_ledger_id = '||p_base_ledger_id||
166464 ' - p_target_ledger_id = '||p_target_ledger_id||
166465 ' - p_language = '||p_language||
166466 ' - p_currency_code = '||p_currency_code||
166467 ' - p_sla_ledger_id = '||p_sla_ledger_id
166468 ,p_level => C_LEVEL_STATEMENT
166469 ,p_module => l_log_module);
166470 END IF;
166471 --
166472 -- initialze arrays
166473 --
166474 g_array_event.DELETE;
166475 l_rec_array_event := l_null_rec_array_event;
166476 --
166477 --------------------------------------
166478 -- 4262811 Initialze MPA Line Number
166479 --------------------------------------
166480 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
166481
166482 --
166483
166484 --
166485 OPEN header_cur;
166486 --
166487 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166488 trace
166489 (p_msg => 'SQL - FETCH header_cur'
166490 ,p_level => C_LEVEL_STATEMENT
166491 ,p_module => l_log_module);
166492 END IF;
166493 --
166494 LOOP
166495 FETCH header_cur BULK COLLECT INTO
166496 l_array_entity_id
166497 , l_array_legal_entity_id
166498 , l_array_entity_code
166499 , l_array_transaction_num
166500 , l_array_event_id
166501 , l_array_class_code
166502 , l_array_event_type
166503 , l_array_event_number
166504 , l_array_event_date
166505 , l_array_transaction_date
166506 , l_array_reference_num_1
166507 , l_array_reference_num_2
166508 , l_array_reference_num_3
166509 , l_array_reference_num_4
166510 , l_array_reference_char_1
166511 , l_array_reference_char_2
166512 , l_array_reference_char_3
166513 , l_array_reference_char_4
166514 , l_array_reference_date_1
166515 , l_array_reference_date_2
166516 , l_array_reference_date_3
166517 , l_array_reference_date_4
166518 , l_array_event_created_by
166519 , l_array_budgetary_control_flag
166520 , l_array_source_12
166521 , l_array_source_12_meaning
166522 , l_array_source_38
166523 , l_array_source_38_meaning
166524 LIMIT l_rows;
166525 --
166526 IF (C_LEVEL_EVENT >= g_log_level) THEN
166527 trace
166528 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
166529 ,p_level => C_LEVEL_EVENT
166530 ,p_module => l_log_module);
166531 END IF;
166532 --
166533 EXIT WHEN l_array_entity_id.COUNT = 0;
166534
166535 -- initialize arrays
166536 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
166537 XLA_AE_LINES_PKG.g_rec_lines := NULL;
166538
166539 --
166540 -- Bug 4458708
166541 --
166542 XLA_AE_LINES_PKG.g_LineNumber := 0;
166543
166544
166545 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
166546 g_last_hdr_idx := l_array_event_id.LAST;
166547 --
166548 -- loop for the headers. Each iteration is for each header extract row
166549 -- fetched in header cursor
166550 --
166551 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
166552
166553 --
166554 -- set event info as cache for other routines to refer event attributes
166555 --
166556 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
166557 (p_application_id => p_application_id
166558 ,p_primary_ledger_id => p_primary_ledger_id
166559 ,p_base_ledger_id => p_base_ledger_id
166560 ,p_target_ledger_id => p_target_ledger_id
166561 ,p_entity_id => l_array_entity_id(hdr_idx)
166562 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
166563 ,p_entity_code => l_array_entity_code(hdr_idx)
166564 ,p_transaction_num => l_array_transaction_num(hdr_idx)
166565 ,p_event_id => l_array_event_id(hdr_idx)
166566 ,p_event_class_code => l_array_class_code(hdr_idx)
166567 ,p_event_type_code => l_array_event_type(hdr_idx)
166568 ,p_event_number => l_array_event_number(hdr_idx)
166569 ,p_event_date => l_array_event_date(hdr_idx)
166570 ,p_transaction_date => l_array_transaction_date(hdr_idx)
166571 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
166572 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
166573 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
166574 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
166575 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
166576 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
166577 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
166578 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
166579 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
166580 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
166581 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
166582 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
166583 ,p_event_created_by => l_array_event_created_by(hdr_idx)
166584 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
166585
166586 --
166587 -- set the status of entry to C_VALID (0)
166588 --
166589 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
166590
166591 --
166592 -- initialize a row for ae header
166593 --
166594 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
166595
166596 l_event_id := l_array_event_id(hdr_idx);
166597
166598 --
166599 -- storing the hdr_idx for event. May be used by line cursor.
166600 --
166601 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
166602
166603 --
166604 -- store sources from header extract. This can be improved to
166605 -- store only those sources from header extract that may be used in lines
166606 --
166607
166608 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
166609 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
166610 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
166611 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
166612
166613 --
166614 -- initilaize the status of ae headers for diffrent balance types
166615 -- the status is initialised to C_NOT_CREATED (2)
166616 --
166617 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166618 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166619 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
166620
166621 --
166622 -- call api to validate and store accounting attributes for header
166623 --
166624
166625 ------------------------------------------------------------
166626 -- Accrual Reversal : to get date for Standard Source (NONE)
166627 ------------------------------------------------------------
166628 l_acc_rev_gl_date_source := NULL;
166629
166630 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
166631 l_rec_acct_attrs.array_date_value(1) :=
166632 xla_ae_sources_pkg.GetSystemSourceDate(
166633 p_source_code => 'XLA_REFERENCE_DATE_1'
166634 , p_source_type_code => 'Y'
166635 , p_source_application_id => 602
166636 );
166637 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
166638 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
166639
166640
166641 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
166642
166643 XLA_AE_HEADER_PKG.SetJeCategoryName;
166644
166645 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
166646 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
166647 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
166648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
166649 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
166650
166651
166652 -- No header level analytical criteria
166653
166654 --
166655 --accounting attribute enhancement, bug 3612931
166656 --
166657 l_trx_reversal_source := SUBSTR(NULL, 1,30);
166658
166659 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
166660 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
166661
166662 xla_accounting_err_pkg.build_message
166663 (p_appli_s_name => 'XLA'
166664 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
166665 ,p_token_1 => 'ACCT_ATTR_NAME'
166666 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
166667 ,p_token_2 => 'PRODUCT_NAME'
166668 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
166669 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
166670 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
166671 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
166672
166673 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
166674 --
166675 -- following sets the accounting attributes needed to reverse
166676 -- accounting for a distributeion
166677 --
166678 xla_ae_lines_pkg.SetTrxReversalAttrs
166679 (p_event_id => l_event_id
166680 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
166681 ,p_trx_reversal_source => l_trx_reversal_source);
166682
166683 END IF;
166684
166685
166686 ----------------------------------------------------------------
166687 -- 4262811 - update the header statuses to invalid in need be
166688 ----------------------------------------------------------------
166689 --
166690 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
166691
166692
166693 -----------------------------------------------
166694 -- No accrual reversal for the event class/type
166695 -----------------------------------------------
166696 ----------------------------------------------------------------
166697
166698 --
166699 -- this ends the header loop iteration for one bulk fetch
166700 --
166701 END LOOP;
166702
166703 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
166704 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
166705
166706 --
166707 -- insert dummy rows into lines gt table that were created due to
166708 -- transaction reversals
166709 --
166710 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
166711 l_result := XLA_AE_LINES_PKG.InsertLines;
166712 END IF;
166713
166714 --
166715 -- reset the temp_line_num for each set of events fetched from header
166716 -- cursor rather than doing it for each new event in line cursor
166717 -- Bug 3939231
166718 --
166719 xla_ae_lines_pkg.g_temp_line_num := 0;
166720
166721
166722
166723 --
166724 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
166725 --
166726 --
166727 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166728
166729 trace
166730 (p_msg => 'SQL - FETCH line_cur'
166731 ,p_level => C_LEVEL_STATEMENT
166732 ,p_module => l_log_module);
166733
166734 END IF;
166735 --
166736 --
166737 LOOP
166738 --
166739 FETCH line_cur BULK COLLECT INTO
166740 l_array_entity_id
166741 , l_array_legal_entity_id
166742 , l_array_entity_code
166743 , l_array_transaction_num
166744 , l_array_event_id
166745 , l_array_class_code
166746 , l_array_event_type
166747 , l_array_event_number
166748 , l_array_event_date
166749 , l_array_transaction_date
166750 , l_array_reference_num_1
166751 , l_array_reference_num_2
166752 , l_array_reference_num_3
166753 , l_array_reference_num_4
166754 , l_array_reference_char_1
166755 , l_array_reference_char_2
166756 , l_array_reference_char_3
166757 , l_array_reference_char_4
166758 , l_array_reference_date_1
166759 , l_array_reference_date_2
166760 , l_array_reference_date_3
166761 , l_array_reference_date_4
166762 , l_array_event_created_by
166763 , l_array_budgetary_control_flag
166764 , l_array_extract_line_num
166765 , l_array_source_4
166766 , l_array_source_11
166767 , l_array_source_15
166768 , l_array_source_18
166769 , l_array_source_19
166770 , l_array_source_20
166771 , l_array_source_21
166772 , l_array_source_22
166773 , l_array_source_24
166774 LIMIT l_rows;
166775
166776 --
166777 IF (C_LEVEL_EVENT >= g_log_level) THEN
166778 trace
166779 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
166780 ,p_level => C_LEVEL_EVENT
166781 ,p_module => l_log_module);
166782 END IF;
166783 --
166784 EXIT WHEN l_array_entity_id.count = 0;
166785
166786 XLA_AE_LINES_PKG.g_rec_lines := null;
166787
166788 --
166789 -- Bug 4458708
166790 --
166791 XLA_AE_LINES_PKG.g_LineNumber := 0;
166792 --
166793 --
166794
166795 FOR Idx IN 1..l_array_event_id.count LOOP
166796 --
166797 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
166798 --
166799 l_event_id := l_array_event_id(idx); -- 5648433
166800
166801 --
166802 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
166803 --
166804
166805 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
166806 (g_array_event(l_event_id).array_value_num('header_index'))
166807 ,'N'
166808 ) <> 'Y'
166809 THEN
166810 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
166811 trace
166812 (p_msg => 'Trancaction revesal option is not Y '
166813 ,p_level => C_LEVEL_STATEMENT
166814 ,p_module => l_log_module);
166815 END IF;
166816
166817 --
166818 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
166819 --
166820 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
166821 --
166822 -- set event info as cache for other routines to refer event attributes
166823 --
166824
166825 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
166826 l_previous_event_id := l_event_id;
166827
166828 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
166829 (p_application_id => p_application_id
166830 ,p_primary_ledger_id => p_primary_ledger_id
166831 ,p_base_ledger_id => p_base_ledger_id
166832 ,p_target_ledger_id => p_target_ledger_id
166833 ,p_entity_id => l_array_entity_id(Idx)
166834 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
166835 ,p_entity_code => l_array_entity_code(Idx)
166836 ,p_transaction_num => l_array_transaction_num(Idx)
166837 ,p_event_id => l_array_event_id(Idx)
166838 ,p_event_class_code => l_array_class_code(Idx)
166839 ,p_event_type_code => l_array_event_type(Idx)
166840 ,p_event_number => l_array_event_number(Idx)
166841 ,p_event_date => l_array_event_date(Idx)
166842 ,p_transaction_date => l_array_transaction_date(Idx)
166843 ,p_reference_num_1 => l_array_reference_num_1(Idx)
166844 ,p_reference_num_2 => l_array_reference_num_2(Idx)
166845 ,p_reference_num_3 => l_array_reference_num_3(Idx)
166846 ,p_reference_num_4 => l_array_reference_num_4(Idx)
166847 ,p_reference_char_1 => l_array_reference_char_1(Idx)
166848 ,p_reference_char_2 => l_array_reference_char_2(Idx)
166849 ,p_reference_char_3 => l_array_reference_char_3(Idx)
166850 ,p_reference_char_4 => l_array_reference_char_4(Idx)
166851 ,p_reference_date_1 => l_array_reference_date_1(Idx)
166852 ,p_reference_date_2 => l_array_reference_date_2(Idx)
166853 ,p_reference_date_3 => l_array_reference_date_3(Idx)
166854 ,p_reference_date_4 => l_array_reference_date_4(Idx)
166855 ,p_event_created_by => l_array_event_created_by(Idx)
166856 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
166857 --
166858 END IF;
166859
166860
166861
166862 --
166863 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
166864
166865 l_acct_reversal_source := SUBSTR(NULL, 1,30);
166866
166867 IF l_continue_with_lines THEN
166868 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
166869 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
166870
166871 xla_accounting_err_pkg.build_message
166872 (p_appli_s_name => 'XLA'
166873 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
166874 ,p_token_1 => 'LINE_NUMBER'
166875 ,p_value_1 => l_array_extract_line_num(Idx)
166876 ,p_token_2 => 'PRODUCT_NAME'
166877 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
166878 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
166879 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
166880 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
166881
166882 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
166883 --
166884 -- following sets the accounting attributes needed to reverse
166885 -- accounting for a distributeion
166886 --
166887
166888 --
166889 -- 5217187
166890 --
166891 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
166892 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
166893 g_array_event(l_event_id).array_value_num('header_index'));
166894 --
166895 --
166896
166897 -- No reversal code generated
166898
166899 xla_ae_lines_pkg.SetAcctReversalAttrs
166900 (p_event_id => l_event_id
166901 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
166902 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166903 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
166904 END IF;
166905
166906 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
166907 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
166908
166909 --
166910 AcctLineType_191 (
166911 p_application_id => p_application_id
166912 ,p_event_id => l_event_id
166913 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166914 ,p_calculate_g_l_flag => l_calculate_g_l_flag
166915 ,p_actual_flag => l_actual_flag
166916 ,p_balance_type_code => l_balance_type_code
166917 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166918
166919 , p_source_4 => l_array_source_4(Idx)
166920 , p_source_11 => l_array_source_11(Idx)
166921 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166922 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166923 , p_source_15 => l_array_source_15(Idx)
166924 , p_source_18 => l_array_source_18(Idx)
166925 , p_source_19 => l_array_source_19(Idx)
166926 , p_source_20 => l_array_source_20(Idx)
166927 , p_source_21 => l_array_source_21(Idx)
166928 , p_source_22 => l_array_source_22(Idx)
166929 , p_source_24 => l_array_source_24(Idx)
166930 );
166931 If(l_balance_type_code = 'A') THEN
166932 l_actual_gain_loss_ref := l_gain_or_loss_ref;
166933 END IF;
166934
166935 --
166936
166937
166938 --
166939 AcctLineType_252 (
166940 p_application_id => p_application_id
166941 ,p_event_id => l_event_id
166942 ,p_calculate_acctd_flag => l_calculate_acctd_flag
166943 ,p_calculate_g_l_flag => l_calculate_g_l_flag
166944 ,p_actual_flag => l_actual_flag
166945 ,p_balance_type_code => l_balance_type_code
166946 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
166947
166948 , p_source_4 => l_array_source_4(Idx)
166949 , p_source_11 => l_array_source_11(Idx)
166950 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
166951 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
166952 , p_source_15 => l_array_source_15(Idx)
166953 , p_source_18 => l_array_source_18(Idx)
166954 , p_source_19 => l_array_source_19(Idx)
166955 , p_source_20 => l_array_source_20(Idx)
166956 , p_source_21 => l_array_source_21(Idx)
166957 , p_source_22 => l_array_source_22(Idx)
166958 , p_source_24 => l_array_source_24(Idx)
166959 );
166960 If(l_balance_type_code = 'A') THEN
166961 l_actual_gain_loss_ref := l_gain_or_loss_ref;
166962 END IF;
166963
166964 --
166965
166966 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
166967 -- or secondary ledger that has different currency with primary
166968 -- or alc that is calculated by sla
166969 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
166970 (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'))
166971
166972 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
166973 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
166974 AND (l_actual_flag = 'A')) THEN
166975 XLA_AE_LINES_PKG.CreateGainOrLossLines(
166976 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
166977 ,p_application_id => p_application_id
166978 ,p_amb_context_code => 'DEFAULT'
166979 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
166980 ,p_event_class_code => C_EVENT_CLASS_CODE
166981 ,p_event_type_code => C_EVENT_TYPE_CODE
166982
166983 ,p_gain_ccid => -1
166984 ,p_loss_ccid => -1
166985
166986 ,p_actual_flag => l_actual_flag
166987 ,p_enc_flag => null
166988 ,p_actual_g_l_ref => l_actual_gain_loss_ref
166989 ,p_enc_g_l_ref => null
166990 );
166991 END IF;
166992 END IF;
166993 END IF;
166994
166995 ELSE
166996 --
166997 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
166998 --
166999 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167000 trace
167001 (p_msg => 'Trancaction revesal option is Y'
167002 ,p_level => C_LEVEL_STATEMENT
167003 ,p_module => l_log_module);
167004 END IF;
167005 END IF;
167006
167007 END LOOP;
167008 l_result := XLA_AE_LINES_PKG.InsertLines ;
167009 end loop;
167010 close line_cur;
167011
167012
167013 --
167014 -- insert headers into xla_ae_headers_gt table
167015 --
167016 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
167017
167018 -- insert into errors table here.
167019
167020 END LOOP;
167021
167022 --
167023 -- 4865292
167024 --
167025 -- Compare g_hdr_extract_count with event count in
167026 -- CreateHeadersAndLines.
167027 --
167028 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
167029
167030 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167031 trace (p_msg => '# rows extracted from header extract objects '
167032 || ' (running total): '
167033 || g_hdr_extract_count
167034 ,p_level => C_LEVEL_STATEMENT
167035 ,p_module => l_log_module);
167036 END IF;
167037
167038 CLOSE header_cur;
167039 --
167040
167041 --
167042 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167043 trace
167044 (p_msg => 'END of EventClass_276'
167045 ,p_level => C_LEVEL_PROCEDURE
167046 ,p_module => l_log_module);
167047 END IF;
167048 --
167049 RETURN l_result;
167050 EXCEPTION
167051 WHEN xla_exceptions_pkg.application_exception THEN
167052
167053 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167054
167055
167056 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
167057
167058 RAISE;
167059
167060 WHEN NO_DATA_FOUND THEN
167061
167062 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
167063 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
167064
167065 FOR header_record IN header_cur
167066 LOOP
167067 l_array_header_events(header_record.event_id) := header_record.event_id;
167068 END LOOP;
167069
167070 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
167071 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
167072
167073 fnd_file.put_line(fnd_file.LOG, ' ');
167074 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167075 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
167076 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
167077
167078 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
167079 LOOP
167080 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
167081 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
167082 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
167083 END IF;
167084 END LOOP;
167085
167086 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
167087 fnd_file.put_line(fnd_file.LOG, ' ');
167088
167089
167090 xla_exceptions_pkg.raise_message
167091 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_276');
167092
167093
167094 WHEN OTHERS THEN
167095 xla_exceptions_pkg.raise_message
167096 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_276');
167097 END EventClass_276;
167098 --
167099
167100 ---------------------------------------
167101 --
167102 -- PRIVATE PROCEDURE
167103 -- insert_sources_277
167104 --
167105 ----------------------------------------
167106 --
167107 PROCEDURE insert_sources_277(
167108 p_target_ledger_id IN NUMBER
167109 , p_language IN VARCHAR2
167110 , p_sla_ledger_id IN NUMBER
167111 , p_pad_start_date IN DATE
167112 , p_pad_end_date IN DATE
167113 )
167114 IS
167115
167116 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'MISC_ISSUE_RCPT_ALL';
167117 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'MISC_ISSUE_RCPT';
167118 p_apps_owner VARCHAR2(30);
167119 l_log_module VARCHAR2(240);
167120 BEGIN
167121 IF g_log_enabled THEN
167122 l_log_module := C_DEFAULT_MODULE||'.insert_sources_277';
167123 END IF;
167124 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167125
167126 trace
167127 (p_msg => 'BEGIN of insert_sources_277'
167128 ,p_level => C_LEVEL_PROCEDURE
167129 ,p_module => l_log_module);
167130
167131 END IF;
167132
167133 -- select APPS owner
167134 SELECT oracle_username
167135 INTO p_apps_owner
167136 FROM fnd_oracle_userid
167137 WHERE read_only_flag = 'U'
167138 ;
167139
167140 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167141 trace
167142 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
167143 ' - p_language = '||p_language||
167144 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
167145 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
167146 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
167147 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
167148 ,p_level => C_LEVEL_STATEMENT
167149 ,p_module => l_log_module);
167150 END IF;
167151
167152
167153 --
167154 INSERT INTO xla_diag_sources --hdr2
167155 (
167156 event_id
167157 , ledger_id
167158 , sla_ledger_id
167159 , description_language
167160 , object_name
167161 , object_type_code
167162 , line_number
167163 , source_application_id
167164 , source_type_code
167165 , source_code
167166 , source_value
167167 , source_meaning
167168 , created_by
167169 , creation_date
167170 , last_update_date
167171 , last_updated_by
167172 , last_update_login
167173 , program_update_date
167174 , program_application_id
167175 , program_id
167176 , request_id
167177 )
167178 SELECT
167179 event_id
167180 , p_target_ledger_id
167181 , p_sla_ledger_id
167182 , p_language
167183 , object_name
167184 , object_type_code
167185 , line_number
167186 , source_application_id
167187 , source_type_code
167188 , source_code
167189 , SUBSTR(source_value ,1,1996)
167190 , SUBSTR(source_meaning ,1,200)
167191 , xla_environment_pkg.g_Usr_Id
167192 , TRUNC(SYSDATE)
167193 , TRUNC(SYSDATE)
167194 , xla_environment_pkg.g_Usr_Id
167195 , xla_environment_pkg.g_Login_Id
167196 , TRUNC(SYSDATE)
167197 , xla_environment_pkg.g_Prog_Appl_Id
167198 , xla_environment_pkg.g_Prog_Id
167199 , xla_environment_pkg.g_Req_Id
167200 FROM (
167201 SELECT xet.event_id event_id
167202 , 0 line_number
167203 , CASE r
167204 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
167205 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
167206
167207 ELSE null
167208 END object_name
167209 , CASE r
167210 WHEN 1 THEN 'HEADER'
167211 WHEN 2 THEN 'HEADER'
167212
167213 ELSE null
167214 END object_type_code
167215 , CASE r
167216 WHEN 1 THEN '707'
167217 WHEN 2 THEN '707'
167218
167219 ELSE null
167220 END source_application_id
167221 , 'S' source_type_code
167222 , CASE r
167223 WHEN 1 THEN 'DISTRIBUTION_TYPE'
167224 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
167225
167226 ELSE null
167227 END source_code
167228 , CASE r
167229 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
167230 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
167231
167232 ELSE null
167233 END source_value
167234 , CASE r
167235 WHEN 1 THEN fvl12.meaning
167236 WHEN 2 THEN fvl38.meaning
167237
167238 ELSE null
167239 END source_meaning
167240 FROM xla_events_gt xet
167241 , CST_XLA_INV_HEADERS_V h1
167242 , fnd_lookup_values fvl12
167243 , fnd_lookup_values fvl38
167244 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
167245 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
167246 AND xet.event_class_code = C_EVENT_CLASS_CODE
167247 AND h1.event_id = xet.event_id
167248 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
167249 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
167250 AND fvl12.view_application_id(+) = 700
167251 AND fvl12.language(+) = USERENV('LANG')
167252 AND fvl38.lookup_type(+) = 'YES_NO'
167253 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
167254 AND fvl38.view_application_id(+) = 0
167255 AND fvl38.language(+) = USERENV('LANG')
167256
167257 )
167258 ;
167259 --
167260 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167261
167262 trace
167263 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
167264 ,p_level => C_LEVEL_STATEMENT
167265 ,p_module => l_log_module);
167266
167267 END IF;
167268 --
167269
167270
167271
167272 --
167273 INSERT INTO xla_diag_sources --line2
167274 (
167275 event_id
167276 , ledger_id
167277 , sla_ledger_id
167278 , description_language
167279 , object_name
167280 , object_type_code
167281 , line_number
167282 , source_application_id
167283 , source_type_code
167284 , source_code
167285 , source_value
167286 , source_meaning
167287 , created_by
167288 , creation_date
167289 , last_update_date
167290 , last_updated_by
167291 , last_update_login
167292 , program_update_date
167293 , program_application_id
167294 , program_id
167295 , request_id
167296 )
167297 SELECT event_id
167298 , p_target_ledger_id
167299 , p_sla_ledger_id
167300 , p_language
167301 , object_name
167302 , object_type_code
167303 , line_number
167304 , source_application_id
167305 , source_type_code
167306 , source_code
167307 , SUBSTR(source_value,1,1996)
167308 , SUBSTR(source_meaning ,1,200)
167309 , xla_environment_pkg.g_Usr_Id
167310 , TRUNC(SYSDATE)
167311 , TRUNC(SYSDATE)
167312 , xla_environment_pkg.g_Usr_Id
167313 , xla_environment_pkg.g_Login_Id
167314 , TRUNC(SYSDATE)
167315 , xla_environment_pkg.g_Prog_Appl_Id
167316 , xla_environment_pkg.g_Prog_Id
167317 , xla_environment_pkg.g_Req_Id
167318 FROM (
167319 SELECT xet.event_id event_id
167320 , l2.line_number line_number
167321 , CASE r
167322 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
167323 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
167324 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
167325 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
167326 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
167327 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
167328 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
167329 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
167330 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
167331
167332 ELSE null
167333 END object_name
167334 , CASE r
167335 WHEN 1 THEN 'LINE'
167336 WHEN 2 THEN 'LINE'
167337 WHEN 3 THEN 'LINE'
167338 WHEN 4 THEN 'LINE'
167339 WHEN 5 THEN 'LINE'
167340 WHEN 6 THEN 'LINE'
167341 WHEN 7 THEN 'LINE'
167342 WHEN 8 THEN 'LINE'
167343 WHEN 9 THEN 'LINE'
167344
167345 ELSE null
167346 END object_type_code
167347 , CASE r
167348 WHEN 1 THEN '707'
167349 WHEN 2 THEN '707'
167350 WHEN 3 THEN '707'
167351 WHEN 4 THEN '707'
167352 WHEN 5 THEN '707'
167353 WHEN 6 THEN '707'
167354 WHEN 7 THEN '707'
167355 WHEN 8 THEN '707'
167356 WHEN 9 THEN '707'
167357
167358 ELSE null
167359 END source_application_id
167360 , 'S' source_type_code
167361 , CASE r
167362 WHEN 1 THEN 'CODE_COMBINATION_ID'
167363 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
167364 WHEN 3 THEN 'CURRENCY_CODE'
167365 WHEN 4 THEN 'ENTERED_AMOUNT'
167366 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
167367 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
167368 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
167369 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
167370 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
167371
167372 ELSE null
167373 END source_code
167374 , CASE r
167375 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
167376 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
167377 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
167378 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
167379 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
167380 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
167381 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
167382 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
167383 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
167384
167385 ELSE null
167386 END source_value
167387 , null source_meaning
167388 FROM xla_events_gt xet
167389 , CST_XLA_INV_LINES_V l2
167390 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
167391 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
167392 AND xet.event_class_code = C_EVENT_CLASS_CODE
167393 AND l2.event_id = xet.event_id
167394
167395 )
167396 ;
167397 --
167398 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167399
167400 trace
167401 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
167402 ,p_level => C_LEVEL_STATEMENT
167403 ,p_module => l_log_module);
167404
167405 END IF;
167406
167407
167408 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167409 trace
167410 (p_msg => 'END of insert_sources_277'
167411 ,p_level => C_LEVEL_PROCEDURE
167412 ,p_module => l_log_module);
167413 END IF;
167414 EXCEPTION
167415 WHEN xla_exceptions_pkg.application_exception THEN
167416 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
167417 trace
167418 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
167419 ,p_level => C_LEVEL_EXCEPTION
167420 ,p_module => l_log_module);
167421 END IF;
167422 RAISE;
167423 WHEN OTHERS THEN
167424 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
167425 trace
167426 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
167427 ,p_level => C_LEVEL_EXCEPTION
167428 ,p_module => l_log_module);
167429 END IF;
167430 xla_exceptions_pkg.raise_message
167431 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_277');
167432 END insert_sources_277;
167433 --
167434
167435 ---------------------------------------
167436 --
167437 -- PRIVATE FUNCTION
167438 -- EventClass_277
167439 --
167440 ----------------------------------------
167441 --
167442 FUNCTION EventClass_277
167443 (p_application_id IN NUMBER
167444 ,p_base_ledger_id IN NUMBER
167445 ,p_target_ledger_id IN NUMBER
167446 ,p_language IN VARCHAR2
167447 ,p_currency_code IN VARCHAR2
167448 ,p_sla_ledger_id IN NUMBER
167449 ,p_pad_start_date IN DATE
167450 ,p_pad_end_date IN DATE
167451 ,p_primary_ledger_id IN NUMBER)
167452 RETURN BOOLEAN IS
167453 --
167454 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'MISC_ISSUE_RCPT_ALL';
167455 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'MISC_ISSUE_RCPT';
167456
167457 l_calculate_acctd_flag VARCHAR2(1) :='N';
167458 l_calculate_g_l_flag VARCHAR2(1) :='N';
167459 --
167460 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167461 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167462 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167463 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167464 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167465 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167466 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167467 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167468 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167469 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167470 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167471 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167472 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167473 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
167474 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167475 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167476 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167477 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
167478 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167479 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167480 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167481 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
167482 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
167483 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
167484 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
167485 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
167486
167487 l_event_id NUMBER;
167488 l_previous_event_id NUMBER;
167489 l_first_event_id NUMBER;
167490 l_last_event_id NUMBER;
167491
167492 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
167493 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
167494 --
167495 --
167496 l_result BOOLEAN := TRUE;
167497 l_rows NUMBER := 1000;
167498 l_event_type_name VARCHAR2(80) := 'All';
167499 l_event_class_name VARCHAR2(80) := 'Miscellaneous';
167500 l_description VARCHAR2(4000);
167501 l_transaction_reversal NUMBER;
167502 l_ae_header_id NUMBER;
167503 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
167504 l_log_module VARCHAR2(240);
167505 --
167506 l_acct_reversal_source VARCHAR2(30);
167507 l_trx_reversal_source VARCHAR2(30);
167508
167509 l_continue_with_lines BOOLEAN := TRUE;
167510 --
167511 l_acc_rev_gl_date_source DATE; -- 4262811
167512 --
167513 type t_array_event_id is table of number index by binary_integer;
167514
167515 l_rec_array_event t_rec_array_event;
167516 l_null_rec_array_event t_rec_array_event;
167517 l_array_ae_header_id xla_number_array_type;
167518 l_actual_flag VARCHAR2(1) := NULL;
167519 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
167520 l_balance_type_code VARCHAR2(1) :=NULL;
167521 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
167522
167523 --
167524 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
167525 --
167526
167527 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
167528 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
167529
167530 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
167531 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
167532 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
167533 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
167534 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
167535 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
167536 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
167537 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
167538 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
167539
167540 l_array_source_12 t_array_source_12;
167541 l_array_source_12_meaning t_array_lookup_meaning;
167542 l_array_source_38 t_array_source_38;
167543 l_array_source_38_meaning t_array_lookup_meaning;
167544
167545 l_array_source_4 t_array_source_4;
167546 l_array_source_11 t_array_source_11;
167547 l_array_source_15 t_array_source_15;
167548 l_array_source_18 t_array_source_18;
167549 l_array_source_19 t_array_source_19;
167550 l_array_source_20 t_array_source_20;
167551 l_array_source_21 t_array_source_21;
167552 l_array_source_22 t_array_source_22;
167553 l_array_source_24 t_array_source_24;
167554
167555 --
167556 CURSOR header_cur
167557 IS
167558 SELECT /*+ leading(xet) cardinality(xet,1) */
167559 -- Event Class Code: MISC_ISSUE_RCPT
167560 xet.entity_id
167561 ,xet.legal_entity_id
167562 ,xet.entity_code
167563 ,xet.transaction_number
167564 ,xet.event_id
167565 ,xet.event_class_code
167566 ,xet.event_type_code
167567 ,xet.event_number
167568 ,xet.event_date
167569 ,xet.transaction_date
167570 ,xet.reference_num_1
167571 ,xet.reference_num_2
167572 ,xet.reference_num_3
167573 ,xet.reference_num_4
167574 ,xet.reference_char_1
167575 ,xet.reference_char_2
167576 ,xet.reference_char_3
167577 ,xet.reference_char_4
167578 ,xet.reference_date_1
167579 ,xet.reference_date_2
167580 ,xet.reference_date_3
167581 ,xet.reference_date_4
167582 ,xet.event_created_by
167583 ,xet.budgetary_control_flag
167584 , h1.DISTRIBUTION_TYPE source_12
167585 , fvl12.meaning source_12_meaning
167586 , h1.TRANSFER_TO_GL_INDICATOR source_38
167587 , fvl38.meaning source_38_meaning
167588 FROM xla_events_gt xet
167589 , CST_XLA_INV_HEADERS_V h1
167590 , fnd_lookup_values fvl12
167591 , fnd_lookup_values fvl38
167592 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
167593 and xet.event_class_code = C_EVENT_CLASS_CODE
167594 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
167595 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
167596 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
167597 AND fvl12.view_application_id(+) = 700
167598 AND fvl12.language(+) = USERENV('LANG')
167599 AND fvl38.lookup_type(+) = 'YES_NO'
167600 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
167601 AND fvl38.view_application_id(+) = 0
167602 AND fvl38.language(+) = USERENV('LANG')
167603
167604 ORDER BY event_id
167605 ;
167606
167607
167608 --
167609 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
167610 IS
167611 SELECT /*+ leading(xet) cardinality(xet,1) */
167612 -- Event Class Code: MISC_ISSUE_RCPT
167613 xet.entity_id
167614 ,xet.legal_entity_id
167615 ,xet.entity_code
167616 ,xet.transaction_number
167617 ,xet.event_id
167618 ,xet.event_class_code
167619 ,xet.event_type_code
167620 ,xet.event_number
167621 ,xet.event_date
167622 ,xet.transaction_date
167623 ,xet.reference_num_1
167624 ,xet.reference_num_2
167625 ,xet.reference_num_3
167626 ,xet.reference_num_4
167627 ,xet.reference_char_1
167628 ,xet.reference_char_2
167629 ,xet.reference_char_3
167630 ,xet.reference_char_4
167631 ,xet.reference_date_1
167632 ,xet.reference_date_2
167633 ,xet.reference_date_3
167634 ,xet.reference_date_4
167635 ,xet.event_created_by
167636 ,xet.budgetary_control_flag
167637 , l2.LINE_NUMBER
167638 , l2.CODE_COMBINATION_ID source_4
167639 , l2.DISTRIBUTION_IDENTIFIER source_11
167640 , l2.CURRENCY_CODE source_15
167641 , l2.ENTERED_AMOUNT source_18
167642 , l2.CURRENCY_CONVERSION_DATE source_19
167643 , l2.CURRENCY_CONVERSION_RATE source_20
167644 , l2.CURRENCY_CONVERSION_TYPE source_21
167645 , l2.ACCOUNTED_AMOUNT source_22
167646 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
167647 FROM xla_events_gt xet
167648 , CST_XLA_INV_LINES_V l2
167649 WHERE xet.event_id between x_first_event_id and x_last_event_id
167650 and xet.event_date between p_pad_start_date and p_pad_end_date
167651 and xet.event_class_code = C_EVENT_CLASS_CODE
167652 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
167653 ;
167654
167655 --
167656 BEGIN
167657 IF g_log_enabled THEN
167658 l_log_module := C_DEFAULT_MODULE||'.EventClass_277';
167659 END IF;
167660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
167661 trace
167662 (p_msg => 'BEGIN of EventClass_277'
167663 ,p_level => C_LEVEL_PROCEDURE
167664 ,p_module => l_log_module);
167665 END IF;
167666
167667 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167668 trace
167669 (p_msg => 'p_application_id = '||p_application_id||
167670 ' - p_base_ledger_id = '||p_base_ledger_id||
167671 ' - p_target_ledger_id = '||p_target_ledger_id||
167672 ' - p_language = '||p_language||
167673 ' - p_currency_code = '||p_currency_code||
167674 ' - p_sla_ledger_id = '||p_sla_ledger_id
167675 ,p_level => C_LEVEL_STATEMENT
167676 ,p_module => l_log_module);
167677 END IF;
167678 --
167679 -- initialze arrays
167680 --
167681 g_array_event.DELETE;
167682 l_rec_array_event := l_null_rec_array_event;
167683 --
167684 --------------------------------------
167685 -- 4262811 Initialze MPA Line Number
167686 --------------------------------------
167687 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
167688
167689 --
167690
167691 --
167692 OPEN header_cur;
167693 --
167694 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167695 trace
167696 (p_msg => 'SQL - FETCH header_cur'
167697 ,p_level => C_LEVEL_STATEMENT
167698 ,p_module => l_log_module);
167699 END IF;
167700 --
167701 LOOP
167702 FETCH header_cur BULK COLLECT INTO
167703 l_array_entity_id
167704 , l_array_legal_entity_id
167705 , l_array_entity_code
167706 , l_array_transaction_num
167707 , l_array_event_id
167708 , l_array_class_code
167709 , l_array_event_type
167710 , l_array_event_number
167711 , l_array_event_date
167712 , l_array_transaction_date
167713 , l_array_reference_num_1
167714 , l_array_reference_num_2
167715 , l_array_reference_num_3
167716 , l_array_reference_num_4
167717 , l_array_reference_char_1
167718 , l_array_reference_char_2
167719 , l_array_reference_char_3
167720 , l_array_reference_char_4
167721 , l_array_reference_date_1
167722 , l_array_reference_date_2
167723 , l_array_reference_date_3
167724 , l_array_reference_date_4
167725 , l_array_event_created_by
167726 , l_array_budgetary_control_flag
167727 , l_array_source_12
167728 , l_array_source_12_meaning
167729 , l_array_source_38
167730 , l_array_source_38_meaning
167731 LIMIT l_rows;
167732 --
167733 IF (C_LEVEL_EVENT >= g_log_level) THEN
167734 trace
167735 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
167736 ,p_level => C_LEVEL_EVENT
167737 ,p_module => l_log_module);
167738 END IF;
167739 --
167740 EXIT WHEN l_array_entity_id.COUNT = 0;
167741
167742 -- initialize arrays
167743 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
167744 XLA_AE_LINES_PKG.g_rec_lines := NULL;
167745
167746 --
167747 -- Bug 4458708
167748 --
167749 XLA_AE_LINES_PKG.g_LineNumber := 0;
167750
167751
167752 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
167753 g_last_hdr_idx := l_array_event_id.LAST;
167754 --
167755 -- loop for the headers. Each iteration is for each header extract row
167756 -- fetched in header cursor
167757 --
167758 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
167759
167760 --
167761 -- set event info as cache for other routines to refer event attributes
167762 --
167763 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
167764 (p_application_id => p_application_id
167765 ,p_primary_ledger_id => p_primary_ledger_id
167766 ,p_base_ledger_id => p_base_ledger_id
167767 ,p_target_ledger_id => p_target_ledger_id
167768 ,p_entity_id => l_array_entity_id(hdr_idx)
167769 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
167770 ,p_entity_code => l_array_entity_code(hdr_idx)
167771 ,p_transaction_num => l_array_transaction_num(hdr_idx)
167772 ,p_event_id => l_array_event_id(hdr_idx)
167773 ,p_event_class_code => l_array_class_code(hdr_idx)
167774 ,p_event_type_code => l_array_event_type(hdr_idx)
167775 ,p_event_number => l_array_event_number(hdr_idx)
167776 ,p_event_date => l_array_event_date(hdr_idx)
167777 ,p_transaction_date => l_array_transaction_date(hdr_idx)
167778 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
167779 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
167780 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
167781 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
167782 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
167783 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
167784 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
167785 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
167786 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
167787 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
167788 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
167789 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
167790 ,p_event_created_by => l_array_event_created_by(hdr_idx)
167791 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
167792
167793 --
167794 -- set the status of entry to C_VALID (0)
167795 --
167796 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
167797
167798 --
167799 -- initialize a row for ae header
167800 --
167801 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
167802
167803 l_event_id := l_array_event_id(hdr_idx);
167804
167805 --
167806 -- storing the hdr_idx for event. May be used by line cursor.
167807 --
167808 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
167809
167810 --
167811 -- store sources from header extract. This can be improved to
167812 -- store only those sources from header extract that may be used in lines
167813 --
167814
167815 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
167816 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
167817 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
167818 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
167819
167820 --
167821 -- initilaize the status of ae headers for diffrent balance types
167822 -- the status is initialised to C_NOT_CREATED (2)
167823 --
167824 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167825 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167826 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
167827
167828 --
167829 -- call api to validate and store accounting attributes for header
167830 --
167831
167832 ------------------------------------------------------------
167833 -- Accrual Reversal : to get date for Standard Source (NONE)
167834 ------------------------------------------------------------
167835 l_acc_rev_gl_date_source := NULL;
167836
167837 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
167838 l_rec_acct_attrs.array_date_value(1) :=
167839 xla_ae_sources_pkg.GetSystemSourceDate(
167840 p_source_code => 'XLA_REFERENCE_DATE_1'
167841 , p_source_type_code => 'Y'
167842 , p_source_application_id => 602
167843 );
167844 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
167845 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
167846
167847
167848 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
167849
167850 XLA_AE_HEADER_PKG.SetJeCategoryName;
167851
167852 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
167853 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
167854 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
167855 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
167856 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
167857
167858
167859 -- No header level analytical criteria
167860
167861 --
167862 --accounting attribute enhancement, bug 3612931
167863 --
167864 l_trx_reversal_source := SUBSTR(NULL, 1,30);
167865
167866 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
167867 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
167868
167869 xla_accounting_err_pkg.build_message
167870 (p_appli_s_name => 'XLA'
167871 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
167872 ,p_token_1 => 'ACCT_ATTR_NAME'
167873 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
167874 ,p_token_2 => 'PRODUCT_NAME'
167875 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
167876 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
167877 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
167878 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
167879
167880 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
167881 --
167882 -- following sets the accounting attributes needed to reverse
167883 -- accounting for a distributeion
167884 --
167885 xla_ae_lines_pkg.SetTrxReversalAttrs
167886 (p_event_id => l_event_id
167887 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
167888 ,p_trx_reversal_source => l_trx_reversal_source);
167889
167890 END IF;
167891
167892
167893 ----------------------------------------------------------------
167894 -- 4262811 - update the header statuses to invalid in need be
167895 ----------------------------------------------------------------
167896 --
167897 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
167898
167899
167900 -----------------------------------------------
167901 -- No accrual reversal for the event class/type
167902 -----------------------------------------------
167903 ----------------------------------------------------------------
167904
167905 --
167906 -- this ends the header loop iteration for one bulk fetch
167907 --
167908 END LOOP;
167909
167910 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
167911 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
167912
167913 --
167914 -- insert dummy rows into lines gt table that were created due to
167915 -- transaction reversals
167916 --
167917 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
167918 l_result := XLA_AE_LINES_PKG.InsertLines;
167919 END IF;
167920
167921 --
167922 -- reset the temp_line_num for each set of events fetched from header
167923 -- cursor rather than doing it for each new event in line cursor
167924 -- Bug 3939231
167925 --
167926 xla_ae_lines_pkg.g_temp_line_num := 0;
167927
167928
167929
167930 --
167931 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
167932 --
167933 --
167934 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
167935
167936 trace
167937 (p_msg => 'SQL - FETCH line_cur'
167938 ,p_level => C_LEVEL_STATEMENT
167939 ,p_module => l_log_module);
167940
167941 END IF;
167942 --
167943 --
167944 LOOP
167945 --
167946 FETCH line_cur BULK COLLECT INTO
167947 l_array_entity_id
167948 , l_array_legal_entity_id
167949 , l_array_entity_code
167950 , l_array_transaction_num
167951 , l_array_event_id
167952 , l_array_class_code
167953 , l_array_event_type
167954 , l_array_event_number
167955 , l_array_event_date
167956 , l_array_transaction_date
167957 , l_array_reference_num_1
167958 , l_array_reference_num_2
167959 , l_array_reference_num_3
167960 , l_array_reference_num_4
167961 , l_array_reference_char_1
167962 , l_array_reference_char_2
167963 , l_array_reference_char_3
167964 , l_array_reference_char_4
167965 , l_array_reference_date_1
167966 , l_array_reference_date_2
167967 , l_array_reference_date_3
167968 , l_array_reference_date_4
167969 , l_array_event_created_by
167970 , l_array_budgetary_control_flag
167971 , l_array_extract_line_num
167972 , l_array_source_4
167973 , l_array_source_11
167974 , l_array_source_15
167975 , l_array_source_18
167976 , l_array_source_19
167977 , l_array_source_20
167978 , l_array_source_21
167979 , l_array_source_22
167980 , l_array_source_24
167981 LIMIT l_rows;
167982
167983 --
167984 IF (C_LEVEL_EVENT >= g_log_level) THEN
167985 trace
167986 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
167987 ,p_level => C_LEVEL_EVENT
167988 ,p_module => l_log_module);
167989 END IF;
167990 --
167991 EXIT WHEN l_array_entity_id.count = 0;
167992
167993 XLA_AE_LINES_PKG.g_rec_lines := null;
167994
167995 --
167996 -- Bug 4458708
167997 --
167998 XLA_AE_LINES_PKG.g_LineNumber := 0;
167999 --
168000 --
168001
168002 FOR Idx IN 1..l_array_event_id.count LOOP
168003 --
168004 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
168005 --
168006 l_event_id := l_array_event_id(idx); -- 5648433
168007
168008 --
168009 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168010 --
168011
168012 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
168013 (g_array_event(l_event_id).array_value_num('header_index'))
168014 ,'N'
168015 ) <> 'Y'
168016 THEN
168017 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168018 trace
168019 (p_msg => 'Trancaction revesal option is not Y '
168020 ,p_level => C_LEVEL_STATEMENT
168021 ,p_module => l_log_module);
168022 END IF;
168023
168024 --
168025 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
168026 --
168027 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
168028 --
168029 -- set event info as cache for other routines to refer event attributes
168030 --
168031
168032 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
168033 l_previous_event_id := l_event_id;
168034
168035 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
168036 (p_application_id => p_application_id
168037 ,p_primary_ledger_id => p_primary_ledger_id
168038 ,p_base_ledger_id => p_base_ledger_id
168039 ,p_target_ledger_id => p_target_ledger_id
168040 ,p_entity_id => l_array_entity_id(Idx)
168041 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
168042 ,p_entity_code => l_array_entity_code(Idx)
168043 ,p_transaction_num => l_array_transaction_num(Idx)
168044 ,p_event_id => l_array_event_id(Idx)
168045 ,p_event_class_code => l_array_class_code(Idx)
168046 ,p_event_type_code => l_array_event_type(Idx)
168047 ,p_event_number => l_array_event_number(Idx)
168048 ,p_event_date => l_array_event_date(Idx)
168049 ,p_transaction_date => l_array_transaction_date(Idx)
168050 ,p_reference_num_1 => l_array_reference_num_1(Idx)
168051 ,p_reference_num_2 => l_array_reference_num_2(Idx)
168052 ,p_reference_num_3 => l_array_reference_num_3(Idx)
168053 ,p_reference_num_4 => l_array_reference_num_4(Idx)
168054 ,p_reference_char_1 => l_array_reference_char_1(Idx)
168055 ,p_reference_char_2 => l_array_reference_char_2(Idx)
168056 ,p_reference_char_3 => l_array_reference_char_3(Idx)
168057 ,p_reference_char_4 => l_array_reference_char_4(Idx)
168058 ,p_reference_date_1 => l_array_reference_date_1(Idx)
168059 ,p_reference_date_2 => l_array_reference_date_2(Idx)
168060 ,p_reference_date_3 => l_array_reference_date_3(Idx)
168061 ,p_reference_date_4 => l_array_reference_date_4(Idx)
168062 ,p_event_created_by => l_array_event_created_by(Idx)
168063 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
168064 --
168065 END IF;
168066
168067
168068
168069 --
168070 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
168071
168072 l_acct_reversal_source := SUBSTR(NULL, 1,30);
168073
168074 IF l_continue_with_lines THEN
168075 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
168076 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
168077
168078 xla_accounting_err_pkg.build_message
168079 (p_appli_s_name => 'XLA'
168080 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
168081 ,p_token_1 => 'LINE_NUMBER'
168082 ,p_value_1 => l_array_extract_line_num(Idx)
168083 ,p_token_2 => 'PRODUCT_NAME'
168084 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
168085 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
168086 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
168087 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
168088
168089 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
168090 --
168091 -- following sets the accounting attributes needed to reverse
168092 -- accounting for a distributeion
168093 --
168094
168095 --
168096 -- 5217187
168097 --
168098 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
168099 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
168100 g_array_event(l_event_id).array_value_num('header_index'));
168101 --
168102 --
168103
168104 -- No reversal code generated
168105
168106 xla_ae_lines_pkg.SetAcctReversalAttrs
168107 (p_event_id => l_event_id
168108 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
168109 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168110 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
168111 END IF;
168112
168113 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
168114 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
168115
168116 --
168117 AcctLineType_35 (
168118 p_application_id => p_application_id
168119 ,p_event_id => l_event_id
168120 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168121 ,p_calculate_g_l_flag => l_calculate_g_l_flag
168122 ,p_actual_flag => l_actual_flag
168123 ,p_balance_type_code => l_balance_type_code
168124 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168125
168126 , p_source_4 => l_array_source_4(Idx)
168127 , p_source_11 => l_array_source_11(Idx)
168128 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168129 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168130 , p_source_15 => l_array_source_15(Idx)
168131 , p_source_18 => l_array_source_18(Idx)
168132 , p_source_19 => l_array_source_19(Idx)
168133 , p_source_20 => l_array_source_20(Idx)
168134 , p_source_21 => l_array_source_21(Idx)
168135 , p_source_22 => l_array_source_22(Idx)
168136 , p_source_24 => l_array_source_24(Idx)
168137 );
168138 If(l_balance_type_code = 'A') THEN
168139 l_actual_gain_loss_ref := l_gain_or_loss_ref;
168140 END IF;
168141
168142 --
168143
168144
168145 --
168146 AcctLineType_143 (
168147 p_application_id => p_application_id
168148 ,p_event_id => l_event_id
168149 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168150 ,p_calculate_g_l_flag => l_calculate_g_l_flag
168151 ,p_actual_flag => l_actual_flag
168152 ,p_balance_type_code => l_balance_type_code
168153 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168154
168155 , p_source_4 => l_array_source_4(Idx)
168156 , p_source_11 => l_array_source_11(Idx)
168157 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168158 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168159 , p_source_15 => l_array_source_15(Idx)
168160 , p_source_18 => l_array_source_18(Idx)
168161 , p_source_19 => l_array_source_19(Idx)
168162 , p_source_20 => l_array_source_20(Idx)
168163 , p_source_21 => l_array_source_21(Idx)
168164 , p_source_22 => l_array_source_22(Idx)
168165 , p_source_24 => l_array_source_24(Idx)
168166 );
168167 If(l_balance_type_code = 'A') THEN
168168 l_actual_gain_loss_ref := l_gain_or_loss_ref;
168169 END IF;
168170
168171 --
168172
168173
168174 --
168175 AcctLineType_200 (
168176 p_application_id => p_application_id
168177 ,p_event_id => l_event_id
168178 ,p_calculate_acctd_flag => l_calculate_acctd_flag
168179 ,p_calculate_g_l_flag => l_calculate_g_l_flag
168180 ,p_actual_flag => l_actual_flag
168181 ,p_balance_type_code => l_balance_type_code
168182 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
168183
168184 , p_source_4 => l_array_source_4(Idx)
168185 , p_source_11 => l_array_source_11(Idx)
168186 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
168187 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
168188 , p_source_15 => l_array_source_15(Idx)
168189 , p_source_18 => l_array_source_18(Idx)
168190 , p_source_19 => l_array_source_19(Idx)
168191 , p_source_20 => l_array_source_20(Idx)
168192 , p_source_21 => l_array_source_21(Idx)
168193 , p_source_22 => l_array_source_22(Idx)
168194 , p_source_24 => l_array_source_24(Idx)
168195 );
168196 If(l_balance_type_code = 'A') THEN
168197 l_actual_gain_loss_ref := l_gain_or_loss_ref;
168198 END IF;
168199
168200 --
168201
168202 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
168203 -- or secondary ledger that has different currency with primary
168204 -- or alc that is calculated by sla
168205 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
168206 (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'))
168207
168208 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
168209 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
168210 AND (l_actual_flag = 'A')) THEN
168211 XLA_AE_LINES_PKG.CreateGainOrLossLines(
168212 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
168213 ,p_application_id => p_application_id
168214 ,p_amb_context_code => 'DEFAULT'
168215 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
168216 ,p_event_class_code => C_EVENT_CLASS_CODE
168217 ,p_event_type_code => C_EVENT_TYPE_CODE
168218
168219 ,p_gain_ccid => -1
168220 ,p_loss_ccid => -1
168221
168222 ,p_actual_flag => l_actual_flag
168223 ,p_enc_flag => null
168224 ,p_actual_g_l_ref => l_actual_gain_loss_ref
168225 ,p_enc_g_l_ref => null
168226 );
168227 END IF;
168228 END IF;
168229 END IF;
168230
168231 ELSE
168232 --
168233 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
168234 --
168235 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168236 trace
168237 (p_msg => 'Trancaction revesal option is Y'
168238 ,p_level => C_LEVEL_STATEMENT
168239 ,p_module => l_log_module);
168240 END IF;
168241 END IF;
168242
168243 END LOOP;
168244 l_result := XLA_AE_LINES_PKG.InsertLines ;
168245 end loop;
168246 close line_cur;
168247
168248
168249 --
168250 -- insert headers into xla_ae_headers_gt table
168251 --
168252 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
168253
168254 -- insert into errors table here.
168255
168256 END LOOP;
168257
168258 --
168259 -- 4865292
168260 --
168261 -- Compare g_hdr_extract_count with event count in
168262 -- CreateHeadersAndLines.
168263 --
168264 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
168265
168266 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168267 trace (p_msg => '# rows extracted from header extract objects '
168268 || ' (running total): '
168269 || g_hdr_extract_count
168270 ,p_level => C_LEVEL_STATEMENT
168271 ,p_module => l_log_module);
168272 END IF;
168273
168274 CLOSE header_cur;
168275 --
168276
168277 --
168278 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168279 trace
168280 (p_msg => 'END of EventClass_277'
168281 ,p_level => C_LEVEL_PROCEDURE
168282 ,p_module => l_log_module);
168283 END IF;
168284 --
168285 RETURN l_result;
168286 EXCEPTION
168287 WHEN xla_exceptions_pkg.application_exception THEN
168288
168289 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168290
168291
168292 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
168293
168294 RAISE;
168295
168296 WHEN NO_DATA_FOUND THEN
168297
168298 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
168299 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
168300
168301 FOR header_record IN header_cur
168302 LOOP
168303 l_array_header_events(header_record.event_id) := header_record.event_id;
168304 END LOOP;
168305
168306 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
168307 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
168308
168309 fnd_file.put_line(fnd_file.LOG, ' ');
168310 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168311 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
168312 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
168313
168314 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
168315 LOOP
168316 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
168317 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
168318 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
168319 END IF;
168320 END LOOP;
168321
168322 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
168323 fnd_file.put_line(fnd_file.LOG, ' ');
168324
168325
168326 xla_exceptions_pkg.raise_message
168327 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_277');
168328
168329
168330 WHEN OTHERS THEN
168331 xla_exceptions_pkg.raise_message
168332 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_277');
168333 END EventClass_277;
168334 --
168335
168336 ---------------------------------------
168337 --
168338 -- PRIVATE PROCEDURE
168339 -- insert_sources_278
168340 --
168341 ----------------------------------------
168342 --
168343 PROCEDURE insert_sources_278(
168344 p_target_ledger_id IN NUMBER
168345 , p_language IN VARCHAR2
168346 , p_sla_ledger_id IN NUMBER
168347 , p_pad_start_date IN DATE
168348 , p_pad_end_date IN DATE
168349 )
168350 IS
168351
168352 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'MTL_COST_UPD_ALL';
168353 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'MTL_COST_UPD';
168354 p_apps_owner VARCHAR2(30);
168355 l_log_module VARCHAR2(240);
168356 BEGIN
168357 IF g_log_enabled THEN
168358 l_log_module := C_DEFAULT_MODULE||'.insert_sources_278';
168359 END IF;
168360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168361
168362 trace
168363 (p_msg => 'BEGIN of insert_sources_278'
168364 ,p_level => C_LEVEL_PROCEDURE
168365 ,p_module => l_log_module);
168366
168367 END IF;
168368
168369 -- select APPS owner
168370 SELECT oracle_username
168371 INTO p_apps_owner
168372 FROM fnd_oracle_userid
168373 WHERE read_only_flag = 'U'
168374 ;
168375
168376 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168377 trace
168378 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
168379 ' - p_language = '||p_language||
168380 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
168381 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
168382 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
168383 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
168384 ,p_level => C_LEVEL_STATEMENT
168385 ,p_module => l_log_module);
168386 END IF;
168387
168388
168389 --
168390 INSERT INTO xla_diag_sources --hdr2
168391 (
168392 event_id
168393 , ledger_id
168394 , sla_ledger_id
168395 , description_language
168396 , object_name
168397 , object_type_code
168398 , line_number
168399 , source_application_id
168400 , source_type_code
168401 , source_code
168402 , source_value
168403 , source_meaning
168404 , created_by
168405 , creation_date
168406 , last_update_date
168407 , last_updated_by
168408 , last_update_login
168409 , program_update_date
168410 , program_application_id
168411 , program_id
168412 , request_id
168413 )
168414 SELECT
168415 event_id
168416 , p_target_ledger_id
168417 , p_sla_ledger_id
168418 , p_language
168419 , object_name
168420 , object_type_code
168421 , line_number
168422 , source_application_id
168423 , source_type_code
168424 , source_code
168425 , SUBSTR(source_value ,1,1996)
168426 , SUBSTR(source_meaning ,1,200)
168427 , xla_environment_pkg.g_Usr_Id
168428 , TRUNC(SYSDATE)
168429 , TRUNC(SYSDATE)
168430 , xla_environment_pkg.g_Usr_Id
168431 , xla_environment_pkg.g_Login_Id
168432 , TRUNC(SYSDATE)
168433 , xla_environment_pkg.g_Prog_Appl_Id
168434 , xla_environment_pkg.g_Prog_Id
168435 , xla_environment_pkg.g_Req_Id
168436 FROM (
168437 SELECT xet.event_id event_id
168438 , 0 line_number
168439 , CASE r
168440 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
168441 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
168442
168443 ELSE null
168444 END object_name
168445 , CASE r
168446 WHEN 1 THEN 'HEADER'
168447 WHEN 2 THEN 'HEADER'
168448
168449 ELSE null
168450 END object_type_code
168451 , CASE r
168452 WHEN 1 THEN '707'
168453 WHEN 2 THEN '707'
168454
168455 ELSE null
168456 END source_application_id
168457 , 'S' source_type_code
168458 , CASE r
168459 WHEN 1 THEN 'DISTRIBUTION_TYPE'
168460 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
168461
168462 ELSE null
168463 END source_code
168464 , CASE r
168465 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
168466 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
168467
168468 ELSE null
168469 END source_value
168470 , CASE r
168471 WHEN 1 THEN fvl12.meaning
168472 WHEN 2 THEN fvl38.meaning
168473
168474 ELSE null
168475 END source_meaning
168476 FROM xla_events_gt xet
168477 , CST_XLA_INV_HEADERS_V h1
168478 , fnd_lookup_values fvl12
168479 , fnd_lookup_values fvl38
168480 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
168481 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
168482 AND xet.event_class_code = C_EVENT_CLASS_CODE
168483 AND h1.event_id = xet.event_id
168484 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
168485 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
168486 AND fvl12.view_application_id(+) = 700
168487 AND fvl12.language(+) = USERENV('LANG')
168488 AND fvl38.lookup_type(+) = 'YES_NO'
168489 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
168490 AND fvl38.view_application_id(+) = 0
168491 AND fvl38.language(+) = USERENV('LANG')
168492
168493 )
168494 ;
168495 --
168496 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168497
168498 trace
168499 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
168500 ,p_level => C_LEVEL_STATEMENT
168501 ,p_module => l_log_module);
168502
168503 END IF;
168504 --
168505
168506
168507
168508 --
168509 INSERT INTO xla_diag_sources --line2
168510 (
168511 event_id
168512 , ledger_id
168513 , sla_ledger_id
168514 , description_language
168515 , object_name
168516 , object_type_code
168517 , line_number
168518 , source_application_id
168519 , source_type_code
168520 , source_code
168521 , source_value
168522 , source_meaning
168523 , created_by
168524 , creation_date
168525 , last_update_date
168526 , last_updated_by
168527 , last_update_login
168528 , program_update_date
168529 , program_application_id
168530 , program_id
168531 , request_id
168532 )
168533 SELECT event_id
168534 , p_target_ledger_id
168535 , p_sla_ledger_id
168536 , p_language
168537 , object_name
168538 , object_type_code
168539 , line_number
168540 , source_application_id
168541 , source_type_code
168542 , source_code
168543 , SUBSTR(source_value,1,1996)
168544 , SUBSTR(source_meaning ,1,200)
168545 , xla_environment_pkg.g_Usr_Id
168546 , TRUNC(SYSDATE)
168547 , TRUNC(SYSDATE)
168548 , xla_environment_pkg.g_Usr_Id
168549 , xla_environment_pkg.g_Login_Id
168550 , TRUNC(SYSDATE)
168551 , xla_environment_pkg.g_Prog_Appl_Id
168552 , xla_environment_pkg.g_Prog_Id
168553 , xla_environment_pkg.g_Req_Id
168554 FROM (
168555 SELECT xet.event_id event_id
168556 , l2.line_number line_number
168557 , CASE r
168558 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
168559 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
168560 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
168561 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
168562 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
168563 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
168564 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
168565 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
168566 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
168567
168568 ELSE null
168569 END object_name
168570 , CASE r
168571 WHEN 1 THEN 'LINE'
168572 WHEN 2 THEN 'LINE'
168573 WHEN 3 THEN 'LINE'
168574 WHEN 4 THEN 'LINE'
168575 WHEN 5 THEN 'LINE'
168576 WHEN 6 THEN 'LINE'
168577 WHEN 7 THEN 'LINE'
168578 WHEN 8 THEN 'LINE'
168579 WHEN 9 THEN 'LINE'
168580
168581 ELSE null
168582 END object_type_code
168583 , CASE r
168584 WHEN 1 THEN '707'
168585 WHEN 2 THEN '707'
168586 WHEN 3 THEN '707'
168587 WHEN 4 THEN '707'
168588 WHEN 5 THEN '707'
168589 WHEN 6 THEN '707'
168590 WHEN 7 THEN '707'
168591 WHEN 8 THEN '707'
168592 WHEN 9 THEN '707'
168593
168594 ELSE null
168595 END source_application_id
168596 , 'S' source_type_code
168597 , CASE r
168598 WHEN 1 THEN 'CODE_COMBINATION_ID'
168599 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
168600 WHEN 3 THEN 'CURRENCY_CODE'
168601 WHEN 4 THEN 'ENTERED_AMOUNT'
168602 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
168603 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
168604 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
168605 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
168606 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
168607
168608 ELSE null
168609 END source_code
168610 , CASE r
168611 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
168612 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
168613 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
168614 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
168615 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
168616 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
168617 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
168618 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
168619 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
168620
168621 ELSE null
168622 END source_value
168623 , null source_meaning
168624 FROM xla_events_gt xet
168625 , CST_XLA_INV_LINES_V l2
168626 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
168627 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
168628 AND xet.event_class_code = C_EVENT_CLASS_CODE
168629 AND l2.event_id = xet.event_id
168630
168631 )
168632 ;
168633 --
168634 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168635
168636 trace
168637 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
168638 ,p_level => C_LEVEL_STATEMENT
168639 ,p_module => l_log_module);
168640
168641 END IF;
168642
168643
168644 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168645 trace
168646 (p_msg => 'END of insert_sources_278'
168647 ,p_level => C_LEVEL_PROCEDURE
168648 ,p_module => l_log_module);
168649 END IF;
168650 EXCEPTION
168651 WHEN xla_exceptions_pkg.application_exception THEN
168652 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168653 trace
168654 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168655 ,p_level => C_LEVEL_EXCEPTION
168656 ,p_module => l_log_module);
168657 END IF;
168658 RAISE;
168659 WHEN OTHERS THEN
168660 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
168661 trace
168662 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
168663 ,p_level => C_LEVEL_EXCEPTION
168664 ,p_module => l_log_module);
168665 END IF;
168666 xla_exceptions_pkg.raise_message
168667 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_278');
168668 END insert_sources_278;
168669 --
168670
168671 ---------------------------------------
168672 --
168673 -- PRIVATE FUNCTION
168674 -- EventClass_278
168675 --
168676 ----------------------------------------
168677 --
168678 FUNCTION EventClass_278
168679 (p_application_id IN NUMBER
168680 ,p_base_ledger_id IN NUMBER
168681 ,p_target_ledger_id IN NUMBER
168682 ,p_language IN VARCHAR2
168683 ,p_currency_code IN VARCHAR2
168684 ,p_sla_ledger_id IN NUMBER
168685 ,p_pad_start_date IN DATE
168686 ,p_pad_end_date IN DATE
168687 ,p_primary_ledger_id IN NUMBER)
168688 RETURN BOOLEAN IS
168689 --
168690 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'MTL_COST_UPD_ALL';
168691 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'MTL_COST_UPD';
168692
168693 l_calculate_acctd_flag VARCHAR2(1) :='N';
168694 l_calculate_g_l_flag VARCHAR2(1) :='N';
168695 --
168696 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168697 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168698 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168699 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168700 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168701 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168702 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168703 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168704 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168705 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168706 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168707 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168708 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168709 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
168710 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168711 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168712 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168713 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
168714 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168715 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168716 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168717 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
168718 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
168719 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
168720 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
168721 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
168722
168723 l_event_id NUMBER;
168724 l_previous_event_id NUMBER;
168725 l_first_event_id NUMBER;
168726 l_last_event_id NUMBER;
168727
168728 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
168729 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
168730 --
168731 --
168732 l_result BOOLEAN := TRUE;
168733 l_rows NUMBER := 1000;
168734 l_event_type_name VARCHAR2(80) := 'All';
168735 l_event_class_name VARCHAR2(80) := 'Material Cost Update';
168736 l_description VARCHAR2(4000);
168737 l_transaction_reversal NUMBER;
168738 l_ae_header_id NUMBER;
168739 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
168740 l_log_module VARCHAR2(240);
168741 --
168742 l_acct_reversal_source VARCHAR2(30);
168743 l_trx_reversal_source VARCHAR2(30);
168744
168745 l_continue_with_lines BOOLEAN := TRUE;
168746 --
168747 l_acc_rev_gl_date_source DATE; -- 4262811
168748 --
168749 type t_array_event_id is table of number index by binary_integer;
168750
168751 l_rec_array_event t_rec_array_event;
168752 l_null_rec_array_event t_rec_array_event;
168753 l_array_ae_header_id xla_number_array_type;
168754 l_actual_flag VARCHAR2(1) := NULL;
168755 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
168756 l_balance_type_code VARCHAR2(1) :=NULL;
168757 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
168758
168759 --
168760 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
168761 --
168762
168763 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
168764 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
168765
168766 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
168767 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
168768 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
168769 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168770 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
168771 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
168772 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
168773 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
168774 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
168775
168776 l_array_source_12 t_array_source_12;
168777 l_array_source_12_meaning t_array_lookup_meaning;
168778 l_array_source_38 t_array_source_38;
168779 l_array_source_38_meaning t_array_lookup_meaning;
168780
168781 l_array_source_4 t_array_source_4;
168782 l_array_source_11 t_array_source_11;
168783 l_array_source_15 t_array_source_15;
168784 l_array_source_18 t_array_source_18;
168785 l_array_source_19 t_array_source_19;
168786 l_array_source_20 t_array_source_20;
168787 l_array_source_21 t_array_source_21;
168788 l_array_source_22 t_array_source_22;
168789 l_array_source_24 t_array_source_24;
168790
168791 --
168792 CURSOR header_cur
168793 IS
168794 SELECT /*+ leading(xet) cardinality(xet,1) */
168795 -- Event Class Code: MTL_COST_UPD
168796 xet.entity_id
168797 ,xet.legal_entity_id
168798 ,xet.entity_code
168799 ,xet.transaction_number
168800 ,xet.event_id
168801 ,xet.event_class_code
168802 ,xet.event_type_code
168803 ,xet.event_number
168804 ,xet.event_date
168805 ,xet.transaction_date
168806 ,xet.reference_num_1
168807 ,xet.reference_num_2
168808 ,xet.reference_num_3
168809 ,xet.reference_num_4
168810 ,xet.reference_char_1
168811 ,xet.reference_char_2
168812 ,xet.reference_char_3
168813 ,xet.reference_char_4
168814 ,xet.reference_date_1
168815 ,xet.reference_date_2
168816 ,xet.reference_date_3
168817 ,xet.reference_date_4
168818 ,xet.event_created_by
168819 ,xet.budgetary_control_flag
168820 , h1.DISTRIBUTION_TYPE source_12
168821 , fvl12.meaning source_12_meaning
168822 , h1.TRANSFER_TO_GL_INDICATOR source_38
168823 , fvl38.meaning source_38_meaning
168824 FROM xla_events_gt xet
168825 , CST_XLA_INV_HEADERS_V h1
168826 , fnd_lookup_values fvl12
168827 , fnd_lookup_values fvl38
168828 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
168829 and xet.event_class_code = C_EVENT_CLASS_CODE
168830 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
168831 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
168832 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
168833 AND fvl12.view_application_id(+) = 700
168834 AND fvl12.language(+) = USERENV('LANG')
168835 AND fvl38.lookup_type(+) = 'YES_NO'
168836 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
168837 AND fvl38.view_application_id(+) = 0
168838 AND fvl38.language(+) = USERENV('LANG')
168839
168840 ORDER BY event_id
168841 ;
168842
168843
168844 --
168845 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
168846 IS
168847 SELECT /*+ leading(xet) cardinality(xet,1) */
168848 -- Event Class Code: MTL_COST_UPD
168849 xet.entity_id
168850 ,xet.legal_entity_id
168851 ,xet.entity_code
168852 ,xet.transaction_number
168853 ,xet.event_id
168854 ,xet.event_class_code
168855 ,xet.event_type_code
168856 ,xet.event_number
168857 ,xet.event_date
168858 ,xet.transaction_date
168859 ,xet.reference_num_1
168860 ,xet.reference_num_2
168861 ,xet.reference_num_3
168862 ,xet.reference_num_4
168863 ,xet.reference_char_1
168864 ,xet.reference_char_2
168865 ,xet.reference_char_3
168866 ,xet.reference_char_4
168867 ,xet.reference_date_1
168868 ,xet.reference_date_2
168869 ,xet.reference_date_3
168870 ,xet.reference_date_4
168871 ,xet.event_created_by
168872 ,xet.budgetary_control_flag
168873 , l2.LINE_NUMBER
168874 , l2.CODE_COMBINATION_ID source_4
168875 , l2.DISTRIBUTION_IDENTIFIER source_11
168876 , l2.CURRENCY_CODE source_15
168877 , l2.ENTERED_AMOUNT source_18
168878 , l2.CURRENCY_CONVERSION_DATE source_19
168879 , l2.CURRENCY_CONVERSION_RATE source_20
168880 , l2.CURRENCY_CONVERSION_TYPE source_21
168881 , l2.ACCOUNTED_AMOUNT source_22
168882 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
168883 FROM xla_events_gt xet
168884 , CST_XLA_INV_LINES_V l2
168885 WHERE xet.event_id between x_first_event_id and x_last_event_id
168886 and xet.event_date between p_pad_start_date and p_pad_end_date
168887 and xet.event_class_code = C_EVENT_CLASS_CODE
168888 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
168889 ;
168890
168891 --
168892 BEGIN
168893 IF g_log_enabled THEN
168894 l_log_module := C_DEFAULT_MODULE||'.EventClass_278';
168895 END IF;
168896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
168897 trace
168898 (p_msg => 'BEGIN of EventClass_278'
168899 ,p_level => C_LEVEL_PROCEDURE
168900 ,p_module => l_log_module);
168901 END IF;
168902
168903 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168904 trace
168905 (p_msg => 'p_application_id = '||p_application_id||
168906 ' - p_base_ledger_id = '||p_base_ledger_id||
168907 ' - p_target_ledger_id = '||p_target_ledger_id||
168908 ' - p_language = '||p_language||
168909 ' - p_currency_code = '||p_currency_code||
168910 ' - p_sla_ledger_id = '||p_sla_ledger_id
168911 ,p_level => C_LEVEL_STATEMENT
168912 ,p_module => l_log_module);
168913 END IF;
168914 --
168915 -- initialze arrays
168916 --
168917 g_array_event.DELETE;
168918 l_rec_array_event := l_null_rec_array_event;
168919 --
168920 --------------------------------------
168921 -- 4262811 Initialze MPA Line Number
168922 --------------------------------------
168923 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
168924
168925 --
168926
168927 --
168928 OPEN header_cur;
168929 --
168930 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
168931 trace
168932 (p_msg => 'SQL - FETCH header_cur'
168933 ,p_level => C_LEVEL_STATEMENT
168934 ,p_module => l_log_module);
168935 END IF;
168936 --
168937 LOOP
168938 FETCH header_cur BULK COLLECT INTO
168939 l_array_entity_id
168940 , l_array_legal_entity_id
168941 , l_array_entity_code
168942 , l_array_transaction_num
168943 , l_array_event_id
168944 , l_array_class_code
168945 , l_array_event_type
168946 , l_array_event_number
168947 , l_array_event_date
168948 , l_array_transaction_date
168949 , l_array_reference_num_1
168950 , l_array_reference_num_2
168951 , l_array_reference_num_3
168952 , l_array_reference_num_4
168953 , l_array_reference_char_1
168954 , l_array_reference_char_2
168955 , l_array_reference_char_3
168956 , l_array_reference_char_4
168957 , l_array_reference_date_1
168958 , l_array_reference_date_2
168959 , l_array_reference_date_3
168960 , l_array_reference_date_4
168961 , l_array_event_created_by
168962 , l_array_budgetary_control_flag
168963 , l_array_source_12
168964 , l_array_source_12_meaning
168965 , l_array_source_38
168966 , l_array_source_38_meaning
168967 LIMIT l_rows;
168968 --
168969 IF (C_LEVEL_EVENT >= g_log_level) THEN
168970 trace
168971 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
168972 ,p_level => C_LEVEL_EVENT
168973 ,p_module => l_log_module);
168974 END IF;
168975 --
168976 EXIT WHEN l_array_entity_id.COUNT = 0;
168977
168978 -- initialize arrays
168979 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
168980 XLA_AE_LINES_PKG.g_rec_lines := NULL;
168981
168982 --
168983 -- Bug 4458708
168984 --
168985 XLA_AE_LINES_PKG.g_LineNumber := 0;
168986
168987
168988 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
168989 g_last_hdr_idx := l_array_event_id.LAST;
168990 --
168991 -- loop for the headers. Each iteration is for each header extract row
168992 -- fetched in header cursor
168993 --
168994 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
168995
168996 --
168997 -- set event info as cache for other routines to refer event attributes
168998 --
168999 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169000 (p_application_id => p_application_id
169001 ,p_primary_ledger_id => p_primary_ledger_id
169002 ,p_base_ledger_id => p_base_ledger_id
169003 ,p_target_ledger_id => p_target_ledger_id
169004 ,p_entity_id => l_array_entity_id(hdr_idx)
169005 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
169006 ,p_entity_code => l_array_entity_code(hdr_idx)
169007 ,p_transaction_num => l_array_transaction_num(hdr_idx)
169008 ,p_event_id => l_array_event_id(hdr_idx)
169009 ,p_event_class_code => l_array_class_code(hdr_idx)
169010 ,p_event_type_code => l_array_event_type(hdr_idx)
169011 ,p_event_number => l_array_event_number(hdr_idx)
169012 ,p_event_date => l_array_event_date(hdr_idx)
169013 ,p_transaction_date => l_array_transaction_date(hdr_idx)
169014 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
169015 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
169016 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
169017 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
169018 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
169019 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
169020 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
169021 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
169022 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
169023 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
169024 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
169025 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
169026 ,p_event_created_by => l_array_event_created_by(hdr_idx)
169027 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
169028
169029 --
169030 -- set the status of entry to C_VALID (0)
169031 --
169032 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169033
169034 --
169035 -- initialize a row for ae header
169036 --
169037 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
169038
169039 l_event_id := l_array_event_id(hdr_idx);
169040
169041 --
169042 -- storing the hdr_idx for event. May be used by line cursor.
169043 --
169044 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
169045
169046 --
169047 -- store sources from header extract. This can be improved to
169048 -- store only those sources from header extract that may be used in lines
169049 --
169050
169051 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
169052 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
169053 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
169054 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
169055
169056 --
169057 -- initilaize the status of ae headers for diffrent balance types
169058 -- the status is initialised to C_NOT_CREATED (2)
169059 --
169060 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169061 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169062 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
169063
169064 --
169065 -- call api to validate and store accounting attributes for header
169066 --
169067
169068 ------------------------------------------------------------
169069 -- Accrual Reversal : to get date for Standard Source (NONE)
169070 ------------------------------------------------------------
169071 l_acc_rev_gl_date_source := NULL;
169072
169073 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
169074 l_rec_acct_attrs.array_date_value(1) :=
169075 xla_ae_sources_pkg.GetSystemSourceDate(
169076 p_source_code => 'XLA_REFERENCE_DATE_1'
169077 , p_source_type_code => 'Y'
169078 , p_source_application_id => 602
169079 );
169080 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
169081 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
169082
169083
169084 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
169085
169086 XLA_AE_HEADER_PKG.SetJeCategoryName;
169087
169088 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
169089 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
169090 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
169091 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
169092 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
169093
169094
169095 -- No header level analytical criteria
169096
169097 --
169098 --accounting attribute enhancement, bug 3612931
169099 --
169100 l_trx_reversal_source := SUBSTR(NULL, 1,30);
169101
169102 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
169103 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
169104
169105 xla_accounting_err_pkg.build_message
169106 (p_appli_s_name => 'XLA'
169107 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
169108 ,p_token_1 => 'ACCT_ATTR_NAME'
169109 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
169110 ,p_token_2 => 'PRODUCT_NAME'
169111 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169112 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169113 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
169114 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169115
169116 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
169117 --
169118 -- following sets the accounting attributes needed to reverse
169119 -- accounting for a distributeion
169120 --
169121 xla_ae_lines_pkg.SetTrxReversalAttrs
169122 (p_event_id => l_event_id
169123 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
169124 ,p_trx_reversal_source => l_trx_reversal_source);
169125
169126 END IF;
169127
169128
169129 ----------------------------------------------------------------
169130 -- 4262811 - update the header statuses to invalid in need be
169131 ----------------------------------------------------------------
169132 --
169133 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
169134
169135
169136 -----------------------------------------------
169137 -- No accrual reversal for the event class/type
169138 -----------------------------------------------
169139 ----------------------------------------------------------------
169140
169141 --
169142 -- this ends the header loop iteration for one bulk fetch
169143 --
169144 END LOOP;
169145
169146 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
169147 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
169148
169149 --
169150 -- insert dummy rows into lines gt table that were created due to
169151 -- transaction reversals
169152 --
169153 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
169154 l_result := XLA_AE_LINES_PKG.InsertLines;
169155 END IF;
169156
169157 --
169158 -- reset the temp_line_num for each set of events fetched from header
169159 -- cursor rather than doing it for each new event in line cursor
169160 -- Bug 3939231
169161 --
169162 xla_ae_lines_pkg.g_temp_line_num := 0;
169163
169164
169165
169166 --
169167 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
169168 --
169169 --
169170 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169171
169172 trace
169173 (p_msg => 'SQL - FETCH line_cur'
169174 ,p_level => C_LEVEL_STATEMENT
169175 ,p_module => l_log_module);
169176
169177 END IF;
169178 --
169179 --
169180 LOOP
169181 --
169182 FETCH line_cur BULK COLLECT INTO
169183 l_array_entity_id
169184 , l_array_legal_entity_id
169185 , l_array_entity_code
169186 , l_array_transaction_num
169187 , l_array_event_id
169188 , l_array_class_code
169189 , l_array_event_type
169190 , l_array_event_number
169191 , l_array_event_date
169192 , l_array_transaction_date
169193 , l_array_reference_num_1
169194 , l_array_reference_num_2
169195 , l_array_reference_num_3
169196 , l_array_reference_num_4
169197 , l_array_reference_char_1
169198 , l_array_reference_char_2
169199 , l_array_reference_char_3
169200 , l_array_reference_char_4
169201 , l_array_reference_date_1
169202 , l_array_reference_date_2
169203 , l_array_reference_date_3
169204 , l_array_reference_date_4
169205 , l_array_event_created_by
169206 , l_array_budgetary_control_flag
169207 , l_array_extract_line_num
169208 , l_array_source_4
169209 , l_array_source_11
169210 , l_array_source_15
169211 , l_array_source_18
169212 , l_array_source_19
169213 , l_array_source_20
169214 , l_array_source_21
169215 , l_array_source_22
169216 , l_array_source_24
169217 LIMIT l_rows;
169218
169219 --
169220 IF (C_LEVEL_EVENT >= g_log_level) THEN
169221 trace
169222 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
169223 ,p_level => C_LEVEL_EVENT
169224 ,p_module => l_log_module);
169225 END IF;
169226 --
169227 EXIT WHEN l_array_entity_id.count = 0;
169228
169229 XLA_AE_LINES_PKG.g_rec_lines := null;
169230
169231 --
169232 -- Bug 4458708
169233 --
169234 XLA_AE_LINES_PKG.g_LineNumber := 0;
169235 --
169236 --
169237
169238 FOR Idx IN 1..l_array_event_id.count LOOP
169239 --
169240 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
169241 --
169242 l_event_id := l_array_event_id(idx); -- 5648433
169243
169244 --
169245 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
169246 --
169247
169248 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
169249 (g_array_event(l_event_id).array_value_num('header_index'))
169250 ,'N'
169251 ) <> 'Y'
169252 THEN
169253 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169254 trace
169255 (p_msg => 'Trancaction revesal option is not Y '
169256 ,p_level => C_LEVEL_STATEMENT
169257 ,p_module => l_log_module);
169258 END IF;
169259
169260 --
169261 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
169262 --
169263 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
169264 --
169265 -- set event info as cache for other routines to refer event attributes
169266 --
169267
169268 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
169269 l_previous_event_id := l_event_id;
169270
169271 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
169272 (p_application_id => p_application_id
169273 ,p_primary_ledger_id => p_primary_ledger_id
169274 ,p_base_ledger_id => p_base_ledger_id
169275 ,p_target_ledger_id => p_target_ledger_id
169276 ,p_entity_id => l_array_entity_id(Idx)
169277 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
169278 ,p_entity_code => l_array_entity_code(Idx)
169279 ,p_transaction_num => l_array_transaction_num(Idx)
169280 ,p_event_id => l_array_event_id(Idx)
169281 ,p_event_class_code => l_array_class_code(Idx)
169282 ,p_event_type_code => l_array_event_type(Idx)
169283 ,p_event_number => l_array_event_number(Idx)
169284 ,p_event_date => l_array_event_date(Idx)
169285 ,p_transaction_date => l_array_transaction_date(Idx)
169286 ,p_reference_num_1 => l_array_reference_num_1(Idx)
169287 ,p_reference_num_2 => l_array_reference_num_2(Idx)
169288 ,p_reference_num_3 => l_array_reference_num_3(Idx)
169289 ,p_reference_num_4 => l_array_reference_num_4(Idx)
169290 ,p_reference_char_1 => l_array_reference_char_1(Idx)
169291 ,p_reference_char_2 => l_array_reference_char_2(Idx)
169292 ,p_reference_char_3 => l_array_reference_char_3(Idx)
169293 ,p_reference_char_4 => l_array_reference_char_4(Idx)
169294 ,p_reference_date_1 => l_array_reference_date_1(Idx)
169295 ,p_reference_date_2 => l_array_reference_date_2(Idx)
169296 ,p_reference_date_3 => l_array_reference_date_3(Idx)
169297 ,p_reference_date_4 => l_array_reference_date_4(Idx)
169298 ,p_event_created_by => l_array_event_created_by(Idx)
169299 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
169300 --
169301 END IF;
169302
169303
169304
169305 --
169306 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
169307
169308 l_acct_reversal_source := SUBSTR(NULL, 1,30);
169309
169310 IF l_continue_with_lines THEN
169311 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
169312 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
169313
169314 xla_accounting_err_pkg.build_message
169315 (p_appli_s_name => 'XLA'
169316 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
169317 ,p_token_1 => 'LINE_NUMBER'
169318 ,p_value_1 => l_array_extract_line_num(Idx)
169319 ,p_token_2 => 'PRODUCT_NAME'
169320 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
169321 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
169322 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
169323 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
169324
169325 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
169326 --
169327 -- following sets the accounting attributes needed to reverse
169328 -- accounting for a distributeion
169329 --
169330
169331 --
169332 -- 5217187
169333 --
169334 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
169335 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
169336 g_array_event(l_event_id).array_value_num('header_index'));
169337 --
169338 --
169339
169340 -- No reversal code generated
169341
169342 xla_ae_lines_pkg.SetAcctReversalAttrs
169343 (p_event_id => l_event_id
169344 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
169345 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169346 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
169347 END IF;
169348
169349 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
169350 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
169351
169352 --
169353 AcctLineType_25 (
169354 p_application_id => p_application_id
169355 ,p_event_id => l_event_id
169356 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169357 ,p_calculate_g_l_flag => l_calculate_g_l_flag
169358 ,p_actual_flag => l_actual_flag
169359 ,p_balance_type_code => l_balance_type_code
169360 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169361
169362 , p_source_4 => l_array_source_4(Idx)
169363 , p_source_11 => l_array_source_11(Idx)
169364 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169365 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169366 , p_source_15 => l_array_source_15(Idx)
169367 , p_source_18 => l_array_source_18(Idx)
169368 , p_source_19 => l_array_source_19(Idx)
169369 , p_source_20 => l_array_source_20(Idx)
169370 , p_source_21 => l_array_source_21(Idx)
169371 , p_source_22 => l_array_source_22(Idx)
169372 , p_source_24 => l_array_source_24(Idx)
169373 );
169374 If(l_balance_type_code = 'A') THEN
169375 l_actual_gain_loss_ref := l_gain_or_loss_ref;
169376 END IF;
169377
169378 --
169379
169380
169381 --
169382 AcctLineType_41 (
169383 p_application_id => p_application_id
169384 ,p_event_id => l_event_id
169385 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169386 ,p_calculate_g_l_flag => l_calculate_g_l_flag
169387 ,p_actual_flag => l_actual_flag
169388 ,p_balance_type_code => l_balance_type_code
169389 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169390
169391 , p_source_4 => l_array_source_4(Idx)
169392 , p_source_11 => l_array_source_11(Idx)
169393 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169394 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169395 , p_source_15 => l_array_source_15(Idx)
169396 , p_source_18 => l_array_source_18(Idx)
169397 , p_source_19 => l_array_source_19(Idx)
169398 , p_source_20 => l_array_source_20(Idx)
169399 , p_source_21 => l_array_source_21(Idx)
169400 , p_source_22 => l_array_source_22(Idx)
169401 , p_source_24 => l_array_source_24(Idx)
169402 );
169403 If(l_balance_type_code = 'A') THEN
169404 l_actual_gain_loss_ref := l_gain_or_loss_ref;
169405 END IF;
169406
169407 --
169408
169409
169410 --
169411 AcctLineType_52 (
169412 p_application_id => p_application_id
169413 ,p_event_id => l_event_id
169414 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169415 ,p_calculate_g_l_flag => l_calculate_g_l_flag
169416 ,p_actual_flag => l_actual_flag
169417 ,p_balance_type_code => l_balance_type_code
169418 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169419
169420 , p_source_4 => l_array_source_4(Idx)
169421 , p_source_11 => l_array_source_11(Idx)
169422 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169423 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169424 , p_source_15 => l_array_source_15(Idx)
169425 , p_source_18 => l_array_source_18(Idx)
169426 , p_source_19 => l_array_source_19(Idx)
169427 , p_source_20 => l_array_source_20(Idx)
169428 , p_source_21 => l_array_source_21(Idx)
169429 , p_source_22 => l_array_source_22(Idx)
169430 , p_source_24 => l_array_source_24(Idx)
169431 );
169432 If(l_balance_type_code = 'A') THEN
169433 l_actual_gain_loss_ref := l_gain_or_loss_ref;
169434 END IF;
169435
169436 --
169437
169438
169439 --
169440 AcctLineType_125 (
169441 p_application_id => p_application_id
169442 ,p_event_id => l_event_id
169443 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169444 ,p_calculate_g_l_flag => l_calculate_g_l_flag
169445 ,p_actual_flag => l_actual_flag
169446 ,p_balance_type_code => l_balance_type_code
169447 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169448
169449 , p_source_4 => l_array_source_4(Idx)
169450 , p_source_11 => l_array_source_11(Idx)
169451 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169452 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169453 , p_source_15 => l_array_source_15(Idx)
169454 , p_source_18 => l_array_source_18(Idx)
169455 , p_source_19 => l_array_source_19(Idx)
169456 , p_source_20 => l_array_source_20(Idx)
169457 , p_source_21 => l_array_source_21(Idx)
169458 , p_source_22 => l_array_source_22(Idx)
169459 , p_source_24 => l_array_source_24(Idx)
169460 );
169461 If(l_balance_type_code = 'A') THEN
169462 l_actual_gain_loss_ref := l_gain_or_loss_ref;
169463 END IF;
169464
169465 --
169466
169467
169468 --
169469 AcctLineType_152 (
169470 p_application_id => p_application_id
169471 ,p_event_id => l_event_id
169472 ,p_calculate_acctd_flag => l_calculate_acctd_flag
169473 ,p_calculate_g_l_flag => l_calculate_g_l_flag
169474 ,p_actual_flag => l_actual_flag
169475 ,p_balance_type_code => l_balance_type_code
169476 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
169477
169478 , p_source_4 => l_array_source_4(Idx)
169479 , p_source_11 => l_array_source_11(Idx)
169480 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
169481 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
169482 , p_source_15 => l_array_source_15(Idx)
169483 , p_source_18 => l_array_source_18(Idx)
169484 , p_source_19 => l_array_source_19(Idx)
169485 , p_source_20 => l_array_source_20(Idx)
169486 , p_source_21 => l_array_source_21(Idx)
169487 , p_source_22 => l_array_source_22(Idx)
169488 , p_source_24 => l_array_source_24(Idx)
169489 );
169490 If(l_balance_type_code = 'A') THEN
169491 l_actual_gain_loss_ref := l_gain_or_loss_ref;
169492 END IF;
169493
169494 --
169495
169496 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
169497 -- or secondary ledger that has different currency with primary
169498 -- or alc that is calculated by sla
169499 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
169500 (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'))
169501
169502 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
169503 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
169504 AND (l_actual_flag = 'A')) THEN
169505 XLA_AE_LINES_PKG.CreateGainOrLossLines(
169506 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
169507 ,p_application_id => p_application_id
169508 ,p_amb_context_code => 'DEFAULT'
169509 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
169510 ,p_event_class_code => C_EVENT_CLASS_CODE
169511 ,p_event_type_code => C_EVENT_TYPE_CODE
169512
169513 ,p_gain_ccid => -1
169514 ,p_loss_ccid => -1
169515
169516 ,p_actual_flag => l_actual_flag
169517 ,p_enc_flag => null
169518 ,p_actual_g_l_ref => l_actual_gain_loss_ref
169519 ,p_enc_g_l_ref => null
169520 );
169521 END IF;
169522 END IF;
169523 END IF;
169524
169525 ELSE
169526 --
169527 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
169528 --
169529 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169530 trace
169531 (p_msg => 'Trancaction revesal option is Y'
169532 ,p_level => C_LEVEL_STATEMENT
169533 ,p_module => l_log_module);
169534 END IF;
169535 END IF;
169536
169537 END LOOP;
169538 l_result := XLA_AE_LINES_PKG.InsertLines ;
169539 end loop;
169540 close line_cur;
169541
169542
169543 --
169544 -- insert headers into xla_ae_headers_gt table
169545 --
169546 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
169547
169548 -- insert into errors table here.
169549
169550 END LOOP;
169551
169552 --
169553 -- 4865292
169554 --
169555 -- Compare g_hdr_extract_count with event count in
169556 -- CreateHeadersAndLines.
169557 --
169558 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
169559
169560 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169561 trace (p_msg => '# rows extracted from header extract objects '
169562 || ' (running total): '
169563 || g_hdr_extract_count
169564 ,p_level => C_LEVEL_STATEMENT
169565 ,p_module => l_log_module);
169566 END IF;
169567
169568 CLOSE header_cur;
169569 --
169570
169571 --
169572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169573 trace
169574 (p_msg => 'END of EventClass_278'
169575 ,p_level => C_LEVEL_PROCEDURE
169576 ,p_module => l_log_module);
169577 END IF;
169578 --
169579 RETURN l_result;
169580 EXCEPTION
169581 WHEN xla_exceptions_pkg.application_exception THEN
169582
169583 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
169584
169585
169586 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
169587
169588 RAISE;
169589
169590 WHEN NO_DATA_FOUND THEN
169591
169592 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
169593 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
169594
169595 FOR header_record IN header_cur
169596 LOOP
169597 l_array_header_events(header_record.event_id) := header_record.event_id;
169598 END LOOP;
169599
169600 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
169601 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
169602
169603 fnd_file.put_line(fnd_file.LOG, ' ');
169604 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
169605 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
169606 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
169607
169608 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
169609 LOOP
169610 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
169611 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
169612 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
169613 END IF;
169614 END LOOP;
169615
169616 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
169617 fnd_file.put_line(fnd_file.LOG, ' ');
169618
169619
169620 xla_exceptions_pkg.raise_message
169621 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_278');
169622
169623
169624 WHEN OTHERS THEN
169625 xla_exceptions_pkg.raise_message
169626 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_278');
169627 END EventClass_278;
169628 --
169629
169630 ---------------------------------------
169631 --
169632 -- PRIVATE PROCEDURE
169633 -- insert_sources_279
169634 --
169635 ----------------------------------------
169636 --
169637 PROCEDURE insert_sources_279(
169638 p_target_ledger_id IN NUMBER
169639 , p_language IN VARCHAR2
169640 , p_sla_ledger_id IN NUMBER
169641 , p_pad_start_date IN DATE
169642 , p_pad_end_date IN DATE
169643 )
169644 IS
169645
169646 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'OSP_ALL';
169647 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'OSP';
169648 p_apps_owner VARCHAR2(30);
169649 l_log_module VARCHAR2(240);
169650 BEGIN
169651 IF g_log_enabled THEN
169652 l_log_module := C_DEFAULT_MODULE||'.insert_sources_279';
169653 END IF;
169654 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169655
169656 trace
169657 (p_msg => 'BEGIN of insert_sources_279'
169658 ,p_level => C_LEVEL_PROCEDURE
169659 ,p_module => l_log_module);
169660
169661 END IF;
169662
169663 -- select APPS owner
169664 SELECT oracle_username
169665 INTO p_apps_owner
169666 FROM fnd_oracle_userid
169667 WHERE read_only_flag = 'U'
169668 ;
169669
169670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169671 trace
169672 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
169673 ' - p_language = '||p_language||
169674 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
169675 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
169676 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
169677 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
169678 ,p_level => C_LEVEL_STATEMENT
169679 ,p_module => l_log_module);
169680 END IF;
169681
169682
169683 --
169684 INSERT INTO xla_diag_sources --hdr2
169685 (
169686 event_id
169687 , ledger_id
169688 , sla_ledger_id
169689 , description_language
169690 , object_name
169691 , object_type_code
169692 , line_number
169693 , source_application_id
169694 , source_type_code
169695 , source_code
169696 , source_value
169697 , source_meaning
169698 , created_by
169699 , creation_date
169700 , last_update_date
169701 , last_updated_by
169702 , last_update_login
169703 , program_update_date
169704 , program_application_id
169705 , program_id
169706 , request_id
169707 )
169708 SELECT
169709 event_id
169710 , p_target_ledger_id
169711 , p_sla_ledger_id
169712 , p_language
169713 , object_name
169714 , object_type_code
169715 , line_number
169716 , source_application_id
169717 , source_type_code
169718 , source_code
169719 , SUBSTR(source_value ,1,1996)
169720 , SUBSTR(source_meaning ,1,200)
169721 , xla_environment_pkg.g_Usr_Id
169722 , TRUNC(SYSDATE)
169723 , TRUNC(SYSDATE)
169724 , xla_environment_pkg.g_Usr_Id
169725 , xla_environment_pkg.g_Login_Id
169726 , TRUNC(SYSDATE)
169727 , xla_environment_pkg.g_Prog_Appl_Id
169728 , xla_environment_pkg.g_Prog_Id
169729 , xla_environment_pkg.g_Req_Id
169730 FROM (
169731 SELECT xet.event_id event_id
169732 , 0 line_number
169733 , CASE r
169734 WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V'
169735 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V'
169736 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V'
169737 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V'
169738 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V'
169739
169740 ELSE null
169741 END object_name
169742 , CASE r
169743 WHEN 1 THEN 'HEADER'
169744 WHEN 2 THEN 'HEADER'
169745 WHEN 3 THEN 'HEADER'
169746 WHEN 4 THEN 'HEADER'
169747 WHEN 5 THEN 'HEADER'
169748
169749 ELSE null
169750 END object_type_code
169751 , CASE r
169752 WHEN 1 THEN '707'
169753 WHEN 2 THEN '707'
169754 WHEN 3 THEN '707'
169755 WHEN 4 THEN '707'
169756 WHEN 5 THEN '707'
169757
169758 ELSE null
169759 END source_application_id
169760 , 'S' source_type_code
169761 , CASE r
169762 WHEN 1 THEN 'DISTRIBUTION_TYPE'
169763 WHEN 2 THEN 'CURRENCY_CODE'
169764 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
169765 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
169766 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR'
169767
169768 ELSE null
169769 END source_code
169770 , CASE r
169771 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
169772 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
169773 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
169774 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
169775 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
169776
169777 ELSE null
169778 END source_value
169779 , CASE r
169780 WHEN 1 THEN fvl12.meaning
169781 WHEN 5 THEN fvl38.meaning
169782
169783 ELSE null
169784 END source_meaning
169785 FROM xla_events_gt xet
169786 , CST_XLA_WIP_HEADERS_V h1
169787 , fnd_lookup_values fvl12
169788 , fnd_lookup_values fvl38
169789 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
169790 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169791 AND xet.event_class_code = C_EVENT_CLASS_CODE
169792 AND h1.event_id = xet.event_id
169793 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
169794 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
169795 AND fvl12.view_application_id(+) = 700
169796 AND fvl12.language(+) = USERENV('LANG')
169797 AND fvl38.lookup_type(+) = 'YES_NO'
169798 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
169799 AND fvl38.view_application_id(+) = 0
169800 AND fvl38.language(+) = USERENV('LANG')
169801
169802 )
169803 ;
169804 --
169805 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169806
169807 trace
169808 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
169809 ,p_level => C_LEVEL_STATEMENT
169810 ,p_module => l_log_module);
169811
169812 END IF;
169813 --
169814
169815
169816
169817 --
169818 INSERT INTO xla_diag_sources --line2
169819 (
169820 event_id
169821 , ledger_id
169822 , sla_ledger_id
169823 , description_language
169824 , object_name
169825 , object_type_code
169826 , line_number
169827 , source_application_id
169828 , source_type_code
169829 , source_code
169830 , source_value
169831 , source_meaning
169832 , created_by
169833 , creation_date
169834 , last_update_date
169835 , last_updated_by
169836 , last_update_login
169837 , program_update_date
169838 , program_application_id
169839 , program_id
169840 , request_id
169841 )
169842 SELECT event_id
169843 , p_target_ledger_id
169844 , p_sla_ledger_id
169845 , p_language
169846 , object_name
169847 , object_type_code
169848 , line_number
169849 , source_application_id
169850 , source_type_code
169851 , source_code
169852 , SUBSTR(source_value,1,1996)
169853 , SUBSTR(source_meaning ,1,200)
169854 , xla_environment_pkg.g_Usr_Id
169855 , TRUNC(SYSDATE)
169856 , TRUNC(SYSDATE)
169857 , xla_environment_pkg.g_Usr_Id
169858 , xla_environment_pkg.g_Login_Id
169859 , TRUNC(SYSDATE)
169860 , xla_environment_pkg.g_Prog_Appl_Id
169861 , xla_environment_pkg.g_Prog_Id
169862 , xla_environment_pkg.g_Req_Id
169863 FROM (
169864 SELECT xet.event_id event_id
169865 , l2.line_number line_number
169866 , CASE r
169867 WHEN 1 THEN 'CST_XLA_WIP_LINES_V'
169868 WHEN 2 THEN 'CST_XLA_WIP_LINES_V'
169869 WHEN 3 THEN 'CST_XLA_WIP_LINES_V'
169870 WHEN 4 THEN 'CST_XLA_WIP_LINES_V'
169871 WHEN 5 THEN 'CST_XLA_WIP_LINES_V'
169872
169873 ELSE null
169874 END object_name
169875 , CASE r
169876 WHEN 1 THEN 'LINE'
169877 WHEN 2 THEN 'LINE'
169878 WHEN 3 THEN 'LINE'
169879 WHEN 4 THEN 'LINE'
169880 WHEN 5 THEN 'LINE'
169881
169882 ELSE null
169883 END object_type_code
169884 , CASE r
169885 WHEN 1 THEN '707'
169886 WHEN 2 THEN '707'
169887 WHEN 3 THEN '707'
169888 WHEN 4 THEN '707'
169889 WHEN 5 THEN '707'
169890
169891 ELSE null
169892 END source_application_id
169893 , 'S' source_type_code
169894 , CASE r
169895 WHEN 1 THEN 'CODE_COMBINATION_ID'
169896 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
169897 WHEN 3 THEN 'ENTERED_AMOUNT'
169898 WHEN 4 THEN 'ACCOUNTED_AMOUNT'
169899 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE'
169900
169901 ELSE null
169902 END source_code
169903 , CASE r
169904 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
169905 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
169906 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
169907 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
169908 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
169909
169910 ELSE null
169911 END source_value
169912 , null source_meaning
169913 FROM xla_events_gt xet
169914 , CST_XLA_WIP_LINES_V l2
169915 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
169916 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
169917 AND xet.event_class_code = C_EVENT_CLASS_CODE
169918 AND l2.event_id = xet.event_id
169919
169920 )
169921 ;
169922 --
169923 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
169924
169925 trace
169926 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
169927 ,p_level => C_LEVEL_STATEMENT
169928 ,p_module => l_log_module);
169929
169930 END IF;
169931
169932
169933 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
169934 trace
169935 (p_msg => 'END of insert_sources_279'
169936 ,p_level => C_LEVEL_PROCEDURE
169937 ,p_module => l_log_module);
169938 END IF;
169939 EXCEPTION
169940 WHEN xla_exceptions_pkg.application_exception THEN
169941 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169942 trace
169943 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169944 ,p_level => C_LEVEL_EXCEPTION
169945 ,p_module => l_log_module);
169946 END IF;
169947 RAISE;
169948 WHEN OTHERS THEN
169949 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
169950 trace
169951 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
169952 ,p_level => C_LEVEL_EXCEPTION
169953 ,p_module => l_log_module);
169954 END IF;
169955 xla_exceptions_pkg.raise_message
169956 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_279');
169957 END insert_sources_279;
169958 --
169959
169960 ---------------------------------------
169961 --
169962 -- PRIVATE FUNCTION
169963 -- EventClass_279
169964 --
169965 ----------------------------------------
169966 --
169967 FUNCTION EventClass_279
169968 (p_application_id IN NUMBER
169969 ,p_base_ledger_id IN NUMBER
169970 ,p_target_ledger_id IN NUMBER
169971 ,p_language IN VARCHAR2
169972 ,p_currency_code IN VARCHAR2
169973 ,p_sla_ledger_id IN NUMBER
169974 ,p_pad_start_date IN DATE
169975 ,p_pad_end_date IN DATE
169976 ,p_primary_ledger_id IN NUMBER)
169977 RETURN BOOLEAN IS
169978 --
169979 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'OSP_ALL';
169980 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'OSP';
169981
169982 l_calculate_acctd_flag VARCHAR2(1) :='N';
169983 l_calculate_g_l_flag VARCHAR2(1) :='N';
169984 --
169985 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169986 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169987 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169988 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
169989 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169990 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169991 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
169992 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169993 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169994 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
169995 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169996 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169997 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169998 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
169999 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170000 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170001 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170002 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
170003 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170004 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170005 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170006 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
170007 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
170008 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
170009 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
170010 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
170011
170012 l_event_id NUMBER;
170013 l_previous_event_id NUMBER;
170014 l_first_event_id NUMBER;
170015 l_last_event_id NUMBER;
170016
170017 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
170018 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
170019 --
170020 --
170021 l_result BOOLEAN := TRUE;
170022 l_rows NUMBER := 1000;
170023 l_event_type_name VARCHAR2(80) := 'All';
170024 l_event_class_name VARCHAR2(80) := 'Outside Processing';
170025 l_description VARCHAR2(4000);
170026 l_transaction_reversal NUMBER;
170027 l_ae_header_id NUMBER;
170028 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
170029 l_log_module VARCHAR2(240);
170030 --
170031 l_acct_reversal_source VARCHAR2(30);
170032 l_trx_reversal_source VARCHAR2(30);
170033
170034 l_continue_with_lines BOOLEAN := TRUE;
170035 --
170036 l_acc_rev_gl_date_source DATE; -- 4262811
170037 --
170038 type t_array_event_id is table of number index by binary_integer;
170039
170040 l_rec_array_event t_rec_array_event;
170041 l_null_rec_array_event t_rec_array_event;
170042 l_array_ae_header_id xla_number_array_type;
170043 l_actual_flag VARCHAR2(1) := NULL;
170044 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
170045 l_balance_type_code VARCHAR2(1) :=NULL;
170046 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
170047
170048 --
170049 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
170050 --
170051
170052 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
170053 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
170054 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
170055 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
170056 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
170057
170058 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
170059 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
170060 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170061 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
170062 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
170063
170064 l_array_source_12 t_array_source_12;
170065 l_array_source_12_meaning t_array_lookup_meaning;
170066 l_array_source_15 t_array_source_15;
170067 l_array_source_19 t_array_source_19;
170068 l_array_source_20 t_array_source_20;
170069 l_array_source_38 t_array_source_38;
170070 l_array_source_38_meaning t_array_lookup_meaning;
170071
170072 l_array_source_4 t_array_source_4;
170073 l_array_source_11 t_array_source_11;
170074 l_array_source_18 t_array_source_18;
170075 l_array_source_22 t_array_source_22;
170076 l_array_source_24 t_array_source_24;
170077
170078 --
170079 CURSOR header_cur
170080 IS
170081 SELECT /*+ leading(xet) cardinality(xet,1) */
170082 -- Event Class Code: OSP
170083 xet.entity_id
170084 ,xet.legal_entity_id
170085 ,xet.entity_code
170086 ,xet.transaction_number
170087 ,xet.event_id
170088 ,xet.event_class_code
170089 ,xet.event_type_code
170090 ,xet.event_number
170091 ,xet.event_date
170092 ,xet.transaction_date
170093 ,xet.reference_num_1
170094 ,xet.reference_num_2
170095 ,xet.reference_num_3
170096 ,xet.reference_num_4
170097 ,xet.reference_char_1
170098 ,xet.reference_char_2
170099 ,xet.reference_char_3
170100 ,xet.reference_char_4
170101 ,xet.reference_date_1
170102 ,xet.reference_date_2
170103 ,xet.reference_date_3
170104 ,xet.reference_date_4
170105 ,xet.event_created_by
170106 ,xet.budgetary_control_flag
170107 , h1.DISTRIBUTION_TYPE source_12
170108 , fvl12.meaning source_12_meaning
170109 , h1.CURRENCY_CODE source_15
170110 , h1.CURRENCY_CONVERSION_DATE source_19
170111 , h1.CURRENCY_CONVERSION_RATE source_20
170112 , h1.TRANSFER_TO_GL_INDICATOR source_38
170113 , fvl38.meaning source_38_meaning
170114 FROM xla_events_gt xet
170115 , CST_XLA_WIP_HEADERS_V h1
170116 , fnd_lookup_values fvl12
170117 , fnd_lookup_values fvl38
170118 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
170119 and xet.event_class_code = C_EVENT_CLASS_CODE
170120 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
170121 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
170122 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
170123 AND fvl12.view_application_id(+) = 700
170124 AND fvl12.language(+) = USERENV('LANG')
170125 AND fvl38.lookup_type(+) = 'YES_NO'
170126 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
170127 AND fvl38.view_application_id(+) = 0
170128 AND fvl38.language(+) = USERENV('LANG')
170129
170130 ORDER BY event_id
170131 ;
170132
170133
170134 --
170135 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
170136 IS
170137 SELECT /*+ leading(xet) cardinality(xet,1) */
170138 -- Event Class Code: OSP
170139 xet.entity_id
170140 ,xet.legal_entity_id
170141 ,xet.entity_code
170142 ,xet.transaction_number
170143 ,xet.event_id
170144 ,xet.event_class_code
170145 ,xet.event_type_code
170146 ,xet.event_number
170147 ,xet.event_date
170148 ,xet.transaction_date
170149 ,xet.reference_num_1
170150 ,xet.reference_num_2
170151 ,xet.reference_num_3
170152 ,xet.reference_num_4
170153 ,xet.reference_char_1
170154 ,xet.reference_char_2
170155 ,xet.reference_char_3
170156 ,xet.reference_char_4
170157 ,xet.reference_date_1
170158 ,xet.reference_date_2
170159 ,xet.reference_date_3
170160 ,xet.reference_date_4
170161 ,xet.event_created_by
170162 ,xet.budgetary_control_flag
170163 , l2.LINE_NUMBER
170164 , l2.CODE_COMBINATION_ID source_4
170165 , l2.DISTRIBUTION_IDENTIFIER source_11
170166 , l2.ENTERED_AMOUNT source_18
170167 , l2.ACCOUNTED_AMOUNT source_22
170168 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
170169 FROM xla_events_gt xet
170170 , CST_XLA_WIP_LINES_V l2
170171 WHERE xet.event_id between x_first_event_id and x_last_event_id
170172 and xet.event_date between p_pad_start_date and p_pad_end_date
170173 and xet.event_class_code = C_EVENT_CLASS_CODE
170174 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
170175 ;
170176
170177 --
170178 BEGIN
170179 IF g_log_enabled THEN
170180 l_log_module := C_DEFAULT_MODULE||'.EventClass_279';
170181 END IF;
170182 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170183 trace
170184 (p_msg => 'BEGIN of EventClass_279'
170185 ,p_level => C_LEVEL_PROCEDURE
170186 ,p_module => l_log_module);
170187 END IF;
170188
170189 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170190 trace
170191 (p_msg => 'p_application_id = '||p_application_id||
170192 ' - p_base_ledger_id = '||p_base_ledger_id||
170193 ' - p_target_ledger_id = '||p_target_ledger_id||
170194 ' - p_language = '||p_language||
170195 ' - p_currency_code = '||p_currency_code||
170196 ' - p_sla_ledger_id = '||p_sla_ledger_id
170197 ,p_level => C_LEVEL_STATEMENT
170198 ,p_module => l_log_module);
170199 END IF;
170200 --
170201 -- initialze arrays
170202 --
170203 g_array_event.DELETE;
170204 l_rec_array_event := l_null_rec_array_event;
170205 --
170206 --------------------------------------
170207 -- 4262811 Initialze MPA Line Number
170208 --------------------------------------
170209 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
170210
170211 --
170212
170213 --
170214 OPEN header_cur;
170215 --
170216 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170217 trace
170218 (p_msg => 'SQL - FETCH header_cur'
170219 ,p_level => C_LEVEL_STATEMENT
170220 ,p_module => l_log_module);
170221 END IF;
170222 --
170223 LOOP
170224 FETCH header_cur BULK COLLECT INTO
170225 l_array_entity_id
170226 , l_array_legal_entity_id
170227 , l_array_entity_code
170228 , l_array_transaction_num
170229 , l_array_event_id
170230 , l_array_class_code
170231 , l_array_event_type
170232 , l_array_event_number
170233 , l_array_event_date
170234 , l_array_transaction_date
170235 , l_array_reference_num_1
170236 , l_array_reference_num_2
170237 , l_array_reference_num_3
170238 , l_array_reference_num_4
170239 , l_array_reference_char_1
170240 , l_array_reference_char_2
170241 , l_array_reference_char_3
170242 , l_array_reference_char_4
170243 , l_array_reference_date_1
170244 , l_array_reference_date_2
170245 , l_array_reference_date_3
170246 , l_array_reference_date_4
170247 , l_array_event_created_by
170248 , l_array_budgetary_control_flag
170249 , l_array_source_12
170250 , l_array_source_12_meaning
170251 , l_array_source_15
170252 , l_array_source_19
170253 , l_array_source_20
170254 , l_array_source_38
170255 , l_array_source_38_meaning
170256 LIMIT l_rows;
170257 --
170258 IF (C_LEVEL_EVENT >= g_log_level) THEN
170259 trace
170260 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
170261 ,p_level => C_LEVEL_EVENT
170262 ,p_module => l_log_module);
170263 END IF;
170264 --
170265 EXIT WHEN l_array_entity_id.COUNT = 0;
170266
170267 -- initialize arrays
170268 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
170269 XLA_AE_LINES_PKG.g_rec_lines := NULL;
170270
170271 --
170272 -- Bug 4458708
170273 --
170274 XLA_AE_LINES_PKG.g_LineNumber := 0;
170275
170276
170277 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
170278 g_last_hdr_idx := l_array_event_id.LAST;
170279 --
170280 -- loop for the headers. Each iteration is for each header extract row
170281 -- fetched in header cursor
170282 --
170283 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
170284
170285 --
170286 -- set event info as cache for other routines to refer event attributes
170287 --
170288 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
170289 (p_application_id => p_application_id
170290 ,p_primary_ledger_id => p_primary_ledger_id
170291 ,p_base_ledger_id => p_base_ledger_id
170292 ,p_target_ledger_id => p_target_ledger_id
170293 ,p_entity_id => l_array_entity_id(hdr_idx)
170294 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
170295 ,p_entity_code => l_array_entity_code(hdr_idx)
170296 ,p_transaction_num => l_array_transaction_num(hdr_idx)
170297 ,p_event_id => l_array_event_id(hdr_idx)
170298 ,p_event_class_code => l_array_class_code(hdr_idx)
170299 ,p_event_type_code => l_array_event_type(hdr_idx)
170300 ,p_event_number => l_array_event_number(hdr_idx)
170301 ,p_event_date => l_array_event_date(hdr_idx)
170302 ,p_transaction_date => l_array_transaction_date(hdr_idx)
170303 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
170304 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
170305 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
170306 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
170307 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
170308 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
170309 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
170310 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
170311 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
170312 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
170313 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
170314 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
170315 ,p_event_created_by => l_array_event_created_by(hdr_idx)
170316 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
170317
170318 --
170319 -- set the status of entry to C_VALID (0)
170320 --
170321 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
170322
170323 --
170324 -- initialize a row for ae header
170325 --
170326 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
170327
170328 l_event_id := l_array_event_id(hdr_idx);
170329
170330 --
170331 -- storing the hdr_idx for event. May be used by line cursor.
170332 --
170333 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
170334
170335 --
170336 -- store sources from header extract. This can be improved to
170337 -- store only those sources from header extract that may be used in lines
170338 --
170339
170340 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
170341 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
170342 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
170343 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
170344 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
170345 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
170346 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
170347
170348 --
170349 -- initilaize the status of ae headers for diffrent balance types
170350 -- the status is initialised to C_NOT_CREATED (2)
170351 --
170352 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170353 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170354 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
170355
170356 --
170357 -- call api to validate and store accounting attributes for header
170358 --
170359
170360 ------------------------------------------------------------
170361 -- Accrual Reversal : to get date for Standard Source (NONE)
170362 ------------------------------------------------------------
170363 l_acc_rev_gl_date_source := NULL;
170364
170365 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
170366 l_rec_acct_attrs.array_date_value(1) :=
170367 xla_ae_sources_pkg.GetSystemSourceDate(
170368 p_source_code => 'XLA_REFERENCE_DATE_1'
170369 , p_source_type_code => 'Y'
170370 , p_source_application_id => 602
170371 );
170372 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
170373 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
170374
170375
170376 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
170377
170378 XLA_AE_HEADER_PKG.SetJeCategoryName;
170379
170380 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
170381 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
170382 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
170383 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
170384 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
170385
170386
170387 -- No header level analytical criteria
170388
170389 --
170390 --accounting attribute enhancement, bug 3612931
170391 --
170392 l_trx_reversal_source := SUBSTR(NULL, 1,30);
170393
170394 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
170395 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
170396
170397 xla_accounting_err_pkg.build_message
170398 (p_appli_s_name => 'XLA'
170399 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
170400 ,p_token_1 => 'ACCT_ATTR_NAME'
170401 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
170402 ,p_token_2 => 'PRODUCT_NAME'
170403 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
170404 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
170405 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
170406 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
170407
170408 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
170409 --
170410 -- following sets the accounting attributes needed to reverse
170411 -- accounting for a distributeion
170412 --
170413 xla_ae_lines_pkg.SetTrxReversalAttrs
170414 (p_event_id => l_event_id
170415 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
170416 ,p_trx_reversal_source => l_trx_reversal_source);
170417
170418 END IF;
170419
170420
170421 ----------------------------------------------------------------
170422 -- 4262811 - update the header statuses to invalid in need be
170423 ----------------------------------------------------------------
170424 --
170425 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
170426
170427
170428 -----------------------------------------------
170429 -- No accrual reversal for the event class/type
170430 -----------------------------------------------
170431 ----------------------------------------------------------------
170432
170433 --
170434 -- this ends the header loop iteration for one bulk fetch
170435 --
170436 END LOOP;
170437
170438 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
170439 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
170440
170441 --
170442 -- insert dummy rows into lines gt table that were created due to
170443 -- transaction reversals
170444 --
170445 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
170446 l_result := XLA_AE_LINES_PKG.InsertLines;
170447 END IF;
170448
170449 --
170450 -- reset the temp_line_num for each set of events fetched from header
170451 -- cursor rather than doing it for each new event in line cursor
170452 -- Bug 3939231
170453 --
170454 xla_ae_lines_pkg.g_temp_line_num := 0;
170455
170456
170457
170458 --
170459 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
170460 --
170461 --
170462 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170463
170464 trace
170465 (p_msg => 'SQL - FETCH line_cur'
170466 ,p_level => C_LEVEL_STATEMENT
170467 ,p_module => l_log_module);
170468
170469 END IF;
170470 --
170471 --
170472 LOOP
170473 --
170474 FETCH line_cur BULK COLLECT INTO
170475 l_array_entity_id
170476 , l_array_legal_entity_id
170477 , l_array_entity_code
170478 , l_array_transaction_num
170479 , l_array_event_id
170480 , l_array_class_code
170481 , l_array_event_type
170482 , l_array_event_number
170483 , l_array_event_date
170484 , l_array_transaction_date
170485 , l_array_reference_num_1
170486 , l_array_reference_num_2
170487 , l_array_reference_num_3
170488 , l_array_reference_num_4
170489 , l_array_reference_char_1
170490 , l_array_reference_char_2
170491 , l_array_reference_char_3
170492 , l_array_reference_char_4
170493 , l_array_reference_date_1
170494 , l_array_reference_date_2
170495 , l_array_reference_date_3
170496 , l_array_reference_date_4
170497 , l_array_event_created_by
170498 , l_array_budgetary_control_flag
170499 , l_array_extract_line_num
170500 , l_array_source_4
170501 , l_array_source_11
170502 , l_array_source_18
170503 , l_array_source_22
170504 , l_array_source_24
170505 LIMIT l_rows;
170506
170507 --
170508 IF (C_LEVEL_EVENT >= g_log_level) THEN
170509 trace
170510 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
170511 ,p_level => C_LEVEL_EVENT
170512 ,p_module => l_log_module);
170513 END IF;
170514 --
170515 EXIT WHEN l_array_entity_id.count = 0;
170516
170517 XLA_AE_LINES_PKG.g_rec_lines := null;
170518
170519 --
170520 -- Bug 4458708
170521 --
170522 XLA_AE_LINES_PKG.g_LineNumber := 0;
170523 --
170524 --
170525
170526 FOR Idx IN 1..l_array_event_id.count LOOP
170527 --
170528 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
170529 --
170530 l_event_id := l_array_event_id(idx); -- 5648433
170531
170532 --
170533 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
170534 --
170535
170536 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
170537 (g_array_event(l_event_id).array_value_num('header_index'))
170538 ,'N'
170539 ) <> 'Y'
170540 THEN
170541 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170542 trace
170543 (p_msg => 'Trancaction revesal option is not Y '
170544 ,p_level => C_LEVEL_STATEMENT
170545 ,p_module => l_log_module);
170546 END IF;
170547
170548 --
170549 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
170550 --
170551 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
170552 --
170553 -- set event info as cache for other routines to refer event attributes
170554 --
170555
170556 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
170557 l_previous_event_id := l_event_id;
170558
170559 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
170560 (p_application_id => p_application_id
170561 ,p_primary_ledger_id => p_primary_ledger_id
170562 ,p_base_ledger_id => p_base_ledger_id
170563 ,p_target_ledger_id => p_target_ledger_id
170564 ,p_entity_id => l_array_entity_id(Idx)
170565 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
170566 ,p_entity_code => l_array_entity_code(Idx)
170567 ,p_transaction_num => l_array_transaction_num(Idx)
170568 ,p_event_id => l_array_event_id(Idx)
170569 ,p_event_class_code => l_array_class_code(Idx)
170570 ,p_event_type_code => l_array_event_type(Idx)
170571 ,p_event_number => l_array_event_number(Idx)
170572 ,p_event_date => l_array_event_date(Idx)
170573 ,p_transaction_date => l_array_transaction_date(Idx)
170574 ,p_reference_num_1 => l_array_reference_num_1(Idx)
170575 ,p_reference_num_2 => l_array_reference_num_2(Idx)
170576 ,p_reference_num_3 => l_array_reference_num_3(Idx)
170577 ,p_reference_num_4 => l_array_reference_num_4(Idx)
170578 ,p_reference_char_1 => l_array_reference_char_1(Idx)
170579 ,p_reference_char_2 => l_array_reference_char_2(Idx)
170580 ,p_reference_char_3 => l_array_reference_char_3(Idx)
170581 ,p_reference_char_4 => l_array_reference_char_4(Idx)
170582 ,p_reference_date_1 => l_array_reference_date_1(Idx)
170583 ,p_reference_date_2 => l_array_reference_date_2(Idx)
170584 ,p_reference_date_3 => l_array_reference_date_3(Idx)
170585 ,p_reference_date_4 => l_array_reference_date_4(Idx)
170586 ,p_event_created_by => l_array_event_created_by(Idx)
170587 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
170588 --
170589 END IF;
170590
170591
170592
170593 --
170594 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
170595
170596 l_acct_reversal_source := SUBSTR(NULL, 1,30);
170597
170598 IF l_continue_with_lines THEN
170599 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
170600 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
170601
170602 xla_accounting_err_pkg.build_message
170603 (p_appli_s_name => 'XLA'
170604 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
170605 ,p_token_1 => 'LINE_NUMBER'
170606 ,p_value_1 => l_array_extract_line_num(Idx)
170607 ,p_token_2 => 'PRODUCT_NAME'
170608 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
170609 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
170610 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
170611 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
170612
170613 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
170614 --
170615 -- following sets the accounting attributes needed to reverse
170616 -- accounting for a distributeion
170617 --
170618
170619 --
170620 -- 5217187
170621 --
170622 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
170623 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
170624 g_array_event(l_event_id).array_value_num('header_index'));
170625 --
170626 --
170627
170628 -- No reversal code generated
170629
170630 xla_ae_lines_pkg.SetAcctReversalAttrs
170631 (p_event_id => l_event_id
170632 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
170633 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170634 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
170635 END IF;
170636
170637 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
170638 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
170639
170640 --
170641 AcctLineType_195 (
170642 p_application_id => p_application_id
170643 ,p_event_id => l_event_id
170644 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170645 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170646 ,p_actual_flag => l_actual_flag
170647 ,p_balance_type_code => l_balance_type_code
170648 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170649
170650 , p_source_4 => l_array_source_4(Idx)
170651 , p_source_11 => l_array_source_11(Idx)
170652 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170653 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170654 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170655 , p_source_18 => l_array_source_18(Idx)
170656 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170657 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170658 , p_source_22 => l_array_source_22(Idx)
170659 , p_source_24 => l_array_source_24(Idx)
170660 );
170661 If(l_balance_type_code = 'A') THEN
170662 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170663 END IF;
170664
170665 --
170666
170667
170668 --
170669 AcctLineType_213 (
170670 p_application_id => p_application_id
170671 ,p_event_id => l_event_id
170672 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170673 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170674 ,p_actual_flag => l_actual_flag
170675 ,p_balance_type_code => l_balance_type_code
170676 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170677
170678 , p_source_4 => l_array_source_4(Idx)
170679 , p_source_11 => l_array_source_11(Idx)
170680 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170681 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170682 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170683 , p_source_18 => l_array_source_18(Idx)
170684 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170685 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170686 , p_source_22 => l_array_source_22(Idx)
170687 , p_source_24 => l_array_source_24(Idx)
170688 );
170689 If(l_balance_type_code = 'A') THEN
170690 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170691 END IF;
170692
170693 --
170694
170695
170696 --
170697 AcctLineType_221 (
170698 p_application_id => p_application_id
170699 ,p_event_id => l_event_id
170700 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170701 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170702 ,p_actual_flag => l_actual_flag
170703 ,p_balance_type_code => l_balance_type_code
170704 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170705
170706 , p_source_4 => l_array_source_4(Idx)
170707 , p_source_11 => l_array_source_11(Idx)
170708 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170709 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170710 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170711 , p_source_18 => l_array_source_18(Idx)
170712 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170713 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170714 , p_source_22 => l_array_source_22(Idx)
170715 , p_source_24 => l_array_source_24(Idx)
170716 );
170717 If(l_balance_type_code = 'A') THEN
170718 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170719 END IF;
170720
170721 --
170722
170723
170724 --
170725 AcctLineType_234 (
170726 p_application_id => p_application_id
170727 ,p_event_id => l_event_id
170728 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170729 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170730 ,p_actual_flag => l_actual_flag
170731 ,p_balance_type_code => l_balance_type_code
170732 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170733
170734 , p_source_4 => l_array_source_4(Idx)
170735 , p_source_11 => l_array_source_11(Idx)
170736 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170737 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170738 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170739 , p_source_18 => l_array_source_18(Idx)
170740 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170741 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170742 , p_source_22 => l_array_source_22(Idx)
170743 , p_source_24 => l_array_source_24(Idx)
170744 );
170745 If(l_balance_type_code = 'A') THEN
170746 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170747 END IF;
170748
170749 --
170750
170751
170752 --
170753 AcctLineType_242 (
170754 p_application_id => p_application_id
170755 ,p_event_id => l_event_id
170756 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170757 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170758 ,p_actual_flag => l_actual_flag
170759 ,p_balance_type_code => l_balance_type_code
170760 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170761
170762 , p_source_4 => l_array_source_4(Idx)
170763 , p_source_11 => l_array_source_11(Idx)
170764 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170765 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170766 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170767 , p_source_18 => l_array_source_18(Idx)
170768 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170769 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170770 , p_source_22 => l_array_source_22(Idx)
170771 , p_source_24 => l_array_source_24(Idx)
170772 );
170773 If(l_balance_type_code = 'A') THEN
170774 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170775 END IF;
170776
170777 --
170778
170779
170780 --
170781 AcctLineType_254 (
170782 p_application_id => p_application_id
170783 ,p_event_id => l_event_id
170784 ,p_calculate_acctd_flag => l_calculate_acctd_flag
170785 ,p_calculate_g_l_flag => l_calculate_g_l_flag
170786 ,p_actual_flag => l_actual_flag
170787 ,p_balance_type_code => l_balance_type_code
170788 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
170789
170790 , p_source_4 => l_array_source_4(Idx)
170791 , p_source_11 => l_array_source_11(Idx)
170792 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
170793 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
170794 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
170795 , p_source_18 => l_array_source_18(Idx)
170796 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
170797 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
170798 , p_source_22 => l_array_source_22(Idx)
170799 , p_source_24 => l_array_source_24(Idx)
170800 );
170801 If(l_balance_type_code = 'A') THEN
170802 l_actual_gain_loss_ref := l_gain_or_loss_ref;
170803 END IF;
170804
170805 --
170806
170807 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
170808 -- or secondary ledger that has different currency with primary
170809 -- or alc that is calculated by sla
170810 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
170811 (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'))
170812
170813 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
170814 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
170815 AND (l_actual_flag = 'A')) THEN
170816 XLA_AE_LINES_PKG.CreateGainOrLossLines(
170817 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
170818 ,p_application_id => p_application_id
170819 ,p_amb_context_code => 'DEFAULT'
170820 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
170821 ,p_event_class_code => C_EVENT_CLASS_CODE
170822 ,p_event_type_code => C_EVENT_TYPE_CODE
170823
170824 ,p_gain_ccid => -1
170825 ,p_loss_ccid => -1
170826
170827 ,p_actual_flag => l_actual_flag
170828 ,p_enc_flag => null
170829 ,p_actual_g_l_ref => l_actual_gain_loss_ref
170830 ,p_enc_g_l_ref => null
170831 );
170832 END IF;
170833 END IF;
170834 END IF;
170835
170836 ELSE
170837 --
170838 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
170839 --
170840 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170841 trace
170842 (p_msg => 'Trancaction revesal option is Y'
170843 ,p_level => C_LEVEL_STATEMENT
170844 ,p_module => l_log_module);
170845 END IF;
170846 END IF;
170847
170848 END LOOP;
170849 l_result := XLA_AE_LINES_PKG.InsertLines ;
170850 end loop;
170851 close line_cur;
170852
170853
170854 --
170855 -- insert headers into xla_ae_headers_gt table
170856 --
170857 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
170858
170859 -- insert into errors table here.
170860
170861 END LOOP;
170862
170863 --
170864 -- 4865292
170865 --
170866 -- Compare g_hdr_extract_count with event count in
170867 -- CreateHeadersAndLines.
170868 --
170869 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
170870
170871 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170872 trace (p_msg => '# rows extracted from header extract objects '
170873 || ' (running total): '
170874 || g_hdr_extract_count
170875 ,p_level => C_LEVEL_STATEMENT
170876 ,p_module => l_log_module);
170877 END IF;
170878
170879 CLOSE header_cur;
170880 --
170881
170882 --
170883 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170884 trace
170885 (p_msg => 'END of EventClass_279'
170886 ,p_level => C_LEVEL_PROCEDURE
170887 ,p_module => l_log_module);
170888 END IF;
170889 --
170890 RETURN l_result;
170891 EXCEPTION
170892 WHEN xla_exceptions_pkg.application_exception THEN
170893
170894 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170895
170896
170897 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
170898
170899 RAISE;
170900
170901 WHEN NO_DATA_FOUND THEN
170902
170903 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
170904 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
170905
170906 FOR header_record IN header_cur
170907 LOOP
170908 l_array_header_events(header_record.event_id) := header_record.event_id;
170909 END LOOP;
170910
170911 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
170912 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
170913
170914 fnd_file.put_line(fnd_file.LOG, ' ');
170915 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170916 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
170917 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
170918
170919 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
170920 LOOP
170921 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
170922 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
170923 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
170924 END IF;
170925 END LOOP;
170926
170927 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
170928 fnd_file.put_line(fnd_file.LOG, ' ');
170929
170930
170931 xla_exceptions_pkg.raise_message
170932 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_279');
170933
170934
170935 WHEN OTHERS THEN
170936 xla_exceptions_pkg.raise_message
170937 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_279');
170938 END EventClass_279;
170939 --
170940
170941 ---------------------------------------
170942 --
170943 -- PRIVATE PROCEDURE
170944 -- insert_sources_280
170945 --
170946 ----------------------------------------
170947 --
170948 PROCEDURE insert_sources_280(
170949 p_target_ledger_id IN NUMBER
170950 , p_language IN VARCHAR2
170951 , p_sla_ledger_id IN NUMBER
170952 , p_pad_start_date IN DATE
170953 , p_pad_end_date IN DATE
170954 )
170955 IS
170956
170957 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PERIOD_END_ACCRUAL_ALL';
170958 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
170959 p_apps_owner VARCHAR2(30);
170960 l_log_module VARCHAR2(240);
170961 BEGIN
170962 IF g_log_enabled THEN
170963 l_log_module := C_DEFAULT_MODULE||'.insert_sources_280';
170964 END IF;
170965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
170966
170967 trace
170968 (p_msg => 'BEGIN of insert_sources_280'
170969 ,p_level => C_LEVEL_PROCEDURE
170970 ,p_module => l_log_module);
170971
170972 END IF;
170973
170974 -- select APPS owner
170975 SELECT oracle_username
170976 INTO p_apps_owner
170977 FROM fnd_oracle_userid
170978 WHERE read_only_flag = 'U'
170979 ;
170980
170981 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
170982 trace
170983 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
170984 ' - p_language = '||p_language||
170985 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
170986 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
170987 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
170988 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
170989 ,p_level => C_LEVEL_STATEMENT
170990 ,p_module => l_log_module);
170991 END IF;
170992
170993
170994 --
170995 INSERT INTO xla_diag_sources --hdr2
170996 (
170997 event_id
170998 , ledger_id
170999 , sla_ledger_id
171000 , description_language
171001 , object_name
171002 , object_type_code
171003 , line_number
171004 , source_application_id
171005 , source_type_code
171006 , source_code
171007 , source_value
171008 , source_meaning
171009 , created_by
171010 , creation_date
171011 , last_update_date
171012 , last_updated_by
171013 , last_update_login
171014 , program_update_date
171015 , program_application_id
171016 , program_id
171017 , request_id
171018 )
171019 SELECT
171020 event_id
171021 , p_target_ledger_id
171022 , p_sla_ledger_id
171023 , p_language
171024 , object_name
171025 , object_type_code
171026 , line_number
171027 , source_application_id
171028 , source_type_code
171029 , source_code
171030 , SUBSTR(source_value ,1,1996)
171031 , SUBSTR(source_meaning ,1,200)
171032 , xla_environment_pkg.g_Usr_Id
171033 , TRUNC(SYSDATE)
171034 , TRUNC(SYSDATE)
171035 , xla_environment_pkg.g_Usr_Id
171036 , xla_environment_pkg.g_Login_Id
171037 , TRUNC(SYSDATE)
171038 , xla_environment_pkg.g_Prog_Appl_Id
171039 , xla_environment_pkg.g_Prog_Id
171040 , xla_environment_pkg.g_Req_Id
171041 FROM (
171042 SELECT xet.event_id event_id
171043 , 0 line_number
171044 , CASE r
171045 WHEN 1 THEN 'CST_XLA_RCV_REF_V'
171046 WHEN 2 THEN 'CST_XLA_RCV_REF_V'
171047 WHEN 3 THEN 'CST_XLA_RCV_REF_V'
171048 WHEN 4 THEN 'CST_XLA_RCV_REF_V'
171049 WHEN 5 THEN 'CST_XLA_RCV_REF_V'
171050 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V'
171051 WHEN 7 THEN 'PO_DISTS_REF_V'
171052 WHEN 8 THEN 'CST_XLA_RCV_REF_V'
171053 WHEN 9 THEN 'CST_XLA_RCV_HEADERS_V'
171054 WHEN 10 THEN 'CST_XLA_RCV_REF_V'
171055 WHEN 11 THEN 'PSA_CST_XLA_PEA_UPG_V'
171056 WHEN 12 THEN 'CST_XLA_RCV_HEADERS_V'
171057 WHEN 13 THEN 'CST_XLA_RCV_HEADERS_V'
171058 WHEN 14 THEN 'CST_XLA_RCV_HEADERS_V'
171059 WHEN 15 THEN 'PO_HEADERS_REF_V'
171060 WHEN 16 THEN 'CST_XLA_RCV_HEADERS_V'
171061
171062 ELSE null
171063 END object_name
171064 , CASE r
171065 WHEN 1 THEN 'HEADER'
171066 WHEN 2 THEN 'HEADER'
171067 WHEN 3 THEN 'HEADER'
171068 WHEN 4 THEN 'HEADER'
171069 WHEN 5 THEN 'HEADER'
171070 WHEN 6 THEN 'HEADER'
171071 WHEN 7 THEN 'HEADER'
171072 WHEN 8 THEN 'HEADER'
171073 WHEN 9 THEN 'HEADER'
171074 WHEN 10 THEN 'HEADER'
171075 WHEN 11 THEN 'HEADER'
171076 WHEN 12 THEN 'HEADER'
171077 WHEN 13 THEN 'HEADER'
171078 WHEN 14 THEN 'HEADER'
171079 WHEN 15 THEN 'HEADER'
171080 WHEN 16 THEN 'HEADER'
171081
171082 ELSE null
171083 END object_type_code
171084 , CASE r
171085 WHEN 1 THEN '707'
171086 WHEN 2 THEN '707'
171087 WHEN 3 THEN '707'
171088 WHEN 4 THEN '707'
171089 WHEN 5 THEN '707'
171090 WHEN 6 THEN '707'
171091 WHEN 7 THEN '201'
171092 WHEN 8 THEN '707'
171093 WHEN 9 THEN '707'
171094 WHEN 10 THEN '707'
171095 WHEN 11 THEN '707'
171096 WHEN 12 THEN '707'
171097 WHEN 13 THEN '707'
171098 WHEN 14 THEN '707'
171099 WHEN 15 THEN '201'
171100 WHEN 16 THEN '707'
171101
171102 ELSE null
171103 END source_application_id
171104 , 'S' source_type_code
171105 , CASE r
171106 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
171107 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
171108 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
171109 WHEN 4 THEN 'PO_DISTRIBUTION_ID'
171110 WHEN 5 THEN 'APPLIED_TO_PO_DOC_ID'
171111 WHEN 6 THEN 'DISTRIBUTION_TYPE'
171112 WHEN 7 THEN 'PO_BUDGET_ACCOUNT'
171113 WHEN 8 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
171114 WHEN 9 THEN 'CURRENCY_CODE'
171115 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
171116 WHEN 11 THEN 'CST_PEA_ENC_UPG_OPTION'
171117 WHEN 12 THEN 'CURRENCY_CONVERSION_DATE'
171118 WHEN 13 THEN 'CURRENCY_CONVERSION_RATE'
171119 WHEN 14 THEN 'CURRENCY_CONVERSION_TYPE'
171120 WHEN 15 THEN 'PURCH_ENCUMBRANCE_TYPE_ID'
171121 WHEN 16 THEN 'TRANSFER_TO_GL_INDICATOR'
171122
171123 ELSE null
171124 END source_code
171125 , CASE r
171126 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
171127 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
171128 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
171129 WHEN 4 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
171130 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
171131 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
171132 WHEN 7 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
171133 WHEN 8 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
171134 WHEN 9 THEN TO_CHAR(h1.CURRENCY_CODE)
171135 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
171136 WHEN 11 THEN TO_CHAR(h6.CST_PEA_ENC_UPG_OPTION)
171137 WHEN 12 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
171138 WHEN 13 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
171139 WHEN 14 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
171140 WHEN 15 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
171141 WHEN 16 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
171142
171143 ELSE null
171144 END source_value
171145 , CASE r
171146 WHEN 6 THEN fvl12.meaning
171147 WHEN 16 THEN fvl38.meaning
171148
171149 ELSE null
171150 END source_meaning
171151 FROM xla_events_gt xet
171152 , CST_XLA_RCV_HEADERS_V h1
171153 , CST_XLA_RCV_REF_V h3
171154 , PO_DISTS_REF_V h4
171155 , PO_HEADERS_REF_V h5
171156 , PSA_CST_XLA_PEA_UPG_V h6
171157 , fnd_lookup_values fvl12
171158 , fnd_lookup_values fvl38
171159 ,(select rownum r from all_objects where rownum <= 16 and owner = p_apps_owner)
171160 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
171161 AND xet.event_class_code = C_EVENT_CLASS_CODE
171162 AND h1.event_id = xet.event_id
171163 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'
171164 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
171165 AND fvl12.view_application_id(+) = 700
171166 AND fvl12.language(+) = USERENV('LANG')
171167 AND fvl38.lookup_type(+) = 'YES_NO'
171168 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
171169 AND fvl38.view_application_id(+) = 0
171170 AND fvl38.language(+) = USERENV('LANG')
171171
171172 )
171173 ;
171174 --
171175 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171176
171177 trace
171178 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
171179 ,p_level => C_LEVEL_STATEMENT
171180 ,p_module => l_log_module);
171181
171182 END IF;
171183 --
171184
171185
171186
171187 --
171188 INSERT INTO xla_diag_sources --line2
171189 (
171190 event_id
171191 , ledger_id
171192 , sla_ledger_id
171193 , description_language
171194 , object_name
171195 , object_type_code
171196 , line_number
171197 , source_application_id
171198 , source_type_code
171199 , source_code
171200 , source_value
171201 , source_meaning
171202 , created_by
171203 , creation_date
171204 , last_update_date
171205 , last_updated_by
171206 , last_update_login
171207 , program_update_date
171208 , program_application_id
171209 , program_id
171210 , request_id
171211 )
171212 SELECT event_id
171213 , p_target_ledger_id
171214 , p_sla_ledger_id
171215 , p_language
171216 , object_name
171217 , object_type_code
171218 , line_number
171219 , source_application_id
171220 , source_type_code
171221 , source_code
171222 , SUBSTR(source_value,1,1996)
171223 , SUBSTR(source_meaning ,1,200)
171224 , xla_environment_pkg.g_Usr_Id
171225 , TRUNC(SYSDATE)
171226 , TRUNC(SYSDATE)
171227 , xla_environment_pkg.g_Usr_Id
171228 , xla_environment_pkg.g_Login_Id
171229 , TRUNC(SYSDATE)
171230 , xla_environment_pkg.g_Prog_Appl_Id
171231 , xla_environment_pkg.g_Prog_Id
171232 , xla_environment_pkg.g_Req_Id
171233 FROM (
171234 SELECT xet.event_id event_id
171235 , l2.line_number line_number
171236 , CASE r
171237 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
171238 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
171239 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
171240 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
171241 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
171242
171243 ELSE null
171244 END object_name
171245 , CASE r
171246 WHEN 1 THEN 'LINE'
171247 WHEN 2 THEN 'LINE'
171248 WHEN 3 THEN 'LINE'
171249 WHEN 4 THEN 'LINE'
171250 WHEN 5 THEN 'LINE'
171251
171252 ELSE null
171253 END object_type_code
171254 , CASE r
171255 WHEN 1 THEN '707'
171256 WHEN 2 THEN '707'
171257 WHEN 3 THEN '707'
171258 WHEN 4 THEN '707'
171259 WHEN 5 THEN '707'
171260
171261 ELSE null
171262 END source_application_id
171263 , 'S' source_type_code
171264 , CASE r
171265 WHEN 1 THEN 'CODE_COMBINATION_ID'
171266 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
171267 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
171268 WHEN 4 THEN 'ENTERED_AMOUNT'
171269 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
171270
171271 ELSE null
171272 END source_code
171273 , CASE r
171274 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
171275 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
171276 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
171277 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
171278 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
171279
171280 ELSE null
171281 END source_value
171282 , null source_meaning
171283 FROM xla_events_gt xet
171284 , CST_XLA_RCV_LINES_V l2
171285 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
171286 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
171287 AND xet.event_class_code = C_EVENT_CLASS_CODE
171288 AND l2.event_id = xet.event_id
171289
171290 )
171291 ;
171292 --
171293 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171294
171295 trace
171296 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
171297 ,p_level => C_LEVEL_STATEMENT
171298 ,p_module => l_log_module);
171299
171300 END IF;
171301
171302
171303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171304 trace
171305 (p_msg => 'END of insert_sources_280'
171306 ,p_level => C_LEVEL_PROCEDURE
171307 ,p_module => l_log_module);
171308 END IF;
171309 EXCEPTION
171310 WHEN xla_exceptions_pkg.application_exception THEN
171311 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171312 trace
171313 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171314 ,p_level => C_LEVEL_EXCEPTION
171315 ,p_module => l_log_module);
171316 END IF;
171317 RAISE;
171318 WHEN OTHERS THEN
171319 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
171320 trace
171321 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
171322 ,p_level => C_LEVEL_EXCEPTION
171323 ,p_module => l_log_module);
171324 END IF;
171325 xla_exceptions_pkg.raise_message
171326 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_280');
171327 END insert_sources_280;
171328 --
171329
171330 ---------------------------------------
171331 --
171332 -- PRIVATE FUNCTION
171333 -- EventClass_280
171334 --
171335 ----------------------------------------
171336 --
171337 FUNCTION EventClass_280
171338 (p_application_id IN NUMBER
171339 ,p_base_ledger_id IN NUMBER
171340 ,p_target_ledger_id IN NUMBER
171341 ,p_language IN VARCHAR2
171342 ,p_currency_code IN VARCHAR2
171343 ,p_sla_ledger_id IN NUMBER
171344 ,p_pad_start_date IN DATE
171345 ,p_pad_end_date IN DATE
171346 ,p_primary_ledger_id IN NUMBER)
171347 RETURN BOOLEAN IS
171348 --
171349 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PERIOD_END_ACCRUAL_ALL';
171350 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
171351
171352 l_calculate_acctd_flag VARCHAR2(1) :='N';
171353 l_calculate_g_l_flag VARCHAR2(1) :='N';
171354 --
171355 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171356 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171357 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171358 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171359 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171360 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171361 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171362 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171363 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171364 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171365 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171366 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171367 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171368 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
171369 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171370 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171371 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171372 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
171373 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171374 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171375 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171376 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
171377 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
171378 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
171379 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
171380 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
171381
171382 l_event_id NUMBER;
171383 l_previous_event_id NUMBER;
171384 l_first_event_id NUMBER;
171385 l_last_event_id NUMBER;
171386
171387 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
171388 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
171389 --
171390 --
171391 l_result BOOLEAN := TRUE;
171392 l_rows NUMBER := 1000;
171393 l_event_type_name VARCHAR2(80) := 'All';
171394 l_event_class_name VARCHAR2(80) := 'Period End Accrual';
171395 l_description VARCHAR2(4000);
171396 l_transaction_reversal NUMBER;
171397 l_ae_header_id NUMBER;
171398 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
171399 l_log_module VARCHAR2(240);
171400 --
171401 l_acct_reversal_source VARCHAR2(30);
171402 l_trx_reversal_source VARCHAR2(30);
171403
171404 l_continue_with_lines BOOLEAN := TRUE;
171405 --
171406 l_acc_rev_gl_date_source DATE; -- 4262811
171407 --
171408 type t_array_event_id is table of number index by binary_integer;
171409
171410 l_rec_array_event t_rec_array_event;
171411 l_null_rec_array_event t_rec_array_event;
171412 l_array_ae_header_id xla_number_array_type;
171413 l_actual_flag VARCHAR2(1) := NULL;
171414 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
171415 l_balance_type_code VARCHAR2(1) :=NULL;
171416 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
171417
171418 --
171419 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
171420 --
171421
171422 TYPE t_array_source_6 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
171423 TYPE t_array_source_7 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
171424 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
171425 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
171426 TYPE t_array_source_10 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
171427 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
171428 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
171429 TYPE t_array_source_14 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
171430 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
171431 TYPE t_array_source_16 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171432 TYPE t_array_source_17 IS TABLE OF PSA_CST_XLA_PEA_UPG_V.CST_PEA_ENC_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
171433 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
171434 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
171435 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
171436 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
171437 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
171438
171439 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
171440 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
171441 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
171442 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171443 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
171444
171445 l_array_source_6 t_array_source_6;
171446 l_array_source_7 t_array_source_7;
171447 l_array_source_8 t_array_source_8;
171448 l_array_source_9 t_array_source_9;
171449 l_array_source_10 t_array_source_10;
171450 l_array_source_12 t_array_source_12;
171451 l_array_source_12_meaning t_array_lookup_meaning;
171452 l_array_source_13 t_array_source_13;
171453 l_array_source_14 t_array_source_14;
171454 l_array_source_15 t_array_source_15;
171455 l_array_source_16 t_array_source_16;
171456 l_array_source_17 t_array_source_17;
171457 l_array_source_19 t_array_source_19;
171458 l_array_source_20 t_array_source_20;
171459 l_array_source_21 t_array_source_21;
171460 l_array_source_23 t_array_source_23;
171461 l_array_source_38 t_array_source_38;
171462 l_array_source_38_meaning t_array_lookup_meaning;
171463
171464 l_array_source_4 t_array_source_4;
171465 l_array_source_5 t_array_source_5;
171466 l_array_source_11 t_array_source_11;
171467 l_array_source_18 t_array_source_18;
171468 l_array_source_22 t_array_source_22;
171469
171470 --
171471 CURSOR header_cur
171472 IS
171473 SELECT /*+ leading(xet) cardinality(xet,1) */
171474 -- Event Class Code: PERIOD_END_ACCRUAL
171475 xet.entity_id
171476 ,xet.legal_entity_id
171477 ,xet.entity_code
171478 ,xet.transaction_number
171479 ,xet.event_id
171480 ,xet.event_class_code
171481 ,xet.event_type_code
171482 ,xet.event_number
171483 ,xet.event_date
171484 ,xet.transaction_date
171485 ,xet.reference_num_1
171486 ,xet.reference_num_2
171487 ,xet.reference_num_3
171488 ,xet.reference_num_4
171489 ,xet.reference_char_1
171490 ,xet.reference_char_2
171491 ,xet.reference_char_3
171492 ,xet.reference_char_4
171493 ,xet.reference_date_1
171494 ,xet.reference_date_2
171495 ,xet.reference_date_3
171496 ,xet.reference_date_4
171497 ,xet.event_created_by
171498 ,xet.budgetary_control_flag
171499 , h3.APPLIED_TO_APPL_ID source_6
171500 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
171501 , h3.APPLIED_TO_ENTITY_CODE source_8
171502 , h3.PO_DISTRIBUTION_ID source_9
171503 , h3.APPLIED_TO_PO_DOC_ID source_10
171504 , h1.DISTRIBUTION_TYPE source_12
171505 , fvl12.meaning source_12_meaning
171506 , h4.PO_BUDGET_ACCOUNT source_13
171507 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
171508 , h1.CURRENCY_CODE source_15
171509 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
171510 , h6.CST_PEA_ENC_UPG_OPTION source_17
171511 , h1.CURRENCY_CONVERSION_DATE source_19
171512 , h1.CURRENCY_CONVERSION_RATE source_20
171513 , h1.CURRENCY_CONVERSION_TYPE source_21
171514 , h5.PURCH_ENCUMBRANCE_TYPE_ID source_23
171515 , h1.TRANSFER_TO_GL_INDICATOR source_38
171516 , fvl38.meaning source_38_meaning
171517 FROM xla_events_gt xet
171518 , CST_XLA_RCV_HEADERS_V h1
171519 , CST_XLA_RCV_REF_V h3
171520 , PO_DISTS_REF_V h4
171521 , PO_HEADERS_REF_V h5
171522 , PSA_CST_XLA_PEA_UPG_V h6
171523 , fnd_lookup_values fvl12
171524 , fnd_lookup_values fvl38
171525 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
171526 and xet.event_class_code = C_EVENT_CLASS_CODE
171527 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
171528 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'
171529 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
171530 AND fvl12.view_application_id(+) = 700
171531 AND fvl12.language(+) = USERENV('LANG')
171532 AND fvl38.lookup_type(+) = 'YES_NO'
171533 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
171534 AND fvl38.view_application_id(+) = 0
171535 AND fvl38.language(+) = USERENV('LANG')
171536
171537 ORDER BY event_id
171538 ;
171539
171540
171541 --
171542 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
171543 IS
171544 SELECT /*+ leading(xet) cardinality(xet,1) */
171545 -- Event Class Code: PERIOD_END_ACCRUAL
171546 xet.entity_id
171547 ,xet.legal_entity_id
171548 ,xet.entity_code
171549 ,xet.transaction_number
171550 ,xet.event_id
171551 ,xet.event_class_code
171552 ,xet.event_type_code
171553 ,xet.event_number
171554 ,xet.event_date
171555 ,xet.transaction_date
171556 ,xet.reference_num_1
171557 ,xet.reference_num_2
171558 ,xet.reference_num_3
171559 ,xet.reference_num_4
171560 ,xet.reference_char_1
171561 ,xet.reference_char_2
171562 ,xet.reference_char_3
171563 ,xet.reference_char_4
171564 ,xet.reference_date_1
171565 ,xet.reference_date_2
171566 ,xet.reference_date_3
171567 ,xet.reference_date_4
171568 ,xet.event_created_by
171569 ,xet.budgetary_control_flag
171570 , l2.LINE_NUMBER
171571 , l2.CODE_COMBINATION_ID source_4
171572 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
171573 , l2.DISTRIBUTION_IDENTIFIER source_11
171574 , l2.ENTERED_AMOUNT source_18
171575 , l2.ACCOUNTED_AMOUNT source_22
171576 FROM xla_events_gt xet
171577 , CST_XLA_RCV_LINES_V l2
171578 WHERE xet.event_id between x_first_event_id and x_last_event_id
171579 and xet.event_date between p_pad_start_date and p_pad_end_date
171580 and xet.event_class_code = C_EVENT_CLASS_CODE
171581 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
171582 ;
171583
171584 --
171585 BEGIN
171586 IF g_log_enabled THEN
171587 l_log_module := C_DEFAULT_MODULE||'.EventClass_280';
171588 END IF;
171589 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
171590 trace
171591 (p_msg => 'BEGIN of EventClass_280'
171592 ,p_level => C_LEVEL_PROCEDURE
171593 ,p_module => l_log_module);
171594 END IF;
171595
171596 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171597 trace
171598 (p_msg => 'p_application_id = '||p_application_id||
171599 ' - p_base_ledger_id = '||p_base_ledger_id||
171600 ' - p_target_ledger_id = '||p_target_ledger_id||
171601 ' - p_language = '||p_language||
171602 ' - p_currency_code = '||p_currency_code||
171603 ' - p_sla_ledger_id = '||p_sla_ledger_id
171604 ,p_level => C_LEVEL_STATEMENT
171605 ,p_module => l_log_module);
171606 END IF;
171607 --
171608 -- initialze arrays
171609 --
171610 g_array_event.DELETE;
171611 l_rec_array_event := l_null_rec_array_event;
171612 --
171613 --------------------------------------
171614 -- 4262811 Initialze MPA Line Number
171615 --------------------------------------
171616 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
171617
171618 --
171619
171620 --
171621 OPEN header_cur;
171622 --
171623 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171624 trace
171625 (p_msg => 'SQL - FETCH header_cur'
171626 ,p_level => C_LEVEL_STATEMENT
171627 ,p_module => l_log_module);
171628 END IF;
171629 --
171630 LOOP
171631 FETCH header_cur BULK COLLECT INTO
171632 l_array_entity_id
171633 , l_array_legal_entity_id
171634 , l_array_entity_code
171635 , l_array_transaction_num
171636 , l_array_event_id
171637 , l_array_class_code
171638 , l_array_event_type
171639 , l_array_event_number
171640 , l_array_event_date
171641 , l_array_transaction_date
171642 , l_array_reference_num_1
171643 , l_array_reference_num_2
171644 , l_array_reference_num_3
171645 , l_array_reference_num_4
171646 , l_array_reference_char_1
171647 , l_array_reference_char_2
171648 , l_array_reference_char_3
171649 , l_array_reference_char_4
171650 , l_array_reference_date_1
171651 , l_array_reference_date_2
171652 , l_array_reference_date_3
171653 , l_array_reference_date_4
171654 , l_array_event_created_by
171655 , l_array_budgetary_control_flag
171656 , l_array_source_6
171657 , l_array_source_7
171658 , l_array_source_8
171659 , l_array_source_9
171660 , l_array_source_10
171661 , l_array_source_12
171662 , l_array_source_12_meaning
171663 , l_array_source_13
171664 , l_array_source_14
171665 , l_array_source_15
171666 , l_array_source_16
171667 , l_array_source_17
171668 , l_array_source_19
171669 , l_array_source_20
171670 , l_array_source_21
171671 , l_array_source_23
171672 , l_array_source_38
171673 , l_array_source_38_meaning
171674 LIMIT l_rows;
171675 --
171676 IF (C_LEVEL_EVENT >= g_log_level) THEN
171677 trace
171678 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
171679 ,p_level => C_LEVEL_EVENT
171680 ,p_module => l_log_module);
171681 END IF;
171682 --
171683 EXIT WHEN l_array_entity_id.COUNT = 0;
171684
171685 -- initialize arrays
171686 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
171687 XLA_AE_LINES_PKG.g_rec_lines := NULL;
171688
171689 --
171690 -- Bug 4458708
171691 --
171692 XLA_AE_LINES_PKG.g_LineNumber := 0;
171693
171694
171695 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
171696 g_last_hdr_idx := l_array_event_id.LAST;
171697 --
171698 -- loop for the headers. Each iteration is for each header extract row
171699 -- fetched in header cursor
171700 --
171701 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
171702
171703 --
171704 -- set event info as cache for other routines to refer event attributes
171705 --
171706 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
171707 (p_application_id => p_application_id
171708 ,p_primary_ledger_id => p_primary_ledger_id
171709 ,p_base_ledger_id => p_base_ledger_id
171710 ,p_target_ledger_id => p_target_ledger_id
171711 ,p_entity_id => l_array_entity_id(hdr_idx)
171712 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
171713 ,p_entity_code => l_array_entity_code(hdr_idx)
171714 ,p_transaction_num => l_array_transaction_num(hdr_idx)
171715 ,p_event_id => l_array_event_id(hdr_idx)
171716 ,p_event_class_code => l_array_class_code(hdr_idx)
171717 ,p_event_type_code => l_array_event_type(hdr_idx)
171718 ,p_event_number => l_array_event_number(hdr_idx)
171719 ,p_event_date => l_array_event_date(hdr_idx)
171720 ,p_transaction_date => l_array_transaction_date(hdr_idx)
171721 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
171722 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
171723 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
171724 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
171725 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
171726 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
171727 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
171728 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
171729 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
171730 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
171731 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
171732 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
171733 ,p_event_created_by => l_array_event_created_by(hdr_idx)
171734 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
171735
171736 --
171737 -- set the status of entry to C_VALID (0)
171738 --
171739 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
171740
171741 --
171742 -- initialize a row for ae header
171743 --
171744 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
171745
171746 l_event_id := l_array_event_id(hdr_idx);
171747
171748 --
171749 -- storing the hdr_idx for event. May be used by line cursor.
171750 --
171751 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
171752
171753 --
171754 -- store sources from header extract. This can be improved to
171755 -- store only those sources from header extract that may be used in lines
171756 --
171757
171758 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
171759 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
171760 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
171761 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
171762 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
171763 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
171764 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
171765 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
171766 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
171767 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
171768 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
171769 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
171770 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
171771 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
171772 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
171773 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
171774 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
171775 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
171776
171777 --
171778 -- initilaize the status of ae headers for diffrent balance types
171779 -- the status is initialised to C_NOT_CREATED (2)
171780 --
171781 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171782 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171783 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
171784
171785 --
171786 -- call api to validate and store accounting attributes for header
171787 --
171788
171789 ------------------------------------------------------------
171790 -- Accrual Reversal : to get date for Standard Source (NONE)
171791 ------------------------------------------------------------
171792 l_acc_rev_gl_date_source := NULL;
171793
171794 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
171795 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
171796 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
171797 l_rec_acct_attrs.array_date_value(2) :=
171798 xla_ae_sources_pkg.GetSystemSourceDate(
171799 p_source_code => 'XLA_REFERENCE_DATE_1'
171800 , p_source_type_code => 'Y'
171801 , p_source_application_id => 602
171802 );
171803 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
171804 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
171805
171806
171807 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
171808
171809 XLA_AE_HEADER_PKG.SetJeCategoryName;
171810
171811 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
171812 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
171813 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
171814 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
171815 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
171816
171817
171818 -- No header level analytical criteria
171819
171820 --
171821 --accounting attribute enhancement, bug 3612931
171822 --
171823 l_trx_reversal_source := SUBSTR(NULL, 1,30);
171824
171825 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
171826 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
171827
171828 xla_accounting_err_pkg.build_message
171829 (p_appli_s_name => 'XLA'
171830 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
171831 ,p_token_1 => 'ACCT_ATTR_NAME'
171832 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
171833 ,p_token_2 => 'PRODUCT_NAME'
171834 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
171835 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
171836 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
171837 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
171838
171839 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
171840 --
171841 -- following sets the accounting attributes needed to reverse
171842 -- accounting for a distributeion
171843 --
171844 xla_ae_lines_pkg.SetTrxReversalAttrs
171845 (p_event_id => l_event_id
171846 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
171847 ,p_trx_reversal_source => l_trx_reversal_source);
171848
171849 END IF;
171850
171851
171852 ----------------------------------------------------------------
171853 -- 4262811 - update the header statuses to invalid in need be
171854 ----------------------------------------------------------------
171855 --
171856 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
171857
171858
171859 --
171860 -- Generate the accrual reversal headers
171861 --
171862 IF NVL(l_trx_reversal_source, 'N') = 'N' THEN
171863
171864
171865
171866 -- indicate that the accrual entry has a reversal entry
171867 XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag(hdr_idx) := 'Y';
171868
171869 --
171870 -- initialize a row for ae header
171871 --
171872 g_last_hdr_idx := g_last_hdr_idx + 1;
171873 XLA_AE_HEADER_PKG.CopyHeaderInfo (p_parent_hdr_idx => hdr_idx,
171874 p_hdr_idx => g_last_hdr_idx) ;
171875 XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num (g_last_hdr_idx) := 1;
171876 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) :=
171877 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx);
171878
171879 --
171880 -- record the index for the reversal entry, it will be used by the journal
171881 -- line creation
171882 --
171883 g_array_event(l_event_id).array_value_num('acc_rev_header_index') := g_last_hdr_idx;
171884
171885 --
171886 -- Populate the GL Date and override the GL date defined in the
171887 -- SetHdrAcctAttrs if necessary
171888 --
171889
171890 ---------------------- XLA_FIRST_DAY_NEXT_GL_PERIOD ----------------------
171891 XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx) := 'XLA_FIRST_DAY_NEXT_GL_PERIOD';
171892 XLA_AE_HEADER_PKG.GetAccrualRevDate(g_last_hdr_idx
171893 ,XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(g_last_hdr_idx)
171894 ,XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
171895 ,XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx));
171896
171897
171898 --
171899 -- Update the header status
171900 --
171901 XLA_AE_JOURNAL_ENTRY_PKG.updateJournalEntryStatus (p_hdr_idx => g_last_hdr_idx);
171902
171903
171904
171905 END IF;
171906
171907
171908 ----------------------------------------------------------------
171909
171910 --
171911 -- this ends the header loop iteration for one bulk fetch
171912 --
171913 END LOOP;
171914
171915 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
171916 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
171917
171918 --
171919 -- insert dummy rows into lines gt table that were created due to
171920 -- transaction reversals
171921 --
171922 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
171923 l_result := XLA_AE_LINES_PKG.InsertLines;
171924 END IF;
171925
171926 --
171927 -- reset the temp_line_num for each set of events fetched from header
171928 -- cursor rather than doing it for each new event in line cursor
171929 -- Bug 3939231
171930 --
171931 xla_ae_lines_pkg.g_temp_line_num := 0;
171932
171933
171934
171935 --
171936 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
171937 --
171938 --
171939 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
171940
171941 trace
171942 (p_msg => 'SQL - FETCH line_cur'
171943 ,p_level => C_LEVEL_STATEMENT
171944 ,p_module => l_log_module);
171945
171946 END IF;
171947 --
171948 --
171949 LOOP
171950 --
171951 FETCH line_cur BULK COLLECT INTO
171952 l_array_entity_id
171953 , l_array_legal_entity_id
171954 , l_array_entity_code
171955 , l_array_transaction_num
171956 , l_array_event_id
171957 , l_array_class_code
171958 , l_array_event_type
171959 , l_array_event_number
171960 , l_array_event_date
171961 , l_array_transaction_date
171962 , l_array_reference_num_1
171963 , l_array_reference_num_2
171964 , l_array_reference_num_3
171965 , l_array_reference_num_4
171966 , l_array_reference_char_1
171967 , l_array_reference_char_2
171968 , l_array_reference_char_3
171969 , l_array_reference_char_4
171970 , l_array_reference_date_1
171971 , l_array_reference_date_2
171972 , l_array_reference_date_3
171973 , l_array_reference_date_4
171974 , l_array_event_created_by
171975 , l_array_budgetary_control_flag
171976 , l_array_extract_line_num
171977 , l_array_source_4
171978 , l_array_source_5
171979 , l_array_source_11
171980 , l_array_source_18
171981 , l_array_source_22
171982 LIMIT l_rows;
171983
171984 --
171985 IF (C_LEVEL_EVENT >= g_log_level) THEN
171986 trace
171987 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
171988 ,p_level => C_LEVEL_EVENT
171989 ,p_module => l_log_module);
171990 END IF;
171991 --
171992 EXIT WHEN l_array_entity_id.count = 0;
171993
171994 XLA_AE_LINES_PKG.g_rec_lines := null;
171995
171996 --
171997 -- Bug 4458708
171998 --
171999 XLA_AE_LINES_PKG.g_LineNumber := 0;
172000 --
172001 --
172002
172003 FOR Idx IN 1..l_array_event_id.count LOOP
172004 --
172005 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
172006 --
172007 l_event_id := l_array_event_id(idx); -- 5648433
172008
172009 --
172010 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
172011 --
172012
172013 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
172014 (g_array_event(l_event_id).array_value_num('header_index'))
172015 ,'N'
172016 ) <> 'Y'
172017 THEN
172018 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172019 trace
172020 (p_msg => 'Trancaction revesal option is not Y '
172021 ,p_level => C_LEVEL_STATEMENT
172022 ,p_module => l_log_module);
172023 END IF;
172024
172025 --
172026 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
172027 --
172028 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
172029 --
172030 -- set event info as cache for other routines to refer event attributes
172031 --
172032
172033 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
172034 l_previous_event_id := l_event_id;
172035
172036 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
172037 (p_application_id => p_application_id
172038 ,p_primary_ledger_id => p_primary_ledger_id
172039 ,p_base_ledger_id => p_base_ledger_id
172040 ,p_target_ledger_id => p_target_ledger_id
172041 ,p_entity_id => l_array_entity_id(Idx)
172042 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
172043 ,p_entity_code => l_array_entity_code(Idx)
172044 ,p_transaction_num => l_array_transaction_num(Idx)
172045 ,p_event_id => l_array_event_id(Idx)
172046 ,p_event_class_code => l_array_class_code(Idx)
172047 ,p_event_type_code => l_array_event_type(Idx)
172048 ,p_event_number => l_array_event_number(Idx)
172049 ,p_event_date => l_array_event_date(Idx)
172050 ,p_transaction_date => l_array_transaction_date(Idx)
172051 ,p_reference_num_1 => l_array_reference_num_1(Idx)
172052 ,p_reference_num_2 => l_array_reference_num_2(Idx)
172053 ,p_reference_num_3 => l_array_reference_num_3(Idx)
172054 ,p_reference_num_4 => l_array_reference_num_4(Idx)
172055 ,p_reference_char_1 => l_array_reference_char_1(Idx)
172056 ,p_reference_char_2 => l_array_reference_char_2(Idx)
172057 ,p_reference_char_3 => l_array_reference_char_3(Idx)
172058 ,p_reference_char_4 => l_array_reference_char_4(Idx)
172059 ,p_reference_date_1 => l_array_reference_date_1(Idx)
172060 ,p_reference_date_2 => l_array_reference_date_2(Idx)
172061 ,p_reference_date_3 => l_array_reference_date_3(Idx)
172062 ,p_reference_date_4 => l_array_reference_date_4(Idx)
172063 ,p_event_created_by => l_array_event_created_by(Idx)
172064 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
172065 --
172066 END IF;
172067
172068
172069
172070 --
172071 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
172072
172073 l_acct_reversal_source := SUBSTR(NULL, 1,30);
172074
172075 IF l_continue_with_lines THEN
172076 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
172077 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
172078
172079 xla_accounting_err_pkg.build_message
172080 (p_appli_s_name => 'XLA'
172081 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
172082 ,p_token_1 => 'LINE_NUMBER'
172083 ,p_value_1 => l_array_extract_line_num(Idx)
172084 ,p_token_2 => 'PRODUCT_NAME'
172085 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
172086 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
172087 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
172088 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
172089
172090 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
172091 --
172092 -- following sets the accounting attributes needed to reverse
172093 -- accounting for a distributeion
172094 --
172095
172096 --
172097 -- 5217187
172098 --
172099 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
172100 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
172101 g_array_event(l_event_id).array_value_num('header_index'));
172102 --
172103 --
172104
172105 -- No reversal code generated
172106
172107 xla_ae_lines_pkg.SetAcctReversalAttrs
172108 (p_event_id => l_event_id
172109 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
172110 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172111 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
172112 END IF;
172113
172114 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
172115 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
172116
172117 --
172118 AcctLineType_5 (
172119 p_application_id => p_application_id
172120 ,p_event_id => l_event_id
172121 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172122 ,p_calculate_g_l_flag => l_calculate_g_l_flag
172123 ,p_actual_flag => l_actual_flag
172124 ,p_balance_type_code => l_balance_type_code
172125 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172126
172127 , p_source_4 => l_array_source_4(Idx)
172128 , p_source_5 => l_array_source_5(Idx)
172129 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
172130 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
172131 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
172132 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
172133 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
172134 , p_source_11 => l_array_source_11(Idx)
172135 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172136 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172137 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
172138 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
172139 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
172140 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
172141 , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
172142 , p_source_18 => l_array_source_18(Idx)
172143 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
172144 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
172145 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
172146 , p_source_22 => l_array_source_22(Idx)
172147 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
172148 );
172149 If(l_balance_type_code = 'A') THEN
172150 l_actual_gain_loss_ref := l_gain_or_loss_ref;
172151 END IF;
172152
172153 --
172154
172155
172156 --
172157 AcctLineType_11 (
172158 p_application_id => p_application_id
172159 ,p_event_id => l_event_id
172160 ,p_calculate_acctd_flag => l_calculate_acctd_flag
172161 ,p_calculate_g_l_flag => l_calculate_g_l_flag
172162 ,p_actual_flag => l_actual_flag
172163 ,p_balance_type_code => l_balance_type_code
172164 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
172165
172166 , p_source_4 => l_array_source_4(Idx)
172167 , p_source_5 => l_array_source_5(Idx)
172168 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
172169 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
172170 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
172171 , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
172172 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
172173 , p_source_11 => l_array_source_11(Idx)
172174 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
172175 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
172176 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
172177 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
172178 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
172179 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
172180 , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
172181 , p_source_18 => l_array_source_18(Idx)
172182 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
172183 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
172184 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
172185 , p_source_22 => l_array_source_22(Idx)
172186 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
172187 );
172188 If(l_balance_type_code = 'A') THEN
172189 l_actual_gain_loss_ref := l_gain_or_loss_ref;
172190 END IF;
172191
172192 --
172193
172194 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
172195 -- or secondary ledger that has different currency with primary
172196 -- or alc that is calculated by sla
172197 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
172198 (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'))
172199
172200 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
172201 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
172202 AND (l_actual_flag = 'A')) THEN
172203 XLA_AE_LINES_PKG.CreateGainOrLossLines(
172204 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
172205 ,p_application_id => p_application_id
172206 ,p_amb_context_code => 'DEFAULT'
172207 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
172208 ,p_event_class_code => C_EVENT_CLASS_CODE
172209 ,p_event_type_code => C_EVENT_TYPE_CODE
172210
172211 ,p_gain_ccid => -1
172212 ,p_loss_ccid => -1
172213
172214 ,p_actual_flag => l_actual_flag
172215 ,p_enc_flag => null
172216 ,p_actual_g_l_ref => l_actual_gain_loss_ref
172217 ,p_enc_g_l_ref => null
172218 );
172219 END IF;
172220 END IF;
172221 END IF;
172222
172223 ELSE
172224 --
172225 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
172226 --
172227 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172228 trace
172229 (p_msg => 'Trancaction revesal option is Y'
172230 ,p_level => C_LEVEL_STATEMENT
172231 ,p_module => l_log_module);
172232 END IF;
172233 END IF;
172234
172235 END LOOP;
172236 l_result := XLA_AE_LINES_PKG.InsertLines ;
172237 end loop;
172238 close line_cur;
172239
172240
172241 --
172242 -- insert headers into xla_ae_headers_gt table
172243 --
172244 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
172245
172246 -- insert into errors table here.
172247
172248 END LOOP;
172249
172250 --
172251 -- 4865292
172252 --
172253 -- Compare g_hdr_extract_count with event count in
172254 -- CreateHeadersAndLines.
172255 --
172256 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
172257
172258 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172259 trace (p_msg => '# rows extracted from header extract objects '
172260 || ' (running total): '
172261 || g_hdr_extract_count
172262 ,p_level => C_LEVEL_STATEMENT
172263 ,p_module => l_log_module);
172264 END IF;
172265
172266 CLOSE header_cur;
172267 --
172268
172269 --
172270 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172271 trace
172272 (p_msg => 'END of EventClass_280'
172273 ,p_level => C_LEVEL_PROCEDURE
172274 ,p_module => l_log_module);
172275 END IF;
172276 --
172277 RETURN l_result;
172278 EXCEPTION
172279 WHEN xla_exceptions_pkg.application_exception THEN
172280
172281 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
172282
172283
172284 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
172285
172286 RAISE;
172287
172288 WHEN NO_DATA_FOUND THEN
172289
172290 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
172291 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
172292
172293 FOR header_record IN header_cur
172294 LOOP
172295 l_array_header_events(header_record.event_id) := header_record.event_id;
172296 END LOOP;
172297
172298 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
172299 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
172300
172301 fnd_file.put_line(fnd_file.LOG, ' ');
172302 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
172303 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
172304 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
172305
172306 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
172307 LOOP
172308 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
172309 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
172310 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
172311 END IF;
172312 END LOOP;
172313
172314 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
172315 fnd_file.put_line(fnd_file.LOG, ' ');
172316
172317
172318 xla_exceptions_pkg.raise_message
172319 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_280');
172320
172321
172322 WHEN OTHERS THEN
172323 xla_exceptions_pkg.raise_message
172324 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_280');
172325 END EventClass_280;
172326 --
172327
172328 ---------------------------------------
172329 --
172330 -- PRIVATE PROCEDURE
172331 -- insert_sources_281
172332 --
172333 ----------------------------------------
172334 --
172335 PROCEDURE insert_sources_281(
172336 p_target_ledger_id IN NUMBER
172337 , p_language IN VARCHAR2
172338 , p_sla_ledger_id IN NUMBER
172339 , p_pad_start_date IN DATE
172340 , p_pad_end_date IN DATE
172341 )
172342 IS
172343
172344 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PURCHASE_ORDER_ALL';
172345 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PURCHASE_ORDER';
172346 p_apps_owner VARCHAR2(30);
172347 l_log_module VARCHAR2(240);
172348 BEGIN
172349 IF g_log_enabled THEN
172350 l_log_module := C_DEFAULT_MODULE||'.insert_sources_281';
172351 END IF;
172352 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172353
172354 trace
172355 (p_msg => 'BEGIN of insert_sources_281'
172356 ,p_level => C_LEVEL_PROCEDURE
172357 ,p_module => l_log_module);
172358
172359 END IF;
172360
172361 -- select APPS owner
172362 SELECT oracle_username
172363 INTO p_apps_owner
172364 FROM fnd_oracle_userid
172365 WHERE read_only_flag = 'U'
172366 ;
172367
172368 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172369 trace
172370 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
172371 ' - p_language = '||p_language||
172372 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
172373 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
172374 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
172375 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
172376 ,p_level => C_LEVEL_STATEMENT
172377 ,p_module => l_log_module);
172378 END IF;
172379
172380
172381 --
172382 INSERT INTO xla_diag_sources --hdr2
172383 (
172384 event_id
172385 , ledger_id
172386 , sla_ledger_id
172387 , description_language
172388 , object_name
172389 , object_type_code
172390 , line_number
172391 , source_application_id
172392 , source_type_code
172393 , source_code
172394 , source_value
172395 , source_meaning
172396 , created_by
172397 , creation_date
172398 , last_update_date
172399 , last_updated_by
172400 , last_update_login
172401 , program_update_date
172402 , program_application_id
172403 , program_id
172404 , request_id
172405 )
172406 SELECT
172407 event_id
172408 , p_target_ledger_id
172409 , p_sla_ledger_id
172410 , p_language
172411 , object_name
172412 , object_type_code
172413 , line_number
172414 , source_application_id
172415 , source_type_code
172416 , source_code
172417 , SUBSTR(source_value ,1,1996)
172418 , SUBSTR(source_meaning ,1,200)
172419 , xla_environment_pkg.g_Usr_Id
172420 , TRUNC(SYSDATE)
172421 , TRUNC(SYSDATE)
172422 , xla_environment_pkg.g_Usr_Id
172423 , xla_environment_pkg.g_Login_Id
172424 , TRUNC(SYSDATE)
172425 , xla_environment_pkg.g_Prog_Appl_Id
172426 , xla_environment_pkg.g_Prog_Id
172427 , xla_environment_pkg.g_Req_Id
172428 FROM (
172429 SELECT xet.event_id event_id
172430 , 0 line_number
172431 , CASE r
172432 WHEN 1 THEN 'CST_XLA_INV_REF_V'
172433 WHEN 2 THEN 'CST_XLA_INV_REF_V'
172434 WHEN 3 THEN 'CST_XLA_INV_REF_V'
172435 WHEN 4 THEN 'CST_XLA_INV_REF_V'
172436 WHEN 5 THEN 'CST_XLA_INV_HEADERS_V'
172437 WHEN 6 THEN 'PO_DISTS_REF_V'
172438 WHEN 7 THEN 'CST_XLA_INV_REF_V'
172439 WHEN 8 THEN 'CST_XLA_INV_REF_V'
172440 WHEN 9 THEN 'PO_HEADERS_REF_V'
172441 WHEN 10 THEN 'PSA_CST_XLA_UPG_V'
172442 WHEN 11 THEN 'CST_XLA_INV_REF_V'
172443 WHEN 12 THEN 'CST_XLA_INV_HEADERS_V'
172444
172445 ELSE null
172446 END object_name
172447 , CASE r
172448 WHEN 1 THEN 'HEADER'
172449 WHEN 2 THEN 'HEADER'
172450 WHEN 3 THEN 'HEADER'
172451 WHEN 4 THEN 'HEADER'
172452 WHEN 5 THEN 'HEADER'
172453 WHEN 6 THEN 'HEADER'
172454 WHEN 7 THEN 'HEADER'
172455 WHEN 8 THEN 'HEADER'
172456 WHEN 9 THEN 'HEADER'
172457 WHEN 10 THEN 'HEADER'
172458 WHEN 11 THEN 'HEADER'
172459 WHEN 12 THEN 'HEADER'
172460
172461 ELSE null
172462 END object_type_code
172463 , CASE r
172464 WHEN 1 THEN '707'
172465 WHEN 2 THEN '707'
172466 WHEN 3 THEN '707'
172467 WHEN 4 THEN '707'
172468 WHEN 5 THEN '707'
172469 WHEN 6 THEN '201'
172470 WHEN 7 THEN '707'
172471 WHEN 8 THEN '707'
172472 WHEN 9 THEN '201'
172473 WHEN 10 THEN '707'
172474 WHEN 11 THEN '707'
172475 WHEN 12 THEN '707'
172476
172477 ELSE null
172478 END source_application_id
172479 , 'S' source_type_code
172480 , CASE r
172481 WHEN 1 THEN 'APPLIED_TO_APPL_ID'
172482 WHEN 2 THEN 'APPLIED_TO_DIST_LINK_TYPE'
172483 WHEN 3 THEN 'APPLIED_TO_ENTITY_CODE'
172484 WHEN 4 THEN 'APPLIED_TO_PO_DOC_ID'
172485 WHEN 5 THEN 'DISTRIBUTION_TYPE'
172486 WHEN 6 THEN 'PO_BUDGET_ACCOUNT'
172487 WHEN 7 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED'
172488 WHEN 8 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT'
172489 WHEN 9 THEN 'PURCH_ENCUMBRANCE_TYPE_ID'
172490 WHEN 10 THEN 'CST_ENCUM_UPG_OPTION'
172491 WHEN 11 THEN 'TXN_PO_DISTRIBUTION_ID'
172492 WHEN 12 THEN 'TRANSFER_TO_GL_INDICATOR'
172493
172494 ELSE null
172495 END source_code
172496 , CASE r
172497 WHEN 1 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
172498 WHEN 2 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
172499 WHEN 3 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
172500 WHEN 4 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
172501 WHEN 5 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
172502 WHEN 6 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
172503 WHEN 7 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
172504 WHEN 8 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
172505 WHEN 9 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
172506 WHEN 10 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
172507 WHEN 11 THEN TO_CHAR(h3.TXN_PO_DISTRIBUTION_ID)
172508 WHEN 12 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
172509
172510 ELSE null
172511 END source_value
172512 , CASE r
172513 WHEN 5 THEN fvl12.meaning
172514 WHEN 12 THEN fvl38.meaning
172515
172516 ELSE null
172517 END source_meaning
172518 FROM xla_events_gt xet
172519 , CST_XLA_INV_HEADERS_V h1
172520 , CST_XLA_INV_REF_V h3
172521 , PO_DISTS_REF_V h4
172522 , PO_HEADERS_REF_V h5
172523 , PSA_CST_XLA_UPG_V h6
172524 , fnd_lookup_values fvl12
172525 , fnd_lookup_values fvl38
172526 ,(select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
172527 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
172528 AND xet.event_class_code = C_EVENT_CLASS_CODE
172529 AND h1.event_id = xet.event_id
172530 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'
172531 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
172532 AND fvl12.view_application_id(+) = 700
172533 AND fvl12.language(+) = USERENV('LANG')
172534 AND fvl38.lookup_type(+) = 'YES_NO'
172535 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
172536 AND fvl38.view_application_id(+) = 0
172537 AND fvl38.language(+) = USERENV('LANG')
172538
172539 )
172540 ;
172541 --
172542 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172543
172544 trace
172545 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
172546 ,p_level => C_LEVEL_STATEMENT
172547 ,p_module => l_log_module);
172548
172549 END IF;
172550 --
172551
172552
172553
172554 --
172555 INSERT INTO xla_diag_sources --line2
172556 (
172557 event_id
172558 , ledger_id
172559 , sla_ledger_id
172560 , description_language
172561 , object_name
172562 , object_type_code
172563 , line_number
172564 , source_application_id
172565 , source_type_code
172566 , source_code
172567 , source_value
172568 , source_meaning
172569 , created_by
172570 , creation_date
172571 , last_update_date
172572 , last_updated_by
172573 , last_update_login
172574 , program_update_date
172575 , program_application_id
172576 , program_id
172577 , request_id
172578 )
172579 SELECT event_id
172580 , p_target_ledger_id
172581 , p_sla_ledger_id
172582 , p_language
172583 , object_name
172584 , object_type_code
172585 , line_number
172586 , source_application_id
172587 , source_type_code
172588 , source_code
172589 , SUBSTR(source_value,1,1996)
172590 , SUBSTR(source_meaning ,1,200)
172591 , xla_environment_pkg.g_Usr_Id
172592 , TRUNC(SYSDATE)
172593 , TRUNC(SYSDATE)
172594 , xla_environment_pkg.g_Usr_Id
172595 , xla_environment_pkg.g_Login_Id
172596 , TRUNC(SYSDATE)
172597 , xla_environment_pkg.g_Prog_Appl_Id
172598 , xla_environment_pkg.g_Prog_Id
172599 , xla_environment_pkg.g_Req_Id
172600 FROM (
172601 SELECT xet.event_id event_id
172602 , l2.line_number line_number
172603 , CASE r
172604 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
172605 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
172606 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
172607 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
172608 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
172609 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
172610 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
172611 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
172612 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
172613
172614 ELSE null
172615 END object_name
172616 , CASE r
172617 WHEN 1 THEN 'LINE'
172618 WHEN 2 THEN 'LINE'
172619 WHEN 3 THEN 'LINE'
172620 WHEN 4 THEN 'LINE'
172621 WHEN 5 THEN 'LINE'
172622 WHEN 6 THEN 'LINE'
172623 WHEN 7 THEN 'LINE'
172624 WHEN 8 THEN 'LINE'
172625 WHEN 9 THEN 'LINE'
172626
172627 ELSE null
172628 END object_type_code
172629 , CASE r
172630 WHEN 1 THEN '707'
172631 WHEN 2 THEN '707'
172632 WHEN 3 THEN '707'
172633 WHEN 4 THEN '707'
172634 WHEN 5 THEN '707'
172635 WHEN 6 THEN '707'
172636 WHEN 7 THEN '707'
172637 WHEN 8 THEN '707'
172638 WHEN 9 THEN '707'
172639
172640 ELSE null
172641 END source_application_id
172642 , 'S' source_type_code
172643 , CASE r
172644 WHEN 1 THEN 'CODE_COMBINATION_ID'
172645 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
172646 WHEN 3 THEN 'CURRENCY_CODE'
172647 WHEN 4 THEN 'ENTERED_AMOUNT'
172648 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
172649 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
172650 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
172651 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
172652 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
172653
172654 ELSE null
172655 END source_code
172656 , CASE r
172657 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
172658 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
172659 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
172660 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
172661 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
172662 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
172663 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
172664 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
172665 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
172666
172667 ELSE null
172668 END source_value
172669 , null source_meaning
172670 FROM xla_events_gt xet
172671 , CST_XLA_INV_LINES_V l2
172672 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
172673 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
172674 AND xet.event_class_code = C_EVENT_CLASS_CODE
172675 AND l2.event_id = xet.event_id
172676
172677 )
172678 ;
172679 --
172680 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172681
172682 trace
172683 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
172684 ,p_level => C_LEVEL_STATEMENT
172685 ,p_module => l_log_module);
172686
172687 END IF;
172688
172689
172690 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172691 trace
172692 (p_msg => 'END of insert_sources_281'
172693 ,p_level => C_LEVEL_PROCEDURE
172694 ,p_module => l_log_module);
172695 END IF;
172696 EXCEPTION
172697 WHEN xla_exceptions_pkg.application_exception THEN
172698 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
172699 trace
172700 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
172701 ,p_level => C_LEVEL_EXCEPTION
172702 ,p_module => l_log_module);
172703 END IF;
172704 RAISE;
172705 WHEN OTHERS THEN
172706 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
172707 trace
172708 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
172709 ,p_level => C_LEVEL_EXCEPTION
172710 ,p_module => l_log_module);
172711 END IF;
172712 xla_exceptions_pkg.raise_message
172713 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_281');
172714 END insert_sources_281;
172715 --
172716
172717 ---------------------------------------
172718 --
172719 -- PRIVATE FUNCTION
172720 -- EventClass_281
172721 --
172722 ----------------------------------------
172723 --
172724 FUNCTION EventClass_281
172725 (p_application_id IN NUMBER
172726 ,p_base_ledger_id IN NUMBER
172727 ,p_target_ledger_id IN NUMBER
172728 ,p_language IN VARCHAR2
172729 ,p_currency_code IN VARCHAR2
172730 ,p_sla_ledger_id IN NUMBER
172731 ,p_pad_start_date IN DATE
172732 ,p_pad_end_date IN DATE
172733 ,p_primary_ledger_id IN NUMBER)
172734 RETURN BOOLEAN IS
172735 --
172736 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'PURCHASE_ORDER_ALL';
172737 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'PURCHASE_ORDER';
172738
172739 l_calculate_acctd_flag VARCHAR2(1) :='N';
172740 l_calculate_g_l_flag VARCHAR2(1) :='N';
172741 --
172742 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172743 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172744 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172745 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172746 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172747 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172748 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172749 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172750 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172751 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172752 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172753 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172754 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172755 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
172756 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172757 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172758 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172759 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
172760 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172761 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172762 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172763 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
172764 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
172765 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
172766 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
172767 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
172768
172769 l_event_id NUMBER;
172770 l_previous_event_id NUMBER;
172771 l_first_event_id NUMBER;
172772 l_last_event_id NUMBER;
172773
172774 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
172775 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
172776 --
172777 --
172778 l_result BOOLEAN := TRUE;
172779 l_rows NUMBER := 1000;
172780 l_event_type_name VARCHAR2(80) := 'All';
172781 l_event_class_name VARCHAR2(80) := 'PO Delivery into Inventory';
172782 l_description VARCHAR2(4000);
172783 l_transaction_reversal NUMBER;
172784 l_ae_header_id NUMBER;
172785 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
172786 l_log_module VARCHAR2(240);
172787 --
172788 l_acct_reversal_source VARCHAR2(30);
172789 l_trx_reversal_source VARCHAR2(30);
172790
172791 l_continue_with_lines BOOLEAN := TRUE;
172792 --
172793 l_acc_rev_gl_date_source DATE; -- 4262811
172794 --
172795 type t_array_event_id is table of number index by binary_integer;
172796
172797 l_rec_array_event t_rec_array_event;
172798 l_null_rec_array_event t_rec_array_event;
172799 l_array_ae_header_id xla_number_array_type;
172800 l_actual_flag VARCHAR2(1) := NULL;
172801 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
172802 l_balance_type_code VARCHAR2(1) :=NULL;
172803 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
172804
172805 --
172806 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
172807 --
172808
172809 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
172810 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
172811 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
172812 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
172813 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
172814 TYPE t_array_source_13 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
172815 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
172816 TYPE t_array_source_16 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
172817 TYPE t_array_source_23 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
172818 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
172819 TYPE t_array_source_28 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
172820 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
172821
172822 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
172823 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
172824 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
172825 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
172826 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
172827 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
172828 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
172829 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
172830 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
172831
172832 l_array_source_6 t_array_source_6;
172833 l_array_source_7 t_array_source_7;
172834 l_array_source_8 t_array_source_8;
172835 l_array_source_10 t_array_source_10;
172836 l_array_source_12 t_array_source_12;
172837 l_array_source_12_meaning t_array_lookup_meaning;
172838 l_array_source_13 t_array_source_13;
172839 l_array_source_14 t_array_source_14;
172840 l_array_source_16 t_array_source_16;
172841 l_array_source_23 t_array_source_23;
172842 l_array_source_27 t_array_source_27;
172843 l_array_source_28 t_array_source_28;
172844 l_array_source_38 t_array_source_38;
172845 l_array_source_38_meaning t_array_lookup_meaning;
172846
172847 l_array_source_4 t_array_source_4;
172848 l_array_source_11 t_array_source_11;
172849 l_array_source_15 t_array_source_15;
172850 l_array_source_18 t_array_source_18;
172851 l_array_source_19 t_array_source_19;
172852 l_array_source_20 t_array_source_20;
172853 l_array_source_21 t_array_source_21;
172854 l_array_source_22 t_array_source_22;
172855 l_array_source_24 t_array_source_24;
172856
172857 --
172858 CURSOR header_cur
172859 IS
172860 SELECT /*+ leading(xet) cardinality(xet,1) */
172861 -- Event Class Code: PURCHASE_ORDER
172862 xet.entity_id
172863 ,xet.legal_entity_id
172864 ,xet.entity_code
172865 ,xet.transaction_number
172866 ,xet.event_id
172867 ,xet.event_class_code
172868 ,xet.event_type_code
172869 ,xet.event_number
172870 ,xet.event_date
172871 ,xet.transaction_date
172872 ,xet.reference_num_1
172873 ,xet.reference_num_2
172874 ,xet.reference_num_3
172875 ,xet.reference_num_4
172876 ,xet.reference_char_1
172877 ,xet.reference_char_2
172878 ,xet.reference_char_3
172879 ,xet.reference_char_4
172880 ,xet.reference_date_1
172881 ,xet.reference_date_2
172882 ,xet.reference_date_3
172883 ,xet.reference_date_4
172884 ,xet.event_created_by
172885 ,xet.budgetary_control_flag
172886 , h3.APPLIED_TO_APPL_ID source_6
172887 , h3.APPLIED_TO_DIST_LINK_TYPE source_7
172888 , h3.APPLIED_TO_ENTITY_CODE source_8
172889 , h3.APPLIED_TO_PO_DOC_ID source_10
172890 , h1.DISTRIBUTION_TYPE source_12
172891 , fvl12.meaning source_12_meaning
172892 , h4.PO_BUDGET_ACCOUNT source_13
172893 , h3.ENCUM_REVERSAL_AMOUNT_ENTERED source_14
172894 , h3.ENCUMBRANCE_REVERSAL_AMOUNT source_16
172895 , h5.PURCH_ENCUMBRANCE_TYPE_ID source_23
172896 , h6.CST_ENCUM_UPG_OPTION source_27
172897 , h3.TXN_PO_DISTRIBUTION_ID source_28
172898 , h1.TRANSFER_TO_GL_INDICATOR source_38
172899 , fvl38.meaning source_38_meaning
172900 FROM xla_events_gt xet
172901 , CST_XLA_INV_HEADERS_V h1
172902 , CST_XLA_INV_REF_V h3
172903 , PO_DISTS_REF_V h4
172904 , PO_HEADERS_REF_V h5
172905 , PSA_CST_XLA_UPG_V h6
172906 , fnd_lookup_values fvl12
172907 , fnd_lookup_values fvl38
172908 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
172909 and xet.event_class_code = C_EVENT_CLASS_CODE
172910 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
172911 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'
172912 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
172913 AND fvl12.view_application_id(+) = 700
172914 AND fvl12.language(+) = USERENV('LANG')
172915 AND fvl38.lookup_type(+) = 'YES_NO'
172916 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
172917 AND fvl38.view_application_id(+) = 0
172918 AND fvl38.language(+) = USERENV('LANG')
172919
172920 ORDER BY event_id
172921 ;
172922
172923
172924 --
172925 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
172926 IS
172927 SELECT /*+ leading(xet) cardinality(xet,1) */
172928 -- Event Class Code: PURCHASE_ORDER
172929 xet.entity_id
172930 ,xet.legal_entity_id
172931 ,xet.entity_code
172932 ,xet.transaction_number
172933 ,xet.event_id
172934 ,xet.event_class_code
172935 ,xet.event_type_code
172936 ,xet.event_number
172937 ,xet.event_date
172938 ,xet.transaction_date
172939 ,xet.reference_num_1
172940 ,xet.reference_num_2
172941 ,xet.reference_num_3
172942 ,xet.reference_num_4
172943 ,xet.reference_char_1
172944 ,xet.reference_char_2
172945 ,xet.reference_char_3
172946 ,xet.reference_char_4
172947 ,xet.reference_date_1
172948 ,xet.reference_date_2
172949 ,xet.reference_date_3
172950 ,xet.reference_date_4
172951 ,xet.event_created_by
172952 ,xet.budgetary_control_flag
172953 , l2.LINE_NUMBER
172954 , l2.CODE_COMBINATION_ID source_4
172955 , l2.DISTRIBUTION_IDENTIFIER source_11
172956 , l2.CURRENCY_CODE source_15
172957 , l2.ENTERED_AMOUNT source_18
172958 , l2.CURRENCY_CONVERSION_DATE source_19
172959 , l2.CURRENCY_CONVERSION_RATE source_20
172960 , l2.CURRENCY_CONVERSION_TYPE source_21
172961 , l2.ACCOUNTED_AMOUNT source_22
172962 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
172963 FROM xla_events_gt xet
172964 , CST_XLA_INV_LINES_V l2
172965 WHERE xet.event_id between x_first_event_id and x_last_event_id
172966 and xet.event_date between p_pad_start_date and p_pad_end_date
172967 and xet.event_class_code = C_EVENT_CLASS_CODE
172968 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
172969 ;
172970
172971 --
172972 BEGIN
172973 IF g_log_enabled THEN
172974 l_log_module := C_DEFAULT_MODULE||'.EventClass_281';
172975 END IF;
172976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
172977 trace
172978 (p_msg => 'BEGIN of EventClass_281'
172979 ,p_level => C_LEVEL_PROCEDURE
172980 ,p_module => l_log_module);
172981 END IF;
172982
172983 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
172984 trace
172985 (p_msg => 'p_application_id = '||p_application_id||
172986 ' - p_base_ledger_id = '||p_base_ledger_id||
172987 ' - p_target_ledger_id = '||p_target_ledger_id||
172988 ' - p_language = '||p_language||
172989 ' - p_currency_code = '||p_currency_code||
172990 ' - p_sla_ledger_id = '||p_sla_ledger_id
172991 ,p_level => C_LEVEL_STATEMENT
172992 ,p_module => l_log_module);
172993 END IF;
172994 --
172995 -- initialze arrays
172996 --
172997 g_array_event.DELETE;
172998 l_rec_array_event := l_null_rec_array_event;
172999 --
173000 --------------------------------------
173001 -- 4262811 Initialze MPA Line Number
173002 --------------------------------------
173003 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
173004
173005 --
173006
173007 --
173008 OPEN header_cur;
173009 --
173010 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173011 trace
173012 (p_msg => 'SQL - FETCH header_cur'
173013 ,p_level => C_LEVEL_STATEMENT
173014 ,p_module => l_log_module);
173015 END IF;
173016 --
173017 LOOP
173018 FETCH header_cur BULK COLLECT INTO
173019 l_array_entity_id
173020 , l_array_legal_entity_id
173021 , l_array_entity_code
173022 , l_array_transaction_num
173023 , l_array_event_id
173024 , l_array_class_code
173025 , l_array_event_type
173026 , l_array_event_number
173027 , l_array_event_date
173028 , l_array_transaction_date
173029 , l_array_reference_num_1
173030 , l_array_reference_num_2
173031 , l_array_reference_num_3
173032 , l_array_reference_num_4
173033 , l_array_reference_char_1
173034 , l_array_reference_char_2
173035 , l_array_reference_char_3
173036 , l_array_reference_char_4
173037 , l_array_reference_date_1
173038 , l_array_reference_date_2
173039 , l_array_reference_date_3
173040 , l_array_reference_date_4
173041 , l_array_event_created_by
173042 , l_array_budgetary_control_flag
173043 , l_array_source_6
173044 , l_array_source_7
173045 , l_array_source_8
173046 , l_array_source_10
173047 , l_array_source_12
173048 , l_array_source_12_meaning
173049 , l_array_source_13
173050 , l_array_source_14
173051 , l_array_source_16
173052 , l_array_source_23
173053 , l_array_source_27
173054 , l_array_source_28
173055 , l_array_source_38
173056 , l_array_source_38_meaning
173057 LIMIT l_rows;
173058 --
173059 IF (C_LEVEL_EVENT >= g_log_level) THEN
173060 trace
173061 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
173062 ,p_level => C_LEVEL_EVENT
173063 ,p_module => l_log_module);
173064 END IF;
173065 --
173066 EXIT WHEN l_array_entity_id.COUNT = 0;
173067
173068 -- initialize arrays
173069 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
173070 XLA_AE_LINES_PKG.g_rec_lines := NULL;
173071
173072 --
173073 -- Bug 4458708
173074 --
173075 XLA_AE_LINES_PKG.g_LineNumber := 0;
173076
173077
173078 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
173079 g_last_hdr_idx := l_array_event_id.LAST;
173080 --
173081 -- loop for the headers. Each iteration is for each header extract row
173082 -- fetched in header cursor
173083 --
173084 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
173085
173086 --
173087 -- set event info as cache for other routines to refer event attributes
173088 --
173089 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
173090 (p_application_id => p_application_id
173091 ,p_primary_ledger_id => p_primary_ledger_id
173092 ,p_base_ledger_id => p_base_ledger_id
173093 ,p_target_ledger_id => p_target_ledger_id
173094 ,p_entity_id => l_array_entity_id(hdr_idx)
173095 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
173096 ,p_entity_code => l_array_entity_code(hdr_idx)
173097 ,p_transaction_num => l_array_transaction_num(hdr_idx)
173098 ,p_event_id => l_array_event_id(hdr_idx)
173099 ,p_event_class_code => l_array_class_code(hdr_idx)
173100 ,p_event_type_code => l_array_event_type(hdr_idx)
173101 ,p_event_number => l_array_event_number(hdr_idx)
173102 ,p_event_date => l_array_event_date(hdr_idx)
173103 ,p_transaction_date => l_array_transaction_date(hdr_idx)
173104 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
173105 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
173106 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
173107 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
173108 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
173109 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
173110 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
173111 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
173112 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
173113 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
173114 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
173115 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
173116 ,p_event_created_by => l_array_event_created_by(hdr_idx)
173117 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
173118
173119 --
173120 -- set the status of entry to C_VALID (0)
173121 --
173122 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
173123
173124 --
173125 -- initialize a row for ae header
173126 --
173127 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
173128
173129 l_event_id := l_array_event_id(hdr_idx);
173130
173131 --
173132 -- storing the hdr_idx for event. May be used by line cursor.
173133 --
173134 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
173135
173136 --
173137 -- store sources from header extract. This can be improved to
173138 -- store only those sources from header extract that may be used in lines
173139 --
173140
173141 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
173142 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
173143 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
173144 g_array_event(l_event_id).array_value_num('source_10') := l_array_source_10(hdr_idx);
173145 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
173146 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
173147 g_array_event(l_event_id).array_value_num('source_13') := l_array_source_13(hdr_idx);
173148 g_array_event(l_event_id).array_value_num('source_14') := l_array_source_14(hdr_idx);
173149 g_array_event(l_event_id).array_value_num('source_16') := l_array_source_16(hdr_idx);
173150 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
173151 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
173152 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
173153 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
173154 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
173155
173156 --
173157 -- initilaize the status of ae headers for diffrent balance types
173158 -- the status is initialised to C_NOT_CREATED (2)
173159 --
173160 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173161 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173162 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
173163
173164 --
173165 -- call api to validate and store accounting attributes for header
173166 --
173167
173168 ------------------------------------------------------------
173169 -- Accrual Reversal : to get date for Standard Source (NONE)
173170 ------------------------------------------------------------
173171 l_acc_rev_gl_date_source := NULL;
173172
173173 l_rec_acct_attrs.array_acct_attr_code(1) := 'ENCUMBRANCE_TYPE_ID';
173174 l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_23');
173175 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_DATE';
173176 l_rec_acct_attrs.array_date_value(2) :=
173177 xla_ae_sources_pkg.GetSystemSourceDate(
173178 p_source_code => 'XLA_REFERENCE_DATE_1'
173179 , p_source_type_code => 'Y'
173180 , p_source_application_id => 602
173181 );
173182 l_rec_acct_attrs.array_acct_attr_code(3) := 'GL_TRANSFER_FLAG';
173183 l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_38');
173184
173185
173186 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
173187
173188 XLA_AE_HEADER_PKG.SetJeCategoryName;
173189
173190 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
173191 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
173192 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
173193 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
173194 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
173195
173196
173197 -- No header level analytical criteria
173198
173199 --
173200 --accounting attribute enhancement, bug 3612931
173201 --
173202 l_trx_reversal_source := SUBSTR(NULL, 1,30);
173203
173204 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
173205 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
173206
173207 xla_accounting_err_pkg.build_message
173208 (p_appli_s_name => 'XLA'
173209 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
173210 ,p_token_1 => 'ACCT_ATTR_NAME'
173211 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
173212 ,p_token_2 => 'PRODUCT_NAME'
173213 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
173214 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
173215 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
173216 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
173217
173218 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
173219 --
173220 -- following sets the accounting attributes needed to reverse
173221 -- accounting for a distributeion
173222 --
173223 xla_ae_lines_pkg.SetTrxReversalAttrs
173224 (p_event_id => l_event_id
173225 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
173226 ,p_trx_reversal_source => l_trx_reversal_source);
173227
173228 END IF;
173229
173230
173231 ----------------------------------------------------------------
173232 -- 4262811 - update the header statuses to invalid in need be
173233 ----------------------------------------------------------------
173234 --
173235 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
173236
173237
173238 -----------------------------------------------
173239 -- No accrual reversal for the event class/type
173240 -----------------------------------------------
173241 ----------------------------------------------------------------
173242
173243 --
173244 -- this ends the header loop iteration for one bulk fetch
173245 --
173246 END LOOP;
173247
173248 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
173249 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
173250
173251 --
173252 -- insert dummy rows into lines gt table that were created due to
173253 -- transaction reversals
173254 --
173255 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
173256 l_result := XLA_AE_LINES_PKG.InsertLines;
173257 END IF;
173258
173259 --
173260 -- reset the temp_line_num for each set of events fetched from header
173261 -- cursor rather than doing it for each new event in line cursor
173262 -- Bug 3939231
173263 --
173264 xla_ae_lines_pkg.g_temp_line_num := 0;
173265
173266
173267
173268 --
173269 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
173270 --
173271 --
173272 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173273
173274 trace
173275 (p_msg => 'SQL - FETCH line_cur'
173276 ,p_level => C_LEVEL_STATEMENT
173277 ,p_module => l_log_module);
173278
173279 END IF;
173280 --
173281 --
173282 LOOP
173283 --
173284 FETCH line_cur BULK COLLECT INTO
173285 l_array_entity_id
173286 , l_array_legal_entity_id
173287 , l_array_entity_code
173288 , l_array_transaction_num
173289 , l_array_event_id
173290 , l_array_class_code
173291 , l_array_event_type
173292 , l_array_event_number
173293 , l_array_event_date
173294 , l_array_transaction_date
173295 , l_array_reference_num_1
173296 , l_array_reference_num_2
173297 , l_array_reference_num_3
173298 , l_array_reference_num_4
173299 , l_array_reference_char_1
173300 , l_array_reference_char_2
173301 , l_array_reference_char_3
173302 , l_array_reference_char_4
173303 , l_array_reference_date_1
173304 , l_array_reference_date_2
173305 , l_array_reference_date_3
173306 , l_array_reference_date_4
173307 , l_array_event_created_by
173308 , l_array_budgetary_control_flag
173309 , l_array_extract_line_num
173310 , l_array_source_4
173311 , l_array_source_11
173312 , l_array_source_15
173313 , l_array_source_18
173314 , l_array_source_19
173315 , l_array_source_20
173316 , l_array_source_21
173317 , l_array_source_22
173318 , l_array_source_24
173319 LIMIT l_rows;
173320
173321 --
173322 IF (C_LEVEL_EVENT >= g_log_level) THEN
173323 trace
173324 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
173325 ,p_level => C_LEVEL_EVENT
173326 ,p_module => l_log_module);
173327 END IF;
173328 --
173329 EXIT WHEN l_array_entity_id.count = 0;
173330
173331 XLA_AE_LINES_PKG.g_rec_lines := null;
173332
173333 --
173334 -- Bug 4458708
173335 --
173336 XLA_AE_LINES_PKG.g_LineNumber := 0;
173337 --
173338 --
173339
173340 FOR Idx IN 1..l_array_event_id.count LOOP
173341 --
173342 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
173343 --
173344 l_event_id := l_array_event_id(idx); -- 5648433
173345
173346 --
173347 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
173348 --
173349
173350 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
173351 (g_array_event(l_event_id).array_value_num('header_index'))
173352 ,'N'
173353 ) <> 'Y'
173354 THEN
173355 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173356 trace
173357 (p_msg => 'Trancaction revesal option is not Y '
173358 ,p_level => C_LEVEL_STATEMENT
173359 ,p_module => l_log_module);
173360 END IF;
173361
173362 --
173363 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
173364 --
173365 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
173366 --
173367 -- set event info as cache for other routines to refer event attributes
173368 --
173369
173370 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
173371 l_previous_event_id := l_event_id;
173372
173373 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
173374 (p_application_id => p_application_id
173375 ,p_primary_ledger_id => p_primary_ledger_id
173376 ,p_base_ledger_id => p_base_ledger_id
173377 ,p_target_ledger_id => p_target_ledger_id
173378 ,p_entity_id => l_array_entity_id(Idx)
173379 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
173380 ,p_entity_code => l_array_entity_code(Idx)
173381 ,p_transaction_num => l_array_transaction_num(Idx)
173382 ,p_event_id => l_array_event_id(Idx)
173383 ,p_event_class_code => l_array_class_code(Idx)
173384 ,p_event_type_code => l_array_event_type(Idx)
173385 ,p_event_number => l_array_event_number(Idx)
173386 ,p_event_date => l_array_event_date(Idx)
173387 ,p_transaction_date => l_array_transaction_date(Idx)
173388 ,p_reference_num_1 => l_array_reference_num_1(Idx)
173389 ,p_reference_num_2 => l_array_reference_num_2(Idx)
173390 ,p_reference_num_3 => l_array_reference_num_3(Idx)
173391 ,p_reference_num_4 => l_array_reference_num_4(Idx)
173392 ,p_reference_char_1 => l_array_reference_char_1(Idx)
173393 ,p_reference_char_2 => l_array_reference_char_2(Idx)
173394 ,p_reference_char_3 => l_array_reference_char_3(Idx)
173395 ,p_reference_char_4 => l_array_reference_char_4(Idx)
173396 ,p_reference_date_1 => l_array_reference_date_1(Idx)
173397 ,p_reference_date_2 => l_array_reference_date_2(Idx)
173398 ,p_reference_date_3 => l_array_reference_date_3(Idx)
173399 ,p_reference_date_4 => l_array_reference_date_4(Idx)
173400 ,p_event_created_by => l_array_event_created_by(Idx)
173401 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
173402 --
173403 END IF;
173404
173405
173406
173407 --
173408 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
173409
173410 l_acct_reversal_source := SUBSTR(NULL, 1,30);
173411
173412 IF l_continue_with_lines THEN
173413 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
173414 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
173415
173416 xla_accounting_err_pkg.build_message
173417 (p_appli_s_name => 'XLA'
173418 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
173419 ,p_token_1 => 'LINE_NUMBER'
173420 ,p_value_1 => l_array_extract_line_num(Idx)
173421 ,p_token_2 => 'PRODUCT_NAME'
173422 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
173423 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
173424 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
173425 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
173426
173427 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
173428 --
173429 -- following sets the accounting attributes needed to reverse
173430 -- accounting for a distributeion
173431 --
173432
173433 --
173434 -- 5217187
173435 --
173436 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
173437 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
173438 g_array_event(l_event_id).array_value_num('header_index'));
173439 --
173440 --
173441
173442 -- No reversal code generated
173443
173444 xla_ae_lines_pkg.SetAcctReversalAttrs
173445 (p_event_id => l_event_id
173446 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
173447 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173448 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
173449 END IF;
173450
173451 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
173452 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
173453
173454 --
173455 AcctLineType_15 (
173456 p_application_id => p_application_id
173457 ,p_event_id => l_event_id
173458 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173459 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173460 ,p_actual_flag => l_actual_flag
173461 ,p_balance_type_code => l_balance_type_code
173462 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173463
173464 , p_source_4 => l_array_source_4(Idx)
173465 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173466 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173467 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173468 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173469 , p_source_11 => l_array_source_11(Idx)
173470 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173471 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173472 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173473 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173474 , p_source_15 => l_array_source_15(Idx)
173475 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173476 , p_source_18 => l_array_source_18(Idx)
173477 , p_source_19 => l_array_source_19(Idx)
173478 , p_source_20 => l_array_source_20(Idx)
173479 , p_source_21 => l_array_source_21(Idx)
173480 , p_source_22 => l_array_source_22(Idx)
173481 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173482 , p_source_24 => l_array_source_24(Idx)
173483 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173484 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173485 );
173486 If(l_balance_type_code = 'A') THEN
173487 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173488 END IF;
173489
173490 --
173491
173492
173493 --
173494 AcctLineType_40 (
173495 p_application_id => p_application_id
173496 ,p_event_id => l_event_id
173497 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173498 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173499 ,p_actual_flag => l_actual_flag
173500 ,p_balance_type_code => l_balance_type_code
173501 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173502
173503 , p_source_4 => l_array_source_4(Idx)
173504 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173505 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173506 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173507 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173508 , p_source_11 => l_array_source_11(Idx)
173509 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173510 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173511 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173512 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173513 , p_source_15 => l_array_source_15(Idx)
173514 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173515 , p_source_18 => l_array_source_18(Idx)
173516 , p_source_19 => l_array_source_19(Idx)
173517 , p_source_20 => l_array_source_20(Idx)
173518 , p_source_21 => l_array_source_21(Idx)
173519 , p_source_22 => l_array_source_22(Idx)
173520 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173521 , p_source_24 => l_array_source_24(Idx)
173522 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173523 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173524 );
173525 If(l_balance_type_code = 'A') THEN
173526 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173527 END IF;
173528
173529 --
173530
173531
173532 --
173533 AcctLineType_136 (
173534 p_application_id => p_application_id
173535 ,p_event_id => l_event_id
173536 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173537 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173538 ,p_actual_flag => l_actual_flag
173539 ,p_balance_type_code => l_balance_type_code
173540 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173541
173542 , p_source_4 => l_array_source_4(Idx)
173543 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173544 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173545 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173546 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173547 , p_source_11 => l_array_source_11(Idx)
173548 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173549 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173550 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173551 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173552 , p_source_15 => l_array_source_15(Idx)
173553 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173554 , p_source_18 => l_array_source_18(Idx)
173555 , p_source_19 => l_array_source_19(Idx)
173556 , p_source_20 => l_array_source_20(Idx)
173557 , p_source_21 => l_array_source_21(Idx)
173558 , p_source_22 => l_array_source_22(Idx)
173559 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173560 , p_source_24 => l_array_source_24(Idx)
173561 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173562 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173563 );
173564 If(l_balance_type_code = 'A') THEN
173565 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173566 END IF;
173567
173568 --
173569
173570
173571 --
173572 AcctLineType_172 (
173573 p_application_id => p_application_id
173574 ,p_event_id => l_event_id
173575 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173576 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173577 ,p_actual_flag => l_actual_flag
173578 ,p_balance_type_code => l_balance_type_code
173579 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173580
173581 , p_source_4 => l_array_source_4(Idx)
173582 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173583 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173584 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173585 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173586 , p_source_11 => l_array_source_11(Idx)
173587 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173588 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173589 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173590 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173591 , p_source_15 => l_array_source_15(Idx)
173592 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173593 , p_source_18 => l_array_source_18(Idx)
173594 , p_source_19 => l_array_source_19(Idx)
173595 , p_source_20 => l_array_source_20(Idx)
173596 , p_source_21 => l_array_source_21(Idx)
173597 , p_source_22 => l_array_source_22(Idx)
173598 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173599 , p_source_24 => l_array_source_24(Idx)
173600 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173601 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173602 );
173603 If(l_balance_type_code = 'A') THEN
173604 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173605 END IF;
173606
173607 --
173608
173609
173610 --
173611 AcctLineType_192 (
173612 p_application_id => p_application_id
173613 ,p_event_id => l_event_id
173614 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173615 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173616 ,p_actual_flag => l_actual_flag
173617 ,p_balance_type_code => l_balance_type_code
173618 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173619
173620 , p_source_4 => l_array_source_4(Idx)
173621 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173622 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173623 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173624 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173625 , p_source_11 => l_array_source_11(Idx)
173626 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173627 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173628 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173629 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173630 , p_source_15 => l_array_source_15(Idx)
173631 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173632 , p_source_18 => l_array_source_18(Idx)
173633 , p_source_19 => l_array_source_19(Idx)
173634 , p_source_20 => l_array_source_20(Idx)
173635 , p_source_21 => l_array_source_21(Idx)
173636 , p_source_22 => l_array_source_22(Idx)
173637 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173638 , p_source_24 => l_array_source_24(Idx)
173639 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173640 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173641 );
173642 If(l_balance_type_code = 'A') THEN
173643 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173644 END IF;
173645
173646 --
173647
173648
173649 --
173650 AcctLineType_232 (
173651 p_application_id => p_application_id
173652 ,p_event_id => l_event_id
173653 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173654 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173655 ,p_actual_flag => l_actual_flag
173656 ,p_balance_type_code => l_balance_type_code
173657 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173658
173659 , p_source_4 => l_array_source_4(Idx)
173660 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173661 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173662 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173663 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173664 , p_source_11 => l_array_source_11(Idx)
173665 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173666 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173667 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173668 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173669 , p_source_15 => l_array_source_15(Idx)
173670 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173671 , p_source_18 => l_array_source_18(Idx)
173672 , p_source_19 => l_array_source_19(Idx)
173673 , p_source_20 => l_array_source_20(Idx)
173674 , p_source_21 => l_array_source_21(Idx)
173675 , p_source_22 => l_array_source_22(Idx)
173676 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173677 , p_source_24 => l_array_source_24(Idx)
173678 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173679 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173680 );
173681 If(l_balance_type_code = 'A') THEN
173682 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173683 END IF;
173684
173685 --
173686
173687
173688 --
173689 AcctLineType_235 (
173690 p_application_id => p_application_id
173691 ,p_event_id => l_event_id
173692 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173693 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173694 ,p_actual_flag => l_actual_flag
173695 ,p_balance_type_code => l_balance_type_code
173696 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173697
173698 , p_source_4 => l_array_source_4(Idx)
173699 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173700 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173701 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173702 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173703 , p_source_11 => l_array_source_11(Idx)
173704 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173705 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173706 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173707 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173708 , p_source_15 => l_array_source_15(Idx)
173709 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173710 , p_source_18 => l_array_source_18(Idx)
173711 , p_source_19 => l_array_source_19(Idx)
173712 , p_source_20 => l_array_source_20(Idx)
173713 , p_source_21 => l_array_source_21(Idx)
173714 , p_source_22 => l_array_source_22(Idx)
173715 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173716 , p_source_24 => l_array_source_24(Idx)
173717 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173718 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173719 );
173720 If(l_balance_type_code = 'A') THEN
173721 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173722 END IF;
173723
173724 --
173725
173726
173727 --
173728 AcctLineType_248 (
173729 p_application_id => p_application_id
173730 ,p_event_id => l_event_id
173731 ,p_calculate_acctd_flag => l_calculate_acctd_flag
173732 ,p_calculate_g_l_flag => l_calculate_g_l_flag
173733 ,p_actual_flag => l_actual_flag
173734 ,p_balance_type_code => l_balance_type_code
173735 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
173736
173737 , p_source_4 => l_array_source_4(Idx)
173738 , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
173739 , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
173740 , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
173741 , p_source_10 => g_array_event(l_event_id).array_value_num('source_10')
173742 , p_source_11 => l_array_source_11(Idx)
173743 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
173744 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
173745 , p_source_13 => g_array_event(l_event_id).array_value_num('source_13')
173746 , p_source_14 => g_array_event(l_event_id).array_value_num('source_14')
173747 , p_source_15 => l_array_source_15(Idx)
173748 , p_source_16 => g_array_event(l_event_id).array_value_num('source_16')
173749 , p_source_18 => l_array_source_18(Idx)
173750 , p_source_19 => l_array_source_19(Idx)
173751 , p_source_20 => l_array_source_20(Idx)
173752 , p_source_21 => l_array_source_21(Idx)
173753 , p_source_22 => l_array_source_22(Idx)
173754 , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
173755 , p_source_24 => l_array_source_24(Idx)
173756 , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
173757 , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
173758 );
173759 If(l_balance_type_code = 'A') THEN
173760 l_actual_gain_loss_ref := l_gain_or_loss_ref;
173761 END IF;
173762
173763 --
173764
173765 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
173766 -- or secondary ledger that has different currency with primary
173767 -- or alc that is calculated by sla
173768 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
173769 (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'))
173770
173771 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
173772 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
173773 AND (l_actual_flag = 'A')) THEN
173774 XLA_AE_LINES_PKG.CreateGainOrLossLines(
173775 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
173776 ,p_application_id => p_application_id
173777 ,p_amb_context_code => 'DEFAULT'
173778 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
173779 ,p_event_class_code => C_EVENT_CLASS_CODE
173780 ,p_event_type_code => C_EVENT_TYPE_CODE
173781
173782 ,p_gain_ccid => -1
173783 ,p_loss_ccid => -1
173784
173785 ,p_actual_flag => l_actual_flag
173786 ,p_enc_flag => null
173787 ,p_actual_g_l_ref => l_actual_gain_loss_ref
173788 ,p_enc_g_l_ref => null
173789 );
173790 END IF;
173791 END IF;
173792 END IF;
173793
173794 ELSE
173795 --
173796 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
173797 --
173798 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173799 trace
173800 (p_msg => 'Trancaction revesal option is Y'
173801 ,p_level => C_LEVEL_STATEMENT
173802 ,p_module => l_log_module);
173803 END IF;
173804 END IF;
173805
173806 END LOOP;
173807 l_result := XLA_AE_LINES_PKG.InsertLines ;
173808 end loop;
173809 close line_cur;
173810
173811
173812 --
173813 -- insert headers into xla_ae_headers_gt table
173814 --
173815 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
173816
173817 -- insert into errors table here.
173818
173819 END LOOP;
173820
173821 --
173822 -- 4865292
173823 --
173824 -- Compare g_hdr_extract_count with event count in
173825 -- CreateHeadersAndLines.
173826 --
173827 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
173828
173829 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173830 trace (p_msg => '# rows extracted from header extract objects '
173831 || ' (running total): '
173832 || g_hdr_extract_count
173833 ,p_level => C_LEVEL_STATEMENT
173834 ,p_module => l_log_module);
173835 END IF;
173836
173837 CLOSE header_cur;
173838 --
173839
173840 --
173841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173842 trace
173843 (p_msg => 'END of EventClass_281'
173844 ,p_level => C_LEVEL_PROCEDURE
173845 ,p_module => l_log_module);
173846 END IF;
173847 --
173848 RETURN l_result;
173849 EXCEPTION
173850 WHEN xla_exceptions_pkg.application_exception THEN
173851
173852 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
173853
173854
173855 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
173856
173857 RAISE;
173858
173859 WHEN NO_DATA_FOUND THEN
173860
173861 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
173862 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
173863
173864 FOR header_record IN header_cur
173865 LOOP
173866 l_array_header_events(header_record.event_id) := header_record.event_id;
173867 END LOOP;
173868
173869 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
173870 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
173871
173872 fnd_file.put_line(fnd_file.LOG, ' ');
173873 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
173874 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
173875 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
173876
173877 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
173878 LOOP
173879 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
173880 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
173881 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
173882 END IF;
173883 END LOOP;
173884
173885 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
173886 fnd_file.put_line(fnd_file.LOG, ' ');
173887
173888
173889 xla_exceptions_pkg.raise_message
173890 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_281');
173891
173892
173893 WHEN OTHERS THEN
173894 xla_exceptions_pkg.raise_message
173895 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_281');
173896 END EventClass_281;
173897 --
173898
173899 ---------------------------------------
173900 --
173901 -- PRIVATE PROCEDURE
173902 -- insert_sources_282
173903 --
173904 ----------------------------------------
173905 --
173906 PROCEDURE insert_sources_282(
173907 p_target_ledger_id IN NUMBER
173908 , p_language IN VARCHAR2
173909 , p_sla_ledger_id IN NUMBER
173910 , p_pad_start_date IN DATE
173911 , p_pad_end_date IN DATE
173912 )
173913 IS
173914
173915 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RCPT_REC_INSP_ALL';
173916 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RCPT_REC_INSP';
173917 p_apps_owner VARCHAR2(30);
173918 l_log_module VARCHAR2(240);
173919 BEGIN
173920 IF g_log_enabled THEN
173921 l_log_module := C_DEFAULT_MODULE||'.insert_sources_282';
173922 END IF;
173923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
173924
173925 trace
173926 (p_msg => 'BEGIN of insert_sources_282'
173927 ,p_level => C_LEVEL_PROCEDURE
173928 ,p_module => l_log_module);
173929
173930 END IF;
173931
173932 -- select APPS owner
173933 SELECT oracle_username
173934 INTO p_apps_owner
173935 FROM fnd_oracle_userid
173936 WHERE read_only_flag = 'U'
173937 ;
173938
173939 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
173940 trace
173941 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
173942 ' - p_language = '||p_language||
173943 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
173944 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
173945 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
173946 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
173947 ,p_level => C_LEVEL_STATEMENT
173948 ,p_module => l_log_module);
173949 END IF;
173950
173951
173952 --
173953 INSERT INTO xla_diag_sources --hdr2
173954 (
173955 event_id
173956 , ledger_id
173957 , sla_ledger_id
173958 , description_language
173959 , object_name
173960 , object_type_code
173961 , line_number
173962 , source_application_id
173963 , source_type_code
173964 , source_code
173965 , source_value
173966 , source_meaning
173967 , created_by
173968 , creation_date
173969 , last_update_date
173970 , last_updated_by
173971 , last_update_login
173972 , program_update_date
173973 , program_application_id
173974 , program_id
173975 , request_id
173976 )
173977 SELECT
173978 event_id
173979 , p_target_ledger_id
173980 , p_sla_ledger_id
173981 , p_language
173982 , object_name
173983 , object_type_code
173984 , line_number
173985 , source_application_id
173986 , source_type_code
173987 , source_code
173988 , SUBSTR(source_value ,1,1996)
173989 , SUBSTR(source_meaning ,1,200)
173990 , xla_environment_pkg.g_Usr_Id
173991 , TRUNC(SYSDATE)
173992 , TRUNC(SYSDATE)
173993 , xla_environment_pkg.g_Usr_Id
173994 , xla_environment_pkg.g_Login_Id
173995 , TRUNC(SYSDATE)
173996 , xla_environment_pkg.g_Prog_Appl_Id
173997 , xla_environment_pkg.g_Prog_Id
173998 , xla_environment_pkg.g_Req_Id
173999 FROM (
174000 SELECT xet.event_id event_id
174001 , 0 line_number
174002 , CASE r
174003 WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V'
174004 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V'
174005 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V'
174006 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V'
174007 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V'
174008 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V'
174009
174010 ELSE null
174011 END object_name
174012 , CASE r
174013 WHEN 1 THEN 'HEADER'
174014 WHEN 2 THEN 'HEADER'
174015 WHEN 3 THEN 'HEADER'
174016 WHEN 4 THEN 'HEADER'
174017 WHEN 5 THEN 'HEADER'
174018 WHEN 6 THEN 'HEADER'
174019
174020 ELSE null
174021 END object_type_code
174022 , CASE r
174023 WHEN 1 THEN '707'
174024 WHEN 2 THEN '707'
174025 WHEN 3 THEN '707'
174026 WHEN 4 THEN '707'
174027 WHEN 5 THEN '707'
174028 WHEN 6 THEN '707'
174029
174030 ELSE null
174031 END source_application_id
174032 , 'S' source_type_code
174033 , CASE r
174034 WHEN 1 THEN 'DISTRIBUTION_TYPE'
174035 WHEN 2 THEN 'CURRENCY_CODE'
174036 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
174037 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
174038 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
174039 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
174040
174041 ELSE null
174042 END source_code
174043 , CASE r
174044 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
174045 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
174046 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
174047 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
174048 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
174049 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
174050
174051 ELSE null
174052 END source_value
174053 , CASE r
174054 WHEN 1 THEN fvl12.meaning
174055 WHEN 6 THEN fvl38.meaning
174056
174057 ELSE null
174058 END source_meaning
174059 FROM xla_events_gt xet
174060 , CST_XLA_RCV_HEADERS_V h1
174061 , fnd_lookup_values fvl12
174062 , fnd_lookup_values fvl38
174063 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
174064 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174065 AND xet.event_class_code = C_EVENT_CLASS_CODE
174066 AND h1.event_id = xet.event_id
174067 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
174068 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
174069 AND fvl12.view_application_id(+) = 700
174070 AND fvl12.language(+) = USERENV('LANG')
174071 AND fvl38.lookup_type(+) = 'YES_NO'
174072 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
174073 AND fvl38.view_application_id(+) = 0
174074 AND fvl38.language(+) = USERENV('LANG')
174075
174076 )
174077 ;
174078 --
174079 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174080
174081 trace
174082 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
174083 ,p_level => C_LEVEL_STATEMENT
174084 ,p_module => l_log_module);
174085
174086 END IF;
174087 --
174088
174089
174090
174091 --
174092 INSERT INTO xla_diag_sources --line2
174093 (
174094 event_id
174095 , ledger_id
174096 , sla_ledger_id
174097 , description_language
174098 , object_name
174099 , object_type_code
174100 , line_number
174101 , source_application_id
174102 , source_type_code
174103 , source_code
174104 , source_value
174105 , source_meaning
174106 , created_by
174107 , creation_date
174108 , last_update_date
174109 , last_updated_by
174110 , last_update_login
174111 , program_update_date
174112 , program_application_id
174113 , program_id
174114 , request_id
174115 )
174116 SELECT event_id
174117 , p_target_ledger_id
174118 , p_sla_ledger_id
174119 , p_language
174120 , object_name
174121 , object_type_code
174122 , line_number
174123 , source_application_id
174124 , source_type_code
174125 , source_code
174126 , SUBSTR(source_value,1,1996)
174127 , SUBSTR(source_meaning ,1,200)
174128 , xla_environment_pkg.g_Usr_Id
174129 , TRUNC(SYSDATE)
174130 , TRUNC(SYSDATE)
174131 , xla_environment_pkg.g_Usr_Id
174132 , xla_environment_pkg.g_Login_Id
174133 , TRUNC(SYSDATE)
174134 , xla_environment_pkg.g_Prog_Appl_Id
174135 , xla_environment_pkg.g_Prog_Id
174136 , xla_environment_pkg.g_Req_Id
174137 FROM (
174138 SELECT xet.event_id event_id
174139 , l2.line_number line_number
174140 , CASE r
174141 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
174142 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
174143 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
174144 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
174145 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
174146
174147 ELSE null
174148 END object_name
174149 , CASE r
174150 WHEN 1 THEN 'LINE'
174151 WHEN 2 THEN 'LINE'
174152 WHEN 3 THEN 'LINE'
174153 WHEN 4 THEN 'LINE'
174154 WHEN 5 THEN 'LINE'
174155
174156 ELSE null
174157 END object_type_code
174158 , CASE r
174159 WHEN 1 THEN '707'
174160 WHEN 2 THEN '707'
174161 WHEN 3 THEN '707'
174162 WHEN 4 THEN '707'
174163 WHEN 5 THEN '707'
174164
174165 ELSE null
174166 END source_application_id
174167 , 'S' source_type_code
174168 , CASE r
174169 WHEN 1 THEN 'CODE_COMBINATION_ID'
174170 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
174171 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
174172 WHEN 4 THEN 'ENTERED_AMOUNT'
174173 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
174174
174175 ELSE null
174176 END source_code
174177 , CASE r
174178 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
174179 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
174180 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
174181 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
174182 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
174183
174184 ELSE null
174185 END source_value
174186 , null source_meaning
174187 FROM xla_events_gt xet
174188 , CST_XLA_RCV_LINES_V l2
174189 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
174190 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
174191 AND xet.event_class_code = C_EVENT_CLASS_CODE
174192 AND l2.event_id = xet.event_id
174193
174194 )
174195 ;
174196 --
174197 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174198
174199 trace
174200 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
174201 ,p_level => C_LEVEL_STATEMENT
174202 ,p_module => l_log_module);
174203
174204 END IF;
174205
174206
174207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174208 trace
174209 (p_msg => 'END of insert_sources_282'
174210 ,p_level => C_LEVEL_PROCEDURE
174211 ,p_module => l_log_module);
174212 END IF;
174213 EXCEPTION
174214 WHEN xla_exceptions_pkg.application_exception THEN
174215 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174216 trace
174217 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174218 ,p_level => C_LEVEL_EXCEPTION
174219 ,p_module => l_log_module);
174220 END IF;
174221 RAISE;
174222 WHEN OTHERS THEN
174223 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
174224 trace
174225 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
174226 ,p_level => C_LEVEL_EXCEPTION
174227 ,p_module => l_log_module);
174228 END IF;
174229 xla_exceptions_pkg.raise_message
174230 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_282');
174231 END insert_sources_282;
174232 --
174233
174234 ---------------------------------------
174235 --
174236 -- PRIVATE FUNCTION
174237 -- EventClass_282
174238 --
174239 ----------------------------------------
174240 --
174241 FUNCTION EventClass_282
174242 (p_application_id IN NUMBER
174243 ,p_base_ledger_id IN NUMBER
174244 ,p_target_ledger_id IN NUMBER
174245 ,p_language IN VARCHAR2
174246 ,p_currency_code IN VARCHAR2
174247 ,p_sla_ledger_id IN NUMBER
174248 ,p_pad_start_date IN DATE
174249 ,p_pad_end_date IN DATE
174250 ,p_primary_ledger_id IN NUMBER)
174251 RETURN BOOLEAN IS
174252 --
174253 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RCPT_REC_INSP_ALL';
174254 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RCPT_REC_INSP';
174255
174256 l_calculate_acctd_flag VARCHAR2(1) :='N';
174257 l_calculate_g_l_flag VARCHAR2(1) :='N';
174258 --
174259 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174260 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174261 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174262 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174263 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174264 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174265 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174266 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174267 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174268 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174269 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174270 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174271 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174272 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
174273 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174274 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174275 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174276 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
174277 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174278 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174279 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174280 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
174281 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
174282 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
174283 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
174284 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
174285
174286 l_event_id NUMBER;
174287 l_previous_event_id NUMBER;
174288 l_first_event_id NUMBER;
174289 l_last_event_id NUMBER;
174290
174291 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
174292 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
174293 --
174294 --
174295 l_result BOOLEAN := TRUE;
174296 l_rows NUMBER := 1000;
174297 l_event_type_name VARCHAR2(80) := 'All';
174298 l_event_class_name VARCHAR2(80) := 'Receipt into Receiving Inspection';
174299 l_description VARCHAR2(4000);
174300 l_transaction_reversal NUMBER;
174301 l_ae_header_id NUMBER;
174302 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
174303 l_log_module VARCHAR2(240);
174304 --
174305 l_acct_reversal_source VARCHAR2(30);
174306 l_trx_reversal_source VARCHAR2(30);
174307
174308 l_continue_with_lines BOOLEAN := TRUE;
174309 --
174310 l_acc_rev_gl_date_source DATE; -- 4262811
174311 --
174312 type t_array_event_id is table of number index by binary_integer;
174313
174314 l_rec_array_event t_rec_array_event;
174315 l_null_rec_array_event t_rec_array_event;
174316 l_array_ae_header_id xla_number_array_type;
174317 l_actual_flag VARCHAR2(1) := NULL;
174318 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
174319 l_balance_type_code VARCHAR2(1) :=NULL;
174320 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
174321
174322 --
174323 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
174324 --
174325
174326 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
174327 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
174328 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
174329 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
174330 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
174331 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
174332
174333 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
174334 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
174335 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
174336 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174337 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
174338
174339 l_array_source_12 t_array_source_12;
174340 l_array_source_12_meaning t_array_lookup_meaning;
174341 l_array_source_15 t_array_source_15;
174342 l_array_source_19 t_array_source_19;
174343 l_array_source_20 t_array_source_20;
174344 l_array_source_21 t_array_source_21;
174345 l_array_source_38 t_array_source_38;
174346 l_array_source_38_meaning t_array_lookup_meaning;
174347
174348 l_array_source_4 t_array_source_4;
174349 l_array_source_5 t_array_source_5;
174350 l_array_source_11 t_array_source_11;
174351 l_array_source_18 t_array_source_18;
174352 l_array_source_22 t_array_source_22;
174353
174354 --
174355 CURSOR header_cur
174356 IS
174357 SELECT /*+ leading(xet) cardinality(xet,1) */
174358 -- Event Class Code: RCPT_REC_INSP
174359 xet.entity_id
174360 ,xet.legal_entity_id
174361 ,xet.entity_code
174362 ,xet.transaction_number
174363 ,xet.event_id
174364 ,xet.event_class_code
174365 ,xet.event_type_code
174366 ,xet.event_number
174367 ,xet.event_date
174368 ,xet.transaction_date
174369 ,xet.reference_num_1
174370 ,xet.reference_num_2
174371 ,xet.reference_num_3
174372 ,xet.reference_num_4
174373 ,xet.reference_char_1
174374 ,xet.reference_char_2
174375 ,xet.reference_char_3
174376 ,xet.reference_char_4
174377 ,xet.reference_date_1
174378 ,xet.reference_date_2
174379 ,xet.reference_date_3
174380 ,xet.reference_date_4
174381 ,xet.event_created_by
174382 ,xet.budgetary_control_flag
174383 , h1.DISTRIBUTION_TYPE source_12
174384 , fvl12.meaning source_12_meaning
174385 , h1.CURRENCY_CODE source_15
174386 , h1.CURRENCY_CONVERSION_DATE source_19
174387 , h1.CURRENCY_CONVERSION_RATE source_20
174388 , h1.CURRENCY_CONVERSION_TYPE source_21
174389 , h1.TRANSFER_TO_GL_INDICATOR source_38
174390 , fvl38.meaning source_38_meaning
174391 FROM xla_events_gt xet
174392 , CST_XLA_RCV_HEADERS_V h1
174393 , fnd_lookup_values fvl12
174394 , fnd_lookup_values fvl38
174395 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
174396 and xet.event_class_code = C_EVENT_CLASS_CODE
174397 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
174398 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
174399 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
174400 AND fvl12.view_application_id(+) = 700
174401 AND fvl12.language(+) = USERENV('LANG')
174402 AND fvl38.lookup_type(+) = 'YES_NO'
174403 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
174404 AND fvl38.view_application_id(+) = 0
174405 AND fvl38.language(+) = USERENV('LANG')
174406
174407 ORDER BY event_id
174408 ;
174409
174410
174411 --
174412 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
174413 IS
174414 SELECT /*+ leading(xet) cardinality(xet,1) */
174415 -- Event Class Code: RCPT_REC_INSP
174416 xet.entity_id
174417 ,xet.legal_entity_id
174418 ,xet.entity_code
174419 ,xet.transaction_number
174420 ,xet.event_id
174421 ,xet.event_class_code
174422 ,xet.event_type_code
174423 ,xet.event_number
174424 ,xet.event_date
174425 ,xet.transaction_date
174426 ,xet.reference_num_1
174427 ,xet.reference_num_2
174428 ,xet.reference_num_3
174429 ,xet.reference_num_4
174430 ,xet.reference_char_1
174431 ,xet.reference_char_2
174432 ,xet.reference_char_3
174433 ,xet.reference_char_4
174434 ,xet.reference_date_1
174435 ,xet.reference_date_2
174436 ,xet.reference_date_3
174437 ,xet.reference_date_4
174438 ,xet.event_created_by
174439 ,xet.budgetary_control_flag
174440 , l2.LINE_NUMBER
174441 , l2.CODE_COMBINATION_ID source_4
174442 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
174443 , l2.DISTRIBUTION_IDENTIFIER source_11
174444 , l2.ENTERED_AMOUNT source_18
174445 , l2.ACCOUNTED_AMOUNT source_22
174446 FROM xla_events_gt xet
174447 , CST_XLA_RCV_LINES_V l2
174448 WHERE xet.event_id between x_first_event_id and x_last_event_id
174449 and xet.event_date between p_pad_start_date and p_pad_end_date
174450 and xet.event_class_code = C_EVENT_CLASS_CODE
174451 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
174452 ;
174453
174454 --
174455 BEGIN
174456 IF g_log_enabled THEN
174457 l_log_module := C_DEFAULT_MODULE||'.EventClass_282';
174458 END IF;
174459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
174460 trace
174461 (p_msg => 'BEGIN of EventClass_282'
174462 ,p_level => C_LEVEL_PROCEDURE
174463 ,p_module => l_log_module);
174464 END IF;
174465
174466 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174467 trace
174468 (p_msg => 'p_application_id = '||p_application_id||
174469 ' - p_base_ledger_id = '||p_base_ledger_id||
174470 ' - p_target_ledger_id = '||p_target_ledger_id||
174471 ' - p_language = '||p_language||
174472 ' - p_currency_code = '||p_currency_code||
174473 ' - p_sla_ledger_id = '||p_sla_ledger_id
174474 ,p_level => C_LEVEL_STATEMENT
174475 ,p_module => l_log_module);
174476 END IF;
174477 --
174478 -- initialze arrays
174479 --
174480 g_array_event.DELETE;
174481 l_rec_array_event := l_null_rec_array_event;
174482 --
174483 --------------------------------------
174484 -- 4262811 Initialze MPA Line Number
174485 --------------------------------------
174486 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
174487
174488 --
174489
174490 --
174491 OPEN header_cur;
174492 --
174493 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174494 trace
174495 (p_msg => 'SQL - FETCH header_cur'
174496 ,p_level => C_LEVEL_STATEMENT
174497 ,p_module => l_log_module);
174498 END IF;
174499 --
174500 LOOP
174501 FETCH header_cur BULK COLLECT INTO
174502 l_array_entity_id
174503 , l_array_legal_entity_id
174504 , l_array_entity_code
174505 , l_array_transaction_num
174506 , l_array_event_id
174507 , l_array_class_code
174508 , l_array_event_type
174509 , l_array_event_number
174510 , l_array_event_date
174511 , l_array_transaction_date
174512 , l_array_reference_num_1
174513 , l_array_reference_num_2
174514 , l_array_reference_num_3
174515 , l_array_reference_num_4
174516 , l_array_reference_char_1
174517 , l_array_reference_char_2
174518 , l_array_reference_char_3
174519 , l_array_reference_char_4
174520 , l_array_reference_date_1
174521 , l_array_reference_date_2
174522 , l_array_reference_date_3
174523 , l_array_reference_date_4
174524 , l_array_event_created_by
174525 , l_array_budgetary_control_flag
174526 , l_array_source_12
174527 , l_array_source_12_meaning
174528 , l_array_source_15
174529 , l_array_source_19
174530 , l_array_source_20
174531 , l_array_source_21
174532 , l_array_source_38
174533 , l_array_source_38_meaning
174534 LIMIT l_rows;
174535 --
174536 IF (C_LEVEL_EVENT >= g_log_level) THEN
174537 trace
174538 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
174539 ,p_level => C_LEVEL_EVENT
174540 ,p_module => l_log_module);
174541 END IF;
174542 --
174543 EXIT WHEN l_array_entity_id.COUNT = 0;
174544
174545 -- initialize arrays
174546 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
174547 XLA_AE_LINES_PKG.g_rec_lines := NULL;
174548
174549 --
174550 -- Bug 4458708
174551 --
174552 XLA_AE_LINES_PKG.g_LineNumber := 0;
174553
174554
174555 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
174556 g_last_hdr_idx := l_array_event_id.LAST;
174557 --
174558 -- loop for the headers. Each iteration is for each header extract row
174559 -- fetched in header cursor
174560 --
174561 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
174562
174563 --
174564 -- set event info as cache for other routines to refer event attributes
174565 --
174566 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174567 (p_application_id => p_application_id
174568 ,p_primary_ledger_id => p_primary_ledger_id
174569 ,p_base_ledger_id => p_base_ledger_id
174570 ,p_target_ledger_id => p_target_ledger_id
174571 ,p_entity_id => l_array_entity_id(hdr_idx)
174572 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
174573 ,p_entity_code => l_array_entity_code(hdr_idx)
174574 ,p_transaction_num => l_array_transaction_num(hdr_idx)
174575 ,p_event_id => l_array_event_id(hdr_idx)
174576 ,p_event_class_code => l_array_class_code(hdr_idx)
174577 ,p_event_type_code => l_array_event_type(hdr_idx)
174578 ,p_event_number => l_array_event_number(hdr_idx)
174579 ,p_event_date => l_array_event_date(hdr_idx)
174580 ,p_transaction_date => l_array_transaction_date(hdr_idx)
174581 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
174582 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
174583 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
174584 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
174585 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
174586 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
174587 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
174588 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
174589 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
174590 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
174591 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
174592 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
174593 ,p_event_created_by => l_array_event_created_by(hdr_idx)
174594 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
174595
174596 --
174597 -- set the status of entry to C_VALID (0)
174598 --
174599 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
174600
174601 --
174602 -- initialize a row for ae header
174603 --
174604 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
174605
174606 l_event_id := l_array_event_id(hdr_idx);
174607
174608 --
174609 -- storing the hdr_idx for event. May be used by line cursor.
174610 --
174611 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
174612
174613 --
174614 -- store sources from header extract. This can be improved to
174615 -- store only those sources from header extract that may be used in lines
174616 --
174617
174618 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
174619 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
174620 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
174621 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
174622 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
174623 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
174624 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
174625 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
174626
174627 --
174628 -- initilaize the status of ae headers for diffrent balance types
174629 -- the status is initialised to C_NOT_CREATED (2)
174630 --
174631 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174632 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174633 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
174634
174635 --
174636 -- call api to validate and store accounting attributes for header
174637 --
174638
174639 ------------------------------------------------------------
174640 -- Accrual Reversal : to get date for Standard Source (NONE)
174641 ------------------------------------------------------------
174642 l_acc_rev_gl_date_source := NULL;
174643
174644 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
174645 l_rec_acct_attrs.array_date_value(1) :=
174646 xla_ae_sources_pkg.GetSystemSourceDate(
174647 p_source_code => 'XLA_REFERENCE_DATE_1'
174648 , p_source_type_code => 'Y'
174649 , p_source_application_id => 602
174650 );
174651 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
174652 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
174653
174654
174655 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
174656
174657 XLA_AE_HEADER_PKG.SetJeCategoryName;
174658
174659 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
174660 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
174661 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
174662 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
174663 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
174664
174665
174666 -- No header level analytical criteria
174667
174668 --
174669 --accounting attribute enhancement, bug 3612931
174670 --
174671 l_trx_reversal_source := SUBSTR(NULL, 1,30);
174672
174673 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
174674 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
174675
174676 xla_accounting_err_pkg.build_message
174677 (p_appli_s_name => 'XLA'
174678 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
174679 ,p_token_1 => 'ACCT_ATTR_NAME'
174680 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
174681 ,p_token_2 => 'PRODUCT_NAME'
174682 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
174683 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
174684 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
174685 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
174686
174687 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
174688 --
174689 -- following sets the accounting attributes needed to reverse
174690 -- accounting for a distributeion
174691 --
174692 xla_ae_lines_pkg.SetTrxReversalAttrs
174693 (p_event_id => l_event_id
174694 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
174695 ,p_trx_reversal_source => l_trx_reversal_source);
174696
174697 END IF;
174698
174699
174700 ----------------------------------------------------------------
174701 -- 4262811 - update the header statuses to invalid in need be
174702 ----------------------------------------------------------------
174703 --
174704 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
174705
174706
174707 -----------------------------------------------
174708 -- No accrual reversal for the event class/type
174709 -----------------------------------------------
174710 ----------------------------------------------------------------
174711
174712 --
174713 -- this ends the header loop iteration for one bulk fetch
174714 --
174715 END LOOP;
174716
174717 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
174718 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
174719
174720 --
174721 -- insert dummy rows into lines gt table that were created due to
174722 -- transaction reversals
174723 --
174724 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
174725 l_result := XLA_AE_LINES_PKG.InsertLines;
174726 END IF;
174727
174728 --
174729 -- reset the temp_line_num for each set of events fetched from header
174730 -- cursor rather than doing it for each new event in line cursor
174731 -- Bug 3939231
174732 --
174733 xla_ae_lines_pkg.g_temp_line_num := 0;
174734
174735
174736
174737 --
174738 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
174739 --
174740 --
174741 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174742
174743 trace
174744 (p_msg => 'SQL - FETCH line_cur'
174745 ,p_level => C_LEVEL_STATEMENT
174746 ,p_module => l_log_module);
174747
174748 END IF;
174749 --
174750 --
174751 LOOP
174752 --
174753 FETCH line_cur BULK COLLECT INTO
174754 l_array_entity_id
174755 , l_array_legal_entity_id
174756 , l_array_entity_code
174757 , l_array_transaction_num
174758 , l_array_event_id
174759 , l_array_class_code
174760 , l_array_event_type
174761 , l_array_event_number
174762 , l_array_event_date
174763 , l_array_transaction_date
174764 , l_array_reference_num_1
174765 , l_array_reference_num_2
174766 , l_array_reference_num_3
174767 , l_array_reference_num_4
174768 , l_array_reference_char_1
174769 , l_array_reference_char_2
174770 , l_array_reference_char_3
174771 , l_array_reference_char_4
174772 , l_array_reference_date_1
174773 , l_array_reference_date_2
174774 , l_array_reference_date_3
174775 , l_array_reference_date_4
174776 , l_array_event_created_by
174777 , l_array_budgetary_control_flag
174778 , l_array_extract_line_num
174779 , l_array_source_4
174780 , l_array_source_5
174781 , l_array_source_11
174782 , l_array_source_18
174783 , l_array_source_22
174784 LIMIT l_rows;
174785
174786 --
174787 IF (C_LEVEL_EVENT >= g_log_level) THEN
174788 trace
174789 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
174790 ,p_level => C_LEVEL_EVENT
174791 ,p_module => l_log_module);
174792 END IF;
174793 --
174794 EXIT WHEN l_array_entity_id.count = 0;
174795
174796 XLA_AE_LINES_PKG.g_rec_lines := null;
174797
174798 --
174799 -- Bug 4458708
174800 --
174801 XLA_AE_LINES_PKG.g_LineNumber := 0;
174802 --
174803 --
174804
174805 FOR Idx IN 1..l_array_event_id.count LOOP
174806 --
174807 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
174808 --
174809 l_event_id := l_array_event_id(idx); -- 5648433
174810
174811 --
174812 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
174813 --
174814
174815 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
174816 (g_array_event(l_event_id).array_value_num('header_index'))
174817 ,'N'
174818 ) <> 'Y'
174819 THEN
174820 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
174821 trace
174822 (p_msg => 'Trancaction revesal option is not Y '
174823 ,p_level => C_LEVEL_STATEMENT
174824 ,p_module => l_log_module);
174825 END IF;
174826
174827 --
174828 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
174829 --
174830 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
174831 --
174832 -- set event info as cache for other routines to refer event attributes
174833 --
174834
174835 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
174836 l_previous_event_id := l_event_id;
174837
174838 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
174839 (p_application_id => p_application_id
174840 ,p_primary_ledger_id => p_primary_ledger_id
174841 ,p_base_ledger_id => p_base_ledger_id
174842 ,p_target_ledger_id => p_target_ledger_id
174843 ,p_entity_id => l_array_entity_id(Idx)
174844 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
174845 ,p_entity_code => l_array_entity_code(Idx)
174846 ,p_transaction_num => l_array_transaction_num(Idx)
174847 ,p_event_id => l_array_event_id(Idx)
174848 ,p_event_class_code => l_array_class_code(Idx)
174849 ,p_event_type_code => l_array_event_type(Idx)
174850 ,p_event_number => l_array_event_number(Idx)
174851 ,p_event_date => l_array_event_date(Idx)
174852 ,p_transaction_date => l_array_transaction_date(Idx)
174853 ,p_reference_num_1 => l_array_reference_num_1(Idx)
174854 ,p_reference_num_2 => l_array_reference_num_2(Idx)
174855 ,p_reference_num_3 => l_array_reference_num_3(Idx)
174856 ,p_reference_num_4 => l_array_reference_num_4(Idx)
174857 ,p_reference_char_1 => l_array_reference_char_1(Idx)
174858 ,p_reference_char_2 => l_array_reference_char_2(Idx)
174859 ,p_reference_char_3 => l_array_reference_char_3(Idx)
174860 ,p_reference_char_4 => l_array_reference_char_4(Idx)
174861 ,p_reference_date_1 => l_array_reference_date_1(Idx)
174862 ,p_reference_date_2 => l_array_reference_date_2(Idx)
174863 ,p_reference_date_3 => l_array_reference_date_3(Idx)
174864 ,p_reference_date_4 => l_array_reference_date_4(Idx)
174865 ,p_event_created_by => l_array_event_created_by(Idx)
174866 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
174867 --
174868 END IF;
174869
174870
174871
174872 --
174873 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
174874
174875 l_acct_reversal_source := SUBSTR(NULL, 1,30);
174876
174877 IF l_continue_with_lines THEN
174878 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
174879 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
174880
174881 xla_accounting_err_pkg.build_message
174882 (p_appli_s_name => 'XLA'
174883 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
174884 ,p_token_1 => 'LINE_NUMBER'
174885 ,p_value_1 => l_array_extract_line_num(Idx)
174886 ,p_token_2 => 'PRODUCT_NAME'
174887 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
174888 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
174889 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
174890 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
174891
174892 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
174893 --
174894 -- following sets the accounting attributes needed to reverse
174895 -- accounting for a distributeion
174896 --
174897
174898 --
174899 -- 5217187
174900 --
174901 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
174902 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
174903 g_array_event(l_event_id).array_value_num('header_index'));
174904 --
174905 --
174906
174907 -- No reversal code generated
174908
174909 xla_ae_lines_pkg.SetAcctReversalAttrs
174910 (p_event_id => l_event_id
174911 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
174912 ,p_calculate_acctd_flag => l_calculate_acctd_flag
174913 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
174914 END IF;
174915
174916 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
174917 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
174918
174919 --
174920 AcctLineType_10 (
174921 p_application_id => p_application_id
174922 ,p_event_id => l_event_id
174923 ,p_calculate_acctd_flag => l_calculate_acctd_flag
174924 ,p_calculate_g_l_flag => l_calculate_g_l_flag
174925 ,p_actual_flag => l_actual_flag
174926 ,p_balance_type_code => l_balance_type_code
174927 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
174928
174929 , p_source_4 => l_array_source_4(Idx)
174930 , p_source_5 => l_array_source_5(Idx)
174931 , p_source_11 => l_array_source_11(Idx)
174932 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
174933 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
174934 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
174935 , p_source_18 => l_array_source_18(Idx)
174936 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
174937 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
174938 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
174939 , p_source_22 => l_array_source_22(Idx)
174940 );
174941 If(l_balance_type_code = 'A') THEN
174942 l_actual_gain_loss_ref := l_gain_or_loss_ref;
174943 END IF;
174944
174945 --
174946
174947
174948 --
174949 AcctLineType_14 (
174950 p_application_id => p_application_id
174951 ,p_event_id => l_event_id
174952 ,p_calculate_acctd_flag => l_calculate_acctd_flag
174953 ,p_calculate_g_l_flag => l_calculate_g_l_flag
174954 ,p_actual_flag => l_actual_flag
174955 ,p_balance_type_code => l_balance_type_code
174956 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
174957
174958 , p_source_4 => l_array_source_4(Idx)
174959 , p_source_5 => l_array_source_5(Idx)
174960 , p_source_11 => l_array_source_11(Idx)
174961 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
174962 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
174963 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
174964 , p_source_18 => l_array_source_18(Idx)
174965 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
174966 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
174967 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
174968 , p_source_22 => l_array_source_22(Idx)
174969 );
174970 If(l_balance_type_code = 'A') THEN
174971 l_actual_gain_loss_ref := l_gain_or_loss_ref;
174972 END IF;
174973
174974 --
174975
174976
174977 --
174978 AcctLineType_57 (
174979 p_application_id => p_application_id
174980 ,p_event_id => l_event_id
174981 ,p_calculate_acctd_flag => l_calculate_acctd_flag
174982 ,p_calculate_g_l_flag => l_calculate_g_l_flag
174983 ,p_actual_flag => l_actual_flag
174984 ,p_balance_type_code => l_balance_type_code
174985 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
174986
174987 , p_source_4 => l_array_source_4(Idx)
174988 , p_source_5 => l_array_source_5(Idx)
174989 , p_source_11 => l_array_source_11(Idx)
174990 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
174991 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
174992 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
174993 , p_source_18 => l_array_source_18(Idx)
174994 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
174995 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
174996 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
174997 , p_source_22 => l_array_source_22(Idx)
174998 );
174999 If(l_balance_type_code = 'A') THEN
175000 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175001 END IF;
175002
175003 --
175004
175005
175006 --
175007 AcctLineType_61 (
175008 p_application_id => p_application_id
175009 ,p_event_id => l_event_id
175010 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175011 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175012 ,p_actual_flag => l_actual_flag
175013 ,p_balance_type_code => l_balance_type_code
175014 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175015
175016 , p_source_4 => l_array_source_4(Idx)
175017 , p_source_5 => l_array_source_5(Idx)
175018 , p_source_11 => l_array_source_11(Idx)
175019 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175020 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175021 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
175022 , p_source_18 => l_array_source_18(Idx)
175023 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
175024 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
175025 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
175026 , p_source_22 => l_array_source_22(Idx)
175027 );
175028 If(l_balance_type_code = 'A') THEN
175029 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175030 END IF;
175031
175032 --
175033
175034
175035 --
175036 AcctLineType_162 (
175037 p_application_id => p_application_id
175038 ,p_event_id => l_event_id
175039 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175040 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175041 ,p_actual_flag => l_actual_flag
175042 ,p_balance_type_code => l_balance_type_code
175043 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175044
175045 , p_source_4 => l_array_source_4(Idx)
175046 , p_source_5 => l_array_source_5(Idx)
175047 , p_source_11 => l_array_source_11(Idx)
175048 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175049 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175050 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
175051 , p_source_18 => l_array_source_18(Idx)
175052 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
175053 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
175054 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
175055 , p_source_22 => l_array_source_22(Idx)
175056 );
175057 If(l_balance_type_code = 'A') THEN
175058 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175059 END IF;
175060
175061 --
175062
175063
175064 --
175065 AcctLineType_238 (
175066 p_application_id => p_application_id
175067 ,p_event_id => l_event_id
175068 ,p_calculate_acctd_flag => l_calculate_acctd_flag
175069 ,p_calculate_g_l_flag => l_calculate_g_l_flag
175070 ,p_actual_flag => l_actual_flag
175071 ,p_balance_type_code => l_balance_type_code
175072 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
175073
175074 , p_source_4 => l_array_source_4(Idx)
175075 , p_source_5 => l_array_source_5(Idx)
175076 , p_source_11 => l_array_source_11(Idx)
175077 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
175078 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
175079 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
175080 , p_source_18 => l_array_source_18(Idx)
175081 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
175082 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
175083 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
175084 , p_source_22 => l_array_source_22(Idx)
175085 );
175086 If(l_balance_type_code = 'A') THEN
175087 l_actual_gain_loss_ref := l_gain_or_loss_ref;
175088 END IF;
175089
175090 --
175091
175092 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
175093 -- or secondary ledger that has different currency with primary
175094 -- or alc that is calculated by sla
175095 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
175096 (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'))
175097
175098 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
175099 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
175100 AND (l_actual_flag = 'A')) THEN
175101 XLA_AE_LINES_PKG.CreateGainOrLossLines(
175102 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
175103 ,p_application_id => p_application_id
175104 ,p_amb_context_code => 'DEFAULT'
175105 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
175106 ,p_event_class_code => C_EVENT_CLASS_CODE
175107 ,p_event_type_code => C_EVENT_TYPE_CODE
175108
175109 ,p_gain_ccid => -1
175110 ,p_loss_ccid => -1
175111
175112 ,p_actual_flag => l_actual_flag
175113 ,p_enc_flag => null
175114 ,p_actual_g_l_ref => l_actual_gain_loss_ref
175115 ,p_enc_g_l_ref => null
175116 );
175117 END IF;
175118 END IF;
175119 END IF;
175120
175121 ELSE
175122 --
175123 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
175124 --
175125 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175126 trace
175127 (p_msg => 'Trancaction revesal option is Y'
175128 ,p_level => C_LEVEL_STATEMENT
175129 ,p_module => l_log_module);
175130 END IF;
175131 END IF;
175132
175133 END LOOP;
175134 l_result := XLA_AE_LINES_PKG.InsertLines ;
175135 end loop;
175136 close line_cur;
175137
175138
175139 --
175140 -- insert headers into xla_ae_headers_gt table
175141 --
175142 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
175143
175144 -- insert into errors table here.
175145
175146 END LOOP;
175147
175148 --
175149 -- 4865292
175150 --
175151 -- Compare g_hdr_extract_count with event count in
175152 -- CreateHeadersAndLines.
175153 --
175154 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
175155
175156 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175157 trace (p_msg => '# rows extracted from header extract objects '
175158 || ' (running total): '
175159 || g_hdr_extract_count
175160 ,p_level => C_LEVEL_STATEMENT
175161 ,p_module => l_log_module);
175162 END IF;
175163
175164 CLOSE header_cur;
175165 --
175166
175167 --
175168 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175169 trace
175170 (p_msg => 'END of EventClass_282'
175171 ,p_level => C_LEVEL_PROCEDURE
175172 ,p_module => l_log_module);
175173 END IF;
175174 --
175175 RETURN l_result;
175176 EXCEPTION
175177 WHEN xla_exceptions_pkg.application_exception THEN
175178
175179 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175180
175181
175182 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
175183
175184 RAISE;
175185
175186 WHEN NO_DATA_FOUND THEN
175187
175188 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
175189 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
175190
175191 FOR header_record IN header_cur
175192 LOOP
175193 l_array_header_events(header_record.event_id) := header_record.event_id;
175194 END LOOP;
175195
175196 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
175197 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
175198
175199 fnd_file.put_line(fnd_file.LOG, ' ');
175200 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175201 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
175202 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
175203
175204 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
175205 LOOP
175206 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
175207 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
175208 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
175209 END IF;
175210 END LOOP;
175211
175212 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
175213 fnd_file.put_line(fnd_file.LOG, ' ');
175214
175215
175216 xla_exceptions_pkg.raise_message
175217 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_282');
175218
175219
175220 WHEN OTHERS THEN
175221 xla_exceptions_pkg.raise_message
175222 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_282');
175223 END EventClass_282;
175224 --
175225
175226 ---------------------------------------
175227 --
175228 -- PRIVATE PROCEDURE
175229 -- insert_sources_283
175230 --
175231 ----------------------------------------
175232 --
175233 PROCEDURE insert_sources_283(
175234 p_target_ledger_id IN NUMBER
175235 , p_language IN VARCHAR2
175236 , p_sla_ledger_id IN NUMBER
175237 , p_pad_start_date IN DATE
175238 , p_pad_end_date IN DATE
175239 )
175240 IS
175241
175242 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_ALL';
175243 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ';
175244 p_apps_owner VARCHAR2(30);
175245 l_log_module VARCHAR2(240);
175246 BEGIN
175247 IF g_log_enabled THEN
175248 l_log_module := C_DEFAULT_MODULE||'.insert_sources_283';
175249 END IF;
175250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175251
175252 trace
175253 (p_msg => 'BEGIN of insert_sources_283'
175254 ,p_level => C_LEVEL_PROCEDURE
175255 ,p_module => l_log_module);
175256
175257 END IF;
175258
175259 -- select APPS owner
175260 SELECT oracle_username
175261 INTO p_apps_owner
175262 FROM fnd_oracle_userid
175263 WHERE read_only_flag = 'U'
175264 ;
175265
175266 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175267 trace
175268 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
175269 ' - p_language = '||p_language||
175270 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
175271 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
175272 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
175273 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
175274 ,p_level => C_LEVEL_STATEMENT
175275 ,p_module => l_log_module);
175276 END IF;
175277
175278
175279 --
175280 INSERT INTO xla_diag_sources --hdr2
175281 (
175282 event_id
175283 , ledger_id
175284 , sla_ledger_id
175285 , description_language
175286 , object_name
175287 , object_type_code
175288 , line_number
175289 , source_application_id
175290 , source_type_code
175291 , source_code
175292 , source_value
175293 , source_meaning
175294 , created_by
175295 , creation_date
175296 , last_update_date
175297 , last_updated_by
175298 , last_update_login
175299 , program_update_date
175300 , program_application_id
175301 , program_id
175302 , request_id
175303 )
175304 SELECT
175305 event_id
175306 , p_target_ledger_id
175307 , p_sla_ledger_id
175308 , p_language
175309 , object_name
175310 , object_type_code
175311 , line_number
175312 , source_application_id
175313 , source_type_code
175314 , source_code
175315 , SUBSTR(source_value ,1,1996)
175316 , SUBSTR(source_meaning ,1,200)
175317 , xla_environment_pkg.g_Usr_Id
175318 , TRUNC(SYSDATE)
175319 , TRUNC(SYSDATE)
175320 , xla_environment_pkg.g_Usr_Id
175321 , xla_environment_pkg.g_Login_Id
175322 , TRUNC(SYSDATE)
175323 , xla_environment_pkg.g_Prog_Appl_Id
175324 , xla_environment_pkg.g_Prog_Id
175325 , xla_environment_pkg.g_Req_Id
175326 FROM (
175327 SELECT xet.event_id event_id
175328 , 0 line_number
175329 , CASE r
175330 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
175331 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
175332
175333 ELSE null
175334 END object_name
175335 , CASE r
175336 WHEN 1 THEN 'HEADER'
175337 WHEN 2 THEN 'HEADER'
175338
175339 ELSE null
175340 END object_type_code
175341 , CASE r
175342 WHEN 1 THEN '707'
175343 WHEN 2 THEN '707'
175344
175345 ELSE null
175346 END source_application_id
175347 , 'S' source_type_code
175348 , CASE r
175349 WHEN 1 THEN 'DISTRIBUTION_TYPE'
175350 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
175351
175352 ELSE null
175353 END source_code
175354 , CASE r
175355 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
175356 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
175357
175358 ELSE null
175359 END source_value
175360 , CASE r
175361 WHEN 1 THEN fvl12.meaning
175362 WHEN 2 THEN fvl38.meaning
175363
175364 ELSE null
175365 END source_meaning
175366 FROM xla_events_gt xet
175367 , CST_XLA_INV_HEADERS_V h1
175368 , fnd_lookup_values fvl12
175369 , fnd_lookup_values fvl38
175370 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
175371 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175372 AND xet.event_class_code = C_EVENT_CLASS_CODE
175373 AND h1.event_id = xet.event_id
175374 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
175375 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
175376 AND fvl12.view_application_id(+) = 700
175377 AND fvl12.language(+) = USERENV('LANG')
175378 AND fvl38.lookup_type(+) = 'YES_NO'
175379 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
175380 AND fvl38.view_application_id(+) = 0
175381 AND fvl38.language(+) = USERENV('LANG')
175382
175383 )
175384 ;
175385 --
175386 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175387
175388 trace
175389 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
175390 ,p_level => C_LEVEL_STATEMENT
175391 ,p_module => l_log_module);
175392
175393 END IF;
175394 --
175395
175396
175397
175398 --
175399 INSERT INTO xla_diag_sources --line2
175400 (
175401 event_id
175402 , ledger_id
175403 , sla_ledger_id
175404 , description_language
175405 , object_name
175406 , object_type_code
175407 , line_number
175408 , source_application_id
175409 , source_type_code
175410 , source_code
175411 , source_value
175412 , source_meaning
175413 , created_by
175414 , creation_date
175415 , last_update_date
175416 , last_updated_by
175417 , last_update_login
175418 , program_update_date
175419 , program_application_id
175420 , program_id
175421 , request_id
175422 )
175423 SELECT event_id
175424 , p_target_ledger_id
175425 , p_sla_ledger_id
175426 , p_language
175427 , object_name
175428 , object_type_code
175429 , line_number
175430 , source_application_id
175431 , source_type_code
175432 , source_code
175433 , SUBSTR(source_value,1,1996)
175434 , SUBSTR(source_meaning ,1,200)
175435 , xla_environment_pkg.g_Usr_Id
175436 , TRUNC(SYSDATE)
175437 , TRUNC(SYSDATE)
175438 , xla_environment_pkg.g_Usr_Id
175439 , xla_environment_pkg.g_Login_Id
175440 , TRUNC(SYSDATE)
175441 , xla_environment_pkg.g_Prog_Appl_Id
175442 , xla_environment_pkg.g_Prog_Id
175443 , xla_environment_pkg.g_Req_Id
175444 FROM (
175445 SELECT xet.event_id event_id
175446 , l2.line_number line_number
175447 , CASE r
175448 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
175449 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
175450 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
175451 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
175452 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
175453 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
175454 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
175455 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
175456 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
175457
175458 ELSE null
175459 END object_name
175460 , CASE r
175461 WHEN 1 THEN 'LINE'
175462 WHEN 2 THEN 'LINE'
175463 WHEN 3 THEN 'LINE'
175464 WHEN 4 THEN 'LINE'
175465 WHEN 5 THEN 'LINE'
175466 WHEN 6 THEN 'LINE'
175467 WHEN 7 THEN 'LINE'
175468 WHEN 8 THEN 'LINE'
175469 WHEN 9 THEN 'LINE'
175470
175471 ELSE null
175472 END object_type_code
175473 , CASE r
175474 WHEN 1 THEN '707'
175475 WHEN 2 THEN '707'
175476 WHEN 3 THEN '707'
175477 WHEN 4 THEN '707'
175478 WHEN 5 THEN '707'
175479 WHEN 6 THEN '707'
175480 WHEN 7 THEN '707'
175481 WHEN 8 THEN '707'
175482 WHEN 9 THEN '707'
175483
175484 ELSE null
175485 END source_application_id
175486 , 'S' source_type_code
175487 , CASE r
175488 WHEN 1 THEN 'CODE_COMBINATION_ID'
175489 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
175490 WHEN 3 THEN 'CURRENCY_CODE'
175491 WHEN 4 THEN 'ENTERED_AMOUNT'
175492 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
175493 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
175494 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
175495 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
175496 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
175497
175498 ELSE null
175499 END source_code
175500 , CASE r
175501 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
175502 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
175503 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
175504 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
175505 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
175506 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
175507 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
175508 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
175509 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
175510
175511 ELSE null
175512 END source_value
175513 , null source_meaning
175514 FROM xla_events_gt xet
175515 , CST_XLA_INV_LINES_V l2
175516 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
175517 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
175518 AND xet.event_class_code = C_EVENT_CLASS_CODE
175519 AND l2.event_id = xet.event_id
175520
175521 )
175522 ;
175523 --
175524 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175525
175526 trace
175527 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
175528 ,p_level => C_LEVEL_STATEMENT
175529 ,p_module => l_log_module);
175530
175531 END IF;
175532
175533
175534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175535 trace
175536 (p_msg => 'END of insert_sources_283'
175537 ,p_level => C_LEVEL_PROCEDURE
175538 ,p_module => l_log_module);
175539 END IF;
175540 EXCEPTION
175541 WHEN xla_exceptions_pkg.application_exception THEN
175542 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175543 trace
175544 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175545 ,p_level => C_LEVEL_EXCEPTION
175546 ,p_module => l_log_module);
175547 END IF;
175548 RAISE;
175549 WHEN OTHERS THEN
175550 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
175551 trace
175552 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
175553 ,p_level => C_LEVEL_EXCEPTION
175554 ,p_module => l_log_module);
175555 END IF;
175556 xla_exceptions_pkg.raise_message
175557 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_283');
175558 END insert_sources_283;
175559 --
175560
175561 ---------------------------------------
175562 --
175563 -- PRIVATE FUNCTION
175564 -- EventClass_283
175565 --
175566 ----------------------------------------
175567 --
175568 FUNCTION EventClass_283
175569 (p_application_id IN NUMBER
175570 ,p_base_ledger_id IN NUMBER
175571 ,p_target_ledger_id IN NUMBER
175572 ,p_language IN VARCHAR2
175573 ,p_currency_code IN VARCHAR2
175574 ,p_sla_ledger_id IN NUMBER
175575 ,p_pad_start_date IN DATE
175576 ,p_pad_end_date IN DATE
175577 ,p_primary_ledger_id IN NUMBER)
175578 RETURN BOOLEAN IS
175579 --
175580 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_ALL';
175581 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ';
175582
175583 l_calculate_acctd_flag VARCHAR2(1) :='N';
175584 l_calculate_g_l_flag VARCHAR2(1) :='N';
175585 --
175586 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175587 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175588 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175589 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175590 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175591 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175592 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175593 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175594 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175595 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175596 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175597 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175598 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175599 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
175600 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175601 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175602 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175603 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
175604 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175605 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175606 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175607 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
175608 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
175609 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
175610 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
175611 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
175612
175613 l_event_id NUMBER;
175614 l_previous_event_id NUMBER;
175615 l_first_event_id NUMBER;
175616 l_last_event_id NUMBER;
175617
175618 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
175619 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
175620 --
175621 --
175622 l_result BOOLEAN := TRUE;
175623 l_rows NUMBER := 1000;
175624 l_event_type_name VARCHAR2(80) := 'All';
175625 l_event_class_name VARCHAR2(80) := 'Retroactive Price Adjustment';
175626 l_description VARCHAR2(4000);
175627 l_transaction_reversal NUMBER;
175628 l_ae_header_id NUMBER;
175629 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
175630 l_log_module VARCHAR2(240);
175631 --
175632 l_acct_reversal_source VARCHAR2(30);
175633 l_trx_reversal_source VARCHAR2(30);
175634
175635 l_continue_with_lines BOOLEAN := TRUE;
175636 --
175637 l_acc_rev_gl_date_source DATE; -- 4262811
175638 --
175639 type t_array_event_id is table of number index by binary_integer;
175640
175641 l_rec_array_event t_rec_array_event;
175642 l_null_rec_array_event t_rec_array_event;
175643 l_array_ae_header_id xla_number_array_type;
175644 l_actual_flag VARCHAR2(1) := NULL;
175645 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
175646 l_balance_type_code VARCHAR2(1) :=NULL;
175647 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
175648
175649 --
175650 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
175651 --
175652
175653 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
175654 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
175655
175656 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
175657 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
175658 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
175659 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
175660 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
175661 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
175662 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
175663 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
175664 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
175665
175666 l_array_source_12 t_array_source_12;
175667 l_array_source_12_meaning t_array_lookup_meaning;
175668 l_array_source_38 t_array_source_38;
175669 l_array_source_38_meaning t_array_lookup_meaning;
175670
175671 l_array_source_4 t_array_source_4;
175672 l_array_source_11 t_array_source_11;
175673 l_array_source_15 t_array_source_15;
175674 l_array_source_18 t_array_source_18;
175675 l_array_source_19 t_array_source_19;
175676 l_array_source_20 t_array_source_20;
175677 l_array_source_21 t_array_source_21;
175678 l_array_source_22 t_array_source_22;
175679 l_array_source_24 t_array_source_24;
175680
175681 --
175682 CURSOR header_cur
175683 IS
175684 SELECT /*+ leading(xet) cardinality(xet,1) */
175685 -- Event Class Code: RETR_PRICE_ADJ
175686 xet.entity_id
175687 ,xet.legal_entity_id
175688 ,xet.entity_code
175689 ,xet.transaction_number
175690 ,xet.event_id
175691 ,xet.event_class_code
175692 ,xet.event_type_code
175693 ,xet.event_number
175694 ,xet.event_date
175695 ,xet.transaction_date
175696 ,xet.reference_num_1
175697 ,xet.reference_num_2
175698 ,xet.reference_num_3
175699 ,xet.reference_num_4
175700 ,xet.reference_char_1
175701 ,xet.reference_char_2
175702 ,xet.reference_char_3
175703 ,xet.reference_char_4
175704 ,xet.reference_date_1
175705 ,xet.reference_date_2
175706 ,xet.reference_date_3
175707 ,xet.reference_date_4
175708 ,xet.event_created_by
175709 ,xet.budgetary_control_flag
175710 , h1.DISTRIBUTION_TYPE source_12
175711 , fvl12.meaning source_12_meaning
175712 , h1.TRANSFER_TO_GL_INDICATOR source_38
175713 , fvl38.meaning source_38_meaning
175714 FROM xla_events_gt xet
175715 , CST_XLA_INV_HEADERS_V h1
175716 , fnd_lookup_values fvl12
175717 , fnd_lookup_values fvl38
175718 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
175719 and xet.event_class_code = C_EVENT_CLASS_CODE
175720 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
175721 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
175722 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
175723 AND fvl12.view_application_id(+) = 700
175724 AND fvl12.language(+) = USERENV('LANG')
175725 AND fvl38.lookup_type(+) = 'YES_NO'
175726 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
175727 AND fvl38.view_application_id(+) = 0
175728 AND fvl38.language(+) = USERENV('LANG')
175729
175730 ORDER BY event_id
175731 ;
175732
175733
175734 --
175735 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
175736 IS
175737 SELECT /*+ leading(xet) cardinality(xet,1) */
175738 -- Event Class Code: RETR_PRICE_ADJ
175739 xet.entity_id
175740 ,xet.legal_entity_id
175741 ,xet.entity_code
175742 ,xet.transaction_number
175743 ,xet.event_id
175744 ,xet.event_class_code
175745 ,xet.event_type_code
175746 ,xet.event_number
175747 ,xet.event_date
175748 ,xet.transaction_date
175749 ,xet.reference_num_1
175750 ,xet.reference_num_2
175751 ,xet.reference_num_3
175752 ,xet.reference_num_4
175753 ,xet.reference_char_1
175754 ,xet.reference_char_2
175755 ,xet.reference_char_3
175756 ,xet.reference_char_4
175757 ,xet.reference_date_1
175758 ,xet.reference_date_2
175759 ,xet.reference_date_3
175760 ,xet.reference_date_4
175761 ,xet.event_created_by
175762 ,xet.budgetary_control_flag
175763 , l2.LINE_NUMBER
175764 , l2.CODE_COMBINATION_ID source_4
175765 , l2.DISTRIBUTION_IDENTIFIER source_11
175766 , l2.CURRENCY_CODE source_15
175767 , l2.ENTERED_AMOUNT source_18
175768 , l2.CURRENCY_CONVERSION_DATE source_19
175769 , l2.CURRENCY_CONVERSION_RATE source_20
175770 , l2.CURRENCY_CONVERSION_TYPE source_21
175771 , l2.ACCOUNTED_AMOUNT source_22
175772 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
175773 FROM xla_events_gt xet
175774 , CST_XLA_INV_LINES_V l2
175775 WHERE xet.event_id between x_first_event_id and x_last_event_id
175776 and xet.event_date between p_pad_start_date and p_pad_end_date
175777 and xet.event_class_code = C_EVENT_CLASS_CODE
175778 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
175779 ;
175780
175781 --
175782 BEGIN
175783 IF g_log_enabled THEN
175784 l_log_module := C_DEFAULT_MODULE||'.EventClass_283';
175785 END IF;
175786 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
175787 trace
175788 (p_msg => 'BEGIN of EventClass_283'
175789 ,p_level => C_LEVEL_PROCEDURE
175790 ,p_module => l_log_module);
175791 END IF;
175792
175793 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175794 trace
175795 (p_msg => 'p_application_id = '||p_application_id||
175796 ' - p_base_ledger_id = '||p_base_ledger_id||
175797 ' - p_target_ledger_id = '||p_target_ledger_id||
175798 ' - p_language = '||p_language||
175799 ' - p_currency_code = '||p_currency_code||
175800 ' - p_sla_ledger_id = '||p_sla_ledger_id
175801 ,p_level => C_LEVEL_STATEMENT
175802 ,p_module => l_log_module);
175803 END IF;
175804 --
175805 -- initialze arrays
175806 --
175807 g_array_event.DELETE;
175808 l_rec_array_event := l_null_rec_array_event;
175809 --
175810 --------------------------------------
175811 -- 4262811 Initialze MPA Line Number
175812 --------------------------------------
175813 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
175814
175815 --
175816
175817 --
175818 OPEN header_cur;
175819 --
175820 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
175821 trace
175822 (p_msg => 'SQL - FETCH header_cur'
175823 ,p_level => C_LEVEL_STATEMENT
175824 ,p_module => l_log_module);
175825 END IF;
175826 --
175827 LOOP
175828 FETCH header_cur BULK COLLECT INTO
175829 l_array_entity_id
175830 , l_array_legal_entity_id
175831 , l_array_entity_code
175832 , l_array_transaction_num
175833 , l_array_event_id
175834 , l_array_class_code
175835 , l_array_event_type
175836 , l_array_event_number
175837 , l_array_event_date
175838 , l_array_transaction_date
175839 , l_array_reference_num_1
175840 , l_array_reference_num_2
175841 , l_array_reference_num_3
175842 , l_array_reference_num_4
175843 , l_array_reference_char_1
175844 , l_array_reference_char_2
175845 , l_array_reference_char_3
175846 , l_array_reference_char_4
175847 , l_array_reference_date_1
175848 , l_array_reference_date_2
175849 , l_array_reference_date_3
175850 , l_array_reference_date_4
175851 , l_array_event_created_by
175852 , l_array_budgetary_control_flag
175853 , l_array_source_12
175854 , l_array_source_12_meaning
175855 , l_array_source_38
175856 , l_array_source_38_meaning
175857 LIMIT l_rows;
175858 --
175859 IF (C_LEVEL_EVENT >= g_log_level) THEN
175860 trace
175861 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
175862 ,p_level => C_LEVEL_EVENT
175863 ,p_module => l_log_module);
175864 END IF;
175865 --
175866 EXIT WHEN l_array_entity_id.COUNT = 0;
175867
175868 -- initialize arrays
175869 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
175870 XLA_AE_LINES_PKG.g_rec_lines := NULL;
175871
175872 --
175873 -- Bug 4458708
175874 --
175875 XLA_AE_LINES_PKG.g_LineNumber := 0;
175876
175877
175878 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
175879 g_last_hdr_idx := l_array_event_id.LAST;
175880 --
175881 -- loop for the headers. Each iteration is for each header extract row
175882 -- fetched in header cursor
175883 --
175884 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
175885
175886 --
175887 -- set event info as cache for other routines to refer event attributes
175888 --
175889 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
175890 (p_application_id => p_application_id
175891 ,p_primary_ledger_id => p_primary_ledger_id
175892 ,p_base_ledger_id => p_base_ledger_id
175893 ,p_target_ledger_id => p_target_ledger_id
175894 ,p_entity_id => l_array_entity_id(hdr_idx)
175895 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
175896 ,p_entity_code => l_array_entity_code(hdr_idx)
175897 ,p_transaction_num => l_array_transaction_num(hdr_idx)
175898 ,p_event_id => l_array_event_id(hdr_idx)
175899 ,p_event_class_code => l_array_class_code(hdr_idx)
175900 ,p_event_type_code => l_array_event_type(hdr_idx)
175901 ,p_event_number => l_array_event_number(hdr_idx)
175902 ,p_event_date => l_array_event_date(hdr_idx)
175903 ,p_transaction_date => l_array_transaction_date(hdr_idx)
175904 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
175905 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
175906 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
175907 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
175908 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
175909 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
175910 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
175911 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
175912 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
175913 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
175914 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
175915 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
175916 ,p_event_created_by => l_array_event_created_by(hdr_idx)
175917 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
175918
175919 --
175920 -- set the status of entry to C_VALID (0)
175921 --
175922 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
175923
175924 --
175925 -- initialize a row for ae header
175926 --
175927 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
175928
175929 l_event_id := l_array_event_id(hdr_idx);
175930
175931 --
175932 -- storing the hdr_idx for event. May be used by line cursor.
175933 --
175934 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
175935
175936 --
175937 -- store sources from header extract. This can be improved to
175938 -- store only those sources from header extract that may be used in lines
175939 --
175940
175941 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
175942 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
175943 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
175944 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
175945
175946 --
175947 -- initilaize the status of ae headers for diffrent balance types
175948 -- the status is initialised to C_NOT_CREATED (2)
175949 --
175950 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175951 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175952 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
175953
175954 --
175955 -- call api to validate and store accounting attributes for header
175956 --
175957
175958 ------------------------------------------------------------
175959 -- Accrual Reversal : to get date for Standard Source (NONE)
175960 ------------------------------------------------------------
175961 l_acc_rev_gl_date_source := NULL;
175962
175963 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
175964 l_rec_acct_attrs.array_date_value(1) :=
175965 xla_ae_sources_pkg.GetSystemSourceDate(
175966 p_source_code => 'XLA_REFERENCE_DATE_1'
175967 , p_source_type_code => 'Y'
175968 , p_source_application_id => 602
175969 );
175970 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
175971 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
175972
175973
175974 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
175975
175976 XLA_AE_HEADER_PKG.SetJeCategoryName;
175977
175978 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
175979 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
175980 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
175981 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
175982 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
175983
175984
175985 -- No header level analytical criteria
175986
175987 --
175988 --accounting attribute enhancement, bug 3612931
175989 --
175990 l_trx_reversal_source := SUBSTR(NULL, 1,30);
175991
175992 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
175993 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
175994
175995 xla_accounting_err_pkg.build_message
175996 (p_appli_s_name => 'XLA'
175997 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
175998 ,p_token_1 => 'ACCT_ATTR_NAME'
175999 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
176000 ,p_token_2 => 'PRODUCT_NAME'
176001 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176002 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176003 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
176004 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176005
176006 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
176007 --
176008 -- following sets the accounting attributes needed to reverse
176009 -- accounting for a distributeion
176010 --
176011 xla_ae_lines_pkg.SetTrxReversalAttrs
176012 (p_event_id => l_event_id
176013 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
176014 ,p_trx_reversal_source => l_trx_reversal_source);
176015
176016 END IF;
176017
176018
176019 ----------------------------------------------------------------
176020 -- 4262811 - update the header statuses to invalid in need be
176021 ----------------------------------------------------------------
176022 --
176023 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
176024
176025
176026 -----------------------------------------------
176027 -- No accrual reversal for the event class/type
176028 -----------------------------------------------
176029 ----------------------------------------------------------------
176030
176031 --
176032 -- this ends the header loop iteration for one bulk fetch
176033 --
176034 END LOOP;
176035
176036 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
176037 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
176038
176039 --
176040 -- insert dummy rows into lines gt table that were created due to
176041 -- transaction reversals
176042 --
176043 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
176044 l_result := XLA_AE_LINES_PKG.InsertLines;
176045 END IF;
176046
176047 --
176048 -- reset the temp_line_num for each set of events fetched from header
176049 -- cursor rather than doing it for each new event in line cursor
176050 -- Bug 3939231
176051 --
176052 xla_ae_lines_pkg.g_temp_line_num := 0;
176053
176054
176055
176056 --
176057 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
176058 --
176059 --
176060 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176061
176062 trace
176063 (p_msg => 'SQL - FETCH line_cur'
176064 ,p_level => C_LEVEL_STATEMENT
176065 ,p_module => l_log_module);
176066
176067 END IF;
176068 --
176069 --
176070 LOOP
176071 --
176072 FETCH line_cur BULK COLLECT INTO
176073 l_array_entity_id
176074 , l_array_legal_entity_id
176075 , l_array_entity_code
176076 , l_array_transaction_num
176077 , l_array_event_id
176078 , l_array_class_code
176079 , l_array_event_type
176080 , l_array_event_number
176081 , l_array_event_date
176082 , l_array_transaction_date
176083 , l_array_reference_num_1
176084 , l_array_reference_num_2
176085 , l_array_reference_num_3
176086 , l_array_reference_num_4
176087 , l_array_reference_char_1
176088 , l_array_reference_char_2
176089 , l_array_reference_char_3
176090 , l_array_reference_char_4
176091 , l_array_reference_date_1
176092 , l_array_reference_date_2
176093 , l_array_reference_date_3
176094 , l_array_reference_date_4
176095 , l_array_event_created_by
176096 , l_array_budgetary_control_flag
176097 , l_array_extract_line_num
176098 , l_array_source_4
176099 , l_array_source_11
176100 , l_array_source_15
176101 , l_array_source_18
176102 , l_array_source_19
176103 , l_array_source_20
176104 , l_array_source_21
176105 , l_array_source_22
176106 , l_array_source_24
176107 LIMIT l_rows;
176108
176109 --
176110 IF (C_LEVEL_EVENT >= g_log_level) THEN
176111 trace
176112 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
176113 ,p_level => C_LEVEL_EVENT
176114 ,p_module => l_log_module);
176115 END IF;
176116 --
176117 EXIT WHEN l_array_entity_id.count = 0;
176118
176119 XLA_AE_LINES_PKG.g_rec_lines := null;
176120
176121 --
176122 -- Bug 4458708
176123 --
176124 XLA_AE_LINES_PKG.g_LineNumber := 0;
176125 --
176126 --
176127
176128 FOR Idx IN 1..l_array_event_id.count LOOP
176129 --
176130 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
176131 --
176132 l_event_id := l_array_event_id(idx); -- 5648433
176133
176134 --
176135 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176136 --
176137
176138 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
176139 (g_array_event(l_event_id).array_value_num('header_index'))
176140 ,'N'
176141 ) <> 'Y'
176142 THEN
176143 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176144 trace
176145 (p_msg => 'Trancaction revesal option is not Y '
176146 ,p_level => C_LEVEL_STATEMENT
176147 ,p_module => l_log_module);
176148 END IF;
176149
176150 --
176151 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
176152 --
176153 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
176154 --
176155 -- set event info as cache for other routines to refer event attributes
176156 --
176157
176158 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
176159 l_previous_event_id := l_event_id;
176160
176161 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
176162 (p_application_id => p_application_id
176163 ,p_primary_ledger_id => p_primary_ledger_id
176164 ,p_base_ledger_id => p_base_ledger_id
176165 ,p_target_ledger_id => p_target_ledger_id
176166 ,p_entity_id => l_array_entity_id(Idx)
176167 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
176168 ,p_entity_code => l_array_entity_code(Idx)
176169 ,p_transaction_num => l_array_transaction_num(Idx)
176170 ,p_event_id => l_array_event_id(Idx)
176171 ,p_event_class_code => l_array_class_code(Idx)
176172 ,p_event_type_code => l_array_event_type(Idx)
176173 ,p_event_number => l_array_event_number(Idx)
176174 ,p_event_date => l_array_event_date(Idx)
176175 ,p_transaction_date => l_array_transaction_date(Idx)
176176 ,p_reference_num_1 => l_array_reference_num_1(Idx)
176177 ,p_reference_num_2 => l_array_reference_num_2(Idx)
176178 ,p_reference_num_3 => l_array_reference_num_3(Idx)
176179 ,p_reference_num_4 => l_array_reference_num_4(Idx)
176180 ,p_reference_char_1 => l_array_reference_char_1(Idx)
176181 ,p_reference_char_2 => l_array_reference_char_2(Idx)
176182 ,p_reference_char_3 => l_array_reference_char_3(Idx)
176183 ,p_reference_char_4 => l_array_reference_char_4(Idx)
176184 ,p_reference_date_1 => l_array_reference_date_1(Idx)
176185 ,p_reference_date_2 => l_array_reference_date_2(Idx)
176186 ,p_reference_date_3 => l_array_reference_date_3(Idx)
176187 ,p_reference_date_4 => l_array_reference_date_4(Idx)
176188 ,p_event_created_by => l_array_event_created_by(Idx)
176189 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
176190 --
176191 END IF;
176192
176193
176194
176195 --
176196 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
176197
176198 l_acct_reversal_source := SUBSTR(NULL, 1,30);
176199
176200 IF l_continue_with_lines THEN
176201 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
176202 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
176203
176204 xla_accounting_err_pkg.build_message
176205 (p_appli_s_name => 'XLA'
176206 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
176207 ,p_token_1 => 'LINE_NUMBER'
176208 ,p_value_1 => l_array_extract_line_num(Idx)
176209 ,p_token_2 => 'PRODUCT_NAME'
176210 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
176211 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
176212 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
176213 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
176214
176215 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
176216 --
176217 -- following sets the accounting attributes needed to reverse
176218 -- accounting for a distributeion
176219 --
176220
176221 --
176222 -- 5217187
176223 --
176224 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
176225 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
176226 g_array_event(l_event_id).array_value_num('header_index'));
176227 --
176228 --
176229
176230 -- No reversal code generated
176231
176232 xla_ae_lines_pkg.SetAcctReversalAttrs
176233 (p_event_id => l_event_id
176234 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
176235 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176236 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
176237 END IF;
176238
176239 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
176240 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
176241
176242 --
176243 AcctLineType_8 (
176244 p_application_id => p_application_id
176245 ,p_event_id => l_event_id
176246 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176247 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176248 ,p_actual_flag => l_actual_flag
176249 ,p_balance_type_code => l_balance_type_code
176250 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176251
176252 , p_source_4 => l_array_source_4(Idx)
176253 , p_source_11 => l_array_source_11(Idx)
176254 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176255 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176256 , p_source_15 => l_array_source_15(Idx)
176257 , p_source_18 => l_array_source_18(Idx)
176258 , p_source_19 => l_array_source_19(Idx)
176259 , p_source_20 => l_array_source_20(Idx)
176260 , p_source_21 => l_array_source_21(Idx)
176261 , p_source_22 => l_array_source_22(Idx)
176262 , p_source_24 => l_array_source_24(Idx)
176263 );
176264 If(l_balance_type_code = 'A') THEN
176265 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176266 END IF;
176267
176268 --
176269
176270
176271 --
176272 AcctLineType_245 (
176273 p_application_id => p_application_id
176274 ,p_event_id => l_event_id
176275 ,p_calculate_acctd_flag => l_calculate_acctd_flag
176276 ,p_calculate_g_l_flag => l_calculate_g_l_flag
176277 ,p_actual_flag => l_actual_flag
176278 ,p_balance_type_code => l_balance_type_code
176279 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
176280
176281 , p_source_4 => l_array_source_4(Idx)
176282 , p_source_11 => l_array_source_11(Idx)
176283 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
176284 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
176285 , p_source_15 => l_array_source_15(Idx)
176286 , p_source_18 => l_array_source_18(Idx)
176287 , p_source_19 => l_array_source_19(Idx)
176288 , p_source_20 => l_array_source_20(Idx)
176289 , p_source_21 => l_array_source_21(Idx)
176290 , p_source_22 => l_array_source_22(Idx)
176291 , p_source_24 => l_array_source_24(Idx)
176292 );
176293 If(l_balance_type_code = 'A') THEN
176294 l_actual_gain_loss_ref := l_gain_or_loss_ref;
176295 END IF;
176296
176297 --
176298
176299 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
176300 -- or secondary ledger that has different currency with primary
176301 -- or alc that is calculated by sla
176302 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
176303 (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'))
176304
176305 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
176306 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
176307 AND (l_actual_flag = 'A')) THEN
176308 XLA_AE_LINES_PKG.CreateGainOrLossLines(
176309 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
176310 ,p_application_id => p_application_id
176311 ,p_amb_context_code => 'DEFAULT'
176312 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
176313 ,p_event_class_code => C_EVENT_CLASS_CODE
176314 ,p_event_type_code => C_EVENT_TYPE_CODE
176315
176316 ,p_gain_ccid => -1
176317 ,p_loss_ccid => -1
176318
176319 ,p_actual_flag => l_actual_flag
176320 ,p_enc_flag => null
176321 ,p_actual_g_l_ref => l_actual_gain_loss_ref
176322 ,p_enc_g_l_ref => null
176323 );
176324 END IF;
176325 END IF;
176326 END IF;
176327
176328 ELSE
176329 --
176330 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
176331 --
176332 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176333 trace
176334 (p_msg => 'Trancaction revesal option is Y'
176335 ,p_level => C_LEVEL_STATEMENT
176336 ,p_module => l_log_module);
176337 END IF;
176338 END IF;
176339
176340 END LOOP;
176341 l_result := XLA_AE_LINES_PKG.InsertLines ;
176342 end loop;
176343 close line_cur;
176344
176345
176346 --
176347 -- insert headers into xla_ae_headers_gt table
176348 --
176349 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
176350
176351 -- insert into errors table here.
176352
176353 END LOOP;
176354
176355 --
176356 -- 4865292
176357 --
176358 -- Compare g_hdr_extract_count with event count in
176359 -- CreateHeadersAndLines.
176360 --
176361 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
176362
176363 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176364 trace (p_msg => '# rows extracted from header extract objects '
176365 || ' (running total): '
176366 || g_hdr_extract_count
176367 ,p_level => C_LEVEL_STATEMENT
176368 ,p_module => l_log_module);
176369 END IF;
176370
176371 CLOSE header_cur;
176372 --
176373
176374 --
176375 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176376 trace
176377 (p_msg => 'END of EventClass_283'
176378 ,p_level => C_LEVEL_PROCEDURE
176379 ,p_module => l_log_module);
176380 END IF;
176381 --
176382 RETURN l_result;
176383 EXCEPTION
176384 WHEN xla_exceptions_pkg.application_exception THEN
176385
176386 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176387
176388
176389 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
176390
176391 RAISE;
176392
176393 WHEN NO_DATA_FOUND THEN
176394
176395 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
176396 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
176397
176398 FOR header_record IN header_cur
176399 LOOP
176400 l_array_header_events(header_record.event_id) := header_record.event_id;
176401 END LOOP;
176402
176403 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
176404 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
176405
176406 fnd_file.put_line(fnd_file.LOG, ' ');
176407 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176408 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
176409 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
176410
176411 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
176412 LOOP
176413 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
176414 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
176415 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
176416 END IF;
176417 END LOOP;
176418
176419 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
176420 fnd_file.put_line(fnd_file.LOG, ' ');
176421
176422
176423 xla_exceptions_pkg.raise_message
176424 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_283');
176425
176426
176427 WHEN OTHERS THEN
176428 xla_exceptions_pkg.raise_message
176429 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_283');
176430 END EventClass_283;
176431 --
176432
176433 ---------------------------------------
176434 --
176435 -- PRIVATE PROCEDURE
176436 -- insert_sources_284
176437 --
176438 ----------------------------------------
176439 --
176440 PROCEDURE insert_sources_284(
176441 p_target_ledger_id IN NUMBER
176442 , p_language IN VARCHAR2
176443 , p_sla_ledger_id IN NUMBER
176444 , p_pad_start_date IN DATE
176445 , p_pad_end_date IN DATE
176446 )
176447 IS
176448
176449 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL_ALL';
176450 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL';
176451 p_apps_owner VARCHAR2(30);
176452 l_log_module VARCHAR2(240);
176453 BEGIN
176454 IF g_log_enabled THEN
176455 l_log_module := C_DEFAULT_MODULE||'.insert_sources_284';
176456 END IF;
176457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176458
176459 trace
176460 (p_msg => 'BEGIN of insert_sources_284'
176461 ,p_level => C_LEVEL_PROCEDURE
176462 ,p_module => l_log_module);
176463
176464 END IF;
176465
176466 -- select APPS owner
176467 SELECT oracle_username
176468 INTO p_apps_owner
176469 FROM fnd_oracle_userid
176470 WHERE read_only_flag = 'U'
176471 ;
176472
176473 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176474 trace
176475 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
176476 ' - p_language = '||p_language||
176477 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
176478 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
176479 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
176480 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
176481 ,p_level => C_LEVEL_STATEMENT
176482 ,p_module => l_log_module);
176483 END IF;
176484
176485
176486 --
176487 INSERT INTO xla_diag_sources --hdr2
176488 (
176489 event_id
176490 , ledger_id
176491 , sla_ledger_id
176492 , description_language
176493 , object_name
176494 , object_type_code
176495 , line_number
176496 , source_application_id
176497 , source_type_code
176498 , source_code
176499 , source_value
176500 , source_meaning
176501 , created_by
176502 , creation_date
176503 , last_update_date
176504 , last_updated_by
176505 , last_update_login
176506 , program_update_date
176507 , program_application_id
176508 , program_id
176509 , request_id
176510 )
176511 SELECT
176512 event_id
176513 , p_target_ledger_id
176514 , p_sla_ledger_id
176515 , p_language
176516 , object_name
176517 , object_type_code
176518 , line_number
176519 , source_application_id
176520 , source_type_code
176521 , source_code
176522 , SUBSTR(source_value ,1,1996)
176523 , SUBSTR(source_meaning ,1,200)
176524 , xla_environment_pkg.g_Usr_Id
176525 , TRUNC(SYSDATE)
176526 , TRUNC(SYSDATE)
176527 , xla_environment_pkg.g_Usr_Id
176528 , xla_environment_pkg.g_Login_Id
176529 , TRUNC(SYSDATE)
176530 , xla_environment_pkg.g_Prog_Appl_Id
176531 , xla_environment_pkg.g_Prog_Id
176532 , xla_environment_pkg.g_Req_Id
176533 FROM (
176534 SELECT xet.event_id event_id
176535 , 0 line_number
176536 , CASE r
176537 WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V'
176538 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V'
176539 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V'
176540 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V'
176541 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V'
176542
176543 ELSE null
176544 END object_name
176545 , CASE r
176546 WHEN 1 THEN 'HEADER'
176547 WHEN 2 THEN 'HEADER'
176548 WHEN 3 THEN 'HEADER'
176549 WHEN 4 THEN 'HEADER'
176550 WHEN 5 THEN 'HEADER'
176551
176552 ELSE null
176553 END object_type_code
176554 , CASE r
176555 WHEN 1 THEN '707'
176556 WHEN 2 THEN '707'
176557 WHEN 3 THEN '707'
176558 WHEN 4 THEN '707'
176559 WHEN 5 THEN '707'
176560
176561 ELSE null
176562 END source_application_id
176563 , 'S' source_type_code
176564 , CASE r
176565 WHEN 1 THEN 'DISTRIBUTION_TYPE'
176566 WHEN 2 THEN 'CURRENCY_CODE'
176567 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
176568 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
176569 WHEN 5 THEN 'TRANSFER_TO_GL_INDICATOR'
176570
176571 ELSE null
176572 END source_code
176573 , CASE r
176574 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
176575 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
176576 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
176577 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
176578 WHEN 5 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
176579
176580 ELSE null
176581 END source_value
176582 , CASE r
176583 WHEN 1 THEN fvl12.meaning
176584 WHEN 5 THEN fvl38.meaning
176585
176586 ELSE null
176587 END source_meaning
176588 FROM xla_events_gt xet
176589 , CST_XLA_RCV_HEADERS_V h1
176590 , fnd_lookup_values fvl12
176591 , fnd_lookup_values fvl38
176592 ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
176593 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
176594 AND xet.event_class_code = C_EVENT_CLASS_CODE
176595 AND h1.event_id = xet.event_id
176596 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
176597 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
176598 AND fvl12.view_application_id(+) = 700
176599 AND fvl12.language(+) = USERENV('LANG')
176600 AND fvl38.lookup_type(+) = 'YES_NO'
176601 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
176602 AND fvl38.view_application_id(+) = 0
176603 AND fvl38.language(+) = USERENV('LANG')
176604
176605 )
176606 ;
176607 --
176608 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176609
176610 trace
176611 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
176612 ,p_level => C_LEVEL_STATEMENT
176613 ,p_module => l_log_module);
176614
176615 END IF;
176616 --
176617
176618
176619
176620 --
176621 INSERT INTO xla_diag_sources --line2
176622 (
176623 event_id
176624 , ledger_id
176625 , sla_ledger_id
176626 , description_language
176627 , object_name
176628 , object_type_code
176629 , line_number
176630 , source_application_id
176631 , source_type_code
176632 , source_code
176633 , source_value
176634 , source_meaning
176635 , created_by
176636 , creation_date
176637 , last_update_date
176638 , last_updated_by
176639 , last_update_login
176640 , program_update_date
176641 , program_application_id
176642 , program_id
176643 , request_id
176644 )
176645 SELECT event_id
176646 , p_target_ledger_id
176647 , p_sla_ledger_id
176648 , p_language
176649 , object_name
176650 , object_type_code
176651 , line_number
176652 , source_application_id
176653 , source_type_code
176654 , source_code
176655 , SUBSTR(source_value,1,1996)
176656 , SUBSTR(source_meaning ,1,200)
176657 , xla_environment_pkg.g_Usr_Id
176658 , TRUNC(SYSDATE)
176659 , TRUNC(SYSDATE)
176660 , xla_environment_pkg.g_Usr_Id
176661 , xla_environment_pkg.g_Login_Id
176662 , TRUNC(SYSDATE)
176663 , xla_environment_pkg.g_Prog_Appl_Id
176664 , xla_environment_pkg.g_Prog_Id
176665 , xla_environment_pkg.g_Req_Id
176666 FROM (
176667 SELECT xet.event_id event_id
176668 , l2.line_number line_number
176669 , CASE r
176670 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
176671 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
176672 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
176673 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
176674 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
176675
176676 ELSE null
176677 END object_name
176678 , CASE r
176679 WHEN 1 THEN 'LINE'
176680 WHEN 2 THEN 'LINE'
176681 WHEN 3 THEN 'LINE'
176682 WHEN 4 THEN 'LINE'
176683 WHEN 5 THEN 'LINE'
176684
176685 ELSE null
176686 END object_type_code
176687 , CASE r
176688 WHEN 1 THEN '707'
176689 WHEN 2 THEN '707'
176690 WHEN 3 THEN '707'
176691 WHEN 4 THEN '707'
176692 WHEN 5 THEN '707'
176693
176694 ELSE null
176695 END source_application_id
176696 , 'S' source_type_code
176697 , CASE r
176698 WHEN 1 THEN 'CODE_COMBINATION_ID'
176699 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
176700 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
176701 WHEN 4 THEN 'ENTERED_AMOUNT'
176702 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
176703
176704 ELSE null
176705 END source_code
176706 , CASE r
176707 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
176708 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
176709 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
176710 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
176711 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
176712
176713 ELSE null
176714 END source_value
176715 , null source_meaning
176716 FROM xla_events_gt xet
176717 , CST_XLA_RCV_LINES_V l2
176718 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
176719 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
176720 AND xet.event_class_code = C_EVENT_CLASS_CODE
176721 AND l2.event_id = xet.event_id
176722
176723 )
176724 ;
176725 --
176726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176727
176728 trace
176729 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
176730 ,p_level => C_LEVEL_STATEMENT
176731 ,p_module => l_log_module);
176732
176733 END IF;
176734
176735
176736 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176737 trace
176738 (p_msg => 'END of insert_sources_284'
176739 ,p_level => C_LEVEL_PROCEDURE
176740 ,p_module => l_log_module);
176741 END IF;
176742 EXCEPTION
176743 WHEN xla_exceptions_pkg.application_exception THEN
176744 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
176745 trace
176746 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
176747 ,p_level => C_LEVEL_EXCEPTION
176748 ,p_module => l_log_module);
176749 END IF;
176750 RAISE;
176751 WHEN OTHERS THEN
176752 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
176753 trace
176754 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
176755 ,p_level => C_LEVEL_EXCEPTION
176756 ,p_module => l_log_module);
176757 END IF;
176758 xla_exceptions_pkg.raise_message
176759 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_284');
176760 END insert_sources_284;
176761 --
176762
176763 ---------------------------------------
176764 --
176765 -- PRIVATE FUNCTION
176766 -- EventClass_284
176767 --
176768 ----------------------------------------
176769 --
176770 FUNCTION EventClass_284
176771 (p_application_id IN NUMBER
176772 ,p_base_ledger_id IN NUMBER
176773 ,p_target_ledger_id IN NUMBER
176774 ,p_language IN VARCHAR2
176775 ,p_currency_code IN VARCHAR2
176776 ,p_sla_ledger_id IN NUMBER
176777 ,p_pad_start_date IN DATE
176778 ,p_pad_end_date IN DATE
176779 ,p_primary_ledger_id IN NUMBER)
176780 RETURN BOOLEAN IS
176781 --
176782 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL_ALL';
176783 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_DEL';
176784
176785 l_calculate_acctd_flag VARCHAR2(1) :='N';
176786 l_calculate_g_l_flag VARCHAR2(1) :='N';
176787 --
176788 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176789 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176790 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
176791 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176792 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176793 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
176794 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
176795 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176796 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176797 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176798 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176799 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176800 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176801 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
176802 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176803 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176804 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176805 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
176806 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176807 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176808 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176809 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
176810 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
176811 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
176812 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
176813 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
176814
176815 l_event_id NUMBER;
176816 l_previous_event_id NUMBER;
176817 l_first_event_id NUMBER;
176818 l_last_event_id NUMBER;
176819
176820 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
176821 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
176822 --
176823 --
176824 l_result BOOLEAN := TRUE;
176825 l_rows NUMBER := 1000;
176826 l_event_type_name VARCHAR2(80) := 'All';
176827 l_event_class_name VARCHAR2(80) := 'Retroactive Price Adjustment to Delivery';
176828 l_description VARCHAR2(4000);
176829 l_transaction_reversal NUMBER;
176830 l_ae_header_id NUMBER;
176831 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
176832 l_log_module VARCHAR2(240);
176833 --
176834 l_acct_reversal_source VARCHAR2(30);
176835 l_trx_reversal_source VARCHAR2(30);
176836
176837 l_continue_with_lines BOOLEAN := TRUE;
176838 --
176839 l_acc_rev_gl_date_source DATE; -- 4262811
176840 --
176841 type t_array_event_id is table of number index by binary_integer;
176842
176843 l_rec_array_event t_rec_array_event;
176844 l_null_rec_array_event t_rec_array_event;
176845 l_array_ae_header_id xla_number_array_type;
176846 l_actual_flag VARCHAR2(1) := NULL;
176847 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
176848 l_balance_type_code VARCHAR2(1) :=NULL;
176849 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
176850
176851 --
176852 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
176853 --
176854
176855 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
176856 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
176857 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
176858 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
176859 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
176860
176861 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
176862 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
176863 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
176864 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
176865 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
176866
176867 l_array_source_12 t_array_source_12;
176868 l_array_source_12_meaning t_array_lookup_meaning;
176869 l_array_source_15 t_array_source_15;
176870 l_array_source_19 t_array_source_19;
176871 l_array_source_20 t_array_source_20;
176872 l_array_source_38 t_array_source_38;
176873 l_array_source_38_meaning t_array_lookup_meaning;
176874
176875 l_array_source_4 t_array_source_4;
176876 l_array_source_5 t_array_source_5;
176877 l_array_source_11 t_array_source_11;
176878 l_array_source_18 t_array_source_18;
176879 l_array_source_22 t_array_source_22;
176880
176881 --
176882 CURSOR header_cur
176883 IS
176884 SELECT /*+ leading(xet) cardinality(xet,1) */
176885 -- Event Class Code: RETR_PRICE_ADJ_DEL
176886 xet.entity_id
176887 ,xet.legal_entity_id
176888 ,xet.entity_code
176889 ,xet.transaction_number
176890 ,xet.event_id
176891 ,xet.event_class_code
176892 ,xet.event_type_code
176893 ,xet.event_number
176894 ,xet.event_date
176895 ,xet.transaction_date
176896 ,xet.reference_num_1
176897 ,xet.reference_num_2
176898 ,xet.reference_num_3
176899 ,xet.reference_num_4
176900 ,xet.reference_char_1
176901 ,xet.reference_char_2
176902 ,xet.reference_char_3
176903 ,xet.reference_char_4
176904 ,xet.reference_date_1
176905 ,xet.reference_date_2
176906 ,xet.reference_date_3
176907 ,xet.reference_date_4
176908 ,xet.event_created_by
176909 ,xet.budgetary_control_flag
176910 , h1.DISTRIBUTION_TYPE source_12
176911 , fvl12.meaning source_12_meaning
176912 , h1.CURRENCY_CODE source_15
176913 , h1.CURRENCY_CONVERSION_DATE source_19
176914 , h1.CURRENCY_CONVERSION_RATE source_20
176915 , h1.TRANSFER_TO_GL_INDICATOR source_38
176916 , fvl38.meaning source_38_meaning
176917 FROM xla_events_gt xet
176918 , CST_XLA_RCV_HEADERS_V h1
176919 , fnd_lookup_values fvl12
176920 , fnd_lookup_values fvl38
176921 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
176922 and xet.event_class_code = C_EVENT_CLASS_CODE
176923 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
176924 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
176925 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
176926 AND fvl12.view_application_id(+) = 700
176927 AND fvl12.language(+) = USERENV('LANG')
176928 AND fvl38.lookup_type(+) = 'YES_NO'
176929 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
176930 AND fvl38.view_application_id(+) = 0
176931 AND fvl38.language(+) = USERENV('LANG')
176932
176933 ORDER BY event_id
176934 ;
176935
176936
176937 --
176938 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
176939 IS
176940 SELECT /*+ leading(xet) cardinality(xet,1) */
176941 -- Event Class Code: RETR_PRICE_ADJ_DEL
176942 xet.entity_id
176943 ,xet.legal_entity_id
176944 ,xet.entity_code
176945 ,xet.transaction_number
176946 ,xet.event_id
176947 ,xet.event_class_code
176948 ,xet.event_type_code
176949 ,xet.event_number
176950 ,xet.event_date
176951 ,xet.transaction_date
176952 ,xet.reference_num_1
176953 ,xet.reference_num_2
176954 ,xet.reference_num_3
176955 ,xet.reference_num_4
176956 ,xet.reference_char_1
176957 ,xet.reference_char_2
176958 ,xet.reference_char_3
176959 ,xet.reference_char_4
176960 ,xet.reference_date_1
176961 ,xet.reference_date_2
176962 ,xet.reference_date_3
176963 ,xet.reference_date_4
176964 ,xet.event_created_by
176965 ,xet.budgetary_control_flag
176966 , l2.LINE_NUMBER
176967 , l2.CODE_COMBINATION_ID source_4
176968 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
176969 , l2.DISTRIBUTION_IDENTIFIER source_11
176970 , l2.ENTERED_AMOUNT source_18
176971 , l2.ACCOUNTED_AMOUNT source_22
176972 FROM xla_events_gt xet
176973 , CST_XLA_RCV_LINES_V l2
176974 WHERE xet.event_id between x_first_event_id and x_last_event_id
176975 and xet.event_date between p_pad_start_date and p_pad_end_date
176976 and xet.event_class_code = C_EVENT_CLASS_CODE
176977 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
176978 ;
176979
176980 --
176981 BEGIN
176982 IF g_log_enabled THEN
176983 l_log_module := C_DEFAULT_MODULE||'.EventClass_284';
176984 END IF;
176985 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
176986 trace
176987 (p_msg => 'BEGIN of EventClass_284'
176988 ,p_level => C_LEVEL_PROCEDURE
176989 ,p_module => l_log_module);
176990 END IF;
176991
176992 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
176993 trace
176994 (p_msg => 'p_application_id = '||p_application_id||
176995 ' - p_base_ledger_id = '||p_base_ledger_id||
176996 ' - p_target_ledger_id = '||p_target_ledger_id||
176997 ' - p_language = '||p_language||
176998 ' - p_currency_code = '||p_currency_code||
176999 ' - p_sla_ledger_id = '||p_sla_ledger_id
177000 ,p_level => C_LEVEL_STATEMENT
177001 ,p_module => l_log_module);
177002 END IF;
177003 --
177004 -- initialze arrays
177005 --
177006 g_array_event.DELETE;
177007 l_rec_array_event := l_null_rec_array_event;
177008 --
177009 --------------------------------------
177010 -- 4262811 Initialze MPA Line Number
177011 --------------------------------------
177012 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
177013
177014 --
177015
177016 --
177017 OPEN header_cur;
177018 --
177019 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177020 trace
177021 (p_msg => 'SQL - FETCH header_cur'
177022 ,p_level => C_LEVEL_STATEMENT
177023 ,p_module => l_log_module);
177024 END IF;
177025 --
177026 LOOP
177027 FETCH header_cur BULK COLLECT INTO
177028 l_array_entity_id
177029 , l_array_legal_entity_id
177030 , l_array_entity_code
177031 , l_array_transaction_num
177032 , l_array_event_id
177033 , l_array_class_code
177034 , l_array_event_type
177035 , l_array_event_number
177036 , l_array_event_date
177037 , l_array_transaction_date
177038 , l_array_reference_num_1
177039 , l_array_reference_num_2
177040 , l_array_reference_num_3
177041 , l_array_reference_num_4
177042 , l_array_reference_char_1
177043 , l_array_reference_char_2
177044 , l_array_reference_char_3
177045 , l_array_reference_char_4
177046 , l_array_reference_date_1
177047 , l_array_reference_date_2
177048 , l_array_reference_date_3
177049 , l_array_reference_date_4
177050 , l_array_event_created_by
177051 , l_array_budgetary_control_flag
177052 , l_array_source_12
177053 , l_array_source_12_meaning
177054 , l_array_source_15
177055 , l_array_source_19
177056 , l_array_source_20
177057 , l_array_source_38
177058 , l_array_source_38_meaning
177059 LIMIT l_rows;
177060 --
177061 IF (C_LEVEL_EVENT >= g_log_level) THEN
177062 trace
177063 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
177064 ,p_level => C_LEVEL_EVENT
177065 ,p_module => l_log_module);
177066 END IF;
177067 --
177068 EXIT WHEN l_array_entity_id.COUNT = 0;
177069
177070 -- initialize arrays
177071 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
177072 XLA_AE_LINES_PKG.g_rec_lines := NULL;
177073
177074 --
177075 -- Bug 4458708
177076 --
177077 XLA_AE_LINES_PKG.g_LineNumber := 0;
177078
177079
177080 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
177081 g_last_hdr_idx := l_array_event_id.LAST;
177082 --
177083 -- loop for the headers. Each iteration is for each header extract row
177084 -- fetched in header cursor
177085 --
177086 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
177087
177088 --
177089 -- set event info as cache for other routines to refer event attributes
177090 --
177091 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177092 (p_application_id => p_application_id
177093 ,p_primary_ledger_id => p_primary_ledger_id
177094 ,p_base_ledger_id => p_base_ledger_id
177095 ,p_target_ledger_id => p_target_ledger_id
177096 ,p_entity_id => l_array_entity_id(hdr_idx)
177097 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
177098 ,p_entity_code => l_array_entity_code(hdr_idx)
177099 ,p_transaction_num => l_array_transaction_num(hdr_idx)
177100 ,p_event_id => l_array_event_id(hdr_idx)
177101 ,p_event_class_code => l_array_class_code(hdr_idx)
177102 ,p_event_type_code => l_array_event_type(hdr_idx)
177103 ,p_event_number => l_array_event_number(hdr_idx)
177104 ,p_event_date => l_array_event_date(hdr_idx)
177105 ,p_transaction_date => l_array_transaction_date(hdr_idx)
177106 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
177107 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
177108 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
177109 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
177110 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
177111 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
177112 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
177113 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
177114 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
177115 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
177116 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
177117 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
177118 ,p_event_created_by => l_array_event_created_by(hdr_idx)
177119 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
177120
177121 --
177122 -- set the status of entry to C_VALID (0)
177123 --
177124 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177125
177126 --
177127 -- initialize a row for ae header
177128 --
177129 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
177130
177131 l_event_id := l_array_event_id(hdr_idx);
177132
177133 --
177134 -- storing the hdr_idx for event. May be used by line cursor.
177135 --
177136 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
177137
177138 --
177139 -- store sources from header extract. This can be improved to
177140 -- store only those sources from header extract that may be used in lines
177141 --
177142
177143 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
177144 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
177145 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
177146 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
177147 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
177148 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
177149 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
177150
177151 --
177152 -- initilaize the status of ae headers for diffrent balance types
177153 -- the status is initialised to C_NOT_CREATED (2)
177154 --
177155 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177156 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177157 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
177158
177159 --
177160 -- call api to validate and store accounting attributes for header
177161 --
177162
177163 ------------------------------------------------------------
177164 -- Accrual Reversal : to get date for Standard Source (NONE)
177165 ------------------------------------------------------------
177166 l_acc_rev_gl_date_source := NULL;
177167
177168 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
177169 l_rec_acct_attrs.array_date_value(1) :=
177170 xla_ae_sources_pkg.GetSystemSourceDate(
177171 p_source_code => 'XLA_REFERENCE_DATE_1'
177172 , p_source_type_code => 'Y'
177173 , p_source_application_id => 602
177174 );
177175 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
177176 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
177177
177178
177179 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
177180
177181 XLA_AE_HEADER_PKG.SetJeCategoryName;
177182
177183 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
177184 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
177185 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
177186 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
177187 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
177188
177189
177190 -- No header level analytical criteria
177191
177192 --
177193 --accounting attribute enhancement, bug 3612931
177194 --
177195 l_trx_reversal_source := SUBSTR(NULL, 1,30);
177196
177197 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
177198 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
177199
177200 xla_accounting_err_pkg.build_message
177201 (p_appli_s_name => 'XLA'
177202 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
177203 ,p_token_1 => 'ACCT_ATTR_NAME'
177204 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
177205 ,p_token_2 => 'PRODUCT_NAME'
177206 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177207 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177208 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
177209 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177210
177211 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
177212 --
177213 -- following sets the accounting attributes needed to reverse
177214 -- accounting for a distributeion
177215 --
177216 xla_ae_lines_pkg.SetTrxReversalAttrs
177217 (p_event_id => l_event_id
177218 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
177219 ,p_trx_reversal_source => l_trx_reversal_source);
177220
177221 END IF;
177222
177223
177224 ----------------------------------------------------------------
177225 -- 4262811 - update the header statuses to invalid in need be
177226 ----------------------------------------------------------------
177227 --
177228 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
177229
177230
177231 -----------------------------------------------
177232 -- No accrual reversal for the event class/type
177233 -----------------------------------------------
177234 ----------------------------------------------------------------
177235
177236 --
177237 -- this ends the header loop iteration for one bulk fetch
177238 --
177239 END LOOP;
177240
177241 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
177242 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
177243
177244 --
177245 -- insert dummy rows into lines gt table that were created due to
177246 -- transaction reversals
177247 --
177248 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
177249 l_result := XLA_AE_LINES_PKG.InsertLines;
177250 END IF;
177251
177252 --
177253 -- reset the temp_line_num for each set of events fetched from header
177254 -- cursor rather than doing it for each new event in line cursor
177255 -- Bug 3939231
177256 --
177257 xla_ae_lines_pkg.g_temp_line_num := 0;
177258
177259
177260
177261 --
177262 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
177263 --
177264 --
177265 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177266
177267 trace
177268 (p_msg => 'SQL - FETCH line_cur'
177269 ,p_level => C_LEVEL_STATEMENT
177270 ,p_module => l_log_module);
177271
177272 END IF;
177273 --
177274 --
177275 LOOP
177276 --
177277 FETCH line_cur BULK COLLECT INTO
177278 l_array_entity_id
177279 , l_array_legal_entity_id
177280 , l_array_entity_code
177281 , l_array_transaction_num
177282 , l_array_event_id
177283 , l_array_class_code
177284 , l_array_event_type
177285 , l_array_event_number
177286 , l_array_event_date
177287 , l_array_transaction_date
177288 , l_array_reference_num_1
177289 , l_array_reference_num_2
177290 , l_array_reference_num_3
177291 , l_array_reference_num_4
177292 , l_array_reference_char_1
177293 , l_array_reference_char_2
177294 , l_array_reference_char_3
177295 , l_array_reference_char_4
177296 , l_array_reference_date_1
177297 , l_array_reference_date_2
177298 , l_array_reference_date_3
177299 , l_array_reference_date_4
177300 , l_array_event_created_by
177301 , l_array_budgetary_control_flag
177302 , l_array_extract_line_num
177303 , l_array_source_4
177304 , l_array_source_5
177305 , l_array_source_11
177306 , l_array_source_18
177307 , l_array_source_22
177308 LIMIT l_rows;
177309
177310 --
177311 IF (C_LEVEL_EVENT >= g_log_level) THEN
177312 trace
177313 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
177314 ,p_level => C_LEVEL_EVENT
177315 ,p_module => l_log_module);
177316 END IF;
177317 --
177318 EXIT WHEN l_array_entity_id.count = 0;
177319
177320 XLA_AE_LINES_PKG.g_rec_lines := null;
177321
177322 --
177323 -- Bug 4458708
177324 --
177325 XLA_AE_LINES_PKG.g_LineNumber := 0;
177326 --
177327 --
177328
177329 FOR Idx IN 1..l_array_event_id.count LOOP
177330 --
177331 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
177332 --
177333 l_event_id := l_array_event_id(idx); -- 5648433
177334
177335 --
177336 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
177337 --
177338
177339 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
177340 (g_array_event(l_event_id).array_value_num('header_index'))
177341 ,'N'
177342 ) <> 'Y'
177343 THEN
177344 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177345 trace
177346 (p_msg => 'Trancaction revesal option is not Y '
177347 ,p_level => C_LEVEL_STATEMENT
177348 ,p_module => l_log_module);
177349 END IF;
177350
177351 --
177352 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
177353 --
177354 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
177355 --
177356 -- set event info as cache for other routines to refer event attributes
177357 --
177358
177359 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
177360 l_previous_event_id := l_event_id;
177361
177362 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
177363 (p_application_id => p_application_id
177364 ,p_primary_ledger_id => p_primary_ledger_id
177365 ,p_base_ledger_id => p_base_ledger_id
177366 ,p_target_ledger_id => p_target_ledger_id
177367 ,p_entity_id => l_array_entity_id(Idx)
177368 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
177369 ,p_entity_code => l_array_entity_code(Idx)
177370 ,p_transaction_num => l_array_transaction_num(Idx)
177371 ,p_event_id => l_array_event_id(Idx)
177372 ,p_event_class_code => l_array_class_code(Idx)
177373 ,p_event_type_code => l_array_event_type(Idx)
177374 ,p_event_number => l_array_event_number(Idx)
177375 ,p_event_date => l_array_event_date(Idx)
177376 ,p_transaction_date => l_array_transaction_date(Idx)
177377 ,p_reference_num_1 => l_array_reference_num_1(Idx)
177378 ,p_reference_num_2 => l_array_reference_num_2(Idx)
177379 ,p_reference_num_3 => l_array_reference_num_3(Idx)
177380 ,p_reference_num_4 => l_array_reference_num_4(Idx)
177381 ,p_reference_char_1 => l_array_reference_char_1(Idx)
177382 ,p_reference_char_2 => l_array_reference_char_2(Idx)
177383 ,p_reference_char_3 => l_array_reference_char_3(Idx)
177384 ,p_reference_char_4 => l_array_reference_char_4(Idx)
177385 ,p_reference_date_1 => l_array_reference_date_1(Idx)
177386 ,p_reference_date_2 => l_array_reference_date_2(Idx)
177387 ,p_reference_date_3 => l_array_reference_date_3(Idx)
177388 ,p_reference_date_4 => l_array_reference_date_4(Idx)
177389 ,p_event_created_by => l_array_event_created_by(Idx)
177390 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
177391 --
177392 END IF;
177393
177394
177395
177396 --
177397 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
177398
177399 l_acct_reversal_source := SUBSTR(NULL, 1,30);
177400
177401 IF l_continue_with_lines THEN
177402 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
177403 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
177404
177405 xla_accounting_err_pkg.build_message
177406 (p_appli_s_name => 'XLA'
177407 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
177408 ,p_token_1 => 'LINE_NUMBER'
177409 ,p_value_1 => l_array_extract_line_num(Idx)
177410 ,p_token_2 => 'PRODUCT_NAME'
177411 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
177412 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
177413 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
177414 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
177415
177416 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
177417 --
177418 -- following sets the accounting attributes needed to reverse
177419 -- accounting for a distributeion
177420 --
177421
177422 --
177423 -- 5217187
177424 --
177425 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
177426 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
177427 g_array_event(l_event_id).array_value_num('header_index'));
177428 --
177429 --
177430
177431 -- No reversal code generated
177432
177433 xla_ae_lines_pkg.SetAcctReversalAttrs
177434 (p_event_id => l_event_id
177435 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
177436 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177437 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
177438 END IF;
177439
177440 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
177441 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
177442
177443 --
177444 AcctLineType_13 (
177445 p_application_id => p_application_id
177446 ,p_event_id => l_event_id
177447 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177448 ,p_calculate_g_l_flag => l_calculate_g_l_flag
177449 ,p_actual_flag => l_actual_flag
177450 ,p_balance_type_code => l_balance_type_code
177451 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177452
177453 , p_source_4 => l_array_source_4(Idx)
177454 , p_source_5 => l_array_source_5(Idx)
177455 , p_source_11 => l_array_source_11(Idx)
177456 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177457 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177458 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
177459 , p_source_18 => l_array_source_18(Idx)
177460 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
177461 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
177462 , p_source_22 => l_array_source_22(Idx)
177463 );
177464 If(l_balance_type_code = 'A') THEN
177465 l_actual_gain_loss_ref := l_gain_or_loss_ref;
177466 END IF;
177467
177468 --
177469
177470
177471 --
177472 AcctLineType_240 (
177473 p_application_id => p_application_id
177474 ,p_event_id => l_event_id
177475 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177476 ,p_calculate_g_l_flag => l_calculate_g_l_flag
177477 ,p_actual_flag => l_actual_flag
177478 ,p_balance_type_code => l_balance_type_code
177479 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177480
177481 , p_source_4 => l_array_source_4(Idx)
177482 , p_source_5 => l_array_source_5(Idx)
177483 , p_source_11 => l_array_source_11(Idx)
177484 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177485 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177486 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
177487 , p_source_18 => l_array_source_18(Idx)
177488 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
177489 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
177490 , p_source_22 => l_array_source_22(Idx)
177491 );
177492 If(l_balance_type_code = 'A') THEN
177493 l_actual_gain_loss_ref := l_gain_or_loss_ref;
177494 END IF;
177495
177496 --
177497
177498
177499 --
177500 AcctLineType_246 (
177501 p_application_id => p_application_id
177502 ,p_event_id => l_event_id
177503 ,p_calculate_acctd_flag => l_calculate_acctd_flag
177504 ,p_calculate_g_l_flag => l_calculate_g_l_flag
177505 ,p_actual_flag => l_actual_flag
177506 ,p_balance_type_code => l_balance_type_code
177507 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
177508
177509 , p_source_4 => l_array_source_4(Idx)
177510 , p_source_5 => l_array_source_5(Idx)
177511 , p_source_11 => l_array_source_11(Idx)
177512 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
177513 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
177514 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
177515 , p_source_18 => l_array_source_18(Idx)
177516 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
177517 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
177518 , p_source_22 => l_array_source_22(Idx)
177519 );
177520 If(l_balance_type_code = 'A') THEN
177521 l_actual_gain_loss_ref := l_gain_or_loss_ref;
177522 END IF;
177523
177524 --
177525
177526 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
177527 -- or secondary ledger that has different currency with primary
177528 -- or alc that is calculated by sla
177529 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
177530 (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'))
177531
177532 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
177533 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
177534 AND (l_actual_flag = 'A')) THEN
177535 XLA_AE_LINES_PKG.CreateGainOrLossLines(
177536 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
177537 ,p_application_id => p_application_id
177538 ,p_amb_context_code => 'DEFAULT'
177539 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
177540 ,p_event_class_code => C_EVENT_CLASS_CODE
177541 ,p_event_type_code => C_EVENT_TYPE_CODE
177542
177543 ,p_gain_ccid => -1
177544 ,p_loss_ccid => -1
177545
177546 ,p_actual_flag => l_actual_flag
177547 ,p_enc_flag => null
177548 ,p_actual_g_l_ref => l_actual_gain_loss_ref
177549 ,p_enc_g_l_ref => null
177550 );
177551 END IF;
177552 END IF;
177553 END IF;
177554
177555 ELSE
177556 --
177557 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
177558 --
177559 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177560 trace
177561 (p_msg => 'Trancaction revesal option is Y'
177562 ,p_level => C_LEVEL_STATEMENT
177563 ,p_module => l_log_module);
177564 END IF;
177565 END IF;
177566
177567 END LOOP;
177568 l_result := XLA_AE_LINES_PKG.InsertLines ;
177569 end loop;
177570 close line_cur;
177571
177572
177573 --
177574 -- insert headers into xla_ae_headers_gt table
177575 --
177576 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
177577
177578 -- insert into errors table here.
177579
177580 END LOOP;
177581
177582 --
177583 -- 4865292
177584 --
177585 -- Compare g_hdr_extract_count with event count in
177586 -- CreateHeadersAndLines.
177587 --
177588 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
177589
177590 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177591 trace (p_msg => '# rows extracted from header extract objects '
177592 || ' (running total): '
177593 || g_hdr_extract_count
177594 ,p_level => C_LEVEL_STATEMENT
177595 ,p_module => l_log_module);
177596 END IF;
177597
177598 CLOSE header_cur;
177599 --
177600
177601 --
177602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177603 trace
177604 (p_msg => 'END of EventClass_284'
177605 ,p_level => C_LEVEL_PROCEDURE
177606 ,p_module => l_log_module);
177607 END IF;
177608 --
177609 RETURN l_result;
177610 EXCEPTION
177611 WHEN xla_exceptions_pkg.application_exception THEN
177612
177613 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
177614
177615
177616 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
177617
177618 RAISE;
177619
177620 WHEN NO_DATA_FOUND THEN
177621
177622 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
177623 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
177624
177625 FOR header_record IN header_cur
177626 LOOP
177627 l_array_header_events(header_record.event_id) := header_record.event_id;
177628 END LOOP;
177629
177630 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
177631 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
177632
177633 fnd_file.put_line(fnd_file.LOG, ' ');
177634 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
177635 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
177636 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
177637
177638 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
177639 LOOP
177640 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
177641 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
177642 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
177643 END IF;
177644 END LOOP;
177645
177646 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
177647 fnd_file.put_line(fnd_file.LOG, ' ');
177648
177649
177650 xla_exceptions_pkg.raise_message
177651 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_284');
177652
177653
177654 WHEN OTHERS THEN
177655 xla_exceptions_pkg.raise_message
177656 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_284');
177657 END EventClass_284;
177658 --
177659
177660 ---------------------------------------
177661 --
177662 -- PRIVATE PROCEDURE
177663 -- insert_sources_285
177664 --
177665 ----------------------------------------
177666 --
177667 PROCEDURE insert_sources_285(
177668 p_target_ledger_id IN NUMBER
177669 , p_language IN VARCHAR2
177670 , p_sla_ledger_id IN NUMBER
177671 , p_pad_start_date IN DATE
177672 , p_pad_end_date IN DATE
177673 )
177674 IS
177675
177676 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV_ALL';
177677 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV';
177678 p_apps_owner VARCHAR2(30);
177679 l_log_module VARCHAR2(240);
177680 BEGIN
177681 IF g_log_enabled THEN
177682 l_log_module := C_DEFAULT_MODULE||'.insert_sources_285';
177683 END IF;
177684 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177685
177686 trace
177687 (p_msg => 'BEGIN of insert_sources_285'
177688 ,p_level => C_LEVEL_PROCEDURE
177689 ,p_module => l_log_module);
177690
177691 END IF;
177692
177693 -- select APPS owner
177694 SELECT oracle_username
177695 INTO p_apps_owner
177696 FROM fnd_oracle_userid
177697 WHERE read_only_flag = 'U'
177698 ;
177699
177700 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177701 trace
177702 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
177703 ' - p_language = '||p_language||
177704 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
177705 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
177706 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
177707 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
177708 ,p_level => C_LEVEL_STATEMENT
177709 ,p_module => l_log_module);
177710 END IF;
177711
177712
177713 --
177714 INSERT INTO xla_diag_sources --hdr2
177715 (
177716 event_id
177717 , ledger_id
177718 , sla_ledger_id
177719 , description_language
177720 , object_name
177721 , object_type_code
177722 , line_number
177723 , source_application_id
177724 , source_type_code
177725 , source_code
177726 , source_value
177727 , source_meaning
177728 , created_by
177729 , creation_date
177730 , last_update_date
177731 , last_updated_by
177732 , last_update_login
177733 , program_update_date
177734 , program_application_id
177735 , program_id
177736 , request_id
177737 )
177738 SELECT
177739 event_id
177740 , p_target_ledger_id
177741 , p_sla_ledger_id
177742 , p_language
177743 , object_name
177744 , object_type_code
177745 , line_number
177746 , source_application_id
177747 , source_type_code
177748 , source_code
177749 , SUBSTR(source_value ,1,1996)
177750 , SUBSTR(source_meaning ,1,200)
177751 , xla_environment_pkg.g_Usr_Id
177752 , TRUNC(SYSDATE)
177753 , TRUNC(SYSDATE)
177754 , xla_environment_pkg.g_Usr_Id
177755 , xla_environment_pkg.g_Login_Id
177756 , TRUNC(SYSDATE)
177757 , xla_environment_pkg.g_Prog_Appl_Id
177758 , xla_environment_pkg.g_Prog_Id
177759 , xla_environment_pkg.g_Req_Id
177760 FROM (
177761 SELECT xet.event_id event_id
177762 , 0 line_number
177763 , CASE r
177764 WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V'
177765 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V'
177766 WHEN 3 THEN 'CST_XLA_RCV_HEADERS_V'
177767 WHEN 4 THEN 'CST_XLA_RCV_HEADERS_V'
177768 WHEN 5 THEN 'CST_XLA_RCV_HEADERS_V'
177769 WHEN 6 THEN 'CST_XLA_RCV_HEADERS_V'
177770
177771 ELSE null
177772 END object_name
177773 , CASE r
177774 WHEN 1 THEN 'HEADER'
177775 WHEN 2 THEN 'HEADER'
177776 WHEN 3 THEN 'HEADER'
177777 WHEN 4 THEN 'HEADER'
177778 WHEN 5 THEN 'HEADER'
177779 WHEN 6 THEN 'HEADER'
177780
177781 ELSE null
177782 END object_type_code
177783 , CASE r
177784 WHEN 1 THEN '707'
177785 WHEN 2 THEN '707'
177786 WHEN 3 THEN '707'
177787 WHEN 4 THEN '707'
177788 WHEN 5 THEN '707'
177789 WHEN 6 THEN '707'
177790
177791 ELSE null
177792 END source_application_id
177793 , 'S' source_type_code
177794 , CASE r
177795 WHEN 1 THEN 'DISTRIBUTION_TYPE'
177796 WHEN 2 THEN 'CURRENCY_CODE'
177797 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
177798 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
177799 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
177800 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
177801
177802 ELSE null
177803 END source_code
177804 , CASE r
177805 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
177806 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
177807 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
177808 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
177809 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
177810 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
177811
177812 ELSE null
177813 END source_value
177814 , CASE r
177815 WHEN 1 THEN fvl12.meaning
177816 WHEN 6 THEN fvl38.meaning
177817
177818 ELSE null
177819 END source_meaning
177820 FROM xla_events_gt xet
177821 , CST_XLA_RCV_HEADERS_V h1
177822 , fnd_lookup_values fvl12
177823 , fnd_lookup_values fvl38
177824 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
177825 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177826 AND xet.event_class_code = C_EVENT_CLASS_CODE
177827 AND h1.event_id = xet.event_id
177828 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
177829 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
177830 AND fvl12.view_application_id(+) = 700
177831 AND fvl12.language(+) = USERENV('LANG')
177832 AND fvl38.lookup_type(+) = 'YES_NO'
177833 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
177834 AND fvl38.view_application_id(+) = 0
177835 AND fvl38.language(+) = USERENV('LANG')
177836
177837 )
177838 ;
177839 --
177840 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177841
177842 trace
177843 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
177844 ,p_level => C_LEVEL_STATEMENT
177845 ,p_module => l_log_module);
177846
177847 END IF;
177848 --
177849
177850
177851
177852 --
177853 INSERT INTO xla_diag_sources --line2
177854 (
177855 event_id
177856 , ledger_id
177857 , sla_ledger_id
177858 , description_language
177859 , object_name
177860 , object_type_code
177861 , line_number
177862 , source_application_id
177863 , source_type_code
177864 , source_code
177865 , source_value
177866 , source_meaning
177867 , created_by
177868 , creation_date
177869 , last_update_date
177870 , last_updated_by
177871 , last_update_login
177872 , program_update_date
177873 , program_application_id
177874 , program_id
177875 , request_id
177876 )
177877 SELECT event_id
177878 , p_target_ledger_id
177879 , p_sla_ledger_id
177880 , p_language
177881 , object_name
177882 , object_type_code
177883 , line_number
177884 , source_application_id
177885 , source_type_code
177886 , source_code
177887 , SUBSTR(source_value,1,1996)
177888 , SUBSTR(source_meaning ,1,200)
177889 , xla_environment_pkg.g_Usr_Id
177890 , TRUNC(SYSDATE)
177891 , TRUNC(SYSDATE)
177892 , xla_environment_pkg.g_Usr_Id
177893 , xla_environment_pkg.g_Login_Id
177894 , TRUNC(SYSDATE)
177895 , xla_environment_pkg.g_Prog_Appl_Id
177896 , xla_environment_pkg.g_Prog_Id
177897 , xla_environment_pkg.g_Req_Id
177898 FROM (
177899 SELECT xet.event_id event_id
177900 , l2.line_number line_number
177901 , CASE r
177902 WHEN 1 THEN 'CST_XLA_RCV_LINES_V'
177903 WHEN 2 THEN 'CST_XLA_RCV_LINES_V'
177904 WHEN 3 THEN 'CST_XLA_RCV_LINES_V'
177905 WHEN 4 THEN 'CST_XLA_RCV_LINES_V'
177906 WHEN 5 THEN 'CST_XLA_RCV_LINES_V'
177907
177908 ELSE null
177909 END object_name
177910 , CASE r
177911 WHEN 1 THEN 'LINE'
177912 WHEN 2 THEN 'LINE'
177913 WHEN 3 THEN 'LINE'
177914 WHEN 4 THEN 'LINE'
177915 WHEN 5 THEN 'LINE'
177916
177917 ELSE null
177918 END object_type_code
177919 , CASE r
177920 WHEN 1 THEN '707'
177921 WHEN 2 THEN '707'
177922 WHEN 3 THEN '707'
177923 WHEN 4 THEN '707'
177924 WHEN 5 THEN '707'
177925
177926 ELSE null
177927 END source_application_id
177928 , 'S' source_type_code
177929 , CASE r
177930 WHEN 1 THEN 'CODE_COMBINATION_ID'
177931 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE'
177932 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER'
177933 WHEN 4 THEN 'ENTERED_AMOUNT'
177934 WHEN 5 THEN 'ACCOUNTED_AMOUNT'
177935
177936 ELSE null
177937 END source_code
177938 , CASE r
177939 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
177940 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
177941 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
177942 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
177943 WHEN 5 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
177944
177945 ELSE null
177946 END source_value
177947 , null source_meaning
177948 FROM xla_events_gt xet
177949 , CST_XLA_RCV_LINES_V l2
177950 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
177951 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
177952 AND xet.event_class_code = C_EVENT_CLASS_CODE
177953 AND l2.event_id = xet.event_id
177954
177955 )
177956 ;
177957 --
177958 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
177959
177960 trace
177961 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
177962 ,p_level => C_LEVEL_STATEMENT
177963 ,p_module => l_log_module);
177964
177965 END IF;
177966
177967
177968 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
177969 trace
177970 (p_msg => 'END of insert_sources_285'
177971 ,p_level => C_LEVEL_PROCEDURE
177972 ,p_module => l_log_module);
177973 END IF;
177974 EXCEPTION
177975 WHEN xla_exceptions_pkg.application_exception THEN
177976 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177977 trace
177978 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177979 ,p_level => C_LEVEL_EXCEPTION
177980 ,p_module => l_log_module);
177981 END IF;
177982 RAISE;
177983 WHEN OTHERS THEN
177984 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
177985 trace
177986 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
177987 ,p_level => C_LEVEL_EXCEPTION
177988 ,p_module => l_log_module);
177989 END IF;
177990 xla_exceptions_pkg.raise_message
177991 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_285');
177992 END insert_sources_285;
177993 --
177994
177995 ---------------------------------------
177996 --
177997 -- PRIVATE FUNCTION
177998 -- EventClass_285
177999 --
178000 ----------------------------------------
178001 --
178002 FUNCTION EventClass_285
178003 (p_application_id IN NUMBER
178004 ,p_base_ledger_id IN NUMBER
178005 ,p_target_ledger_id IN NUMBER
178006 ,p_language IN VARCHAR2
178007 ,p_currency_code IN VARCHAR2
178008 ,p_sla_ledger_id IN NUMBER
178009 ,p_pad_start_date IN DATE
178010 ,p_pad_end_date IN DATE
178011 ,p_primary_ledger_id IN NUMBER)
178012 RETURN BOOLEAN IS
178013 --
178014 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV_ALL';
178015 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'RETR_PRICE_ADJ_RCV';
178016
178017 l_calculate_acctd_flag VARCHAR2(1) :='N';
178018 l_calculate_g_l_flag VARCHAR2(1) :='N';
178019 --
178020 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178021 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178022 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178023 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178024 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178025 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178026 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178027 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178028 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178029 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178030 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178031 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178032 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178033 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
178034 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178035 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178036 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178037 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
178038 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178039 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178040 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178041 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
178042 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
178043 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
178044 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
178045 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
178046
178047 l_event_id NUMBER;
178048 l_previous_event_id NUMBER;
178049 l_first_event_id NUMBER;
178050 l_last_event_id NUMBER;
178051
178052 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
178053 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
178054 --
178055 --
178056 l_result BOOLEAN := TRUE;
178057 l_rows NUMBER := 1000;
178058 l_event_type_name VARCHAR2(80) := 'All';
178059 l_event_class_name VARCHAR2(80) := 'Retroactive Price Adjustment to Receipt';
178060 l_description VARCHAR2(4000);
178061 l_transaction_reversal NUMBER;
178062 l_ae_header_id NUMBER;
178063 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
178064 l_log_module VARCHAR2(240);
178065 --
178066 l_acct_reversal_source VARCHAR2(30);
178067 l_trx_reversal_source VARCHAR2(30);
178068
178069 l_continue_with_lines BOOLEAN := TRUE;
178070 --
178071 l_acc_rev_gl_date_source DATE; -- 4262811
178072 --
178073 type t_array_event_id is table of number index by binary_integer;
178074
178075 l_rec_array_event t_rec_array_event;
178076 l_null_rec_array_event t_rec_array_event;
178077 l_array_ae_header_id xla_number_array_type;
178078 l_actual_flag VARCHAR2(1) := NULL;
178079 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
178080 l_balance_type_code VARCHAR2(1) :=NULL;
178081 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
178082
178083 --
178084 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
178085 --
178086
178087 TYPE t_array_source_12 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
178088 TYPE t_array_source_15 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
178089 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
178090 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
178091 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
178092 TYPE t_array_source_38 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
178093
178094 TYPE t_array_source_4 IS TABLE OF CST_XLA_RCV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
178095 TYPE t_array_source_5 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
178096 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
178097 TYPE t_array_source_18 IS TABLE OF CST_XLA_RCV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178098 TYPE t_array_source_22 IS TABLE OF CST_XLA_RCV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
178099
178100 l_array_source_12 t_array_source_12;
178101 l_array_source_12_meaning t_array_lookup_meaning;
178102 l_array_source_15 t_array_source_15;
178103 l_array_source_19 t_array_source_19;
178104 l_array_source_20 t_array_source_20;
178105 l_array_source_21 t_array_source_21;
178106 l_array_source_38 t_array_source_38;
178107 l_array_source_38_meaning t_array_lookup_meaning;
178108
178109 l_array_source_4 t_array_source_4;
178110 l_array_source_5 t_array_source_5;
178111 l_array_source_11 t_array_source_11;
178112 l_array_source_18 t_array_source_18;
178113 l_array_source_22 t_array_source_22;
178114
178115 --
178116 CURSOR header_cur
178117 IS
178118 SELECT /*+ leading(xet) cardinality(xet,1) */
178119 -- Event Class Code: RETR_PRICE_ADJ_RCV
178120 xet.entity_id
178121 ,xet.legal_entity_id
178122 ,xet.entity_code
178123 ,xet.transaction_number
178124 ,xet.event_id
178125 ,xet.event_class_code
178126 ,xet.event_type_code
178127 ,xet.event_number
178128 ,xet.event_date
178129 ,xet.transaction_date
178130 ,xet.reference_num_1
178131 ,xet.reference_num_2
178132 ,xet.reference_num_3
178133 ,xet.reference_num_4
178134 ,xet.reference_char_1
178135 ,xet.reference_char_2
178136 ,xet.reference_char_3
178137 ,xet.reference_char_4
178138 ,xet.reference_date_1
178139 ,xet.reference_date_2
178140 ,xet.reference_date_3
178141 ,xet.reference_date_4
178142 ,xet.event_created_by
178143 ,xet.budgetary_control_flag
178144 , h1.DISTRIBUTION_TYPE source_12
178145 , fvl12.meaning source_12_meaning
178146 , h1.CURRENCY_CODE source_15
178147 , h1.CURRENCY_CONVERSION_DATE source_19
178148 , h1.CURRENCY_CONVERSION_RATE source_20
178149 , h1.CURRENCY_CONVERSION_TYPE source_21
178150 , h1.TRANSFER_TO_GL_INDICATOR source_38
178151 , fvl38.meaning source_38_meaning
178152 FROM xla_events_gt xet
178153 , CST_XLA_RCV_HEADERS_V h1
178154 , fnd_lookup_values fvl12
178155 , fnd_lookup_values fvl38
178156 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
178157 and xet.event_class_code = C_EVENT_CLASS_CODE
178158 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
178159 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
178160 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
178161 AND fvl12.view_application_id(+) = 700
178162 AND fvl12.language(+) = USERENV('LANG')
178163 AND fvl38.lookup_type(+) = 'YES_NO'
178164 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
178165 AND fvl38.view_application_id(+) = 0
178166 AND fvl38.language(+) = USERENV('LANG')
178167
178168 ORDER BY event_id
178169 ;
178170
178171
178172 --
178173 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
178174 IS
178175 SELECT /*+ leading(xet) cardinality(xet,1) */
178176 -- Event Class Code: RETR_PRICE_ADJ_RCV
178177 xet.entity_id
178178 ,xet.legal_entity_id
178179 ,xet.entity_code
178180 ,xet.transaction_number
178181 ,xet.event_id
178182 ,xet.event_class_code
178183 ,xet.event_type_code
178184 ,xet.event_number
178185 ,xet.event_date
178186 ,xet.transaction_date
178187 ,xet.reference_num_1
178188 ,xet.reference_num_2
178189 ,xet.reference_num_3
178190 ,xet.reference_num_4
178191 ,xet.reference_char_1
178192 ,xet.reference_char_2
178193 ,xet.reference_char_3
178194 ,xet.reference_char_4
178195 ,xet.reference_date_1
178196 ,xet.reference_date_2
178197 ,xet.reference_date_3
178198 ,xet.reference_date_4
178199 ,xet.event_created_by
178200 ,xet.budgetary_control_flag
178201 , l2.LINE_NUMBER
178202 , l2.CODE_COMBINATION_ID source_4
178203 , l2.RCV_ACCOUNTING_LINE_TYPE source_5
178204 , l2.DISTRIBUTION_IDENTIFIER source_11
178205 , l2.ENTERED_AMOUNT source_18
178206 , l2.ACCOUNTED_AMOUNT source_22
178207 FROM xla_events_gt xet
178208 , CST_XLA_RCV_LINES_V l2
178209 WHERE xet.event_id between x_first_event_id and x_last_event_id
178210 and xet.event_date between p_pad_start_date and p_pad_end_date
178211 and xet.event_class_code = C_EVENT_CLASS_CODE
178212 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
178213 ;
178214
178215 --
178216 BEGIN
178217 IF g_log_enabled THEN
178218 l_log_module := C_DEFAULT_MODULE||'.EventClass_285';
178219 END IF;
178220 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178221 trace
178222 (p_msg => 'BEGIN of EventClass_285'
178223 ,p_level => C_LEVEL_PROCEDURE
178224 ,p_module => l_log_module);
178225 END IF;
178226
178227 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178228 trace
178229 (p_msg => 'p_application_id = '||p_application_id||
178230 ' - p_base_ledger_id = '||p_base_ledger_id||
178231 ' - p_target_ledger_id = '||p_target_ledger_id||
178232 ' - p_language = '||p_language||
178233 ' - p_currency_code = '||p_currency_code||
178234 ' - p_sla_ledger_id = '||p_sla_ledger_id
178235 ,p_level => C_LEVEL_STATEMENT
178236 ,p_module => l_log_module);
178237 END IF;
178238 --
178239 -- initialze arrays
178240 --
178241 g_array_event.DELETE;
178242 l_rec_array_event := l_null_rec_array_event;
178243 --
178244 --------------------------------------
178245 -- 4262811 Initialze MPA Line Number
178246 --------------------------------------
178247 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
178248
178249 --
178250
178251 --
178252 OPEN header_cur;
178253 --
178254 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178255 trace
178256 (p_msg => 'SQL - FETCH header_cur'
178257 ,p_level => C_LEVEL_STATEMENT
178258 ,p_module => l_log_module);
178259 END IF;
178260 --
178261 LOOP
178262 FETCH header_cur BULK COLLECT INTO
178263 l_array_entity_id
178264 , l_array_legal_entity_id
178265 , l_array_entity_code
178266 , l_array_transaction_num
178267 , l_array_event_id
178268 , l_array_class_code
178269 , l_array_event_type
178270 , l_array_event_number
178271 , l_array_event_date
178272 , l_array_transaction_date
178273 , l_array_reference_num_1
178274 , l_array_reference_num_2
178275 , l_array_reference_num_3
178276 , l_array_reference_num_4
178277 , l_array_reference_char_1
178278 , l_array_reference_char_2
178279 , l_array_reference_char_3
178280 , l_array_reference_char_4
178281 , l_array_reference_date_1
178282 , l_array_reference_date_2
178283 , l_array_reference_date_3
178284 , l_array_reference_date_4
178285 , l_array_event_created_by
178286 , l_array_budgetary_control_flag
178287 , l_array_source_12
178288 , l_array_source_12_meaning
178289 , l_array_source_15
178290 , l_array_source_19
178291 , l_array_source_20
178292 , l_array_source_21
178293 , l_array_source_38
178294 , l_array_source_38_meaning
178295 LIMIT l_rows;
178296 --
178297 IF (C_LEVEL_EVENT >= g_log_level) THEN
178298 trace
178299 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
178300 ,p_level => C_LEVEL_EVENT
178301 ,p_module => l_log_module);
178302 END IF;
178303 --
178304 EXIT WHEN l_array_entity_id.COUNT = 0;
178305
178306 -- initialize arrays
178307 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
178308 XLA_AE_LINES_PKG.g_rec_lines := NULL;
178309
178310 --
178311 -- Bug 4458708
178312 --
178313 XLA_AE_LINES_PKG.g_LineNumber := 0;
178314
178315
178316 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
178317 g_last_hdr_idx := l_array_event_id.LAST;
178318 --
178319 -- loop for the headers. Each iteration is for each header extract row
178320 -- fetched in header cursor
178321 --
178322 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
178323
178324 --
178325 -- set event info as cache for other routines to refer event attributes
178326 --
178327 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
178328 (p_application_id => p_application_id
178329 ,p_primary_ledger_id => p_primary_ledger_id
178330 ,p_base_ledger_id => p_base_ledger_id
178331 ,p_target_ledger_id => p_target_ledger_id
178332 ,p_entity_id => l_array_entity_id(hdr_idx)
178333 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
178334 ,p_entity_code => l_array_entity_code(hdr_idx)
178335 ,p_transaction_num => l_array_transaction_num(hdr_idx)
178336 ,p_event_id => l_array_event_id(hdr_idx)
178337 ,p_event_class_code => l_array_class_code(hdr_idx)
178338 ,p_event_type_code => l_array_event_type(hdr_idx)
178339 ,p_event_number => l_array_event_number(hdr_idx)
178340 ,p_event_date => l_array_event_date(hdr_idx)
178341 ,p_transaction_date => l_array_transaction_date(hdr_idx)
178342 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
178343 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
178344 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
178345 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
178346 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
178347 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
178348 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
178349 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
178350 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
178351 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
178352 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
178353 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
178354 ,p_event_created_by => l_array_event_created_by(hdr_idx)
178355 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
178356
178357 --
178358 -- set the status of entry to C_VALID (0)
178359 --
178360 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
178361
178362 --
178363 -- initialize a row for ae header
178364 --
178365 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
178366
178367 l_event_id := l_array_event_id(hdr_idx);
178368
178369 --
178370 -- storing the hdr_idx for event. May be used by line cursor.
178371 --
178372 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
178373
178374 --
178375 -- store sources from header extract. This can be improved to
178376 -- store only those sources from header extract that may be used in lines
178377 --
178378
178379 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
178380 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
178381 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
178382 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
178383 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
178384 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
178385 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
178386 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
178387
178388 --
178389 -- initilaize the status of ae headers for diffrent balance types
178390 -- the status is initialised to C_NOT_CREATED (2)
178391 --
178392 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178393 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178394 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
178395
178396 --
178397 -- call api to validate and store accounting attributes for header
178398 --
178399
178400 ------------------------------------------------------------
178401 -- Accrual Reversal : to get date for Standard Source (NONE)
178402 ------------------------------------------------------------
178403 l_acc_rev_gl_date_source := NULL;
178404
178405 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
178406 l_rec_acct_attrs.array_date_value(1) :=
178407 xla_ae_sources_pkg.GetSystemSourceDate(
178408 p_source_code => 'XLA_REFERENCE_DATE_1'
178409 , p_source_type_code => 'Y'
178410 , p_source_application_id => 602
178411 );
178412 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
178413 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
178414
178415
178416 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
178417
178418 XLA_AE_HEADER_PKG.SetJeCategoryName;
178419
178420 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
178421 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
178422 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
178423 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
178424 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
178425
178426
178427 -- No header level analytical criteria
178428
178429 --
178430 --accounting attribute enhancement, bug 3612931
178431 --
178432 l_trx_reversal_source := SUBSTR(NULL, 1,30);
178433
178434 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
178435 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
178436
178437 xla_accounting_err_pkg.build_message
178438 (p_appli_s_name => 'XLA'
178439 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
178440 ,p_token_1 => 'ACCT_ATTR_NAME'
178441 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
178442 ,p_token_2 => 'PRODUCT_NAME'
178443 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178444 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
178445 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
178446 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
178447
178448 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
178449 --
178450 -- following sets the accounting attributes needed to reverse
178451 -- accounting for a distributeion
178452 --
178453 xla_ae_lines_pkg.SetTrxReversalAttrs
178454 (p_event_id => l_event_id
178455 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
178456 ,p_trx_reversal_source => l_trx_reversal_source);
178457
178458 END IF;
178459
178460
178461 ----------------------------------------------------------------
178462 -- 4262811 - update the header statuses to invalid in need be
178463 ----------------------------------------------------------------
178464 --
178465 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
178466
178467
178468 -----------------------------------------------
178469 -- No accrual reversal for the event class/type
178470 -----------------------------------------------
178471 ----------------------------------------------------------------
178472
178473 --
178474 -- this ends the header loop iteration for one bulk fetch
178475 --
178476 END LOOP;
178477
178478 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
178479 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
178480
178481 --
178482 -- insert dummy rows into lines gt table that were created due to
178483 -- transaction reversals
178484 --
178485 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
178486 l_result := XLA_AE_LINES_PKG.InsertLines;
178487 END IF;
178488
178489 --
178490 -- reset the temp_line_num for each set of events fetched from header
178491 -- cursor rather than doing it for each new event in line cursor
178492 -- Bug 3939231
178493 --
178494 xla_ae_lines_pkg.g_temp_line_num := 0;
178495
178496
178497
178498 --
178499 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
178500 --
178501 --
178502 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178503
178504 trace
178505 (p_msg => 'SQL - FETCH line_cur'
178506 ,p_level => C_LEVEL_STATEMENT
178507 ,p_module => l_log_module);
178508
178509 END IF;
178510 --
178511 --
178512 LOOP
178513 --
178514 FETCH line_cur BULK COLLECT INTO
178515 l_array_entity_id
178516 , l_array_legal_entity_id
178517 , l_array_entity_code
178518 , l_array_transaction_num
178519 , l_array_event_id
178520 , l_array_class_code
178521 , l_array_event_type
178522 , l_array_event_number
178523 , l_array_event_date
178524 , l_array_transaction_date
178525 , l_array_reference_num_1
178526 , l_array_reference_num_2
178527 , l_array_reference_num_3
178528 , l_array_reference_num_4
178529 , l_array_reference_char_1
178530 , l_array_reference_char_2
178531 , l_array_reference_char_3
178532 , l_array_reference_char_4
178533 , l_array_reference_date_1
178534 , l_array_reference_date_2
178535 , l_array_reference_date_3
178536 , l_array_reference_date_4
178537 , l_array_event_created_by
178538 , l_array_budgetary_control_flag
178539 , l_array_extract_line_num
178540 , l_array_source_4
178541 , l_array_source_5
178542 , l_array_source_11
178543 , l_array_source_18
178544 , l_array_source_22
178545 LIMIT l_rows;
178546
178547 --
178548 IF (C_LEVEL_EVENT >= g_log_level) THEN
178549 trace
178550 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
178551 ,p_level => C_LEVEL_EVENT
178552 ,p_module => l_log_module);
178553 END IF;
178554 --
178555 EXIT WHEN l_array_entity_id.count = 0;
178556
178557 XLA_AE_LINES_PKG.g_rec_lines := null;
178558
178559 --
178560 -- Bug 4458708
178561 --
178562 XLA_AE_LINES_PKG.g_LineNumber := 0;
178563 --
178564 --
178565
178566 FOR Idx IN 1..l_array_event_id.count LOOP
178567 --
178568 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
178569 --
178570 l_event_id := l_array_event_id(idx); -- 5648433
178571
178572 --
178573 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
178574 --
178575
178576 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
178577 (g_array_event(l_event_id).array_value_num('header_index'))
178578 ,'N'
178579 ) <> 'Y'
178580 THEN
178581 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178582 trace
178583 (p_msg => 'Trancaction revesal option is not Y '
178584 ,p_level => C_LEVEL_STATEMENT
178585 ,p_module => l_log_module);
178586 END IF;
178587
178588 --
178589 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
178590 --
178591 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
178592 --
178593 -- set event info as cache for other routines to refer event attributes
178594 --
178595
178596 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
178597 l_previous_event_id := l_event_id;
178598
178599 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
178600 (p_application_id => p_application_id
178601 ,p_primary_ledger_id => p_primary_ledger_id
178602 ,p_base_ledger_id => p_base_ledger_id
178603 ,p_target_ledger_id => p_target_ledger_id
178604 ,p_entity_id => l_array_entity_id(Idx)
178605 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
178606 ,p_entity_code => l_array_entity_code(Idx)
178607 ,p_transaction_num => l_array_transaction_num(Idx)
178608 ,p_event_id => l_array_event_id(Idx)
178609 ,p_event_class_code => l_array_class_code(Idx)
178610 ,p_event_type_code => l_array_event_type(Idx)
178611 ,p_event_number => l_array_event_number(Idx)
178612 ,p_event_date => l_array_event_date(Idx)
178613 ,p_transaction_date => l_array_transaction_date(Idx)
178614 ,p_reference_num_1 => l_array_reference_num_1(Idx)
178615 ,p_reference_num_2 => l_array_reference_num_2(Idx)
178616 ,p_reference_num_3 => l_array_reference_num_3(Idx)
178617 ,p_reference_num_4 => l_array_reference_num_4(Idx)
178618 ,p_reference_char_1 => l_array_reference_char_1(Idx)
178619 ,p_reference_char_2 => l_array_reference_char_2(Idx)
178620 ,p_reference_char_3 => l_array_reference_char_3(Idx)
178621 ,p_reference_char_4 => l_array_reference_char_4(Idx)
178622 ,p_reference_date_1 => l_array_reference_date_1(Idx)
178623 ,p_reference_date_2 => l_array_reference_date_2(Idx)
178624 ,p_reference_date_3 => l_array_reference_date_3(Idx)
178625 ,p_reference_date_4 => l_array_reference_date_4(Idx)
178626 ,p_event_created_by => l_array_event_created_by(Idx)
178627 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
178628 --
178629 END IF;
178630
178631
178632
178633 --
178634 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
178635
178636 l_acct_reversal_source := SUBSTR(NULL, 1,30);
178637
178638 IF l_continue_with_lines THEN
178639 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
178640 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
178641
178642 xla_accounting_err_pkg.build_message
178643 (p_appli_s_name => 'XLA'
178644 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
178645 ,p_token_1 => 'LINE_NUMBER'
178646 ,p_value_1 => l_array_extract_line_num(Idx)
178647 ,p_token_2 => 'PRODUCT_NAME'
178648 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178649 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
178650 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
178651 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
178652
178653 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
178654 --
178655 -- following sets the accounting attributes needed to reverse
178656 -- accounting for a distributeion
178657 --
178658
178659 --
178660 -- 5217187
178661 --
178662 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
178663 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
178664 g_array_event(l_event_id).array_value_num('header_index'));
178665 --
178666 --
178667
178668 -- No reversal code generated
178669
178670 xla_ae_lines_pkg.SetAcctReversalAttrs
178671 (p_event_id => l_event_id
178672 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
178673 ,p_calculate_acctd_flag => l_calculate_acctd_flag
178674 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
178675 END IF;
178676
178677 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
178678 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
178679
178680 --
178681 AcctLineType_9 (
178682 p_application_id => p_application_id
178683 ,p_event_id => l_event_id
178684 ,p_calculate_acctd_flag => l_calculate_acctd_flag
178685 ,p_calculate_g_l_flag => l_calculate_g_l_flag
178686 ,p_actual_flag => l_actual_flag
178687 ,p_balance_type_code => l_balance_type_code
178688 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178689
178690 , p_source_4 => l_array_source_4(Idx)
178691 , p_source_5 => l_array_source_5(Idx)
178692 , p_source_11 => l_array_source_11(Idx)
178693 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178694 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178695 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
178696 , p_source_18 => l_array_source_18(Idx)
178697 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
178698 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
178699 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
178700 , p_source_22 => l_array_source_22(Idx)
178701 );
178702 If(l_balance_type_code = 'A') THEN
178703 l_actual_gain_loss_ref := l_gain_or_loss_ref;
178704 END IF;
178705
178706 --
178707
178708
178709 --
178710 AcctLineType_60 (
178711 p_application_id => p_application_id
178712 ,p_event_id => l_event_id
178713 ,p_calculate_acctd_flag => l_calculate_acctd_flag
178714 ,p_calculate_g_l_flag => l_calculate_g_l_flag
178715 ,p_actual_flag => l_actual_flag
178716 ,p_balance_type_code => l_balance_type_code
178717 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178718
178719 , p_source_4 => l_array_source_4(Idx)
178720 , p_source_5 => l_array_source_5(Idx)
178721 , p_source_11 => l_array_source_11(Idx)
178722 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178723 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178724 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
178725 , p_source_18 => l_array_source_18(Idx)
178726 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
178727 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
178728 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
178729 , p_source_22 => l_array_source_22(Idx)
178730 );
178731 If(l_balance_type_code = 'A') THEN
178732 l_actual_gain_loss_ref := l_gain_or_loss_ref;
178733 END IF;
178734
178735 --
178736
178737
178738 --
178739 AcctLineType_239 (
178740 p_application_id => p_application_id
178741 ,p_event_id => l_event_id
178742 ,p_calculate_acctd_flag => l_calculate_acctd_flag
178743 ,p_calculate_g_l_flag => l_calculate_g_l_flag
178744 ,p_actual_flag => l_actual_flag
178745 ,p_balance_type_code => l_balance_type_code
178746 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178747
178748 , p_source_4 => l_array_source_4(Idx)
178749 , p_source_5 => l_array_source_5(Idx)
178750 , p_source_11 => l_array_source_11(Idx)
178751 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178752 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178753 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
178754 , p_source_18 => l_array_source_18(Idx)
178755 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
178756 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
178757 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
178758 , p_source_22 => l_array_source_22(Idx)
178759 );
178760 If(l_balance_type_code = 'A') THEN
178761 l_actual_gain_loss_ref := l_gain_or_loss_ref;
178762 END IF;
178763
178764 --
178765
178766
178767 --
178768 AcctLineType_247 (
178769 p_application_id => p_application_id
178770 ,p_event_id => l_event_id
178771 ,p_calculate_acctd_flag => l_calculate_acctd_flag
178772 ,p_calculate_g_l_flag => l_calculate_g_l_flag
178773 ,p_actual_flag => l_actual_flag
178774 ,p_balance_type_code => l_balance_type_code
178775 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
178776
178777 , p_source_4 => l_array_source_4(Idx)
178778 , p_source_5 => l_array_source_5(Idx)
178779 , p_source_11 => l_array_source_11(Idx)
178780 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
178781 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
178782 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
178783 , p_source_18 => l_array_source_18(Idx)
178784 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
178785 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
178786 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
178787 , p_source_22 => l_array_source_22(Idx)
178788 );
178789 If(l_balance_type_code = 'A') THEN
178790 l_actual_gain_loss_ref := l_gain_or_loss_ref;
178791 END IF;
178792
178793 --
178794
178795 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
178796 -- or secondary ledger that has different currency with primary
178797 -- or alc that is calculated by sla
178798 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
178799 (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'))
178800
178801 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
178802 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
178803 AND (l_actual_flag = 'A')) THEN
178804 XLA_AE_LINES_PKG.CreateGainOrLossLines(
178805 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
178806 ,p_application_id => p_application_id
178807 ,p_amb_context_code => 'DEFAULT'
178808 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
178809 ,p_event_class_code => C_EVENT_CLASS_CODE
178810 ,p_event_type_code => C_EVENT_TYPE_CODE
178811
178812 ,p_gain_ccid => -1
178813 ,p_loss_ccid => -1
178814
178815 ,p_actual_flag => l_actual_flag
178816 ,p_enc_flag => null
178817 ,p_actual_g_l_ref => l_actual_gain_loss_ref
178818 ,p_enc_g_l_ref => null
178819 );
178820 END IF;
178821 END IF;
178822 END IF;
178823
178824 ELSE
178825 --
178826 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
178827 --
178828 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178829 trace
178830 (p_msg => 'Trancaction revesal option is Y'
178831 ,p_level => C_LEVEL_STATEMENT
178832 ,p_module => l_log_module);
178833 END IF;
178834 END IF;
178835
178836 END LOOP;
178837 l_result := XLA_AE_LINES_PKG.InsertLines ;
178838 end loop;
178839 close line_cur;
178840
178841
178842 --
178843 -- insert headers into xla_ae_headers_gt table
178844 --
178845 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
178846
178847 -- insert into errors table here.
178848
178849 END LOOP;
178850
178851 --
178852 -- 4865292
178853 --
178854 -- Compare g_hdr_extract_count with event count in
178855 -- CreateHeadersAndLines.
178856 --
178857 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
178858
178859 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178860 trace (p_msg => '# rows extracted from header extract objects '
178861 || ' (running total): '
178862 || g_hdr_extract_count
178863 ,p_level => C_LEVEL_STATEMENT
178864 ,p_module => l_log_module);
178865 END IF;
178866
178867 CLOSE header_cur;
178868 --
178869
178870 --
178871 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178872 trace
178873 (p_msg => 'END of EventClass_285'
178874 ,p_level => C_LEVEL_PROCEDURE
178875 ,p_module => l_log_module);
178876 END IF;
178877 --
178878 RETURN l_result;
178879 EXCEPTION
178880 WHEN xla_exceptions_pkg.application_exception THEN
178881
178882 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178883
178884
178885 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
178886
178887 RAISE;
178888
178889 WHEN NO_DATA_FOUND THEN
178890
178891 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
178892 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
178893
178894 FOR header_record IN header_cur
178895 LOOP
178896 l_array_header_events(header_record.event_id) := header_record.event_id;
178897 END LOOP;
178898
178899 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
178900 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
178901
178902 fnd_file.put_line(fnd_file.LOG, ' ');
178903 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178904 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
178905 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
178906
178907 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
178908 LOOP
178909 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
178910 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
178911 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
178912 END IF;
178913 END LOOP;
178914
178915 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
178916 fnd_file.put_line(fnd_file.LOG, ' ');
178917
178918
178919 xla_exceptions_pkg.raise_message
178920 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_285');
178921
178922
178923 WHEN OTHERS THEN
178924 xla_exceptions_pkg.raise_message
178925 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_285');
178926 END EventClass_285;
178927 --
178928
178929 ---------------------------------------
178930 --
178931 -- PRIVATE PROCEDURE
178932 -- insert_sources_286
178933 --
178934 ----------------------------------------
178935 --
178936 PROCEDURE insert_sources_286(
178937 p_target_ledger_id IN NUMBER
178938 , p_language IN VARCHAR2
178939 , p_sla_ledger_id IN NUMBER
178940 , p_pad_start_date IN DATE
178941 , p_pad_end_date IN DATE
178942 )
178943 IS
178944
178945 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SALES_ORDER_ALL';
178946 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SALES_ORDER';
178947 p_apps_owner VARCHAR2(30);
178948 l_log_module VARCHAR2(240);
178949 BEGIN
178950 IF g_log_enabled THEN
178951 l_log_module := C_DEFAULT_MODULE||'.insert_sources_286';
178952 END IF;
178953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
178954
178955 trace
178956 (p_msg => 'BEGIN of insert_sources_286'
178957 ,p_level => C_LEVEL_PROCEDURE
178958 ,p_module => l_log_module);
178959
178960 END IF;
178961
178962 -- select APPS owner
178963 SELECT oracle_username
178964 INTO p_apps_owner
178965 FROM fnd_oracle_userid
178966 WHERE read_only_flag = 'U'
178967 ;
178968
178969 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
178970 trace
178971 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
178972 ' - p_language = '||p_language||
178973 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
178974 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
178975 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
178976 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
178977 ,p_level => C_LEVEL_STATEMENT
178978 ,p_module => l_log_module);
178979 END IF;
178980
178981
178982 --
178983 INSERT INTO xla_diag_sources --hdr2
178984 (
178985 event_id
178986 , ledger_id
178987 , sla_ledger_id
178988 , description_language
178989 , object_name
178990 , object_type_code
178991 , line_number
178992 , source_application_id
178993 , source_type_code
178994 , source_code
178995 , source_value
178996 , source_meaning
178997 , created_by
178998 , creation_date
178999 , last_update_date
179000 , last_updated_by
179001 , last_update_login
179002 , program_update_date
179003 , program_application_id
179004 , program_id
179005 , request_id
179006 )
179007 SELECT
179008 event_id
179009 , p_target_ledger_id
179010 , p_sla_ledger_id
179011 , p_language
179012 , object_name
179013 , object_type_code
179014 , line_number
179015 , source_application_id
179016 , source_type_code
179017 , source_code
179018 , SUBSTR(source_value ,1,1996)
179019 , SUBSTR(source_meaning ,1,200)
179020 , xla_environment_pkg.g_Usr_Id
179021 , TRUNC(SYSDATE)
179022 , TRUNC(SYSDATE)
179023 , xla_environment_pkg.g_Usr_Id
179024 , xla_environment_pkg.g_Login_Id
179025 , TRUNC(SYSDATE)
179026 , xla_environment_pkg.g_Prog_Appl_Id
179027 , xla_environment_pkg.g_Prog_Id
179028 , xla_environment_pkg.g_Req_Id
179029 FROM (
179030 SELECT xet.event_id event_id
179031 , 0 line_number
179032 , CASE r
179033 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
179034 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
179035
179036 ELSE null
179037 END object_name
179038 , CASE r
179039 WHEN 1 THEN 'HEADER'
179040 WHEN 2 THEN 'HEADER'
179041
179042 ELSE null
179043 END object_type_code
179044 , CASE r
179045 WHEN 1 THEN '707'
179046 WHEN 2 THEN '707'
179047
179048 ELSE null
179049 END source_application_id
179050 , 'S' source_type_code
179051 , CASE r
179052 WHEN 1 THEN 'DISTRIBUTION_TYPE'
179053 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
179054
179055 ELSE null
179056 END source_code
179057 , CASE r
179058 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
179059 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
179060
179061 ELSE null
179062 END source_value
179063 , CASE r
179064 WHEN 1 THEN fvl12.meaning
179065 WHEN 2 THEN fvl38.meaning
179066
179067 ELSE null
179068 END source_meaning
179069 FROM xla_events_gt xet
179070 , CST_XLA_INV_HEADERS_V h1
179071 , fnd_lookup_values fvl12
179072 , fnd_lookup_values fvl38
179073 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
179074 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179075 AND xet.event_class_code = C_EVENT_CLASS_CODE
179076 AND h1.event_id = xet.event_id
179077 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
179078 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
179079 AND fvl12.view_application_id(+) = 700
179080 AND fvl12.language(+) = USERENV('LANG')
179081 AND fvl38.lookup_type(+) = 'YES_NO'
179082 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
179083 AND fvl38.view_application_id(+) = 0
179084 AND fvl38.language(+) = USERENV('LANG')
179085
179086 )
179087 ;
179088 --
179089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179090
179091 trace
179092 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
179093 ,p_level => C_LEVEL_STATEMENT
179094 ,p_module => l_log_module);
179095
179096 END IF;
179097 --
179098
179099
179100
179101 --
179102 INSERT INTO xla_diag_sources --line2
179103 (
179104 event_id
179105 , ledger_id
179106 , sla_ledger_id
179107 , description_language
179108 , object_name
179109 , object_type_code
179110 , line_number
179111 , source_application_id
179112 , source_type_code
179113 , source_code
179114 , source_value
179115 , source_meaning
179116 , created_by
179117 , creation_date
179118 , last_update_date
179119 , last_updated_by
179120 , last_update_login
179121 , program_update_date
179122 , program_application_id
179123 , program_id
179124 , request_id
179125 )
179126 SELECT event_id
179127 , p_target_ledger_id
179128 , p_sla_ledger_id
179129 , p_language
179130 , object_name
179131 , object_type_code
179132 , line_number
179133 , source_application_id
179134 , source_type_code
179135 , source_code
179136 , SUBSTR(source_value,1,1996)
179137 , SUBSTR(source_meaning ,1,200)
179138 , xla_environment_pkg.g_Usr_Id
179139 , TRUNC(SYSDATE)
179140 , TRUNC(SYSDATE)
179141 , xla_environment_pkg.g_Usr_Id
179142 , xla_environment_pkg.g_Login_Id
179143 , TRUNC(SYSDATE)
179144 , xla_environment_pkg.g_Prog_Appl_Id
179145 , xla_environment_pkg.g_Prog_Id
179146 , xla_environment_pkg.g_Req_Id
179147 FROM (
179148 SELECT xet.event_id event_id
179149 , l2.line_number line_number
179150 , CASE r
179151 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
179152 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
179153 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
179154 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
179155 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
179156 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
179157 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
179158 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
179159 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
179160
179161 ELSE null
179162 END object_name
179163 , CASE r
179164 WHEN 1 THEN 'LINE'
179165 WHEN 2 THEN 'LINE'
179166 WHEN 3 THEN 'LINE'
179167 WHEN 4 THEN 'LINE'
179168 WHEN 5 THEN 'LINE'
179169 WHEN 6 THEN 'LINE'
179170 WHEN 7 THEN 'LINE'
179171 WHEN 8 THEN 'LINE'
179172 WHEN 9 THEN 'LINE'
179173
179174 ELSE null
179175 END object_type_code
179176 , CASE r
179177 WHEN 1 THEN '707'
179178 WHEN 2 THEN '707'
179179 WHEN 3 THEN '707'
179180 WHEN 4 THEN '707'
179181 WHEN 5 THEN '707'
179182 WHEN 6 THEN '707'
179183 WHEN 7 THEN '707'
179184 WHEN 8 THEN '707'
179185 WHEN 9 THEN '707'
179186
179187 ELSE null
179188 END source_application_id
179189 , 'S' source_type_code
179190 , CASE r
179191 WHEN 1 THEN 'CODE_COMBINATION_ID'
179192 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
179193 WHEN 3 THEN 'CURRENCY_CODE'
179194 WHEN 4 THEN 'ENTERED_AMOUNT'
179195 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
179196 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
179197 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
179198 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
179199 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
179200
179201 ELSE null
179202 END source_code
179203 , CASE r
179204 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
179205 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
179206 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
179207 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
179208 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
179209 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
179210 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
179211 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
179212 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
179213
179214 ELSE null
179215 END source_value
179216 , null source_meaning
179217 FROM xla_events_gt xet
179218 , CST_XLA_INV_LINES_V l2
179219 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
179220 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
179221 AND xet.event_class_code = C_EVENT_CLASS_CODE
179222 AND l2.event_id = xet.event_id
179223
179224 )
179225 ;
179226 --
179227 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179228
179229 trace
179230 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
179231 ,p_level => C_LEVEL_STATEMENT
179232 ,p_module => l_log_module);
179233
179234 END IF;
179235
179236
179237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179238 trace
179239 (p_msg => 'END of insert_sources_286'
179240 ,p_level => C_LEVEL_PROCEDURE
179241 ,p_module => l_log_module);
179242 END IF;
179243 EXCEPTION
179244 WHEN xla_exceptions_pkg.application_exception THEN
179245 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
179246 trace
179247 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
179248 ,p_level => C_LEVEL_EXCEPTION
179249 ,p_module => l_log_module);
179250 END IF;
179251 RAISE;
179252 WHEN OTHERS THEN
179253 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
179254 trace
179255 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
179256 ,p_level => C_LEVEL_EXCEPTION
179257 ,p_module => l_log_module);
179258 END IF;
179259 xla_exceptions_pkg.raise_message
179260 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_286');
179261 END insert_sources_286;
179262 --
179263
179264 ---------------------------------------
179265 --
179266 -- PRIVATE FUNCTION
179267 -- EventClass_286
179268 --
179269 ----------------------------------------
179270 --
179271 FUNCTION EventClass_286
179272 (p_application_id IN NUMBER
179273 ,p_base_ledger_id IN NUMBER
179274 ,p_target_ledger_id IN NUMBER
179275 ,p_language IN VARCHAR2
179276 ,p_currency_code IN VARCHAR2
179277 ,p_sla_ledger_id IN NUMBER
179278 ,p_pad_start_date IN DATE
179279 ,p_pad_end_date IN DATE
179280 ,p_primary_ledger_id IN NUMBER)
179281 RETURN BOOLEAN IS
179282 --
179283 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'SALES_ORDER_ALL';
179284 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'SALES_ORDER';
179285
179286 l_calculate_acctd_flag VARCHAR2(1) :='N';
179287 l_calculate_g_l_flag VARCHAR2(1) :='N';
179288 --
179289 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179290 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179291 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179292 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179293 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179294 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179295 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179296 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179297 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179298 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179299 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179300 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179301 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179302 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
179303 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179304 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179305 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179306 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
179307 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179308 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179309 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179310 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
179311 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
179312 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
179313 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
179314 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
179315
179316 l_event_id NUMBER;
179317 l_previous_event_id NUMBER;
179318 l_first_event_id NUMBER;
179319 l_last_event_id NUMBER;
179320
179321 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
179322 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
179323 --
179324 --
179325 l_result BOOLEAN := TRUE;
179326 l_rows NUMBER := 1000;
179327 l_event_type_name VARCHAR2(80) := 'All';
179328 l_event_class_name VARCHAR2(80) := 'Sales Order Issue';
179329 l_description VARCHAR2(4000);
179330 l_transaction_reversal NUMBER;
179331 l_ae_header_id NUMBER;
179332 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
179333 l_log_module VARCHAR2(240);
179334 --
179335 l_acct_reversal_source VARCHAR2(30);
179336 l_trx_reversal_source VARCHAR2(30);
179337
179338 l_continue_with_lines BOOLEAN := TRUE;
179339 --
179340 l_acc_rev_gl_date_source DATE; -- 4262811
179341 --
179342 type t_array_event_id is table of number index by binary_integer;
179343
179344 l_rec_array_event t_rec_array_event;
179345 l_null_rec_array_event t_rec_array_event;
179346 l_array_ae_header_id xla_number_array_type;
179347 l_actual_flag VARCHAR2(1) := NULL;
179348 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
179349 l_balance_type_code VARCHAR2(1) :=NULL;
179350 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
179351
179352 --
179353 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
179354 --
179355
179356 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
179357 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
179358
179359 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
179360 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
179361 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
179362 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
179363 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
179364 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
179365 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
179366 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
179367 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
179368
179369 l_array_source_12 t_array_source_12;
179370 l_array_source_12_meaning t_array_lookup_meaning;
179371 l_array_source_38 t_array_source_38;
179372 l_array_source_38_meaning t_array_lookup_meaning;
179373
179374 l_array_source_4 t_array_source_4;
179375 l_array_source_11 t_array_source_11;
179376 l_array_source_15 t_array_source_15;
179377 l_array_source_18 t_array_source_18;
179378 l_array_source_19 t_array_source_19;
179379 l_array_source_20 t_array_source_20;
179380 l_array_source_21 t_array_source_21;
179381 l_array_source_22 t_array_source_22;
179382 l_array_source_24 t_array_source_24;
179383
179384 --
179385 CURSOR header_cur
179386 IS
179387 SELECT /*+ leading(xet) cardinality(xet,1) */
179388 -- Event Class Code: SALES_ORDER
179389 xet.entity_id
179390 ,xet.legal_entity_id
179391 ,xet.entity_code
179392 ,xet.transaction_number
179393 ,xet.event_id
179394 ,xet.event_class_code
179395 ,xet.event_type_code
179396 ,xet.event_number
179397 ,xet.event_date
179398 ,xet.transaction_date
179399 ,xet.reference_num_1
179400 ,xet.reference_num_2
179401 ,xet.reference_num_3
179402 ,xet.reference_num_4
179403 ,xet.reference_char_1
179404 ,xet.reference_char_2
179405 ,xet.reference_char_3
179406 ,xet.reference_char_4
179407 ,xet.reference_date_1
179408 ,xet.reference_date_2
179409 ,xet.reference_date_3
179410 ,xet.reference_date_4
179411 ,xet.event_created_by
179412 ,xet.budgetary_control_flag
179413 , h1.DISTRIBUTION_TYPE source_12
179414 , fvl12.meaning source_12_meaning
179415 , h1.TRANSFER_TO_GL_INDICATOR source_38
179416 , fvl38.meaning source_38_meaning
179417 FROM xla_events_gt xet
179418 , CST_XLA_INV_HEADERS_V h1
179419 , fnd_lookup_values fvl12
179420 , fnd_lookup_values fvl38
179421 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
179422 and xet.event_class_code = C_EVENT_CLASS_CODE
179423 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
179424 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
179425 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
179426 AND fvl12.view_application_id(+) = 700
179427 AND fvl12.language(+) = USERENV('LANG')
179428 AND fvl38.lookup_type(+) = 'YES_NO'
179429 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
179430 AND fvl38.view_application_id(+) = 0
179431 AND fvl38.language(+) = USERENV('LANG')
179432
179433 ORDER BY event_id
179434 ;
179435
179436
179437 --
179438 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
179439 IS
179440 SELECT /*+ leading(xet) cardinality(xet,1) */
179441 -- Event Class Code: SALES_ORDER
179442 xet.entity_id
179443 ,xet.legal_entity_id
179444 ,xet.entity_code
179445 ,xet.transaction_number
179446 ,xet.event_id
179447 ,xet.event_class_code
179448 ,xet.event_type_code
179449 ,xet.event_number
179450 ,xet.event_date
179451 ,xet.transaction_date
179452 ,xet.reference_num_1
179453 ,xet.reference_num_2
179454 ,xet.reference_num_3
179455 ,xet.reference_num_4
179456 ,xet.reference_char_1
179457 ,xet.reference_char_2
179458 ,xet.reference_char_3
179459 ,xet.reference_char_4
179460 ,xet.reference_date_1
179461 ,xet.reference_date_2
179462 ,xet.reference_date_3
179463 ,xet.reference_date_4
179464 ,xet.event_created_by
179465 ,xet.budgetary_control_flag
179466 , l2.LINE_NUMBER
179467 , l2.CODE_COMBINATION_ID source_4
179468 , l2.DISTRIBUTION_IDENTIFIER source_11
179469 , l2.CURRENCY_CODE source_15
179470 , l2.ENTERED_AMOUNT source_18
179471 , l2.CURRENCY_CONVERSION_DATE source_19
179472 , l2.CURRENCY_CONVERSION_RATE source_20
179473 , l2.CURRENCY_CONVERSION_TYPE source_21
179474 , l2.ACCOUNTED_AMOUNT source_22
179475 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
179476 FROM xla_events_gt xet
179477 , CST_XLA_INV_LINES_V l2
179478 WHERE xet.event_id between x_first_event_id and x_last_event_id
179479 and xet.event_date between p_pad_start_date and p_pad_end_date
179480 and xet.event_class_code = C_EVENT_CLASS_CODE
179481 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
179482 ;
179483
179484 --
179485 BEGIN
179486 IF g_log_enabled THEN
179487 l_log_module := C_DEFAULT_MODULE||'.EventClass_286';
179488 END IF;
179489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
179490 trace
179491 (p_msg => 'BEGIN of EventClass_286'
179492 ,p_level => C_LEVEL_PROCEDURE
179493 ,p_module => l_log_module);
179494 END IF;
179495
179496 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179497 trace
179498 (p_msg => 'p_application_id = '||p_application_id||
179499 ' - p_base_ledger_id = '||p_base_ledger_id||
179500 ' - p_target_ledger_id = '||p_target_ledger_id||
179501 ' - p_language = '||p_language||
179502 ' - p_currency_code = '||p_currency_code||
179503 ' - p_sla_ledger_id = '||p_sla_ledger_id
179504 ,p_level => C_LEVEL_STATEMENT
179505 ,p_module => l_log_module);
179506 END IF;
179507 --
179508 -- initialze arrays
179509 --
179510 g_array_event.DELETE;
179511 l_rec_array_event := l_null_rec_array_event;
179512 --
179513 --------------------------------------
179514 -- 4262811 Initialze MPA Line Number
179515 --------------------------------------
179516 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
179517
179518 --
179519
179520 --
179521 OPEN header_cur;
179522 --
179523 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179524 trace
179525 (p_msg => 'SQL - FETCH header_cur'
179526 ,p_level => C_LEVEL_STATEMENT
179527 ,p_module => l_log_module);
179528 END IF;
179529 --
179530 LOOP
179531 FETCH header_cur BULK COLLECT INTO
179532 l_array_entity_id
179533 , l_array_legal_entity_id
179534 , l_array_entity_code
179535 , l_array_transaction_num
179536 , l_array_event_id
179537 , l_array_class_code
179538 , l_array_event_type
179539 , l_array_event_number
179540 , l_array_event_date
179541 , l_array_transaction_date
179542 , l_array_reference_num_1
179543 , l_array_reference_num_2
179544 , l_array_reference_num_3
179545 , l_array_reference_num_4
179546 , l_array_reference_char_1
179547 , l_array_reference_char_2
179548 , l_array_reference_char_3
179549 , l_array_reference_char_4
179550 , l_array_reference_date_1
179551 , l_array_reference_date_2
179552 , l_array_reference_date_3
179553 , l_array_reference_date_4
179554 , l_array_event_created_by
179555 , l_array_budgetary_control_flag
179556 , l_array_source_12
179557 , l_array_source_12_meaning
179558 , l_array_source_38
179559 , l_array_source_38_meaning
179560 LIMIT l_rows;
179561 --
179562 IF (C_LEVEL_EVENT >= g_log_level) THEN
179563 trace
179564 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
179565 ,p_level => C_LEVEL_EVENT
179566 ,p_module => l_log_module);
179567 END IF;
179568 --
179569 EXIT WHEN l_array_entity_id.COUNT = 0;
179570
179571 -- initialize arrays
179572 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
179573 XLA_AE_LINES_PKG.g_rec_lines := NULL;
179574
179575 --
179576 -- Bug 4458708
179577 --
179578 XLA_AE_LINES_PKG.g_LineNumber := 0;
179579
179580
179581 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
179582 g_last_hdr_idx := l_array_event_id.LAST;
179583 --
179584 -- loop for the headers. Each iteration is for each header extract row
179585 -- fetched in header cursor
179586 --
179587 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
179588
179589 --
179590 -- set event info as cache for other routines to refer event attributes
179591 --
179592 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
179593 (p_application_id => p_application_id
179594 ,p_primary_ledger_id => p_primary_ledger_id
179595 ,p_base_ledger_id => p_base_ledger_id
179596 ,p_target_ledger_id => p_target_ledger_id
179597 ,p_entity_id => l_array_entity_id(hdr_idx)
179598 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
179599 ,p_entity_code => l_array_entity_code(hdr_idx)
179600 ,p_transaction_num => l_array_transaction_num(hdr_idx)
179601 ,p_event_id => l_array_event_id(hdr_idx)
179602 ,p_event_class_code => l_array_class_code(hdr_idx)
179603 ,p_event_type_code => l_array_event_type(hdr_idx)
179604 ,p_event_number => l_array_event_number(hdr_idx)
179605 ,p_event_date => l_array_event_date(hdr_idx)
179606 ,p_transaction_date => l_array_transaction_date(hdr_idx)
179607 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
179608 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
179609 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
179610 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
179611 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
179612 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
179613 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
179614 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
179615 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
179616 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
179617 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
179618 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
179619 ,p_event_created_by => l_array_event_created_by(hdr_idx)
179620 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
179621
179622 --
179623 -- set the status of entry to C_VALID (0)
179624 --
179625 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
179626
179627 --
179628 -- initialize a row for ae header
179629 --
179630 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
179631
179632 l_event_id := l_array_event_id(hdr_idx);
179633
179634 --
179635 -- storing the hdr_idx for event. May be used by line cursor.
179636 --
179637 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
179638
179639 --
179640 -- store sources from header extract. This can be improved to
179641 -- store only those sources from header extract that may be used in lines
179642 --
179643
179644 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
179645 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
179646 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
179647 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
179648
179649 --
179650 -- initilaize the status of ae headers for diffrent balance types
179651 -- the status is initialised to C_NOT_CREATED (2)
179652 --
179653 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179654 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179655 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
179656
179657 --
179658 -- call api to validate and store accounting attributes for header
179659 --
179660
179661 ------------------------------------------------------------
179662 -- Accrual Reversal : to get date for Standard Source (NONE)
179663 ------------------------------------------------------------
179664 l_acc_rev_gl_date_source := NULL;
179665
179666 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
179667 l_rec_acct_attrs.array_date_value(1) :=
179668 xla_ae_sources_pkg.GetSystemSourceDate(
179669 p_source_code => 'XLA_REFERENCE_DATE_1'
179670 , p_source_type_code => 'Y'
179671 , p_source_application_id => 602
179672 );
179673 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
179674 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
179675
179676
179677 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
179678
179679 XLA_AE_HEADER_PKG.SetJeCategoryName;
179680
179681 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
179682 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
179683 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
179684 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
179685 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
179686
179687
179688 -- No header level analytical criteria
179689
179690 --
179691 --accounting attribute enhancement, bug 3612931
179692 --
179693 l_trx_reversal_source := SUBSTR(NULL, 1,30);
179694
179695 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
179696 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
179697
179698 xla_accounting_err_pkg.build_message
179699 (p_appli_s_name => 'XLA'
179700 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
179701 ,p_token_1 => 'ACCT_ATTR_NAME'
179702 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
179703 ,p_token_2 => 'PRODUCT_NAME'
179704 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
179705 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179706 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
179707 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
179708
179709 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
179710 --
179711 -- following sets the accounting attributes needed to reverse
179712 -- accounting for a distributeion
179713 --
179714 xla_ae_lines_pkg.SetTrxReversalAttrs
179715 (p_event_id => l_event_id
179716 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
179717 ,p_trx_reversal_source => l_trx_reversal_source);
179718
179719 END IF;
179720
179721
179722 ----------------------------------------------------------------
179723 -- 4262811 - update the header statuses to invalid in need be
179724 ----------------------------------------------------------------
179725 --
179726 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
179727
179728
179729 -----------------------------------------------
179730 -- No accrual reversal for the event class/type
179731 -----------------------------------------------
179732 ----------------------------------------------------------------
179733
179734 --
179735 -- this ends the header loop iteration for one bulk fetch
179736 --
179737 END LOOP;
179738
179739 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
179740 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
179741
179742 --
179743 -- insert dummy rows into lines gt table that were created due to
179744 -- transaction reversals
179745 --
179746 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
179747 l_result := XLA_AE_LINES_PKG.InsertLines;
179748 END IF;
179749
179750 --
179751 -- reset the temp_line_num for each set of events fetched from header
179752 -- cursor rather than doing it for each new event in line cursor
179753 -- Bug 3939231
179754 --
179755 xla_ae_lines_pkg.g_temp_line_num := 0;
179756
179757
179758
179759 --
179760 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
179761 --
179762 --
179763 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179764
179765 trace
179766 (p_msg => 'SQL - FETCH line_cur'
179767 ,p_level => C_LEVEL_STATEMENT
179768 ,p_module => l_log_module);
179769
179770 END IF;
179771 --
179772 --
179773 LOOP
179774 --
179775 FETCH line_cur BULK COLLECT INTO
179776 l_array_entity_id
179777 , l_array_legal_entity_id
179778 , l_array_entity_code
179779 , l_array_transaction_num
179780 , l_array_event_id
179781 , l_array_class_code
179782 , l_array_event_type
179783 , l_array_event_number
179784 , l_array_event_date
179785 , l_array_transaction_date
179786 , l_array_reference_num_1
179787 , l_array_reference_num_2
179788 , l_array_reference_num_3
179789 , l_array_reference_num_4
179790 , l_array_reference_char_1
179791 , l_array_reference_char_2
179792 , l_array_reference_char_3
179793 , l_array_reference_char_4
179794 , l_array_reference_date_1
179795 , l_array_reference_date_2
179796 , l_array_reference_date_3
179797 , l_array_reference_date_4
179798 , l_array_event_created_by
179799 , l_array_budgetary_control_flag
179800 , l_array_extract_line_num
179801 , l_array_source_4
179802 , l_array_source_11
179803 , l_array_source_15
179804 , l_array_source_18
179805 , l_array_source_19
179806 , l_array_source_20
179807 , l_array_source_21
179808 , l_array_source_22
179809 , l_array_source_24
179810 LIMIT l_rows;
179811
179812 --
179813 IF (C_LEVEL_EVENT >= g_log_level) THEN
179814 trace
179815 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
179816 ,p_level => C_LEVEL_EVENT
179817 ,p_module => l_log_module);
179818 END IF;
179819 --
179820 EXIT WHEN l_array_entity_id.count = 0;
179821
179822 XLA_AE_LINES_PKG.g_rec_lines := null;
179823
179824 --
179825 -- Bug 4458708
179826 --
179827 XLA_AE_LINES_PKG.g_LineNumber := 0;
179828 --
179829 --
179830
179831 FOR Idx IN 1..l_array_event_id.count LOOP
179832 --
179833 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
179834 --
179835 l_event_id := l_array_event_id(idx); -- 5648433
179836
179837 --
179838 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
179839 --
179840
179841 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
179842 (g_array_event(l_event_id).array_value_num('header_index'))
179843 ,'N'
179844 ) <> 'Y'
179845 THEN
179846 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
179847 trace
179848 (p_msg => 'Trancaction revesal option is not Y '
179849 ,p_level => C_LEVEL_STATEMENT
179850 ,p_module => l_log_module);
179851 END IF;
179852
179853 --
179854 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
179855 --
179856 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
179857 --
179858 -- set event info as cache for other routines to refer event attributes
179859 --
179860
179861 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
179862 l_previous_event_id := l_event_id;
179863
179864 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
179865 (p_application_id => p_application_id
179866 ,p_primary_ledger_id => p_primary_ledger_id
179867 ,p_base_ledger_id => p_base_ledger_id
179868 ,p_target_ledger_id => p_target_ledger_id
179869 ,p_entity_id => l_array_entity_id(Idx)
179870 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
179871 ,p_entity_code => l_array_entity_code(Idx)
179872 ,p_transaction_num => l_array_transaction_num(Idx)
179873 ,p_event_id => l_array_event_id(Idx)
179874 ,p_event_class_code => l_array_class_code(Idx)
179875 ,p_event_type_code => l_array_event_type(Idx)
179876 ,p_event_number => l_array_event_number(Idx)
179877 ,p_event_date => l_array_event_date(Idx)
179878 ,p_transaction_date => l_array_transaction_date(Idx)
179879 ,p_reference_num_1 => l_array_reference_num_1(Idx)
179880 ,p_reference_num_2 => l_array_reference_num_2(Idx)
179881 ,p_reference_num_3 => l_array_reference_num_3(Idx)
179882 ,p_reference_num_4 => l_array_reference_num_4(Idx)
179883 ,p_reference_char_1 => l_array_reference_char_1(Idx)
179884 ,p_reference_char_2 => l_array_reference_char_2(Idx)
179885 ,p_reference_char_3 => l_array_reference_char_3(Idx)
179886 ,p_reference_char_4 => l_array_reference_char_4(Idx)
179887 ,p_reference_date_1 => l_array_reference_date_1(Idx)
179888 ,p_reference_date_2 => l_array_reference_date_2(Idx)
179889 ,p_reference_date_3 => l_array_reference_date_3(Idx)
179890 ,p_reference_date_4 => l_array_reference_date_4(Idx)
179891 ,p_event_created_by => l_array_event_created_by(Idx)
179892 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
179893 --
179894 END IF;
179895
179896
179897
179898 --
179899 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
179900
179901 l_acct_reversal_source := SUBSTR(NULL, 1,30);
179902
179903 IF l_continue_with_lines THEN
179904 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
179905 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
179906
179907 xla_accounting_err_pkg.build_message
179908 (p_appli_s_name => 'XLA'
179909 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
179910 ,p_token_1 => 'LINE_NUMBER'
179911 ,p_value_1 => l_array_extract_line_num(Idx)
179912 ,p_token_2 => 'PRODUCT_NAME'
179913 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
179914 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179915 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
179916 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
179917
179918 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
179919 --
179920 -- following sets the accounting attributes needed to reverse
179921 -- accounting for a distributeion
179922 --
179923
179924 --
179925 -- 5217187
179926 --
179927 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
179928 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
179929 g_array_event(l_event_id).array_value_num('header_index'));
179930 --
179931 --
179932
179933 -- No reversal code generated
179934
179935 xla_ae_lines_pkg.SetAcctReversalAttrs
179936 (p_event_id => l_event_id
179937 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
179938 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179939 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
179940 END IF;
179941
179942 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
179943 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
179944
179945 --
179946 AcctLineType_20 (
179947 p_application_id => p_application_id
179948 ,p_event_id => l_event_id
179949 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179950 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179951 ,p_actual_flag => l_actual_flag
179952 ,p_balance_type_code => l_balance_type_code
179953 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179954
179955 , p_source_4 => l_array_source_4(Idx)
179956 , p_source_11 => l_array_source_11(Idx)
179957 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179958 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179959 , p_source_15 => l_array_source_15(Idx)
179960 , p_source_18 => l_array_source_18(Idx)
179961 , p_source_19 => l_array_source_19(Idx)
179962 , p_source_20 => l_array_source_20(Idx)
179963 , p_source_21 => l_array_source_21(Idx)
179964 , p_source_22 => l_array_source_22(Idx)
179965 , p_source_24 => l_array_source_24(Idx)
179966 );
179967 If(l_balance_type_code = 'A') THEN
179968 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179969 END IF;
179970
179971 --
179972
179973
179974 --
179975 AcctLineType_26 (
179976 p_application_id => p_application_id
179977 ,p_event_id => l_event_id
179978 ,p_calculate_acctd_flag => l_calculate_acctd_flag
179979 ,p_calculate_g_l_flag => l_calculate_g_l_flag
179980 ,p_actual_flag => l_actual_flag
179981 ,p_balance_type_code => l_balance_type_code
179982 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
179983
179984 , p_source_4 => l_array_source_4(Idx)
179985 , p_source_11 => l_array_source_11(Idx)
179986 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
179987 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
179988 , p_source_15 => l_array_source_15(Idx)
179989 , p_source_18 => l_array_source_18(Idx)
179990 , p_source_19 => l_array_source_19(Idx)
179991 , p_source_20 => l_array_source_20(Idx)
179992 , p_source_21 => l_array_source_21(Idx)
179993 , p_source_22 => l_array_source_22(Idx)
179994 , p_source_24 => l_array_source_24(Idx)
179995 );
179996 If(l_balance_type_code = 'A') THEN
179997 l_actual_gain_loss_ref := l_gain_or_loss_ref;
179998 END IF;
179999
180000 --
180001
180002
180003 --
180004 AcctLineType_34 (
180005 p_application_id => p_application_id
180006 ,p_event_id => l_event_id
180007 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180008 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180009 ,p_actual_flag => l_actual_flag
180010 ,p_balance_type_code => l_balance_type_code
180011 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180012
180013 , p_source_4 => l_array_source_4(Idx)
180014 , p_source_11 => l_array_source_11(Idx)
180015 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180016 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180017 , p_source_15 => l_array_source_15(Idx)
180018 , p_source_18 => l_array_source_18(Idx)
180019 , p_source_19 => l_array_source_19(Idx)
180020 , p_source_20 => l_array_source_20(Idx)
180021 , p_source_21 => l_array_source_21(Idx)
180022 , p_source_22 => l_array_source_22(Idx)
180023 , p_source_24 => l_array_source_24(Idx)
180024 );
180025 If(l_balance_type_code = 'A') THEN
180026 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180027 END IF;
180028
180029 --
180030
180031
180032 --
180033 AcctLineType_48 (
180034 p_application_id => p_application_id
180035 ,p_event_id => l_event_id
180036 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180037 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180038 ,p_actual_flag => l_actual_flag
180039 ,p_balance_type_code => l_balance_type_code
180040 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180041
180042 , p_source_4 => l_array_source_4(Idx)
180043 , p_source_11 => l_array_source_11(Idx)
180044 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180045 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180046 , p_source_15 => l_array_source_15(Idx)
180047 , p_source_18 => l_array_source_18(Idx)
180048 , p_source_19 => l_array_source_19(Idx)
180049 , p_source_20 => l_array_source_20(Idx)
180050 , p_source_21 => l_array_source_21(Idx)
180051 , p_source_22 => l_array_source_22(Idx)
180052 , p_source_24 => l_array_source_24(Idx)
180053 );
180054 If(l_balance_type_code = 'A') THEN
180055 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180056 END IF;
180057
180058 --
180059
180060
180061 --
180062 AcctLineType_153 (
180063 p_application_id => p_application_id
180064 ,p_event_id => l_event_id
180065 ,p_calculate_acctd_flag => l_calculate_acctd_flag
180066 ,p_calculate_g_l_flag => l_calculate_g_l_flag
180067 ,p_actual_flag => l_actual_flag
180068 ,p_balance_type_code => l_balance_type_code
180069 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
180070
180071 , p_source_4 => l_array_source_4(Idx)
180072 , p_source_11 => l_array_source_11(Idx)
180073 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
180074 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
180075 , p_source_15 => l_array_source_15(Idx)
180076 , p_source_18 => l_array_source_18(Idx)
180077 , p_source_19 => l_array_source_19(Idx)
180078 , p_source_20 => l_array_source_20(Idx)
180079 , p_source_21 => l_array_source_21(Idx)
180080 , p_source_22 => l_array_source_22(Idx)
180081 , p_source_24 => l_array_source_24(Idx)
180082 );
180083 If(l_balance_type_code = 'A') THEN
180084 l_actual_gain_loss_ref := l_gain_or_loss_ref;
180085 END IF;
180086
180087 --
180088
180089 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
180090 -- or secondary ledger that has different currency with primary
180091 -- or alc that is calculated by sla
180092 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
180093 (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'))
180094
180095 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
180096 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
180097 AND (l_actual_flag = 'A')) THEN
180098 XLA_AE_LINES_PKG.CreateGainOrLossLines(
180099 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
180100 ,p_application_id => p_application_id
180101 ,p_amb_context_code => 'DEFAULT'
180102 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
180103 ,p_event_class_code => C_EVENT_CLASS_CODE
180104 ,p_event_type_code => C_EVENT_TYPE_CODE
180105
180106 ,p_gain_ccid => -1
180107 ,p_loss_ccid => -1
180108
180109 ,p_actual_flag => l_actual_flag
180110 ,p_enc_flag => null
180111 ,p_actual_g_l_ref => l_actual_gain_loss_ref
180112 ,p_enc_g_l_ref => null
180113 );
180114 END IF;
180115 END IF;
180116 END IF;
180117
180118 ELSE
180119 --
180120 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
180121 --
180122 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180123 trace
180124 (p_msg => 'Trancaction revesal option is Y'
180125 ,p_level => C_LEVEL_STATEMENT
180126 ,p_module => l_log_module);
180127 END IF;
180128 END IF;
180129
180130 END LOOP;
180131 l_result := XLA_AE_LINES_PKG.InsertLines ;
180132 end loop;
180133 close line_cur;
180134
180135
180136 --
180137 -- insert headers into xla_ae_headers_gt table
180138 --
180139 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
180140
180141 -- insert into errors table here.
180142
180143 END LOOP;
180144
180145 --
180146 -- 4865292
180147 --
180148 -- Compare g_hdr_extract_count with event count in
180149 -- CreateHeadersAndLines.
180150 --
180151 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
180152
180153 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180154 trace (p_msg => '# rows extracted from header extract objects '
180155 || ' (running total): '
180156 || g_hdr_extract_count
180157 ,p_level => C_LEVEL_STATEMENT
180158 ,p_module => l_log_module);
180159 END IF;
180160
180161 CLOSE header_cur;
180162 --
180163
180164 --
180165 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180166 trace
180167 (p_msg => 'END of EventClass_286'
180168 ,p_level => C_LEVEL_PROCEDURE
180169 ,p_module => l_log_module);
180170 END IF;
180171 --
180172 RETURN l_result;
180173 EXCEPTION
180174 WHEN xla_exceptions_pkg.application_exception THEN
180175
180176 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
180177
180178
180179 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
180180
180181 RAISE;
180182
180183 WHEN NO_DATA_FOUND THEN
180184
180185 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
180186 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
180187
180188 FOR header_record IN header_cur
180189 LOOP
180190 l_array_header_events(header_record.event_id) := header_record.event_id;
180191 END LOOP;
180192
180193 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
180194 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
180195
180196 fnd_file.put_line(fnd_file.LOG, ' ');
180197 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
180198 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
180199 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
180200
180201 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
180202 LOOP
180203 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
180204 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
180205 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
180206 END IF;
180207 END LOOP;
180208
180209 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
180210 fnd_file.put_line(fnd_file.LOG, ' ');
180211
180212
180213 xla_exceptions_pkg.raise_message
180214 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_286');
180215
180216
180217 WHEN OTHERS THEN
180218 xla_exceptions_pkg.raise_message
180219 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_286');
180220 END EventClass_286;
180221 --
180222
180223 ---------------------------------------
180224 --
180225 -- PRIVATE PROCEDURE
180226 -- insert_sources_287
180227 --
180228 ----------------------------------------
180229 --
180230 PROCEDURE insert_sources_287(
180231 p_target_ledger_id IN NUMBER
180232 , p_language IN VARCHAR2
180233 , p_sla_ledger_id IN NUMBER
180234 , p_pad_start_date IN DATE
180235 , p_pad_end_date IN DATE
180236 )
180237 IS
180238
180239 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UAVG_COST_UPD';
180240 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
180241 p_apps_owner VARCHAR2(30);
180242 l_log_module VARCHAR2(240);
180243 BEGIN
180244 IF g_log_enabled THEN
180245 l_log_module := C_DEFAULT_MODULE||'.insert_sources_287';
180246 END IF;
180247 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180248
180249 trace
180250 (p_msg => 'BEGIN of insert_sources_287'
180251 ,p_level => C_LEVEL_PROCEDURE
180252 ,p_module => l_log_module);
180253
180254 END IF;
180255
180256 -- select APPS owner
180257 SELECT oracle_username
180258 INTO p_apps_owner
180259 FROM fnd_oracle_userid
180260 WHERE read_only_flag = 'U'
180261 ;
180262
180263 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180264 trace
180265 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
180266 ' - p_language = '||p_language||
180267 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
180268 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
180269 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
180270 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
180271 ,p_level => C_LEVEL_STATEMENT
180272 ,p_module => l_log_module);
180273 END IF;
180274
180275
180276 --
180277 INSERT INTO xla_diag_sources --hdr1
180278 (
180279 event_id
180280 , ledger_id
180281 , sla_ledger_id
180282 , description_language
180283 , object_name
180284 , object_type_code
180285 , line_number
180286 , source_application_id
180287 , source_type_code
180288 , source_code
180289 , source_value
180290 , source_meaning
180291 , created_by
180292 , creation_date
180293 , last_update_date
180294 , last_updated_by
180295 , last_update_login
180296 , program_update_date
180297 , program_application_id
180298 , program_id
180299 , request_id
180300 )
180301 SELECT
180302 event_id
180303 , p_target_ledger_id
180304 , p_sla_ledger_id
180305 , p_language
180306 , object_name
180307 , object_type_code
180308 , line_number
180309 , source_application_id
180310 , source_type_code
180311 , source_code
180312 , SUBSTR(source_value ,1,1996)
180313 , SUBSTR(source_meaning,1,200)
180314 , xla_environment_pkg.g_Usr_Id
180315 , TRUNC(SYSDATE)
180316 , TRUNC(SYSDATE)
180317 , xla_environment_pkg.g_Usr_Id
180318 , xla_environment_pkg.g_Login_Id
180319 , TRUNC(SYSDATE)
180320 , xla_environment_pkg.g_Prog_Appl_Id
180321 , xla_environment_pkg.g_Prog_Id
180322 , xla_environment_pkg.g_Req_Id
180323 FROM (
180324 SELECT xet.event_id event_id
180325 , 0 line_number
180326 , CASE r
180327 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
180328 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
180329
180330 ELSE null
180331 END object_name
180332 , CASE r
180333 WHEN 1 THEN 'HEADER'
180334 WHEN 2 THEN 'HEADER'
180335
180336 ELSE null
180337 END object_type_code
180338 , CASE r
180339 WHEN 1 THEN '707'
180340 WHEN 2 THEN '707'
180341
180342 ELSE null
180343 END source_application_id
180344 , 'S' source_type_code
180345 , CASE r
180346 WHEN 1 THEN 'DISTRIBUTION_TYPE'
180347 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
180348
180349 ELSE null
180350 END source_code
180351 , CASE r
180352 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
180353 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
180354
180355 ELSE null
180356 END source_value
180357 , CASE r
180358 WHEN 1 THEN fvl12.meaning
180359 WHEN 2 THEN fvl38.meaning
180360
180361 ELSE null
180362 END source_meaning
180363 FROM xla_events_gt xet
180364 , CST_XLA_INV_HEADERS_V h1
180365 , fnd_lookup_values fvl12
180366 , fnd_lookup_values fvl38
180367 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
180368 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
180369 AND xet.event_type_code = C_EVENT_TYPE_CODE
180370 AND h1.event_id = xet.event_id
180371 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
180372 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
180373 AND fvl12.view_application_id(+) = 700
180374 AND fvl12.language(+) = USERENV('LANG')
180375 AND fvl38.lookup_type(+) = 'YES_NO'
180376 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
180377 AND fvl38.view_application_id(+) = 0
180378 AND fvl38.language(+) = USERENV('LANG')
180379
180380 )
180381 ;
180382 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180383
180384 trace
180385 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
180386 ,p_level => C_LEVEL_STATEMENT
180387 ,p_module => l_log_module);
180388
180389 END IF;
180390 --
180391
180392
180393
180394 --
180395 INSERT INTO xla_diag_sources --line1
180396 (
180397 event_id
180398 , ledger_id
180399 , sla_ledger_id
180400 , description_language
180401 , object_name
180402 , object_type_code
180403 , line_number
180404 , source_application_id
180405 , source_type_code
180406 , source_code
180407 , source_value
180408 , source_meaning
180409 , created_by
180410 , creation_date
180411 , last_update_date
180412 , last_updated_by
180413 , last_update_login
180414 , program_update_date
180415 , program_application_id
180416 , program_id
180417 , request_id
180418 )
180419 SELECT event_id
180420 , p_target_ledger_id
180421 , p_sla_ledger_id
180422 , p_language
180423 , object_name
180424 , object_type_code
180425 , line_number
180426 , source_application_id
180427 , source_type_code
180428 , source_code
180429 , SUBSTR(source_value,1,1996)
180430 , SUBSTR(source_meaning,1,200)
180431 , xla_environment_pkg.g_Usr_Id
180432 , TRUNC(SYSDATE)
180433 , TRUNC(SYSDATE)
180434 , xla_environment_pkg.g_Usr_Id
180435 , xla_environment_pkg.g_Login_Id
180436 , TRUNC(SYSDATE)
180437 , xla_environment_pkg.g_Prog_Appl_Id
180438 , xla_environment_pkg.g_Prog_Id
180439 , xla_environment_pkg.g_Req_Id
180440 FROM (
180441 SELECT xet.event_id event_id
180442 , l2.line_number line_number
180443 , CASE r
180444 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
180445 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
180446 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
180447 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
180448 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
180449 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
180450 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
180451 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
180452 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
180453
180454 ELSE null
180455 END object_name
180456 , CASE r
180457 WHEN 1 THEN 'LINE'
180458 WHEN 2 THEN 'LINE'
180459 WHEN 3 THEN 'LINE'
180460 WHEN 4 THEN 'LINE'
180461 WHEN 5 THEN 'LINE'
180462 WHEN 6 THEN 'LINE'
180463 WHEN 7 THEN 'LINE'
180464 WHEN 8 THEN 'LINE'
180465 WHEN 9 THEN 'LINE'
180466
180467 ELSE null
180468 END object_type_code
180469 , CASE r
180470 WHEN 1 THEN '707'
180471 WHEN 2 THEN '707'
180472 WHEN 3 THEN '707'
180473 WHEN 4 THEN '707'
180474 WHEN 5 THEN '707'
180475 WHEN 6 THEN '707'
180476 WHEN 7 THEN '707'
180477 WHEN 8 THEN '707'
180478 WHEN 9 THEN '707'
180479
180480 ELSE null
180481 END source_application_id
180482 , 'S' source_type_code
180483 , CASE r
180484 WHEN 1 THEN 'CODE_COMBINATION_ID'
180485 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
180486 WHEN 3 THEN 'CURRENCY_CODE'
180487 WHEN 4 THEN 'ENTERED_AMOUNT'
180488 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
180489 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
180490 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
180491 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
180492 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
180493
180494 ELSE null
180495 END source_code
180496 , CASE r
180497 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
180498 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
180499 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
180500 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
180501 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
180502 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
180503 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
180504 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
180505 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
180506
180507 ELSE null
180508 END source_value
180509 , null source_meaning
180510 FROM xla_events_gt xet
180511 , CST_XLA_INV_LINES_V l2
180512 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
180513 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
180514 AND xet.event_type_code = C_EVENT_TYPE_CODE
180515 AND l2.event_id = xet.event_id
180516
180517 )
180518 ;
180519 --
180520 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180521
180522 trace
180523 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
180524 ,p_level => C_LEVEL_STATEMENT
180525 ,p_module => l_log_module);
180526
180527 END IF;
180528
180529
180530 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180531 trace
180532 (p_msg => 'END of insert_sources_287'
180533 ,p_level => C_LEVEL_PROCEDURE
180534 ,p_module => l_log_module);
180535 END IF;
180536 EXCEPTION
180537 WHEN xla_exceptions_pkg.application_exception THEN
180538 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180539 trace
180540 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180541 ,p_level => C_LEVEL_EXCEPTION
180542 ,p_module => l_log_module);
180543 END IF;
180544 RAISE;
180545 WHEN OTHERS THEN
180546 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
180547 trace
180548 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
180549 ,p_level => C_LEVEL_EXCEPTION
180550 ,p_module => l_log_module);
180551 END IF;
180552 xla_exceptions_pkg.raise_message
180553 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_287');
180554 END insert_sources_287;
180555 --
180556
180557 ---------------------------------------
180558 --
180559 -- PRIVATE FUNCTION
180560 -- EventType_287
180561 --
180562 ----------------------------------------
180563 --
180564 FUNCTION EventType_287
180565 (p_application_id IN NUMBER
180566 ,p_base_ledger_id IN NUMBER
180567 ,p_target_ledger_id IN NUMBER
180568 ,p_language IN VARCHAR2
180569 ,p_currency_code IN VARCHAR2
180570 ,p_sla_ledger_id IN NUMBER
180571 ,p_pad_start_date IN DATE
180572 ,p_pad_end_date IN DATE
180573 ,p_primary_ledger_id IN NUMBER)
180574 RETURN BOOLEAN IS
180575 --
180576 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UAVG_COST_UPD';
180577 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
180578
180579 l_calculate_acctd_flag VARCHAR2(1) :='Y';
180580 l_calculate_g_l_flag VARCHAR2(1) :='Y';
180581 --
180582 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180583 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180584 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180585 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180586 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180587 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180588 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180589 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180590 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180591 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180592 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180593 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180594 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180595 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
180596 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180597 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180598 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180599 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
180600 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180601 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180602 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180603 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
180604 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
180605 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
180606 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
180607 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
180608
180609 l_event_id NUMBER;
180610 l_previous_event_id NUMBER;
180611 l_first_event_id NUMBER;
180612 l_last_event_id NUMBER;
180613
180614 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
180615 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
180616 --
180617 --
180618 l_result BOOLEAN := TRUE;
180619 l_rows NUMBER := 1000;
180620 l_event_type_name VARCHAR2(80) := 'User-defined Cost Update';
180621 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
180622 l_description VARCHAR2(4000);
180623 l_transaction_reversal NUMBER;
180624 l_ae_header_id NUMBER;
180625 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
180626 l_log_module VARCHAR2(240);
180627 --
180628 l_acct_reversal_source VARCHAR2(30);
180629 l_trx_reversal_source VARCHAR2(30);
180630
180631 l_continue_with_lines BOOLEAN := TRUE;
180632 --
180633 l_acc_rev_gl_date_source DATE; -- 4262811
180634 --
180635 type t_array_event_id is table of number index by binary_integer;
180636
180637 l_rec_array_event t_rec_array_event;
180638 l_null_rec_array_event t_rec_array_event;
180639 l_array_ae_header_id xla_number_array_type;
180640 l_actual_flag VARCHAR2(1) := NULL;
180641 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
180642 l_balance_type_code VARCHAR2(1) :=NULL;
180643 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
180644
180645 --
180646 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
180647 --
180648
180649 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
180650 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
180651
180652 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
180653 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
180654 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
180655 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180656 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
180657 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
180658 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
180659 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
180660 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
180661
180662 l_array_source_12 t_array_source_12;
180663 l_array_source_12_meaning t_array_lookup_meaning;
180664 l_array_source_38 t_array_source_38;
180665 l_array_source_38_meaning t_array_lookup_meaning;
180666
180667 l_array_source_4 t_array_source_4;
180668 l_array_source_11 t_array_source_11;
180669 l_array_source_15 t_array_source_15;
180670 l_array_source_18 t_array_source_18;
180671 l_array_source_19 t_array_source_19;
180672 l_array_source_20 t_array_source_20;
180673 l_array_source_21 t_array_source_21;
180674 l_array_source_22 t_array_source_22;
180675 l_array_source_24 t_array_source_24;
180676
180677 --
180678 CURSOR header_cur
180679 IS
180680 SELECT /*+ leading(xet) cardinality(xet,1) */
180681 -- Event Type Code: UAVG_COST_UPD
180682 -- Event Class Code: USER_DEFINE
180683 xet.entity_id
180684 , xet.legal_entity_id
180685 , xet.entity_code
180686 , xet.transaction_number
180687 , xet.event_id
180688 , xet.event_class_code
180689 , xet.event_type_code
180690 , xet.event_number
180691 , xet.event_date
180692 , xet.transaction_date
180693 , xet.reference_num_1
180694 , xet.reference_num_2
180695 , xet.reference_num_3
180696 , xet.reference_num_4
180697 , xet.reference_char_1
180698 , xet.reference_char_2
180699 , xet.reference_char_3
180700 , xet.reference_char_4
180701 , xet.reference_date_1
180702 , xet.reference_date_2
180703 , xet.reference_date_3
180704 , xet.reference_date_4
180705 , xet.event_created_by
180706 , xet.budgetary_control_flag
180707 , h1.DISTRIBUTION_TYPE source_12
180708 , fvl12.meaning source_12_meaning
180709 , h1.TRANSFER_TO_GL_INDICATOR source_38
180710 , fvl38.meaning source_38_meaning
180711 FROM xla_events_gt xet
180712 , CST_XLA_INV_HEADERS_V h1
180713 , fnd_lookup_values fvl12
180714 , fnd_lookup_values fvl38
180715 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
180716 and xet.event_type_code = C_EVENT_TYPE_CODE
180717 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
180718 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
180719 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
180720 AND fvl12.view_application_id(+) = 700
180721 AND fvl12.language(+) = USERENV('LANG')
180722 AND fvl38.lookup_type(+) = 'YES_NO'
180723 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
180724 AND fvl38.view_application_id(+) = 0
180725 AND fvl38.language(+) = USERENV('LANG')
180726
180727 ORDER BY event_id
180728 ;
180729
180730
180731 --
180732 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
180733 IS
180734 SELECT /*+ leading(xet) cardinality(xet,1) */
180735 -- Event Type Code: UAVG_COST_UPD
180736 -- Event Class Code: USER_DEFINE
180737 xet.entity_id
180738 ,xet.legal_entity_id
180739 ,xet.entity_code
180740 ,xet.transaction_number
180741 ,xet.event_id
180742 ,xet.event_class_code
180743 ,xet.event_type_code
180744 ,xet.event_number
180745 ,xet.event_date
180746 ,xet.transaction_date
180747 ,xet.reference_num_1
180748 ,xet.reference_num_2
180749 ,xet.reference_num_3
180750 ,xet.reference_num_4
180751 ,xet.reference_char_1
180752 ,xet.reference_char_2
180753 ,xet.reference_char_3
180754 ,xet.reference_char_4
180755 ,xet.reference_date_1
180756 ,xet.reference_date_2
180757 ,xet.reference_date_3
180758 ,xet.reference_date_4
180759 ,xet.event_created_by
180760 ,xet.budgetary_control_flag , l2.LINE_NUMBER
180761 , l2.CODE_COMBINATION_ID source_4
180762 , l2.DISTRIBUTION_IDENTIFIER source_11
180763 , l2.CURRENCY_CODE source_15
180764 , l2.ENTERED_AMOUNT source_18
180765 , l2.CURRENCY_CONVERSION_DATE source_19
180766 , l2.CURRENCY_CONVERSION_RATE source_20
180767 , l2.CURRENCY_CONVERSION_TYPE source_21
180768 , l2.ACCOUNTED_AMOUNT source_22
180769 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
180770 FROM xla_events_gt xet
180771 , CST_XLA_INV_LINES_V l2
180772 WHERE xet.event_id between x_first_event_id and x_last_event_id
180773 and xet.event_date between p_pad_start_date and p_pad_end_date
180774 and xet.event_type_code = C_EVENT_TYPE_CODE
180775 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
180776 ;
180777
180778 --
180779 BEGIN
180780 IF g_log_enabled THEN
180781 l_log_module := C_DEFAULT_MODULE||'.EventType_287';
180782 END IF;
180783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
180784 trace
180785 (p_msg => 'BEGIN of EventType_287'
180786 ,p_level => C_LEVEL_PROCEDURE
180787 ,p_module => l_log_module);
180788 END IF;
180789
180790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180791 trace
180792 (p_msg => 'p_application_id = '||p_application_id||
180793 ' - p_base_ledger_id = '||p_base_ledger_id||
180794 ' - p_target_ledger_id = '||p_target_ledger_id||
180795 ' - p_language = '||p_language||
180796 ' - p_currency_code = '||p_currency_code||
180797 ' - p_sla_ledger_id = '||p_sla_ledger_id
180798 ,p_level => C_LEVEL_STATEMENT
180799 ,p_module => l_log_module);
180800 END IF;
180801 --
180802 -- initialze arrays
180803 --
180804 g_array_event.DELETE;
180805 l_rec_array_event := l_null_rec_array_event;
180806 --
180807 --------------------------------------
180808 -- 4262811 Initialze MPA Line Number
180809 --------------------------------------
180810 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
180811
180812 --
180813
180814 --
180815 OPEN header_cur;
180816 --
180817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
180818 trace
180819 (p_msg => 'SQL - FETCH header_cur'
180820 ,p_level => C_LEVEL_STATEMENT
180821 ,p_module => l_log_module);
180822 END IF;
180823 --
180824 LOOP
180825 FETCH header_cur BULK COLLECT INTO
180826 l_array_entity_id
180827 , l_array_legal_entity_id
180828 , l_array_entity_code
180829 , l_array_transaction_num
180830 , l_array_event_id
180831 , l_array_class_code
180832 , l_array_event_type
180833 , l_array_event_number
180834 , l_array_event_date
180835 , l_array_transaction_date
180836 , l_array_reference_num_1
180837 , l_array_reference_num_2
180838 , l_array_reference_num_3
180839 , l_array_reference_num_4
180840 , l_array_reference_char_1
180841 , l_array_reference_char_2
180842 , l_array_reference_char_3
180843 , l_array_reference_char_4
180844 , l_array_reference_date_1
180845 , l_array_reference_date_2
180846 , l_array_reference_date_3
180847 , l_array_reference_date_4
180848 , l_array_event_created_by
180849 , l_array_budgetary_control_flag
180850 , l_array_source_12
180851 , l_array_source_12_meaning
180852 , l_array_source_38
180853 , l_array_source_38_meaning
180854 LIMIT l_rows;
180855 --
180856 IF (C_LEVEL_EVENT >= g_log_level) THEN
180857 trace
180858 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
180859 ,p_level => C_LEVEL_EVENT
180860 ,p_module => l_log_module);
180861 END IF;
180862 --
180863 EXIT WHEN l_array_entity_id.COUNT = 0;
180864
180865 -- initialize arrays
180866 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
180867 XLA_AE_LINES_PKG.g_rec_lines := NULL;
180868
180869 --
180870 -- Bug 4458708
180871 --
180872 XLA_AE_LINES_PKG.g_LineNumber := 0;
180873
180874
180875 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
180876 g_last_hdr_idx := l_array_event_id.LAST;
180877 --
180878 -- loop for the headers. Each iteration is for each header extract row
180879 -- fetched in header cursor
180880 --
180881 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
180882
180883 --
180884 -- set event info as cache for other routines to refer event attributes
180885 --
180886 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
180887 (p_application_id => p_application_id
180888 ,p_primary_ledger_id => p_primary_ledger_id
180889 ,p_base_ledger_id => p_base_ledger_id
180890 ,p_target_ledger_id => p_target_ledger_id
180891 ,p_entity_id => l_array_entity_id(hdr_idx)
180892 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
180893 ,p_entity_code => l_array_entity_code(hdr_idx)
180894 ,p_transaction_num => l_array_transaction_num(hdr_idx)
180895 ,p_event_id => l_array_event_id(hdr_idx)
180896 ,p_event_class_code => l_array_class_code(hdr_idx)
180897 ,p_event_type_code => l_array_event_type(hdr_idx)
180898 ,p_event_number => l_array_event_number(hdr_idx)
180899 ,p_event_date => l_array_event_date(hdr_idx)
180900 ,p_transaction_date => l_array_transaction_date(hdr_idx)
180901 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
180902 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
180903 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
180904 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
180905 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
180906 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
180907 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
180908 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
180909 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
180910 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
180911 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
180912 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
180913 ,p_event_created_by => l_array_event_created_by(hdr_idx)
180914 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
180915
180916 --
180917 -- set the status of entry to C_VALID (0)
180918 --
180919 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
180920
180921 --
180922 -- initialize a row for ae header
180923 --
180924 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
180925
180926 l_event_id := l_array_event_id(hdr_idx);
180927
180928 --
180929 -- storing the hdr_idx for event. May be used by line cursor.
180930 --
180931 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
180932
180933 --
180934 -- store sources from header extract. This can be improved to
180935 -- store only those sources from header extract that may be used in lines
180936 --
180937
180938 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
180939 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
180940 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
180941 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
180942
180943 --
180944 -- initilaize the status of ae headers for diffrent balance types
180945 -- the status is initialised to C_NOT_CREATED (2)
180946 --
180947 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180948 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180949 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
180950
180951 --
180952 -- call api to validate and store accounting attributes for header
180953 --
180954
180955 ------------------------------------------------------------
180956 -- Accrual Reversal : to get date for Standard Source (NONE)
180957 ------------------------------------------------------------
180958 l_acc_rev_gl_date_source := NULL;
180959
180960 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
180961 l_rec_acct_attrs.array_date_value(1) :=
180962 xla_ae_sources_pkg.GetSystemSourceDate(
180963 p_source_code => 'XLA_REFERENCE_DATE_1'
180964 , p_source_type_code => 'Y'
180965 , p_source_application_id => 602
180966 );
180967 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
180968 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
180969
180970
180971 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
180972
180973 XLA_AE_HEADER_PKG.SetJeCategoryName;
180974
180975 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
180976 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
180977 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
180978 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
180979 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
180980
180981
180982 -- No header level analytical criteria
180983
180984 --
180985 --accounting attribute enhancement, bug 3612931
180986 --
180987 l_trx_reversal_source := SUBSTR(NULL, 1,30);
180988
180989 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
180990 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
180991
180992 xla_accounting_err_pkg.build_message
180993 (p_appli_s_name => 'XLA'
180994 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
180995 ,p_token_1 => 'ACCT_ATTR_NAME'
180996 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
180997 ,p_token_2 => 'PRODUCT_NAME'
180998 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
180999 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
181000 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
181001 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
181002
181003 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
181004 --
181005 -- following sets the accounting attributes needed to reverse
181006 -- accounting for a distributeion
181007 --
181008 xla_ae_lines_pkg.SetTrxReversalAttrs
181009 (p_event_id => l_event_id
181010 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
181011 ,p_trx_reversal_source => l_trx_reversal_source);
181012
181013 END IF;
181014
181015
181016 ----------------------------------------------------------------
181017 -- 4262811 - update the header statuses to invalid in need be
181018 ----------------------------------------------------------------
181019 --
181020 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
181021
181022
181023 -----------------------------------------------
181024 -- No accrual reversal for the event class/type
181025 -----------------------------------------------
181026 ----------------------------------------------------------------
181027
181028 --
181029 -- this ends the header loop iteration for one bulk fetch
181030 --
181031 END LOOP;
181032
181033 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
181034 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
181035
181036 --
181037 -- insert dummy rows into lines gt table that were created due to
181038 -- transaction reversals
181039 --
181040 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
181041 l_result := XLA_AE_LINES_PKG.InsertLines;
181042 END IF;
181043
181044 --
181045 -- reset the temp_line_num for each set of events fetched from header
181046 -- cursor rather than doing it for each new event in line cursor
181047 -- Bug 3939231
181048 --
181049 xla_ae_lines_pkg.g_temp_line_num := 0;
181050
181051
181052
181053 --
181054 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
181055 --
181056 --
181057 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181058
181059 trace
181060 (p_msg => 'SQL - FETCH line_cur'
181061 ,p_level => C_LEVEL_STATEMENT
181062 ,p_module => l_log_module);
181063
181064 END IF;
181065 --
181066 --
181067 LOOP
181068 --
181069 FETCH line_cur BULK COLLECT INTO
181070 l_array_entity_id
181071 , l_array_legal_entity_id
181072 , l_array_entity_code
181073 , l_array_transaction_num
181074 , l_array_event_id
181075 , l_array_class_code
181076 , l_array_event_type
181077 , l_array_event_number
181078 , l_array_event_date
181079 , l_array_transaction_date
181080 , l_array_reference_num_1
181081 , l_array_reference_num_2
181082 , l_array_reference_num_3
181083 , l_array_reference_num_4
181084 , l_array_reference_char_1
181085 , l_array_reference_char_2
181086 , l_array_reference_char_3
181087 , l_array_reference_char_4
181088 , l_array_reference_date_1
181089 , l_array_reference_date_2
181090 , l_array_reference_date_3
181091 , l_array_reference_date_4
181092 , l_array_event_created_by
181093 , l_array_budgetary_control_flag
181094 , l_array_extract_line_num
181095 , l_array_source_4
181096 , l_array_source_11
181097 , l_array_source_15
181098 , l_array_source_18
181099 , l_array_source_19
181100 , l_array_source_20
181101 , l_array_source_21
181102 , l_array_source_22
181103 , l_array_source_24
181104 LIMIT l_rows;
181105
181106 --
181107 IF (C_LEVEL_EVENT >= g_log_level) THEN
181108 trace
181109 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
181110 ,p_level => C_LEVEL_EVENT
181111 ,p_module => l_log_module);
181112 END IF;
181113 --
181114 EXIT WHEN l_array_entity_id.count = 0;
181115
181116 XLA_AE_LINES_PKG.g_rec_lines := null;
181117
181118 --
181119 -- Bug 4458708
181120 --
181121 XLA_AE_LINES_PKG.g_LineNumber := 0;
181122 --
181123 --
181124
181125 FOR Idx IN 1..l_array_event_id.count LOOP
181126 --
181127 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
181128 --
181129 l_event_id := l_array_event_id(idx); -- 5648433
181130
181131 --
181132 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
181133 --
181134
181135 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
181136 (g_array_event(l_event_id).array_value_num('header_index'))
181137 ,'N'
181138 ) <> 'Y'
181139 THEN
181140 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181141 trace
181142 (p_msg => 'Trancaction revesal option is not Y '
181143 ,p_level => C_LEVEL_STATEMENT
181144 ,p_module => l_log_module);
181145 END IF;
181146
181147 --
181148 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
181149 --
181150 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
181151 --
181152 -- set event info as cache for other routines to refer event attributes
181153 --
181154
181155 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
181156 l_previous_event_id := l_event_id;
181157
181158 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
181159 (p_application_id => p_application_id
181160 ,p_primary_ledger_id => p_primary_ledger_id
181161 ,p_base_ledger_id => p_base_ledger_id
181162 ,p_target_ledger_id => p_target_ledger_id
181163 ,p_entity_id => l_array_entity_id(Idx)
181164 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
181165 ,p_entity_code => l_array_entity_code(Idx)
181166 ,p_transaction_num => l_array_transaction_num(Idx)
181167 ,p_event_id => l_array_event_id(Idx)
181168 ,p_event_class_code => l_array_class_code(Idx)
181169 ,p_event_type_code => l_array_event_type(Idx)
181170 ,p_event_number => l_array_event_number(Idx)
181171 ,p_event_date => l_array_event_date(Idx)
181172 ,p_transaction_date => l_array_transaction_date(Idx)
181173 ,p_reference_num_1 => l_array_reference_num_1(Idx)
181174 ,p_reference_num_2 => l_array_reference_num_2(Idx)
181175 ,p_reference_num_3 => l_array_reference_num_3(Idx)
181176 ,p_reference_num_4 => l_array_reference_num_4(Idx)
181177 ,p_reference_char_1 => l_array_reference_char_1(Idx)
181178 ,p_reference_char_2 => l_array_reference_char_2(Idx)
181179 ,p_reference_char_3 => l_array_reference_char_3(Idx)
181180 ,p_reference_char_4 => l_array_reference_char_4(Idx)
181181 ,p_reference_date_1 => l_array_reference_date_1(Idx)
181182 ,p_reference_date_2 => l_array_reference_date_2(Idx)
181183 ,p_reference_date_3 => l_array_reference_date_3(Idx)
181184 ,p_reference_date_4 => l_array_reference_date_4(Idx)
181185 ,p_event_created_by => l_array_event_created_by(Idx)
181186 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
181187 --
181188 END IF;
181189
181190
181191
181192 --
181193 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
181194
181195 l_acct_reversal_source := SUBSTR(NULL, 1,30);
181196
181197 IF l_continue_with_lines THEN
181198 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
181199 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
181200
181201 xla_accounting_err_pkg.build_message
181202 (p_appli_s_name => 'XLA'
181203 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
181204 ,p_token_1 => 'LINE_NUMBER'
181205 ,p_value_1 => l_array_extract_line_num(Idx)
181206 ,p_token_2 => 'PRODUCT_NAME'
181207 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
181208 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
181209 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
181210 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
181211
181212 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
181213 --
181214 -- following sets the accounting attributes needed to reverse
181215 -- accounting for a distributeion
181216 --
181217
181218 --
181219 -- 5217187
181220 --
181221 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
181222 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
181223 g_array_event(l_event_id).array_value_num('header_index'));
181224 --
181225 --
181226
181227 -- No reversal code generated
181228
181229 xla_ae_lines_pkg.SetAcctReversalAttrs
181230 (p_event_id => l_event_id
181231 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
181232 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181233 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
181234 END IF;
181235
181236 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
181237 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
181238
181239 --
181240 AcctLineType_24 (
181241 p_application_id => p_application_id
181242 ,p_event_id => l_event_id
181243 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181244 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181245 ,p_actual_flag => l_actual_flag
181246 ,p_balance_type_code => l_balance_type_code
181247 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181248
181249 , p_source_4 => l_array_source_4(Idx)
181250 , p_source_11 => l_array_source_11(Idx)
181251 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
181252 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
181253 , p_source_15 => l_array_source_15(Idx)
181254 , p_source_18 => l_array_source_18(Idx)
181255 , p_source_19 => l_array_source_19(Idx)
181256 , p_source_20 => l_array_source_20(Idx)
181257 , p_source_21 => l_array_source_21(Idx)
181258 , p_source_22 => l_array_source_22(Idx)
181259 , p_source_24 => l_array_source_24(Idx)
181260 );
181261 If(l_balance_type_code = 'A') THEN
181262 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181263 END IF;
181264
181265 --
181266
181267
181268 --
181269 AcctLineType_27 (
181270 p_application_id => p_application_id
181271 ,p_event_id => l_event_id
181272 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181273 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181274 ,p_actual_flag => l_actual_flag
181275 ,p_balance_type_code => l_balance_type_code
181276 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181277
181278 , p_source_4 => l_array_source_4(Idx)
181279 , p_source_11 => l_array_source_11(Idx)
181280 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
181281 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
181282 , p_source_15 => l_array_source_15(Idx)
181283 , p_source_18 => l_array_source_18(Idx)
181284 , p_source_19 => l_array_source_19(Idx)
181285 , p_source_20 => l_array_source_20(Idx)
181286 , p_source_21 => l_array_source_21(Idx)
181287 , p_source_22 => l_array_source_22(Idx)
181288 , p_source_24 => l_array_source_24(Idx)
181289 );
181290 If(l_balance_type_code = 'A') THEN
181291 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181292 END IF;
181293
181294 --
181295
181296
181297 --
181298 AcctLineType_51 (
181299 p_application_id => p_application_id
181300 ,p_event_id => l_event_id
181301 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181302 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181303 ,p_actual_flag => l_actual_flag
181304 ,p_balance_type_code => l_balance_type_code
181305 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181306
181307 , p_source_4 => l_array_source_4(Idx)
181308 , p_source_11 => l_array_source_11(Idx)
181309 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
181310 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
181311 , p_source_15 => l_array_source_15(Idx)
181312 , p_source_18 => l_array_source_18(Idx)
181313 , p_source_19 => l_array_source_19(Idx)
181314 , p_source_20 => l_array_source_20(Idx)
181315 , p_source_21 => l_array_source_21(Idx)
181316 , p_source_22 => l_array_source_22(Idx)
181317 , p_source_24 => l_array_source_24(Idx)
181318 );
181319 If(l_balance_type_code = 'A') THEN
181320 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181321 END IF;
181322
181323 --
181324
181325
181326 --
181327 AcctLineType_130 (
181328 p_application_id => p_application_id
181329 ,p_event_id => l_event_id
181330 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181331 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181332 ,p_actual_flag => l_actual_flag
181333 ,p_balance_type_code => l_balance_type_code
181334 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181335
181336 , p_source_4 => l_array_source_4(Idx)
181337 , p_source_11 => l_array_source_11(Idx)
181338 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
181339 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
181340 , p_source_15 => l_array_source_15(Idx)
181341 , p_source_18 => l_array_source_18(Idx)
181342 , p_source_19 => l_array_source_19(Idx)
181343 , p_source_20 => l_array_source_20(Idx)
181344 , p_source_21 => l_array_source_21(Idx)
181345 , p_source_22 => l_array_source_22(Idx)
181346 , p_source_24 => l_array_source_24(Idx)
181347 );
181348 If(l_balance_type_code = 'A') THEN
181349 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181350 END IF;
181351
181352 --
181353
181354
181355 --
181356 AcctLineType_131 (
181357 p_application_id => p_application_id
181358 ,p_event_id => l_event_id
181359 ,p_calculate_acctd_flag => l_calculate_acctd_flag
181360 ,p_calculate_g_l_flag => l_calculate_g_l_flag
181361 ,p_actual_flag => l_actual_flag
181362 ,p_balance_type_code => l_balance_type_code
181363 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
181364
181365 , p_source_4 => l_array_source_4(Idx)
181366 , p_source_11 => l_array_source_11(Idx)
181367 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
181368 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
181369 , p_source_15 => l_array_source_15(Idx)
181370 , p_source_18 => l_array_source_18(Idx)
181371 , p_source_19 => l_array_source_19(Idx)
181372 , p_source_20 => l_array_source_20(Idx)
181373 , p_source_21 => l_array_source_21(Idx)
181374 , p_source_22 => l_array_source_22(Idx)
181375 , p_source_24 => l_array_source_24(Idx)
181376 );
181377 If(l_balance_type_code = 'A') THEN
181378 l_actual_gain_loss_ref := l_gain_or_loss_ref;
181379 END IF;
181380
181381 --
181382
181383 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
181384 -- or secondary ledger that has different currency with primary
181385 -- or alc that is calculated by sla
181386 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
181387 (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'))
181388
181389 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
181390 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
181391 AND (l_actual_flag = 'A')) THEN
181392 XLA_AE_LINES_PKG.CreateGainOrLossLines(
181393 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
181394 ,p_application_id => p_application_id
181395 ,p_amb_context_code => 'DEFAULT'
181396 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
181397 ,p_event_class_code => C_EVENT_CLASS_CODE
181398 ,p_event_type_code => C_EVENT_TYPE_CODE
181399
181400 ,p_gain_ccid => -1
181401 ,p_loss_ccid => -1
181402
181403 ,p_actual_flag => l_actual_flag
181404 ,p_enc_flag => null
181405 ,p_actual_g_l_ref => l_actual_gain_loss_ref
181406 ,p_enc_g_l_ref => null
181407 );
181408 END IF;
181409 END IF;
181410 END IF;
181411
181412 ELSE
181413 --
181414 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
181415 --
181416 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181417 trace
181418 (p_msg => 'Trancaction revesal option is Y'
181419 ,p_level => C_LEVEL_STATEMENT
181420 ,p_module => l_log_module);
181421 END IF;
181422 END IF;
181423
181424 END LOOP;
181425 l_result := XLA_AE_LINES_PKG.InsertLines ;
181426 end loop;
181427 close line_cur;
181428
181429
181430 --
181431 -- insert headers into xla_ae_headers_gt table
181432 --
181433 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
181434
181435 -- insert into errors table here.
181436
181437 END LOOP;
181438
181439 --
181440 -- 4865292
181441 --
181442 -- Compare g_hdr_extract_count with event count in
181443 -- CreateHeadersAndLines.
181444 --
181445 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
181446
181447 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181448 trace (p_msg => '# rows extracted from header extract objects '
181449 || ' (running total): '
181450 || g_hdr_extract_count
181451 ,p_level => C_LEVEL_STATEMENT
181452 ,p_module => l_log_module);
181453 END IF;
181454
181455 CLOSE header_cur;
181456 --
181457
181458 --
181459 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181460 trace
181461 (p_msg => 'END of EventType_287'
181462 ,p_level => C_LEVEL_PROCEDURE
181463 ,p_module => l_log_module);
181464 END IF;
181465 --
181466 RETURN l_result;
181467 EXCEPTION
181468 WHEN xla_exceptions_pkg.application_exception THEN
181469
181470 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181471
181472
181473 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
181474
181475 RAISE;
181476
181477 WHEN NO_DATA_FOUND THEN
181478
181479 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
181480 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
181481
181482 FOR header_record IN header_cur
181483 LOOP
181484 l_array_header_events(header_record.event_id) := header_record.event_id;
181485 END LOOP;
181486
181487 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
181488 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
181489
181490 fnd_file.put_line(fnd_file.LOG, ' ');
181491 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181492 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
181493 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
181494
181495 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
181496 LOOP
181497 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
181498 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
181499 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
181500 END IF;
181501 END LOOP;
181502
181503 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
181504 fnd_file.put_line(fnd_file.LOG, ' ');
181505
181506
181507 xla_exceptions_pkg.raise_message
181508 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_287');
181509
181510
181511 WHEN OTHERS THEN
181512 xla_exceptions_pkg.raise_message
181513 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_287');
181514 END EventType_287;
181515 --
181516
181517 ---------------------------------------
181518 --
181519 -- PRIVATE PROCEDURE
181520 -- insert_sources_288
181521 --
181522 ----------------------------------------
181523 --
181524 PROCEDURE insert_sources_288(
181525 p_target_ledger_id IN NUMBER
181526 , p_language IN VARCHAR2
181527 , p_sla_ledger_id IN NUMBER
181528 , p_pad_start_date IN DATE
181529 , p_pad_end_date IN DATE
181530 )
181531 IS
181532
181533 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UCG_TXFR';
181534 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
181535 p_apps_owner VARCHAR2(30);
181536 l_log_module VARCHAR2(240);
181537 BEGIN
181538 IF g_log_enabled THEN
181539 l_log_module := C_DEFAULT_MODULE||'.insert_sources_288';
181540 END IF;
181541 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181542
181543 trace
181544 (p_msg => 'BEGIN of insert_sources_288'
181545 ,p_level => C_LEVEL_PROCEDURE
181546 ,p_module => l_log_module);
181547
181548 END IF;
181549
181550 -- select APPS owner
181551 SELECT oracle_username
181552 INTO p_apps_owner
181553 FROM fnd_oracle_userid
181554 WHERE read_only_flag = 'U'
181555 ;
181556
181557 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181558 trace
181559 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
181560 ' - p_language = '||p_language||
181561 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
181562 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
181563 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
181564 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
181565 ,p_level => C_LEVEL_STATEMENT
181566 ,p_module => l_log_module);
181567 END IF;
181568
181569
181570 --
181571 INSERT INTO xla_diag_sources --hdr1
181572 (
181573 event_id
181574 , ledger_id
181575 , sla_ledger_id
181576 , description_language
181577 , object_name
181578 , object_type_code
181579 , line_number
181580 , source_application_id
181581 , source_type_code
181582 , source_code
181583 , source_value
181584 , source_meaning
181585 , created_by
181586 , creation_date
181587 , last_update_date
181588 , last_updated_by
181589 , last_update_login
181590 , program_update_date
181591 , program_application_id
181592 , program_id
181593 , request_id
181594 )
181595 SELECT
181596 event_id
181597 , p_target_ledger_id
181598 , p_sla_ledger_id
181599 , p_language
181600 , object_name
181601 , object_type_code
181602 , line_number
181603 , source_application_id
181604 , source_type_code
181605 , source_code
181606 , SUBSTR(source_value ,1,1996)
181607 , SUBSTR(source_meaning,1,200)
181608 , xla_environment_pkg.g_Usr_Id
181609 , TRUNC(SYSDATE)
181610 , TRUNC(SYSDATE)
181611 , xla_environment_pkg.g_Usr_Id
181612 , xla_environment_pkg.g_Login_Id
181613 , TRUNC(SYSDATE)
181614 , xla_environment_pkg.g_Prog_Appl_Id
181615 , xla_environment_pkg.g_Prog_Id
181616 , xla_environment_pkg.g_Req_Id
181617 FROM (
181618 SELECT xet.event_id event_id
181619 , 0 line_number
181620 , CASE r
181621 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
181622 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
181623
181624 ELSE null
181625 END object_name
181626 , CASE r
181627 WHEN 1 THEN 'HEADER'
181628 WHEN 2 THEN 'HEADER'
181629
181630 ELSE null
181631 END object_type_code
181632 , CASE r
181633 WHEN 1 THEN '707'
181634 WHEN 2 THEN '707'
181635
181636 ELSE null
181637 END source_application_id
181638 , 'S' source_type_code
181639 , CASE r
181640 WHEN 1 THEN 'DISTRIBUTION_TYPE'
181641 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
181642
181643 ELSE null
181644 END source_code
181645 , CASE r
181646 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
181647 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
181648
181649 ELSE null
181650 END source_value
181651 , CASE r
181652 WHEN 1 THEN fvl12.meaning
181653 WHEN 2 THEN fvl38.meaning
181654
181655 ELSE null
181656 END source_meaning
181657 FROM xla_events_gt xet
181658 , CST_XLA_INV_HEADERS_V h1
181659 , fnd_lookup_values fvl12
181660 , fnd_lookup_values fvl38
181661 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
181662 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
181663 AND xet.event_type_code = C_EVENT_TYPE_CODE
181664 AND h1.event_id = xet.event_id
181665 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
181666 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
181667 AND fvl12.view_application_id(+) = 700
181668 AND fvl12.language(+) = USERENV('LANG')
181669 AND fvl38.lookup_type(+) = 'YES_NO'
181670 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
181671 AND fvl38.view_application_id(+) = 0
181672 AND fvl38.language(+) = USERENV('LANG')
181673
181674 )
181675 ;
181676 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181677
181678 trace
181679 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
181680 ,p_level => C_LEVEL_STATEMENT
181681 ,p_module => l_log_module);
181682
181683 END IF;
181684 --
181685
181686
181687
181688 --
181689 INSERT INTO xla_diag_sources --line1
181690 (
181691 event_id
181692 , ledger_id
181693 , sla_ledger_id
181694 , description_language
181695 , object_name
181696 , object_type_code
181697 , line_number
181698 , source_application_id
181699 , source_type_code
181700 , source_code
181701 , source_value
181702 , source_meaning
181703 , created_by
181704 , creation_date
181705 , last_update_date
181706 , last_updated_by
181707 , last_update_login
181708 , program_update_date
181709 , program_application_id
181710 , program_id
181711 , request_id
181712 )
181713 SELECT event_id
181714 , p_target_ledger_id
181715 , p_sla_ledger_id
181716 , p_language
181717 , object_name
181718 , object_type_code
181719 , line_number
181720 , source_application_id
181721 , source_type_code
181722 , source_code
181723 , SUBSTR(source_value,1,1996)
181724 , SUBSTR(source_meaning,1,200)
181725 , xla_environment_pkg.g_Usr_Id
181726 , TRUNC(SYSDATE)
181727 , TRUNC(SYSDATE)
181728 , xla_environment_pkg.g_Usr_Id
181729 , xla_environment_pkg.g_Login_Id
181730 , TRUNC(SYSDATE)
181731 , xla_environment_pkg.g_Prog_Appl_Id
181732 , xla_environment_pkg.g_Prog_Id
181733 , xla_environment_pkg.g_Req_Id
181734 FROM (
181735 SELECT xet.event_id event_id
181736 , l2.line_number line_number
181737 , CASE r
181738 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
181739 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
181740 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
181741 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
181742 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
181743 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
181744 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
181745 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
181746 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
181747
181748 ELSE null
181749 END object_name
181750 , CASE r
181751 WHEN 1 THEN 'LINE'
181752 WHEN 2 THEN 'LINE'
181753 WHEN 3 THEN 'LINE'
181754 WHEN 4 THEN 'LINE'
181755 WHEN 5 THEN 'LINE'
181756 WHEN 6 THEN 'LINE'
181757 WHEN 7 THEN 'LINE'
181758 WHEN 8 THEN 'LINE'
181759 WHEN 9 THEN 'LINE'
181760
181761 ELSE null
181762 END object_type_code
181763 , CASE r
181764 WHEN 1 THEN '707'
181765 WHEN 2 THEN '707'
181766 WHEN 3 THEN '707'
181767 WHEN 4 THEN '707'
181768 WHEN 5 THEN '707'
181769 WHEN 6 THEN '707'
181770 WHEN 7 THEN '707'
181771 WHEN 8 THEN '707'
181772 WHEN 9 THEN '707'
181773
181774 ELSE null
181775 END source_application_id
181776 , 'S' source_type_code
181777 , CASE r
181778 WHEN 1 THEN 'CODE_COMBINATION_ID'
181779 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
181780 WHEN 3 THEN 'CURRENCY_CODE'
181781 WHEN 4 THEN 'ENTERED_AMOUNT'
181782 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
181783 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
181784 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
181785 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
181786 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
181787
181788 ELSE null
181789 END source_code
181790 , CASE r
181791 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
181792 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
181793 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
181794 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
181795 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
181796 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
181797 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
181798 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
181799 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
181800
181801 ELSE null
181802 END source_value
181803 , null source_meaning
181804 FROM xla_events_gt xet
181805 , CST_XLA_INV_LINES_V l2
181806 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
181807 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
181808 AND xet.event_type_code = C_EVENT_TYPE_CODE
181809 AND l2.event_id = xet.event_id
181810
181811 )
181812 ;
181813 --
181814 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
181815
181816 trace
181817 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
181818 ,p_level => C_LEVEL_STATEMENT
181819 ,p_module => l_log_module);
181820
181821 END IF;
181822
181823
181824 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
181825 trace
181826 (p_msg => 'END of insert_sources_288'
181827 ,p_level => C_LEVEL_PROCEDURE
181828 ,p_module => l_log_module);
181829 END IF;
181830 EXCEPTION
181831 WHEN xla_exceptions_pkg.application_exception THEN
181832 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
181833 trace
181834 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
181835 ,p_level => C_LEVEL_EXCEPTION
181836 ,p_module => l_log_module);
181837 END IF;
181838 RAISE;
181839 WHEN OTHERS THEN
181840 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
181841 trace
181842 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
181843 ,p_level => C_LEVEL_EXCEPTION
181844 ,p_module => l_log_module);
181845 END IF;
181846 xla_exceptions_pkg.raise_message
181847 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_288');
181848 END insert_sources_288;
181849 --
181850
181851 ---------------------------------------
181852 --
181853 -- PRIVATE FUNCTION
181854 -- EventType_288
181855 --
181856 ----------------------------------------
181857 --
181858 FUNCTION EventType_288
181859 (p_application_id IN NUMBER
181860 ,p_base_ledger_id IN NUMBER
181861 ,p_target_ledger_id IN NUMBER
181862 ,p_language IN VARCHAR2
181863 ,p_currency_code IN VARCHAR2
181864 ,p_sla_ledger_id IN NUMBER
181865 ,p_pad_start_date IN DATE
181866 ,p_pad_end_date IN DATE
181867 ,p_primary_ledger_id IN NUMBER)
181868 RETURN BOOLEAN IS
181869 --
181870 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UCG_TXFR';
181871 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
181872
181873 l_calculate_acctd_flag VARCHAR2(1) :='Y';
181874 l_calculate_g_l_flag VARCHAR2(1) :='Y';
181875 --
181876 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181877 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181878 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181879 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181880 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181881 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181882 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181883 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181884 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181885 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181886 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181887 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181888 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181889 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
181890 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181891 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181892 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181893 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
181894 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181895 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181896 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181897 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
181898 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
181899 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
181900 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
181901 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
181902
181903 l_event_id NUMBER;
181904 l_previous_event_id NUMBER;
181905 l_first_event_id NUMBER;
181906 l_last_event_id NUMBER;
181907
181908 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
181909 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
181910 --
181911 --
181912 l_result BOOLEAN := TRUE;
181913 l_rows NUMBER := 1000;
181914 l_event_type_name VARCHAR2(80) := 'User-defined Cost Group Transfer';
181915 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
181916 l_description VARCHAR2(4000);
181917 l_transaction_reversal NUMBER;
181918 l_ae_header_id NUMBER;
181919 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
181920 l_log_module VARCHAR2(240);
181921 --
181922 l_acct_reversal_source VARCHAR2(30);
181923 l_trx_reversal_source VARCHAR2(30);
181924
181925 l_continue_with_lines BOOLEAN := TRUE;
181926 --
181927 l_acc_rev_gl_date_source DATE; -- 4262811
181928 --
181929 type t_array_event_id is table of number index by binary_integer;
181930
181931 l_rec_array_event t_rec_array_event;
181932 l_null_rec_array_event t_rec_array_event;
181933 l_array_ae_header_id xla_number_array_type;
181934 l_actual_flag VARCHAR2(1) := NULL;
181935 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
181936 l_balance_type_code VARCHAR2(1) :=NULL;
181937 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
181938
181939 --
181940 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
181941 --
181942
181943 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
181944 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
181945
181946 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
181947 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
181948 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
181949 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
181950 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
181951 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
181952 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
181953 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
181954 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
181955
181956 l_array_source_12 t_array_source_12;
181957 l_array_source_12_meaning t_array_lookup_meaning;
181958 l_array_source_38 t_array_source_38;
181959 l_array_source_38_meaning t_array_lookup_meaning;
181960
181961 l_array_source_4 t_array_source_4;
181962 l_array_source_11 t_array_source_11;
181963 l_array_source_15 t_array_source_15;
181964 l_array_source_18 t_array_source_18;
181965 l_array_source_19 t_array_source_19;
181966 l_array_source_20 t_array_source_20;
181967 l_array_source_21 t_array_source_21;
181968 l_array_source_22 t_array_source_22;
181969 l_array_source_24 t_array_source_24;
181970
181971 --
181972 CURSOR header_cur
181973 IS
181974 SELECT /*+ leading(xet) cardinality(xet,1) */
181975 -- Event Type Code: UCG_TXFR
181976 -- Event Class Code: USER_DEFINE
181977 xet.entity_id
181978 , xet.legal_entity_id
181979 , xet.entity_code
181980 , xet.transaction_number
181981 , xet.event_id
181982 , xet.event_class_code
181983 , xet.event_type_code
181984 , xet.event_number
181985 , xet.event_date
181986 , xet.transaction_date
181987 , xet.reference_num_1
181988 , xet.reference_num_2
181989 , xet.reference_num_3
181990 , xet.reference_num_4
181991 , xet.reference_char_1
181992 , xet.reference_char_2
181993 , xet.reference_char_3
181994 , xet.reference_char_4
181995 , xet.reference_date_1
181996 , xet.reference_date_2
181997 , xet.reference_date_3
181998 , xet.reference_date_4
181999 , xet.event_created_by
182000 , xet.budgetary_control_flag
182001 , h1.DISTRIBUTION_TYPE source_12
182002 , fvl12.meaning source_12_meaning
182003 , h1.TRANSFER_TO_GL_INDICATOR source_38
182004 , fvl38.meaning source_38_meaning
182005 FROM xla_events_gt xet
182006 , CST_XLA_INV_HEADERS_V h1
182007 , fnd_lookup_values fvl12
182008 , fnd_lookup_values fvl38
182009 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
182010 and xet.event_type_code = C_EVENT_TYPE_CODE
182011 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
182012 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
182013 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
182014 AND fvl12.view_application_id(+) = 700
182015 AND fvl12.language(+) = USERENV('LANG')
182016 AND fvl38.lookup_type(+) = 'YES_NO'
182017 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
182018 AND fvl38.view_application_id(+) = 0
182019 AND fvl38.language(+) = USERENV('LANG')
182020
182021 ORDER BY event_id
182022 ;
182023
182024
182025 --
182026 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
182027 IS
182028 SELECT /*+ leading(xet) cardinality(xet,1) */
182029 -- Event Type Code: UCG_TXFR
182030 -- Event Class Code: USER_DEFINE
182031 xet.entity_id
182032 ,xet.legal_entity_id
182033 ,xet.entity_code
182034 ,xet.transaction_number
182035 ,xet.event_id
182036 ,xet.event_class_code
182037 ,xet.event_type_code
182038 ,xet.event_number
182039 ,xet.event_date
182040 ,xet.transaction_date
182041 ,xet.reference_num_1
182042 ,xet.reference_num_2
182043 ,xet.reference_num_3
182044 ,xet.reference_num_4
182045 ,xet.reference_char_1
182046 ,xet.reference_char_2
182047 ,xet.reference_char_3
182048 ,xet.reference_char_4
182049 ,xet.reference_date_1
182050 ,xet.reference_date_2
182051 ,xet.reference_date_3
182052 ,xet.reference_date_4
182053 ,xet.event_created_by
182054 ,xet.budgetary_control_flag , l2.LINE_NUMBER
182055 , l2.CODE_COMBINATION_ID source_4
182056 , l2.DISTRIBUTION_IDENTIFIER source_11
182057 , l2.CURRENCY_CODE source_15
182058 , l2.ENTERED_AMOUNT source_18
182059 , l2.CURRENCY_CONVERSION_DATE source_19
182060 , l2.CURRENCY_CONVERSION_RATE source_20
182061 , l2.CURRENCY_CONVERSION_TYPE source_21
182062 , l2.ACCOUNTED_AMOUNT source_22
182063 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
182064 FROM xla_events_gt xet
182065 , CST_XLA_INV_LINES_V l2
182066 WHERE xet.event_id between x_first_event_id and x_last_event_id
182067 and xet.event_date between p_pad_start_date and p_pad_end_date
182068 and xet.event_type_code = C_EVENT_TYPE_CODE
182069 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
182070 ;
182071
182072 --
182073 BEGIN
182074 IF g_log_enabled THEN
182075 l_log_module := C_DEFAULT_MODULE||'.EventType_288';
182076 END IF;
182077 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182078 trace
182079 (p_msg => 'BEGIN of EventType_288'
182080 ,p_level => C_LEVEL_PROCEDURE
182081 ,p_module => l_log_module);
182082 END IF;
182083
182084 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182085 trace
182086 (p_msg => 'p_application_id = '||p_application_id||
182087 ' - p_base_ledger_id = '||p_base_ledger_id||
182088 ' - p_target_ledger_id = '||p_target_ledger_id||
182089 ' - p_language = '||p_language||
182090 ' - p_currency_code = '||p_currency_code||
182091 ' - p_sla_ledger_id = '||p_sla_ledger_id
182092 ,p_level => C_LEVEL_STATEMENT
182093 ,p_module => l_log_module);
182094 END IF;
182095 --
182096 -- initialze arrays
182097 --
182098 g_array_event.DELETE;
182099 l_rec_array_event := l_null_rec_array_event;
182100 --
182101 --------------------------------------
182102 -- 4262811 Initialze MPA Line Number
182103 --------------------------------------
182104 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
182105
182106 --
182107
182108 --
182109 OPEN header_cur;
182110 --
182111 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182112 trace
182113 (p_msg => 'SQL - FETCH header_cur'
182114 ,p_level => C_LEVEL_STATEMENT
182115 ,p_module => l_log_module);
182116 END IF;
182117 --
182118 LOOP
182119 FETCH header_cur BULK COLLECT INTO
182120 l_array_entity_id
182121 , l_array_legal_entity_id
182122 , l_array_entity_code
182123 , l_array_transaction_num
182124 , l_array_event_id
182125 , l_array_class_code
182126 , l_array_event_type
182127 , l_array_event_number
182128 , l_array_event_date
182129 , l_array_transaction_date
182130 , l_array_reference_num_1
182131 , l_array_reference_num_2
182132 , l_array_reference_num_3
182133 , l_array_reference_num_4
182134 , l_array_reference_char_1
182135 , l_array_reference_char_2
182136 , l_array_reference_char_3
182137 , l_array_reference_char_4
182138 , l_array_reference_date_1
182139 , l_array_reference_date_2
182140 , l_array_reference_date_3
182141 , l_array_reference_date_4
182142 , l_array_event_created_by
182143 , l_array_budgetary_control_flag
182144 , l_array_source_12
182145 , l_array_source_12_meaning
182146 , l_array_source_38
182147 , l_array_source_38_meaning
182148 LIMIT l_rows;
182149 --
182150 IF (C_LEVEL_EVENT >= g_log_level) THEN
182151 trace
182152 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
182153 ,p_level => C_LEVEL_EVENT
182154 ,p_module => l_log_module);
182155 END IF;
182156 --
182157 EXIT WHEN l_array_entity_id.COUNT = 0;
182158
182159 -- initialize arrays
182160 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
182161 XLA_AE_LINES_PKG.g_rec_lines := NULL;
182162
182163 --
182164 -- Bug 4458708
182165 --
182166 XLA_AE_LINES_PKG.g_LineNumber := 0;
182167
182168
182169 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
182170 g_last_hdr_idx := l_array_event_id.LAST;
182171 --
182172 -- loop for the headers. Each iteration is for each header extract row
182173 -- fetched in header cursor
182174 --
182175 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
182176
182177 --
182178 -- set event info as cache for other routines to refer event attributes
182179 --
182180 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
182181 (p_application_id => p_application_id
182182 ,p_primary_ledger_id => p_primary_ledger_id
182183 ,p_base_ledger_id => p_base_ledger_id
182184 ,p_target_ledger_id => p_target_ledger_id
182185 ,p_entity_id => l_array_entity_id(hdr_idx)
182186 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
182187 ,p_entity_code => l_array_entity_code(hdr_idx)
182188 ,p_transaction_num => l_array_transaction_num(hdr_idx)
182189 ,p_event_id => l_array_event_id(hdr_idx)
182190 ,p_event_class_code => l_array_class_code(hdr_idx)
182191 ,p_event_type_code => l_array_event_type(hdr_idx)
182192 ,p_event_number => l_array_event_number(hdr_idx)
182193 ,p_event_date => l_array_event_date(hdr_idx)
182194 ,p_transaction_date => l_array_transaction_date(hdr_idx)
182195 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
182196 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
182197 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
182198 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
182199 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
182200 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
182201 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
182202 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
182203 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
182204 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
182205 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
182206 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
182207 ,p_event_created_by => l_array_event_created_by(hdr_idx)
182208 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
182209
182210 --
182211 -- set the status of entry to C_VALID (0)
182212 --
182213 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
182214
182215 --
182216 -- initialize a row for ae header
182217 --
182218 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
182219
182220 l_event_id := l_array_event_id(hdr_idx);
182221
182222 --
182223 -- storing the hdr_idx for event. May be used by line cursor.
182224 --
182225 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
182226
182227 --
182228 -- store sources from header extract. This can be improved to
182229 -- store only those sources from header extract that may be used in lines
182230 --
182231
182232 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
182233 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
182234 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
182235 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
182236
182237 --
182238 -- initilaize the status of ae headers for diffrent balance types
182239 -- the status is initialised to C_NOT_CREATED (2)
182240 --
182241 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182242 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182243 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
182244
182245 --
182246 -- call api to validate and store accounting attributes for header
182247 --
182248
182249 ------------------------------------------------------------
182250 -- Accrual Reversal : to get date for Standard Source (NONE)
182251 ------------------------------------------------------------
182252 l_acc_rev_gl_date_source := NULL;
182253
182254 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
182255 l_rec_acct_attrs.array_date_value(1) :=
182256 xla_ae_sources_pkg.GetSystemSourceDate(
182257 p_source_code => 'XLA_REFERENCE_DATE_1'
182258 , p_source_type_code => 'Y'
182259 , p_source_application_id => 602
182260 );
182261 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
182262 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
182263
182264
182265 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
182266
182267 XLA_AE_HEADER_PKG.SetJeCategoryName;
182268
182269 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
182270 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
182271 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
182272 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
182273 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
182274
182275
182276 -- No header level analytical criteria
182277
182278 --
182279 --accounting attribute enhancement, bug 3612931
182280 --
182281 l_trx_reversal_source := SUBSTR(NULL, 1,30);
182282
182283 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
182284 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
182285
182286 xla_accounting_err_pkg.build_message
182287 (p_appli_s_name => 'XLA'
182288 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
182289 ,p_token_1 => 'ACCT_ATTR_NAME'
182290 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
182291 ,p_token_2 => 'PRODUCT_NAME'
182292 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
182293 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
182294 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
182295 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
182296
182297 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
182298 --
182299 -- following sets the accounting attributes needed to reverse
182300 -- accounting for a distributeion
182301 --
182302 xla_ae_lines_pkg.SetTrxReversalAttrs
182303 (p_event_id => l_event_id
182304 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
182305 ,p_trx_reversal_source => l_trx_reversal_source);
182306
182307 END IF;
182308
182309
182310 ----------------------------------------------------------------
182311 -- 4262811 - update the header statuses to invalid in need be
182312 ----------------------------------------------------------------
182313 --
182314 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
182315
182316
182317 -----------------------------------------------
182318 -- No accrual reversal for the event class/type
182319 -----------------------------------------------
182320 ----------------------------------------------------------------
182321
182322 --
182323 -- this ends the header loop iteration for one bulk fetch
182324 --
182325 END LOOP;
182326
182327 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
182328 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
182329
182330 --
182331 -- insert dummy rows into lines gt table that were created due to
182332 -- transaction reversals
182333 --
182334 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
182335 l_result := XLA_AE_LINES_PKG.InsertLines;
182336 END IF;
182337
182338 --
182339 -- reset the temp_line_num for each set of events fetched from header
182340 -- cursor rather than doing it for each new event in line cursor
182341 -- Bug 3939231
182342 --
182343 xla_ae_lines_pkg.g_temp_line_num := 0;
182344
182345
182346
182347 --
182348 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
182349 --
182350 --
182351 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182352
182353 trace
182354 (p_msg => 'SQL - FETCH line_cur'
182355 ,p_level => C_LEVEL_STATEMENT
182356 ,p_module => l_log_module);
182357
182358 END IF;
182359 --
182360 --
182361 LOOP
182362 --
182363 FETCH line_cur BULK COLLECT INTO
182364 l_array_entity_id
182365 , l_array_legal_entity_id
182366 , l_array_entity_code
182367 , l_array_transaction_num
182368 , l_array_event_id
182369 , l_array_class_code
182370 , l_array_event_type
182371 , l_array_event_number
182372 , l_array_event_date
182373 , l_array_transaction_date
182374 , l_array_reference_num_1
182375 , l_array_reference_num_2
182376 , l_array_reference_num_3
182377 , l_array_reference_num_4
182378 , l_array_reference_char_1
182379 , l_array_reference_char_2
182380 , l_array_reference_char_3
182381 , l_array_reference_char_4
182382 , l_array_reference_date_1
182383 , l_array_reference_date_2
182384 , l_array_reference_date_3
182385 , l_array_reference_date_4
182386 , l_array_event_created_by
182387 , l_array_budgetary_control_flag
182388 , l_array_extract_line_num
182389 , l_array_source_4
182390 , l_array_source_11
182391 , l_array_source_15
182392 , l_array_source_18
182393 , l_array_source_19
182394 , l_array_source_20
182395 , l_array_source_21
182396 , l_array_source_22
182397 , l_array_source_24
182398 LIMIT l_rows;
182399
182400 --
182401 IF (C_LEVEL_EVENT >= g_log_level) THEN
182402 trace
182403 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
182404 ,p_level => C_LEVEL_EVENT
182405 ,p_module => l_log_module);
182406 END IF;
182407 --
182408 EXIT WHEN l_array_entity_id.count = 0;
182409
182410 XLA_AE_LINES_PKG.g_rec_lines := null;
182411
182412 --
182413 -- Bug 4458708
182414 --
182415 XLA_AE_LINES_PKG.g_LineNumber := 0;
182416 --
182417 --
182418
182419 FOR Idx IN 1..l_array_event_id.count LOOP
182420 --
182421 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
182422 --
182423 l_event_id := l_array_event_id(idx); -- 5648433
182424
182425 --
182426 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182427 --
182428
182429 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
182430 (g_array_event(l_event_id).array_value_num('header_index'))
182431 ,'N'
182432 ) <> 'Y'
182433 THEN
182434 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182435 trace
182436 (p_msg => 'Trancaction revesal option is not Y '
182437 ,p_level => C_LEVEL_STATEMENT
182438 ,p_module => l_log_module);
182439 END IF;
182440
182441 --
182442 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
182443 --
182444 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
182445 --
182446 -- set event info as cache for other routines to refer event attributes
182447 --
182448
182449 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
182450 l_previous_event_id := l_event_id;
182451
182452 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
182453 (p_application_id => p_application_id
182454 ,p_primary_ledger_id => p_primary_ledger_id
182455 ,p_base_ledger_id => p_base_ledger_id
182456 ,p_target_ledger_id => p_target_ledger_id
182457 ,p_entity_id => l_array_entity_id(Idx)
182458 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
182459 ,p_entity_code => l_array_entity_code(Idx)
182460 ,p_transaction_num => l_array_transaction_num(Idx)
182461 ,p_event_id => l_array_event_id(Idx)
182462 ,p_event_class_code => l_array_class_code(Idx)
182463 ,p_event_type_code => l_array_event_type(Idx)
182464 ,p_event_number => l_array_event_number(Idx)
182465 ,p_event_date => l_array_event_date(Idx)
182466 ,p_transaction_date => l_array_transaction_date(Idx)
182467 ,p_reference_num_1 => l_array_reference_num_1(Idx)
182468 ,p_reference_num_2 => l_array_reference_num_2(Idx)
182469 ,p_reference_num_3 => l_array_reference_num_3(Idx)
182470 ,p_reference_num_4 => l_array_reference_num_4(Idx)
182471 ,p_reference_char_1 => l_array_reference_char_1(Idx)
182472 ,p_reference_char_2 => l_array_reference_char_2(Idx)
182473 ,p_reference_char_3 => l_array_reference_char_3(Idx)
182474 ,p_reference_char_4 => l_array_reference_char_4(Idx)
182475 ,p_reference_date_1 => l_array_reference_date_1(Idx)
182476 ,p_reference_date_2 => l_array_reference_date_2(Idx)
182477 ,p_reference_date_3 => l_array_reference_date_3(Idx)
182478 ,p_reference_date_4 => l_array_reference_date_4(Idx)
182479 ,p_event_created_by => l_array_event_created_by(Idx)
182480 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
182481 --
182482 END IF;
182483
182484
182485
182486 --
182487 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
182488
182489 l_acct_reversal_source := SUBSTR(NULL, 1,30);
182490
182491 IF l_continue_with_lines THEN
182492 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
182493 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
182494
182495 xla_accounting_err_pkg.build_message
182496 (p_appli_s_name => 'XLA'
182497 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
182498 ,p_token_1 => 'LINE_NUMBER'
182499 ,p_value_1 => l_array_extract_line_num(Idx)
182500 ,p_token_2 => 'PRODUCT_NAME'
182501 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
182502 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
182503 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
182504 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
182505
182506 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
182507 --
182508 -- following sets the accounting attributes needed to reverse
182509 -- accounting for a distributeion
182510 --
182511
182512 --
182513 -- 5217187
182514 --
182515 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
182516 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
182517 g_array_event(l_event_id).array_value_num('header_index'));
182518 --
182519 --
182520
182521 -- No reversal code generated
182522
182523 xla_ae_lines_pkg.SetAcctReversalAttrs
182524 (p_event_id => l_event_id
182525 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
182526 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182527 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
182528 END IF;
182529
182530 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
182531 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
182532
182533 --
182534 AcctLineType_44 (
182535 p_application_id => p_application_id
182536 ,p_event_id => l_event_id
182537 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182538 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182539 ,p_actual_flag => l_actual_flag
182540 ,p_balance_type_code => l_balance_type_code
182541 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182542
182543 , p_source_4 => l_array_source_4(Idx)
182544 , p_source_11 => l_array_source_11(Idx)
182545 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182546 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182547 , p_source_15 => l_array_source_15(Idx)
182548 , p_source_18 => l_array_source_18(Idx)
182549 , p_source_19 => l_array_source_19(Idx)
182550 , p_source_20 => l_array_source_20(Idx)
182551 , p_source_21 => l_array_source_21(Idx)
182552 , p_source_22 => l_array_source_22(Idx)
182553 , p_source_24 => l_array_source_24(Idx)
182554 );
182555 If(l_balance_type_code = 'A') THEN
182556 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182557 END IF;
182558
182559 --
182560
182561
182562 --
182563 AcctLineType_157 (
182564 p_application_id => p_application_id
182565 ,p_event_id => l_event_id
182566 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182567 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182568 ,p_actual_flag => l_actual_flag
182569 ,p_balance_type_code => l_balance_type_code
182570 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182571
182572 , p_source_4 => l_array_source_4(Idx)
182573 , p_source_11 => l_array_source_11(Idx)
182574 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182575 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182576 , p_source_15 => l_array_source_15(Idx)
182577 , p_source_18 => l_array_source_18(Idx)
182578 , p_source_19 => l_array_source_19(Idx)
182579 , p_source_20 => l_array_source_20(Idx)
182580 , p_source_21 => l_array_source_21(Idx)
182581 , p_source_22 => l_array_source_22(Idx)
182582 , p_source_24 => l_array_source_24(Idx)
182583 );
182584 If(l_balance_type_code = 'A') THEN
182585 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182586 END IF;
182587
182588 --
182589
182590
182591 --
182592 AcctLineType_179 (
182593 p_application_id => p_application_id
182594 ,p_event_id => l_event_id
182595 ,p_calculate_acctd_flag => l_calculate_acctd_flag
182596 ,p_calculate_g_l_flag => l_calculate_g_l_flag
182597 ,p_actual_flag => l_actual_flag
182598 ,p_balance_type_code => l_balance_type_code
182599 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
182600
182601 , p_source_4 => l_array_source_4(Idx)
182602 , p_source_11 => l_array_source_11(Idx)
182603 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
182604 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
182605 , p_source_15 => l_array_source_15(Idx)
182606 , p_source_18 => l_array_source_18(Idx)
182607 , p_source_19 => l_array_source_19(Idx)
182608 , p_source_20 => l_array_source_20(Idx)
182609 , p_source_21 => l_array_source_21(Idx)
182610 , p_source_22 => l_array_source_22(Idx)
182611 , p_source_24 => l_array_source_24(Idx)
182612 );
182613 If(l_balance_type_code = 'A') THEN
182614 l_actual_gain_loss_ref := l_gain_or_loss_ref;
182615 END IF;
182616
182617 --
182618
182619 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
182620 -- or secondary ledger that has different currency with primary
182621 -- or alc that is calculated by sla
182622 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
182623 (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'))
182624
182625 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
182626 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
182627 AND (l_actual_flag = 'A')) THEN
182628 XLA_AE_LINES_PKG.CreateGainOrLossLines(
182629 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
182630 ,p_application_id => p_application_id
182631 ,p_amb_context_code => 'DEFAULT'
182632 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
182633 ,p_event_class_code => C_EVENT_CLASS_CODE
182634 ,p_event_type_code => C_EVENT_TYPE_CODE
182635
182636 ,p_gain_ccid => -1
182637 ,p_loss_ccid => -1
182638
182639 ,p_actual_flag => l_actual_flag
182640 ,p_enc_flag => null
182641 ,p_actual_g_l_ref => l_actual_gain_loss_ref
182642 ,p_enc_g_l_ref => null
182643 );
182644 END IF;
182645 END IF;
182646 END IF;
182647
182648 ELSE
182649 --
182650 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
182651 --
182652 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182653 trace
182654 (p_msg => 'Trancaction revesal option is Y'
182655 ,p_level => C_LEVEL_STATEMENT
182656 ,p_module => l_log_module);
182657 END IF;
182658 END IF;
182659
182660 END LOOP;
182661 l_result := XLA_AE_LINES_PKG.InsertLines ;
182662 end loop;
182663 close line_cur;
182664
182665
182666 --
182667 -- insert headers into xla_ae_headers_gt table
182668 --
182669 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
182670
182671 -- insert into errors table here.
182672
182673 END LOOP;
182674
182675 --
182676 -- 4865292
182677 --
182678 -- Compare g_hdr_extract_count with event count in
182679 -- CreateHeadersAndLines.
182680 --
182681 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
182682
182683 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182684 trace (p_msg => '# rows extracted from header extract objects '
182685 || ' (running total): '
182686 || g_hdr_extract_count
182687 ,p_level => C_LEVEL_STATEMENT
182688 ,p_module => l_log_module);
182689 END IF;
182690
182691 CLOSE header_cur;
182692 --
182693
182694 --
182695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182696 trace
182697 (p_msg => 'END of EventType_288'
182698 ,p_level => C_LEVEL_PROCEDURE
182699 ,p_module => l_log_module);
182700 END IF;
182701 --
182702 RETURN l_result;
182703 EXCEPTION
182704 WHEN xla_exceptions_pkg.application_exception THEN
182705
182706 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182707
182708
182709 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
182710
182711 RAISE;
182712
182713 WHEN NO_DATA_FOUND THEN
182714
182715 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
182716 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
182717
182718 FOR header_record IN header_cur
182719 LOOP
182720 l_array_header_events(header_record.event_id) := header_record.event_id;
182721 END LOOP;
182722
182723 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
182724 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
182725
182726 fnd_file.put_line(fnd_file.LOG, ' ');
182727 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182728 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
182729 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
182730
182731 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
182732 LOOP
182733 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
182734 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
182735 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
182736 END IF;
182737 END LOOP;
182738
182739 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
182740 fnd_file.put_line(fnd_file.LOG, ' ');
182741
182742
182743 xla_exceptions_pkg.raise_message
182744 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_288');
182745
182746
182747 WHEN OTHERS THEN
182748 xla_exceptions_pkg.raise_message
182749 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_288');
182750 END EventType_288;
182751 --
182752
182753 ---------------------------------------
182754 --
182755 -- PRIVATE PROCEDURE
182756 -- insert_sources_289
182757 --
182758 ----------------------------------------
182759 --
182760 PROCEDURE insert_sources_289(
182761 p_target_ledger_id IN NUMBER
182762 , p_language IN VARCHAR2
182763 , p_sla_ledger_id IN NUMBER
182764 , p_pad_start_date IN DATE
182765 , p_pad_end_date IN DATE
182766 )
182767 IS
182768
182769 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT';
182770 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
182771 p_apps_owner VARCHAR2(30);
182772 l_log_module VARCHAR2(240);
182773 BEGIN
182774 IF g_log_enabled THEN
182775 l_log_module := C_DEFAULT_MODULE||'.insert_sources_289';
182776 END IF;
182777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
182778
182779 trace
182780 (p_msg => 'BEGIN of insert_sources_289'
182781 ,p_level => C_LEVEL_PROCEDURE
182782 ,p_module => l_log_module);
182783
182784 END IF;
182785
182786 -- select APPS owner
182787 SELECT oracle_username
182788 INTO p_apps_owner
182789 FROM fnd_oracle_userid
182790 WHERE read_only_flag = 'U'
182791 ;
182792
182793 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182794 trace
182795 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
182796 ' - p_language = '||p_language||
182797 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
182798 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
182799 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
182800 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
182801 ,p_level => C_LEVEL_STATEMENT
182802 ,p_module => l_log_module);
182803 END IF;
182804
182805
182806 --
182807 INSERT INTO xla_diag_sources --hdr1
182808 (
182809 event_id
182810 , ledger_id
182811 , sla_ledger_id
182812 , description_language
182813 , object_name
182814 , object_type_code
182815 , line_number
182816 , source_application_id
182817 , source_type_code
182818 , source_code
182819 , source_value
182820 , source_meaning
182821 , created_by
182822 , creation_date
182823 , last_update_date
182824 , last_updated_by
182825 , last_update_login
182826 , program_update_date
182827 , program_application_id
182828 , program_id
182829 , request_id
182830 )
182831 SELECT
182832 event_id
182833 , p_target_ledger_id
182834 , p_sla_ledger_id
182835 , p_language
182836 , object_name
182837 , object_type_code
182838 , line_number
182839 , source_application_id
182840 , source_type_code
182841 , source_code
182842 , SUBSTR(source_value ,1,1996)
182843 , SUBSTR(source_meaning,1,200)
182844 , xla_environment_pkg.g_Usr_Id
182845 , TRUNC(SYSDATE)
182846 , TRUNC(SYSDATE)
182847 , xla_environment_pkg.g_Usr_Id
182848 , xla_environment_pkg.g_Login_Id
182849 , TRUNC(SYSDATE)
182850 , xla_environment_pkg.g_Prog_Appl_Id
182851 , xla_environment_pkg.g_Prog_Id
182852 , xla_environment_pkg.g_Req_Id
182853 FROM (
182854 SELECT xet.event_id event_id
182855 , 0 line_number
182856 , CASE r
182857 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
182858 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
182859
182860 ELSE null
182861 END object_name
182862 , CASE r
182863 WHEN 1 THEN 'HEADER'
182864 WHEN 2 THEN 'HEADER'
182865
182866 ELSE null
182867 END object_type_code
182868 , CASE r
182869 WHEN 1 THEN '707'
182870 WHEN 2 THEN '707'
182871
182872 ELSE null
182873 END source_application_id
182874 , 'S' source_type_code
182875 , CASE r
182876 WHEN 1 THEN 'DISTRIBUTION_TYPE'
182877 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
182878
182879 ELSE null
182880 END source_code
182881 , CASE r
182882 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
182883 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
182884
182885 ELSE null
182886 END source_value
182887 , CASE r
182888 WHEN 1 THEN fvl12.meaning
182889 WHEN 2 THEN fvl38.meaning
182890
182891 ELSE null
182892 END source_meaning
182893 FROM xla_events_gt xet
182894 , CST_XLA_INV_HEADERS_V h1
182895 , fnd_lookup_values fvl12
182896 , fnd_lookup_values fvl38
182897 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
182898 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
182899 AND xet.event_type_code = C_EVENT_TYPE_CODE
182900 AND h1.event_id = xet.event_id
182901 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
182902 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
182903 AND fvl12.view_application_id(+) = 700
182904 AND fvl12.language(+) = USERENV('LANG')
182905 AND fvl38.lookup_type(+) = 'YES_NO'
182906 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
182907 AND fvl38.view_application_id(+) = 0
182908 AND fvl38.language(+) = USERENV('LANG')
182909
182910 )
182911 ;
182912 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
182913
182914 trace
182915 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
182916 ,p_level => C_LEVEL_STATEMENT
182917 ,p_module => l_log_module);
182918
182919 END IF;
182920 --
182921
182922
182923
182924 --
182925 INSERT INTO xla_diag_sources --line1
182926 (
182927 event_id
182928 , ledger_id
182929 , sla_ledger_id
182930 , description_language
182931 , object_name
182932 , object_type_code
182933 , line_number
182934 , source_application_id
182935 , source_type_code
182936 , source_code
182937 , source_value
182938 , source_meaning
182939 , created_by
182940 , creation_date
182941 , last_update_date
182942 , last_updated_by
182943 , last_update_login
182944 , program_update_date
182945 , program_application_id
182946 , program_id
182947 , request_id
182948 )
182949 SELECT event_id
182950 , p_target_ledger_id
182951 , p_sla_ledger_id
182952 , p_language
182953 , object_name
182954 , object_type_code
182955 , line_number
182956 , source_application_id
182957 , source_type_code
182958 , source_code
182959 , SUBSTR(source_value,1,1996)
182960 , SUBSTR(source_meaning,1,200)
182961 , xla_environment_pkg.g_Usr_Id
182962 , TRUNC(SYSDATE)
182963 , TRUNC(SYSDATE)
182964 , xla_environment_pkg.g_Usr_Id
182965 , xla_environment_pkg.g_Login_Id
182966 , TRUNC(SYSDATE)
182967 , xla_environment_pkg.g_Prog_Appl_Id
182968 , xla_environment_pkg.g_Prog_Id
182969 , xla_environment_pkg.g_Req_Id
182970 FROM (
182971 SELECT xet.event_id event_id
182972 , l2.line_number line_number
182973 , CASE r
182974 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
182975 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
182976 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
182977 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
182978 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
182979 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
182980 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
182981 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
182982 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
182983
182984 ELSE null
182985 END object_name
182986 , CASE r
182987 WHEN 1 THEN 'LINE'
182988 WHEN 2 THEN 'LINE'
182989 WHEN 3 THEN 'LINE'
182990 WHEN 4 THEN 'LINE'
182991 WHEN 5 THEN 'LINE'
182992 WHEN 6 THEN 'LINE'
182993 WHEN 7 THEN 'LINE'
182994 WHEN 8 THEN 'LINE'
182995 WHEN 9 THEN 'LINE'
182996
182997 ELSE null
182998 END object_type_code
182999 , CASE r
183000 WHEN 1 THEN '707'
183001 WHEN 2 THEN '707'
183002 WHEN 3 THEN '707'
183003 WHEN 4 THEN '707'
183004 WHEN 5 THEN '707'
183005 WHEN 6 THEN '707'
183006 WHEN 7 THEN '707'
183007 WHEN 8 THEN '707'
183008 WHEN 9 THEN '707'
183009
183010 ELSE null
183011 END source_application_id
183012 , 'S' source_type_code
183013 , CASE r
183014 WHEN 1 THEN 'CODE_COMBINATION_ID'
183015 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
183016 WHEN 3 THEN 'CURRENCY_CODE'
183017 WHEN 4 THEN 'ENTERED_AMOUNT'
183018 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
183019 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
183020 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
183021 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
183022 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
183023
183024 ELSE null
183025 END source_code
183026 , CASE r
183027 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
183028 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
183029 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
183030 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
183031 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
183032 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
183033 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
183034 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
183035 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
183036
183037 ELSE null
183038 END source_value
183039 , null source_meaning
183040 FROM xla_events_gt xet
183041 , CST_XLA_INV_LINES_V l2
183042 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
183043 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
183044 AND xet.event_type_code = C_EVENT_TYPE_CODE
183045 AND l2.event_id = xet.event_id
183046
183047 )
183048 ;
183049 --
183050 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183051
183052 trace
183053 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
183054 ,p_level => C_LEVEL_STATEMENT
183055 ,p_module => l_log_module);
183056
183057 END IF;
183058
183059
183060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183061 trace
183062 (p_msg => 'END of insert_sources_289'
183063 ,p_level => C_LEVEL_PROCEDURE
183064 ,p_module => l_log_module);
183065 END IF;
183066 EXCEPTION
183067 WHEN xla_exceptions_pkg.application_exception THEN
183068 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
183069 trace
183070 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
183071 ,p_level => C_LEVEL_EXCEPTION
183072 ,p_module => l_log_module);
183073 END IF;
183074 RAISE;
183075 WHEN OTHERS THEN
183076 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
183077 trace
183078 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
183079 ,p_level => C_LEVEL_EXCEPTION
183080 ,p_module => l_log_module);
183081 END IF;
183082 xla_exceptions_pkg.raise_message
183083 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_289');
183084 END insert_sources_289;
183085 --
183086
183087 ---------------------------------------
183088 --
183089 -- PRIVATE FUNCTION
183090 -- EventType_289
183091 --
183092 ----------------------------------------
183093 --
183094 FUNCTION EventType_289
183095 (p_application_id IN NUMBER
183096 ,p_base_ledger_id IN NUMBER
183097 ,p_target_ledger_id IN NUMBER
183098 ,p_language IN VARCHAR2
183099 ,p_currency_code IN VARCHAR2
183100 ,p_sla_ledger_id IN NUMBER
183101 ,p_pad_start_date IN DATE
183102 ,p_pad_end_date IN DATE
183103 ,p_primary_ledger_id IN NUMBER)
183104 RETURN BOOLEAN IS
183105 --
183106 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT';
183107 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
183108
183109 l_calculate_acctd_flag VARCHAR2(1) :='Y';
183110 l_calculate_g_l_flag VARCHAR2(1) :='Y';
183111 --
183112 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183113 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183114 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183115 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183116 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183117 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183118 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183119 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183120 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183121 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183122 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183123 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183124 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183125 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
183126 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183127 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183128 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183129 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
183130 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183131 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183132 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183133 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
183134 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
183135 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
183136 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
183137 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
183138
183139 l_event_id NUMBER;
183140 l_previous_event_id NUMBER;
183141 l_first_event_id NUMBER;
183142 l_last_event_id NUMBER;
183143
183144 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
183145 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
183146 --
183147 --
183148 l_result BOOLEAN := TRUE;
183149 l_rows NUMBER := 1000;
183150 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Receipt';
183151 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
183152 l_description VARCHAR2(4000);
183153 l_transaction_reversal NUMBER;
183154 l_ae_header_id NUMBER;
183155 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
183156 l_log_module VARCHAR2(240);
183157 --
183158 l_acct_reversal_source VARCHAR2(30);
183159 l_trx_reversal_source VARCHAR2(30);
183160
183161 l_continue_with_lines BOOLEAN := TRUE;
183162 --
183163 l_acc_rev_gl_date_source DATE; -- 4262811
183164 --
183165 type t_array_event_id is table of number index by binary_integer;
183166
183167 l_rec_array_event t_rec_array_event;
183168 l_null_rec_array_event t_rec_array_event;
183169 l_array_ae_header_id xla_number_array_type;
183170 l_actual_flag VARCHAR2(1) := NULL;
183171 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
183172 l_balance_type_code VARCHAR2(1) :=NULL;
183173 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
183174
183175 --
183176 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
183177 --
183178
183179 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
183180 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
183181
183182 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
183183 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
183184 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
183185 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
183186 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
183187 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
183188 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
183189 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
183190 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
183191
183192 l_array_source_12 t_array_source_12;
183193 l_array_source_12_meaning t_array_lookup_meaning;
183194 l_array_source_38 t_array_source_38;
183195 l_array_source_38_meaning t_array_lookup_meaning;
183196
183197 l_array_source_4 t_array_source_4;
183198 l_array_source_11 t_array_source_11;
183199 l_array_source_15 t_array_source_15;
183200 l_array_source_18 t_array_source_18;
183201 l_array_source_19 t_array_source_19;
183202 l_array_source_20 t_array_source_20;
183203 l_array_source_21 t_array_source_21;
183204 l_array_source_22 t_array_source_22;
183205 l_array_source_24 t_array_source_24;
183206
183207 --
183208 CURSOR header_cur
183209 IS
183210 SELECT /*+ leading(xet) cardinality(xet,1) */
183211 -- Event Type Code: UDIR_INTERORG_RCPT
183212 -- Event Class Code: USER_DEFINE
183213 xet.entity_id
183214 , xet.legal_entity_id
183215 , xet.entity_code
183216 , xet.transaction_number
183217 , xet.event_id
183218 , xet.event_class_code
183219 , xet.event_type_code
183220 , xet.event_number
183221 , xet.event_date
183222 , xet.transaction_date
183223 , xet.reference_num_1
183224 , xet.reference_num_2
183225 , xet.reference_num_3
183226 , xet.reference_num_4
183227 , xet.reference_char_1
183228 , xet.reference_char_2
183229 , xet.reference_char_3
183230 , xet.reference_char_4
183231 , xet.reference_date_1
183232 , xet.reference_date_2
183233 , xet.reference_date_3
183234 , xet.reference_date_4
183235 , xet.event_created_by
183236 , xet.budgetary_control_flag
183237 , h1.DISTRIBUTION_TYPE source_12
183238 , fvl12.meaning source_12_meaning
183239 , h1.TRANSFER_TO_GL_INDICATOR source_38
183240 , fvl38.meaning source_38_meaning
183241 FROM xla_events_gt xet
183242 , CST_XLA_INV_HEADERS_V h1
183243 , fnd_lookup_values fvl12
183244 , fnd_lookup_values fvl38
183245 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
183246 and xet.event_type_code = C_EVENT_TYPE_CODE
183247 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
183248 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
183249 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
183250 AND fvl12.view_application_id(+) = 700
183251 AND fvl12.language(+) = USERENV('LANG')
183252 AND fvl38.lookup_type(+) = 'YES_NO'
183253 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
183254 AND fvl38.view_application_id(+) = 0
183255 AND fvl38.language(+) = USERENV('LANG')
183256
183257 ORDER BY event_id
183258 ;
183259
183260
183261 --
183262 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
183263 IS
183264 SELECT /*+ leading(xet) cardinality(xet,1) */
183265 -- Event Type Code: UDIR_INTERORG_RCPT
183266 -- Event Class Code: USER_DEFINE
183267 xet.entity_id
183268 ,xet.legal_entity_id
183269 ,xet.entity_code
183270 ,xet.transaction_number
183271 ,xet.event_id
183272 ,xet.event_class_code
183273 ,xet.event_type_code
183274 ,xet.event_number
183275 ,xet.event_date
183276 ,xet.transaction_date
183277 ,xet.reference_num_1
183278 ,xet.reference_num_2
183279 ,xet.reference_num_3
183280 ,xet.reference_num_4
183281 ,xet.reference_char_1
183282 ,xet.reference_char_2
183283 ,xet.reference_char_3
183284 ,xet.reference_char_4
183285 ,xet.reference_date_1
183286 ,xet.reference_date_2
183287 ,xet.reference_date_3
183288 ,xet.reference_date_4
183289 ,xet.event_created_by
183290 ,xet.budgetary_control_flag , l2.LINE_NUMBER
183291 , l2.CODE_COMBINATION_ID source_4
183292 , l2.DISTRIBUTION_IDENTIFIER source_11
183293 , l2.CURRENCY_CODE source_15
183294 , l2.ENTERED_AMOUNT source_18
183295 , l2.CURRENCY_CONVERSION_DATE source_19
183296 , l2.CURRENCY_CONVERSION_RATE source_20
183297 , l2.CURRENCY_CONVERSION_TYPE source_21
183298 , l2.ACCOUNTED_AMOUNT source_22
183299 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
183300 FROM xla_events_gt xet
183301 , CST_XLA_INV_LINES_V l2
183302 WHERE xet.event_id between x_first_event_id and x_last_event_id
183303 and xet.event_date between p_pad_start_date and p_pad_end_date
183304 and xet.event_type_code = C_EVENT_TYPE_CODE
183305 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
183306 ;
183307
183308 --
183309 BEGIN
183310 IF g_log_enabled THEN
183311 l_log_module := C_DEFAULT_MODULE||'.EventType_289';
183312 END IF;
183313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
183314 trace
183315 (p_msg => 'BEGIN of EventType_289'
183316 ,p_level => C_LEVEL_PROCEDURE
183317 ,p_module => l_log_module);
183318 END IF;
183319
183320 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183321 trace
183322 (p_msg => 'p_application_id = '||p_application_id||
183323 ' - p_base_ledger_id = '||p_base_ledger_id||
183324 ' - p_target_ledger_id = '||p_target_ledger_id||
183325 ' - p_language = '||p_language||
183326 ' - p_currency_code = '||p_currency_code||
183327 ' - p_sla_ledger_id = '||p_sla_ledger_id
183328 ,p_level => C_LEVEL_STATEMENT
183329 ,p_module => l_log_module);
183330 END IF;
183331 --
183332 -- initialze arrays
183333 --
183334 g_array_event.DELETE;
183335 l_rec_array_event := l_null_rec_array_event;
183336 --
183337 --------------------------------------
183338 -- 4262811 Initialze MPA Line Number
183339 --------------------------------------
183340 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
183341
183342 --
183343
183344 --
183345 OPEN header_cur;
183346 --
183347 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183348 trace
183349 (p_msg => 'SQL - FETCH header_cur'
183350 ,p_level => C_LEVEL_STATEMENT
183351 ,p_module => l_log_module);
183352 END IF;
183353 --
183354 LOOP
183355 FETCH header_cur BULK COLLECT INTO
183356 l_array_entity_id
183357 , l_array_legal_entity_id
183358 , l_array_entity_code
183359 , l_array_transaction_num
183360 , l_array_event_id
183361 , l_array_class_code
183362 , l_array_event_type
183363 , l_array_event_number
183364 , l_array_event_date
183365 , l_array_transaction_date
183366 , l_array_reference_num_1
183367 , l_array_reference_num_2
183368 , l_array_reference_num_3
183369 , l_array_reference_num_4
183370 , l_array_reference_char_1
183371 , l_array_reference_char_2
183372 , l_array_reference_char_3
183373 , l_array_reference_char_4
183374 , l_array_reference_date_1
183375 , l_array_reference_date_2
183376 , l_array_reference_date_3
183377 , l_array_reference_date_4
183378 , l_array_event_created_by
183379 , l_array_budgetary_control_flag
183380 , l_array_source_12
183381 , l_array_source_12_meaning
183382 , l_array_source_38
183383 , l_array_source_38_meaning
183384 LIMIT l_rows;
183385 --
183386 IF (C_LEVEL_EVENT >= g_log_level) THEN
183387 trace
183388 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
183389 ,p_level => C_LEVEL_EVENT
183390 ,p_module => l_log_module);
183391 END IF;
183392 --
183393 EXIT WHEN l_array_entity_id.COUNT = 0;
183394
183395 -- initialize arrays
183396 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
183397 XLA_AE_LINES_PKG.g_rec_lines := NULL;
183398
183399 --
183400 -- Bug 4458708
183401 --
183402 XLA_AE_LINES_PKG.g_LineNumber := 0;
183403
183404
183405 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
183406 g_last_hdr_idx := l_array_event_id.LAST;
183407 --
183408 -- loop for the headers. Each iteration is for each header extract row
183409 -- fetched in header cursor
183410 --
183411 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
183412
183413 --
183414 -- set event info as cache for other routines to refer event attributes
183415 --
183416 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183417 (p_application_id => p_application_id
183418 ,p_primary_ledger_id => p_primary_ledger_id
183419 ,p_base_ledger_id => p_base_ledger_id
183420 ,p_target_ledger_id => p_target_ledger_id
183421 ,p_entity_id => l_array_entity_id(hdr_idx)
183422 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
183423 ,p_entity_code => l_array_entity_code(hdr_idx)
183424 ,p_transaction_num => l_array_transaction_num(hdr_idx)
183425 ,p_event_id => l_array_event_id(hdr_idx)
183426 ,p_event_class_code => l_array_class_code(hdr_idx)
183427 ,p_event_type_code => l_array_event_type(hdr_idx)
183428 ,p_event_number => l_array_event_number(hdr_idx)
183429 ,p_event_date => l_array_event_date(hdr_idx)
183430 ,p_transaction_date => l_array_transaction_date(hdr_idx)
183431 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
183432 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
183433 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
183434 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
183435 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
183436 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
183437 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
183438 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
183439 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
183440 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
183441 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
183442 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
183443 ,p_event_created_by => l_array_event_created_by(hdr_idx)
183444 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
183445
183446 --
183447 -- set the status of entry to C_VALID (0)
183448 --
183449 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183450
183451 --
183452 -- initialize a row for ae header
183453 --
183454 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
183455
183456 l_event_id := l_array_event_id(hdr_idx);
183457
183458 --
183459 -- storing the hdr_idx for event. May be used by line cursor.
183460 --
183461 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
183462
183463 --
183464 -- store sources from header extract. This can be improved to
183465 -- store only those sources from header extract that may be used in lines
183466 --
183467
183468 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
183469 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
183470 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
183471 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
183472
183473 --
183474 -- initilaize the status of ae headers for diffrent balance types
183475 -- the status is initialised to C_NOT_CREATED (2)
183476 --
183477 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183478 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183479 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
183480
183481 --
183482 -- call api to validate and store accounting attributes for header
183483 --
183484
183485 ------------------------------------------------------------
183486 -- Accrual Reversal : to get date for Standard Source (NONE)
183487 ------------------------------------------------------------
183488 l_acc_rev_gl_date_source := NULL;
183489
183490 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
183491 l_rec_acct_attrs.array_date_value(1) :=
183492 xla_ae_sources_pkg.GetSystemSourceDate(
183493 p_source_code => 'XLA_REFERENCE_DATE_1'
183494 , p_source_type_code => 'Y'
183495 , p_source_application_id => 602
183496 );
183497 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
183498 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
183499
183500
183501 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
183502
183503 XLA_AE_HEADER_PKG.SetJeCategoryName;
183504
183505 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
183506 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
183507 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
183508 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
183509 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
183510
183511
183512 -- No header level analytical criteria
183513
183514 --
183515 --accounting attribute enhancement, bug 3612931
183516 --
183517 l_trx_reversal_source := SUBSTR(NULL, 1,30);
183518
183519 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
183520 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
183521
183522 xla_accounting_err_pkg.build_message
183523 (p_appli_s_name => 'XLA'
183524 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
183525 ,p_token_1 => 'ACCT_ATTR_NAME'
183526 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
183527 ,p_token_2 => 'PRODUCT_NAME'
183528 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183529 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183530 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
183531 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183532
183533 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
183534 --
183535 -- following sets the accounting attributes needed to reverse
183536 -- accounting for a distributeion
183537 --
183538 xla_ae_lines_pkg.SetTrxReversalAttrs
183539 (p_event_id => l_event_id
183540 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
183541 ,p_trx_reversal_source => l_trx_reversal_source);
183542
183543 END IF;
183544
183545
183546 ----------------------------------------------------------------
183547 -- 4262811 - update the header statuses to invalid in need be
183548 ----------------------------------------------------------------
183549 --
183550 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
183551
183552
183553 -----------------------------------------------
183554 -- No accrual reversal for the event class/type
183555 -----------------------------------------------
183556 ----------------------------------------------------------------
183557
183558 --
183559 -- this ends the header loop iteration for one bulk fetch
183560 --
183561 END LOOP;
183562
183563 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
183564 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
183565
183566 --
183567 -- insert dummy rows into lines gt table that were created due to
183568 -- transaction reversals
183569 --
183570 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
183571 l_result := XLA_AE_LINES_PKG.InsertLines;
183572 END IF;
183573
183574 --
183575 -- reset the temp_line_num for each set of events fetched from header
183576 -- cursor rather than doing it for each new event in line cursor
183577 -- Bug 3939231
183578 --
183579 xla_ae_lines_pkg.g_temp_line_num := 0;
183580
183581
183582
183583 --
183584 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
183585 --
183586 --
183587 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183588
183589 trace
183590 (p_msg => 'SQL - FETCH line_cur'
183591 ,p_level => C_LEVEL_STATEMENT
183592 ,p_module => l_log_module);
183593
183594 END IF;
183595 --
183596 --
183597 LOOP
183598 --
183599 FETCH line_cur BULK COLLECT INTO
183600 l_array_entity_id
183601 , l_array_legal_entity_id
183602 , l_array_entity_code
183603 , l_array_transaction_num
183604 , l_array_event_id
183605 , l_array_class_code
183606 , l_array_event_type
183607 , l_array_event_number
183608 , l_array_event_date
183609 , l_array_transaction_date
183610 , l_array_reference_num_1
183611 , l_array_reference_num_2
183612 , l_array_reference_num_3
183613 , l_array_reference_num_4
183614 , l_array_reference_char_1
183615 , l_array_reference_char_2
183616 , l_array_reference_char_3
183617 , l_array_reference_char_4
183618 , l_array_reference_date_1
183619 , l_array_reference_date_2
183620 , l_array_reference_date_3
183621 , l_array_reference_date_4
183622 , l_array_event_created_by
183623 , l_array_budgetary_control_flag
183624 , l_array_extract_line_num
183625 , l_array_source_4
183626 , l_array_source_11
183627 , l_array_source_15
183628 , l_array_source_18
183629 , l_array_source_19
183630 , l_array_source_20
183631 , l_array_source_21
183632 , l_array_source_22
183633 , l_array_source_24
183634 LIMIT l_rows;
183635
183636 --
183637 IF (C_LEVEL_EVENT >= g_log_level) THEN
183638 trace
183639 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
183640 ,p_level => C_LEVEL_EVENT
183641 ,p_module => l_log_module);
183642 END IF;
183643 --
183644 EXIT WHEN l_array_entity_id.count = 0;
183645
183646 XLA_AE_LINES_PKG.g_rec_lines := null;
183647
183648 --
183649 -- Bug 4458708
183650 --
183651 XLA_AE_LINES_PKG.g_LineNumber := 0;
183652 --
183653 --
183654
183655 FOR Idx IN 1..l_array_event_id.count LOOP
183656 --
183657 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
183658 --
183659 l_event_id := l_array_event_id(idx); -- 5648433
183660
183661 --
183662 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
183663 --
183664
183665 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
183666 (g_array_event(l_event_id).array_value_num('header_index'))
183667 ,'N'
183668 ) <> 'Y'
183669 THEN
183670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
183671 trace
183672 (p_msg => 'Trancaction revesal option is not Y '
183673 ,p_level => C_LEVEL_STATEMENT
183674 ,p_module => l_log_module);
183675 END IF;
183676
183677 --
183678 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
183679 --
183680 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
183681 --
183682 -- set event info as cache for other routines to refer event attributes
183683 --
183684
183685 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
183686 l_previous_event_id := l_event_id;
183687
183688 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
183689 (p_application_id => p_application_id
183690 ,p_primary_ledger_id => p_primary_ledger_id
183691 ,p_base_ledger_id => p_base_ledger_id
183692 ,p_target_ledger_id => p_target_ledger_id
183693 ,p_entity_id => l_array_entity_id(Idx)
183694 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
183695 ,p_entity_code => l_array_entity_code(Idx)
183696 ,p_transaction_num => l_array_transaction_num(Idx)
183697 ,p_event_id => l_array_event_id(Idx)
183698 ,p_event_class_code => l_array_class_code(Idx)
183699 ,p_event_type_code => l_array_event_type(Idx)
183700 ,p_event_number => l_array_event_number(Idx)
183701 ,p_event_date => l_array_event_date(Idx)
183702 ,p_transaction_date => l_array_transaction_date(Idx)
183703 ,p_reference_num_1 => l_array_reference_num_1(Idx)
183704 ,p_reference_num_2 => l_array_reference_num_2(Idx)
183705 ,p_reference_num_3 => l_array_reference_num_3(Idx)
183706 ,p_reference_num_4 => l_array_reference_num_4(Idx)
183707 ,p_reference_char_1 => l_array_reference_char_1(Idx)
183708 ,p_reference_char_2 => l_array_reference_char_2(Idx)
183709 ,p_reference_char_3 => l_array_reference_char_3(Idx)
183710 ,p_reference_char_4 => l_array_reference_char_4(Idx)
183711 ,p_reference_date_1 => l_array_reference_date_1(Idx)
183712 ,p_reference_date_2 => l_array_reference_date_2(Idx)
183713 ,p_reference_date_3 => l_array_reference_date_3(Idx)
183714 ,p_reference_date_4 => l_array_reference_date_4(Idx)
183715 ,p_event_created_by => l_array_event_created_by(Idx)
183716 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
183717 --
183718 END IF;
183719
183720
183721
183722 --
183723 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
183724
183725 l_acct_reversal_source := SUBSTR(NULL, 1,30);
183726
183727 IF l_continue_with_lines THEN
183728 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
183729 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
183730
183731 xla_accounting_err_pkg.build_message
183732 (p_appli_s_name => 'XLA'
183733 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
183734 ,p_token_1 => 'LINE_NUMBER'
183735 ,p_value_1 => l_array_extract_line_num(Idx)
183736 ,p_token_2 => 'PRODUCT_NAME'
183737 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
183738 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
183739 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
183740 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
183741
183742 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
183743 --
183744 -- following sets the accounting attributes needed to reverse
183745 -- accounting for a distributeion
183746 --
183747
183748 --
183749 -- 5217187
183750 --
183751 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
183752 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
183753 g_array_event(l_event_id).array_value_num('header_index'));
183754 --
183755 --
183756
183757 -- No reversal code generated
183758
183759 xla_ae_lines_pkg.SetAcctReversalAttrs
183760 (p_event_id => l_event_id
183761 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
183762 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183763 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
183764 END IF;
183765
183766 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
183767 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
183768
183769 --
183770 AcctLineType_39 (
183771 p_application_id => p_application_id
183772 ,p_event_id => l_event_id
183773 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183774 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183775 ,p_actual_flag => l_actual_flag
183776 ,p_balance_type_code => l_balance_type_code
183777 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183778
183779 , p_source_4 => l_array_source_4(Idx)
183780 , p_source_11 => l_array_source_11(Idx)
183781 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183782 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183783 , p_source_15 => l_array_source_15(Idx)
183784 , p_source_18 => l_array_source_18(Idx)
183785 , p_source_19 => l_array_source_19(Idx)
183786 , p_source_20 => l_array_source_20(Idx)
183787 , p_source_21 => l_array_source_21(Idx)
183788 , p_source_22 => l_array_source_22(Idx)
183789 , p_source_24 => l_array_source_24(Idx)
183790 );
183791 If(l_balance_type_code = 'A') THEN
183792 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183793 END IF;
183794
183795 --
183796
183797
183798 --
183799 AcctLineType_72 (
183800 p_application_id => p_application_id
183801 ,p_event_id => l_event_id
183802 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183803 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183804 ,p_actual_flag => l_actual_flag
183805 ,p_balance_type_code => l_balance_type_code
183806 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183807
183808 , p_source_4 => l_array_source_4(Idx)
183809 , p_source_11 => l_array_source_11(Idx)
183810 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183811 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183812 , p_source_15 => l_array_source_15(Idx)
183813 , p_source_18 => l_array_source_18(Idx)
183814 , p_source_19 => l_array_source_19(Idx)
183815 , p_source_20 => l_array_source_20(Idx)
183816 , p_source_21 => l_array_source_21(Idx)
183817 , p_source_22 => l_array_source_22(Idx)
183818 , p_source_24 => l_array_source_24(Idx)
183819 );
183820 If(l_balance_type_code = 'A') THEN
183821 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183822 END IF;
183823
183824 --
183825
183826
183827 --
183828 AcctLineType_83 (
183829 p_application_id => p_application_id
183830 ,p_event_id => l_event_id
183831 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183832 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183833 ,p_actual_flag => l_actual_flag
183834 ,p_balance_type_code => l_balance_type_code
183835 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183836
183837 , p_source_4 => l_array_source_4(Idx)
183838 , p_source_11 => l_array_source_11(Idx)
183839 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183840 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183841 , p_source_15 => l_array_source_15(Idx)
183842 , p_source_18 => l_array_source_18(Idx)
183843 , p_source_19 => l_array_source_19(Idx)
183844 , p_source_20 => l_array_source_20(Idx)
183845 , p_source_21 => l_array_source_21(Idx)
183846 , p_source_22 => l_array_source_22(Idx)
183847 , p_source_24 => l_array_source_24(Idx)
183848 );
183849 If(l_balance_type_code = 'A') THEN
183850 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183851 END IF;
183852
183853 --
183854
183855
183856 --
183857 AcctLineType_98 (
183858 p_application_id => p_application_id
183859 ,p_event_id => l_event_id
183860 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183861 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183862 ,p_actual_flag => l_actual_flag
183863 ,p_balance_type_code => l_balance_type_code
183864 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183865
183866 , p_source_4 => l_array_source_4(Idx)
183867 , p_source_11 => l_array_source_11(Idx)
183868 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183869 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183870 , p_source_15 => l_array_source_15(Idx)
183871 , p_source_18 => l_array_source_18(Idx)
183872 , p_source_19 => l_array_source_19(Idx)
183873 , p_source_20 => l_array_source_20(Idx)
183874 , p_source_21 => l_array_source_21(Idx)
183875 , p_source_22 => l_array_source_22(Idx)
183876 , p_source_24 => l_array_source_24(Idx)
183877 );
183878 If(l_balance_type_code = 'A') THEN
183879 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183880 END IF;
183881
183882 --
183883
183884
183885 --
183886 AcctLineType_109 (
183887 p_application_id => p_application_id
183888 ,p_event_id => l_event_id
183889 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183890 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183891 ,p_actual_flag => l_actual_flag
183892 ,p_balance_type_code => l_balance_type_code
183893 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183894
183895 , p_source_4 => l_array_source_4(Idx)
183896 , p_source_11 => l_array_source_11(Idx)
183897 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183898 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183899 , p_source_15 => l_array_source_15(Idx)
183900 , p_source_18 => l_array_source_18(Idx)
183901 , p_source_19 => l_array_source_19(Idx)
183902 , p_source_20 => l_array_source_20(Idx)
183903 , p_source_21 => l_array_source_21(Idx)
183904 , p_source_22 => l_array_source_22(Idx)
183905 , p_source_24 => l_array_source_24(Idx)
183906 );
183907 If(l_balance_type_code = 'A') THEN
183908 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183909 END IF;
183910
183911 --
183912
183913
183914 --
183915 AcctLineType_160 (
183916 p_application_id => p_application_id
183917 ,p_event_id => l_event_id
183918 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183919 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183920 ,p_actual_flag => l_actual_flag
183921 ,p_balance_type_code => l_balance_type_code
183922 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183923
183924 , p_source_4 => l_array_source_4(Idx)
183925 , p_source_11 => l_array_source_11(Idx)
183926 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183927 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183928 , p_source_15 => l_array_source_15(Idx)
183929 , p_source_18 => l_array_source_18(Idx)
183930 , p_source_19 => l_array_source_19(Idx)
183931 , p_source_20 => l_array_source_20(Idx)
183932 , p_source_21 => l_array_source_21(Idx)
183933 , p_source_22 => l_array_source_22(Idx)
183934 , p_source_24 => l_array_source_24(Idx)
183935 );
183936 If(l_balance_type_code = 'A') THEN
183937 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183938 END IF;
183939
183940 --
183941
183942
183943 --
183944 AcctLineType_168 (
183945 p_application_id => p_application_id
183946 ,p_event_id => l_event_id
183947 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183948 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183949 ,p_actual_flag => l_actual_flag
183950 ,p_balance_type_code => l_balance_type_code
183951 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183952
183953 , p_source_4 => l_array_source_4(Idx)
183954 , p_source_11 => l_array_source_11(Idx)
183955 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183956 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183957 , p_source_15 => l_array_source_15(Idx)
183958 , p_source_18 => l_array_source_18(Idx)
183959 , p_source_19 => l_array_source_19(Idx)
183960 , p_source_20 => l_array_source_20(Idx)
183961 , p_source_21 => l_array_source_21(Idx)
183962 , p_source_22 => l_array_source_22(Idx)
183963 , p_source_24 => l_array_source_24(Idx)
183964 );
183965 If(l_balance_type_code = 'A') THEN
183966 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183967 END IF;
183968
183969 --
183970
183971
183972 --
183973 AcctLineType_193 (
183974 p_application_id => p_application_id
183975 ,p_event_id => l_event_id
183976 ,p_calculate_acctd_flag => l_calculate_acctd_flag
183977 ,p_calculate_g_l_flag => l_calculate_g_l_flag
183978 ,p_actual_flag => l_actual_flag
183979 ,p_balance_type_code => l_balance_type_code
183980 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
183981
183982 , p_source_4 => l_array_source_4(Idx)
183983 , p_source_11 => l_array_source_11(Idx)
183984 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
183985 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
183986 , p_source_15 => l_array_source_15(Idx)
183987 , p_source_18 => l_array_source_18(Idx)
183988 , p_source_19 => l_array_source_19(Idx)
183989 , p_source_20 => l_array_source_20(Idx)
183990 , p_source_21 => l_array_source_21(Idx)
183991 , p_source_22 => l_array_source_22(Idx)
183992 , p_source_24 => l_array_source_24(Idx)
183993 );
183994 If(l_balance_type_code = 'A') THEN
183995 l_actual_gain_loss_ref := l_gain_or_loss_ref;
183996 END IF;
183997
183998 --
183999
184000
184001 --
184002 AcctLineType_222 (
184003 p_application_id => p_application_id
184004 ,p_event_id => l_event_id
184005 ,p_calculate_acctd_flag => l_calculate_acctd_flag
184006 ,p_calculate_g_l_flag => l_calculate_g_l_flag
184007 ,p_actual_flag => l_actual_flag
184008 ,p_balance_type_code => l_balance_type_code
184009 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
184010
184011 , p_source_4 => l_array_source_4(Idx)
184012 , p_source_11 => l_array_source_11(Idx)
184013 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
184014 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
184015 , p_source_15 => l_array_source_15(Idx)
184016 , p_source_18 => l_array_source_18(Idx)
184017 , p_source_19 => l_array_source_19(Idx)
184018 , p_source_20 => l_array_source_20(Idx)
184019 , p_source_21 => l_array_source_21(Idx)
184020 , p_source_22 => l_array_source_22(Idx)
184021 , p_source_24 => l_array_source_24(Idx)
184022 );
184023 If(l_balance_type_code = 'A') THEN
184024 l_actual_gain_loss_ref := l_gain_or_loss_ref;
184025 END IF;
184026
184027 --
184028
184029 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
184030 -- or secondary ledger that has different currency with primary
184031 -- or alc that is calculated by sla
184032 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
184033 (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'))
184034
184035 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
184036 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
184037 AND (l_actual_flag = 'A')) THEN
184038 XLA_AE_LINES_PKG.CreateGainOrLossLines(
184039 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
184040 ,p_application_id => p_application_id
184041 ,p_amb_context_code => 'DEFAULT'
184042 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
184043 ,p_event_class_code => C_EVENT_CLASS_CODE
184044 ,p_event_type_code => C_EVENT_TYPE_CODE
184045
184046 ,p_gain_ccid => -1
184047 ,p_loss_ccid => -1
184048
184049 ,p_actual_flag => l_actual_flag
184050 ,p_enc_flag => null
184051 ,p_actual_g_l_ref => l_actual_gain_loss_ref
184052 ,p_enc_g_l_ref => null
184053 );
184054 END IF;
184055 END IF;
184056 END IF;
184057
184058 ELSE
184059 --
184060 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
184061 --
184062 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184063 trace
184064 (p_msg => 'Trancaction revesal option is Y'
184065 ,p_level => C_LEVEL_STATEMENT
184066 ,p_module => l_log_module);
184067 END IF;
184068 END IF;
184069
184070 END LOOP;
184071 l_result := XLA_AE_LINES_PKG.InsertLines ;
184072 end loop;
184073 close line_cur;
184074
184075
184076 --
184077 -- insert headers into xla_ae_headers_gt table
184078 --
184079 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
184080
184081 -- insert into errors table here.
184082
184083 END LOOP;
184084
184085 --
184086 -- 4865292
184087 --
184088 -- Compare g_hdr_extract_count with event count in
184089 -- CreateHeadersAndLines.
184090 --
184091 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
184092
184093 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184094 trace (p_msg => '# rows extracted from header extract objects '
184095 || ' (running total): '
184096 || g_hdr_extract_count
184097 ,p_level => C_LEVEL_STATEMENT
184098 ,p_module => l_log_module);
184099 END IF;
184100
184101 CLOSE header_cur;
184102 --
184103
184104 --
184105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184106 trace
184107 (p_msg => 'END of EventType_289'
184108 ,p_level => C_LEVEL_PROCEDURE
184109 ,p_module => l_log_module);
184110 END IF;
184111 --
184112 RETURN l_result;
184113 EXCEPTION
184114 WHEN xla_exceptions_pkg.application_exception THEN
184115
184116 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
184117
184118
184119 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
184120
184121 RAISE;
184122
184123 WHEN NO_DATA_FOUND THEN
184124
184125 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
184126 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
184127
184128 FOR header_record IN header_cur
184129 LOOP
184130 l_array_header_events(header_record.event_id) := header_record.event_id;
184131 END LOOP;
184132
184133 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
184134 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
184135
184136 fnd_file.put_line(fnd_file.LOG, ' ');
184137 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
184138 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
184139 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
184140
184141 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
184142 LOOP
184143 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
184144 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
184145 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
184146 END IF;
184147 END LOOP;
184148
184149 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
184150 fnd_file.put_line(fnd_file.LOG, ' ');
184151
184152
184153 xla_exceptions_pkg.raise_message
184154 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_289');
184155
184156
184157 WHEN OTHERS THEN
184158 xla_exceptions_pkg.raise_message
184159 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_289');
184160 END EventType_289;
184161 --
184162
184163 ---------------------------------------
184164 --
184165 -- PRIVATE PROCEDURE
184166 -- insert_sources_290
184167 --
184168 ----------------------------------------
184169 --
184170 PROCEDURE insert_sources_290(
184171 p_target_ledger_id IN NUMBER
184172 , p_language IN VARCHAR2
184173 , p_sla_ledger_id IN NUMBER
184174 , p_pad_start_date IN DATE
184175 , p_pad_end_date IN DATE
184176 )
184177 IS
184178
184179 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT_NO_TP';
184180 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
184181 p_apps_owner VARCHAR2(30);
184182 l_log_module VARCHAR2(240);
184183 BEGIN
184184 IF g_log_enabled THEN
184185 l_log_module := C_DEFAULT_MODULE||'.insert_sources_290';
184186 END IF;
184187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184188
184189 trace
184190 (p_msg => 'BEGIN of insert_sources_290'
184191 ,p_level => C_LEVEL_PROCEDURE
184192 ,p_module => l_log_module);
184193
184194 END IF;
184195
184196 -- select APPS owner
184197 SELECT oracle_username
184198 INTO p_apps_owner
184199 FROM fnd_oracle_userid
184200 WHERE read_only_flag = 'U'
184201 ;
184202
184203 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184204 trace
184205 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
184206 ' - p_language = '||p_language||
184207 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
184208 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
184209 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
184210 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
184211 ,p_level => C_LEVEL_STATEMENT
184212 ,p_module => l_log_module);
184213 END IF;
184214
184215
184216 --
184217 INSERT INTO xla_diag_sources --hdr1
184218 (
184219 event_id
184220 , ledger_id
184221 , sla_ledger_id
184222 , description_language
184223 , object_name
184224 , object_type_code
184225 , line_number
184226 , source_application_id
184227 , source_type_code
184228 , source_code
184229 , source_value
184230 , source_meaning
184231 , created_by
184232 , creation_date
184233 , last_update_date
184234 , last_updated_by
184235 , last_update_login
184236 , program_update_date
184237 , program_application_id
184238 , program_id
184239 , request_id
184240 )
184241 SELECT
184242 event_id
184243 , p_target_ledger_id
184244 , p_sla_ledger_id
184245 , p_language
184246 , object_name
184247 , object_type_code
184248 , line_number
184249 , source_application_id
184250 , source_type_code
184251 , source_code
184252 , SUBSTR(source_value ,1,1996)
184253 , SUBSTR(source_meaning,1,200)
184254 , xla_environment_pkg.g_Usr_Id
184255 , TRUNC(SYSDATE)
184256 , TRUNC(SYSDATE)
184257 , xla_environment_pkg.g_Usr_Id
184258 , xla_environment_pkg.g_Login_Id
184259 , TRUNC(SYSDATE)
184260 , xla_environment_pkg.g_Prog_Appl_Id
184261 , xla_environment_pkg.g_Prog_Id
184262 , xla_environment_pkg.g_Req_Id
184263 FROM (
184264 SELECT xet.event_id event_id
184265 , 0 line_number
184266 , CASE r
184267 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
184268 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
184269
184270 ELSE null
184271 END object_name
184272 , CASE r
184273 WHEN 1 THEN 'HEADER'
184274 WHEN 2 THEN 'HEADER'
184275
184276 ELSE null
184277 END object_type_code
184278 , CASE r
184279 WHEN 1 THEN '707'
184280 WHEN 2 THEN '707'
184281
184282 ELSE null
184283 END source_application_id
184284 , 'S' source_type_code
184285 , CASE r
184286 WHEN 1 THEN 'DISTRIBUTION_TYPE'
184287 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
184288
184289 ELSE null
184290 END source_code
184291 , CASE r
184292 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
184293 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
184294
184295 ELSE null
184296 END source_value
184297 , CASE r
184298 WHEN 1 THEN fvl12.meaning
184299 WHEN 2 THEN fvl38.meaning
184300
184301 ELSE null
184302 END source_meaning
184303 FROM xla_events_gt xet
184304 , CST_XLA_INV_HEADERS_V h1
184305 , fnd_lookup_values fvl12
184306 , fnd_lookup_values fvl38
184307 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
184308 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
184309 AND xet.event_type_code = C_EVENT_TYPE_CODE
184310 AND h1.event_id = xet.event_id
184311 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
184312 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
184313 AND fvl12.view_application_id(+) = 700
184314 AND fvl12.language(+) = USERENV('LANG')
184315 AND fvl38.lookup_type(+) = 'YES_NO'
184316 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
184317 AND fvl38.view_application_id(+) = 0
184318 AND fvl38.language(+) = USERENV('LANG')
184319
184320 )
184321 ;
184322 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184323
184324 trace
184325 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
184326 ,p_level => C_LEVEL_STATEMENT
184327 ,p_module => l_log_module);
184328
184329 END IF;
184330 --
184331
184332
184333
184334 --
184335 INSERT INTO xla_diag_sources --line1
184336 (
184337 event_id
184338 , ledger_id
184339 , sla_ledger_id
184340 , description_language
184341 , object_name
184342 , object_type_code
184343 , line_number
184344 , source_application_id
184345 , source_type_code
184346 , source_code
184347 , source_value
184348 , source_meaning
184349 , created_by
184350 , creation_date
184351 , last_update_date
184352 , last_updated_by
184353 , last_update_login
184354 , program_update_date
184355 , program_application_id
184356 , program_id
184357 , request_id
184358 )
184359 SELECT event_id
184360 , p_target_ledger_id
184361 , p_sla_ledger_id
184362 , p_language
184363 , object_name
184364 , object_type_code
184365 , line_number
184366 , source_application_id
184367 , source_type_code
184368 , source_code
184369 , SUBSTR(source_value,1,1996)
184370 , SUBSTR(source_meaning,1,200)
184371 , xla_environment_pkg.g_Usr_Id
184372 , TRUNC(SYSDATE)
184373 , TRUNC(SYSDATE)
184374 , xla_environment_pkg.g_Usr_Id
184375 , xla_environment_pkg.g_Login_Id
184376 , TRUNC(SYSDATE)
184377 , xla_environment_pkg.g_Prog_Appl_Id
184378 , xla_environment_pkg.g_Prog_Id
184379 , xla_environment_pkg.g_Req_Id
184380 FROM (
184381 SELECT xet.event_id event_id
184382 , l2.line_number line_number
184383 , CASE r
184384 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
184385 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
184386 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
184387 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
184388 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
184389 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
184390 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
184391 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
184392 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
184393
184394 ELSE null
184395 END object_name
184396 , CASE r
184397 WHEN 1 THEN 'LINE'
184398 WHEN 2 THEN 'LINE'
184399 WHEN 3 THEN 'LINE'
184400 WHEN 4 THEN 'LINE'
184401 WHEN 5 THEN 'LINE'
184402 WHEN 6 THEN 'LINE'
184403 WHEN 7 THEN 'LINE'
184404 WHEN 8 THEN 'LINE'
184405 WHEN 9 THEN 'LINE'
184406
184407 ELSE null
184408 END object_type_code
184409 , CASE r
184410 WHEN 1 THEN '707'
184411 WHEN 2 THEN '707'
184412 WHEN 3 THEN '707'
184413 WHEN 4 THEN '707'
184414 WHEN 5 THEN '707'
184415 WHEN 6 THEN '707'
184416 WHEN 7 THEN '707'
184417 WHEN 8 THEN '707'
184418 WHEN 9 THEN '707'
184419
184420 ELSE null
184421 END source_application_id
184422 , 'S' source_type_code
184423 , CASE r
184424 WHEN 1 THEN 'CODE_COMBINATION_ID'
184425 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
184426 WHEN 3 THEN 'CURRENCY_CODE'
184427 WHEN 4 THEN 'ENTERED_AMOUNT'
184428 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
184429 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
184430 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
184431 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
184432 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
184433
184434 ELSE null
184435 END source_code
184436 , CASE r
184437 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
184438 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
184439 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
184440 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
184441 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
184442 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
184443 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
184444 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
184445 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
184446
184447 ELSE null
184448 END source_value
184449 , null source_meaning
184450 FROM xla_events_gt xet
184451 , CST_XLA_INV_LINES_V l2
184452 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
184453 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
184454 AND xet.event_type_code = C_EVENT_TYPE_CODE
184455 AND l2.event_id = xet.event_id
184456
184457 )
184458 ;
184459 --
184460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184461
184462 trace
184463 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
184464 ,p_level => C_LEVEL_STATEMENT
184465 ,p_module => l_log_module);
184466
184467 END IF;
184468
184469
184470 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184471 trace
184472 (p_msg => 'END of insert_sources_290'
184473 ,p_level => C_LEVEL_PROCEDURE
184474 ,p_module => l_log_module);
184475 END IF;
184476 EXCEPTION
184477 WHEN xla_exceptions_pkg.application_exception THEN
184478 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184479 trace
184480 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184481 ,p_level => C_LEVEL_EXCEPTION
184482 ,p_module => l_log_module);
184483 END IF;
184484 RAISE;
184485 WHEN OTHERS THEN
184486 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
184487 trace
184488 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
184489 ,p_level => C_LEVEL_EXCEPTION
184490 ,p_module => l_log_module);
184491 END IF;
184492 xla_exceptions_pkg.raise_message
184493 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_290');
184494 END insert_sources_290;
184495 --
184496
184497 ---------------------------------------
184498 --
184499 -- PRIVATE FUNCTION
184500 -- EventType_290
184501 --
184502 ----------------------------------------
184503 --
184504 FUNCTION EventType_290
184505 (p_application_id IN NUMBER
184506 ,p_base_ledger_id IN NUMBER
184507 ,p_target_ledger_id IN NUMBER
184508 ,p_language IN VARCHAR2
184509 ,p_currency_code IN VARCHAR2
184510 ,p_sla_ledger_id IN NUMBER
184511 ,p_pad_start_date IN DATE
184512 ,p_pad_end_date IN DATE
184513 ,p_primary_ledger_id IN NUMBER)
184514 RETURN BOOLEAN IS
184515 --
184516 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT_NO_TP';
184517 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
184518
184519 l_calculate_acctd_flag VARCHAR2(1) :='Y';
184520 l_calculate_g_l_flag VARCHAR2(1) :='Y';
184521 --
184522 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184523 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184524 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184525 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184526 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184527 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184528 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184529 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184530 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184531 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184532 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184533 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184534 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184535 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
184536 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184537 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184538 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184539 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
184540 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184541 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184542 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184543 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
184544 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
184545 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
184546 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
184547 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
184548
184549 l_event_id NUMBER;
184550 l_previous_event_id NUMBER;
184551 l_first_event_id NUMBER;
184552 l_last_event_id NUMBER;
184553
184554 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
184555 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
184556 --
184557 --
184558 l_result BOOLEAN := TRUE;
184559 l_rows NUMBER := 1000;
184560 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Receipt, No Transfer Price';
184561 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
184562 l_description VARCHAR2(4000);
184563 l_transaction_reversal NUMBER;
184564 l_ae_header_id NUMBER;
184565 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
184566 l_log_module VARCHAR2(240);
184567 --
184568 l_acct_reversal_source VARCHAR2(30);
184569 l_trx_reversal_source VARCHAR2(30);
184570
184571 l_continue_with_lines BOOLEAN := TRUE;
184572 --
184573 l_acc_rev_gl_date_source DATE; -- 4262811
184574 --
184575 type t_array_event_id is table of number index by binary_integer;
184576
184577 l_rec_array_event t_rec_array_event;
184578 l_null_rec_array_event t_rec_array_event;
184579 l_array_ae_header_id xla_number_array_type;
184580 l_actual_flag VARCHAR2(1) := NULL;
184581 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
184582 l_balance_type_code VARCHAR2(1) :=NULL;
184583 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
184584
184585 --
184586 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
184587 --
184588
184589 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
184590 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
184591
184592 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
184593 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
184594 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
184595 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184596 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
184597 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
184598 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
184599 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
184600 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
184601
184602 l_array_source_12 t_array_source_12;
184603 l_array_source_12_meaning t_array_lookup_meaning;
184604 l_array_source_38 t_array_source_38;
184605 l_array_source_38_meaning t_array_lookup_meaning;
184606
184607 l_array_source_4 t_array_source_4;
184608 l_array_source_11 t_array_source_11;
184609 l_array_source_15 t_array_source_15;
184610 l_array_source_18 t_array_source_18;
184611 l_array_source_19 t_array_source_19;
184612 l_array_source_20 t_array_source_20;
184613 l_array_source_21 t_array_source_21;
184614 l_array_source_22 t_array_source_22;
184615 l_array_source_24 t_array_source_24;
184616
184617 --
184618 CURSOR header_cur
184619 IS
184620 SELECT /*+ leading(xet) cardinality(xet,1) */
184621 -- Event Type Code: UDIR_INTERORG_RCPT_NO_TP
184622 -- Event Class Code: USER_DEFINE
184623 xet.entity_id
184624 , xet.legal_entity_id
184625 , xet.entity_code
184626 , xet.transaction_number
184627 , xet.event_id
184628 , xet.event_class_code
184629 , xet.event_type_code
184630 , xet.event_number
184631 , xet.event_date
184632 , xet.transaction_date
184633 , xet.reference_num_1
184634 , xet.reference_num_2
184635 , xet.reference_num_3
184636 , xet.reference_num_4
184637 , xet.reference_char_1
184638 , xet.reference_char_2
184639 , xet.reference_char_3
184640 , xet.reference_char_4
184641 , xet.reference_date_1
184642 , xet.reference_date_2
184643 , xet.reference_date_3
184644 , xet.reference_date_4
184645 , xet.event_created_by
184646 , xet.budgetary_control_flag
184647 , h1.DISTRIBUTION_TYPE source_12
184648 , fvl12.meaning source_12_meaning
184649 , h1.TRANSFER_TO_GL_INDICATOR source_38
184650 , fvl38.meaning source_38_meaning
184651 FROM xla_events_gt xet
184652 , CST_XLA_INV_HEADERS_V h1
184653 , fnd_lookup_values fvl12
184654 , fnd_lookup_values fvl38
184655 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
184656 and xet.event_type_code = C_EVENT_TYPE_CODE
184657 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
184658 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
184659 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
184660 AND fvl12.view_application_id(+) = 700
184661 AND fvl12.language(+) = USERENV('LANG')
184662 AND fvl38.lookup_type(+) = 'YES_NO'
184663 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
184664 AND fvl38.view_application_id(+) = 0
184665 AND fvl38.language(+) = USERENV('LANG')
184666
184667 ORDER BY event_id
184668 ;
184669
184670
184671 --
184672 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
184673 IS
184674 SELECT /*+ leading(xet) cardinality(xet,1) */
184675 -- Event Type Code: UDIR_INTERORG_RCPT_NO_TP
184676 -- Event Class Code: USER_DEFINE
184677 xet.entity_id
184678 ,xet.legal_entity_id
184679 ,xet.entity_code
184680 ,xet.transaction_number
184681 ,xet.event_id
184682 ,xet.event_class_code
184683 ,xet.event_type_code
184684 ,xet.event_number
184685 ,xet.event_date
184686 ,xet.transaction_date
184687 ,xet.reference_num_1
184688 ,xet.reference_num_2
184689 ,xet.reference_num_3
184690 ,xet.reference_num_4
184691 ,xet.reference_char_1
184692 ,xet.reference_char_2
184693 ,xet.reference_char_3
184694 ,xet.reference_char_4
184695 ,xet.reference_date_1
184696 ,xet.reference_date_2
184697 ,xet.reference_date_3
184698 ,xet.reference_date_4
184699 ,xet.event_created_by
184700 ,xet.budgetary_control_flag , l2.LINE_NUMBER
184701 , l2.CODE_COMBINATION_ID source_4
184702 , l2.DISTRIBUTION_IDENTIFIER source_11
184703 , l2.CURRENCY_CODE source_15
184704 , l2.ENTERED_AMOUNT source_18
184705 , l2.CURRENCY_CONVERSION_DATE source_19
184706 , l2.CURRENCY_CONVERSION_RATE source_20
184707 , l2.CURRENCY_CONVERSION_TYPE source_21
184708 , l2.ACCOUNTED_AMOUNT source_22
184709 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
184710 FROM xla_events_gt xet
184711 , CST_XLA_INV_LINES_V l2
184712 WHERE xet.event_id between x_first_event_id and x_last_event_id
184713 and xet.event_date between p_pad_start_date and p_pad_end_date
184714 and xet.event_type_code = C_EVENT_TYPE_CODE
184715 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
184716 ;
184717
184718 --
184719 BEGIN
184720 IF g_log_enabled THEN
184721 l_log_module := C_DEFAULT_MODULE||'.EventType_290';
184722 END IF;
184723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
184724 trace
184725 (p_msg => 'BEGIN of EventType_290'
184726 ,p_level => C_LEVEL_PROCEDURE
184727 ,p_module => l_log_module);
184728 END IF;
184729
184730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184731 trace
184732 (p_msg => 'p_application_id = '||p_application_id||
184733 ' - p_base_ledger_id = '||p_base_ledger_id||
184734 ' - p_target_ledger_id = '||p_target_ledger_id||
184735 ' - p_language = '||p_language||
184736 ' - p_currency_code = '||p_currency_code||
184737 ' - p_sla_ledger_id = '||p_sla_ledger_id
184738 ,p_level => C_LEVEL_STATEMENT
184739 ,p_module => l_log_module);
184740 END IF;
184741 --
184742 -- initialze arrays
184743 --
184744 g_array_event.DELETE;
184745 l_rec_array_event := l_null_rec_array_event;
184746 --
184747 --------------------------------------
184748 -- 4262811 Initialze MPA Line Number
184749 --------------------------------------
184750 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
184751
184752 --
184753
184754 --
184755 OPEN header_cur;
184756 --
184757 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184758 trace
184759 (p_msg => 'SQL - FETCH header_cur'
184760 ,p_level => C_LEVEL_STATEMENT
184761 ,p_module => l_log_module);
184762 END IF;
184763 --
184764 LOOP
184765 FETCH header_cur BULK COLLECT INTO
184766 l_array_entity_id
184767 , l_array_legal_entity_id
184768 , l_array_entity_code
184769 , l_array_transaction_num
184770 , l_array_event_id
184771 , l_array_class_code
184772 , l_array_event_type
184773 , l_array_event_number
184774 , l_array_event_date
184775 , l_array_transaction_date
184776 , l_array_reference_num_1
184777 , l_array_reference_num_2
184778 , l_array_reference_num_3
184779 , l_array_reference_num_4
184780 , l_array_reference_char_1
184781 , l_array_reference_char_2
184782 , l_array_reference_char_3
184783 , l_array_reference_char_4
184784 , l_array_reference_date_1
184785 , l_array_reference_date_2
184786 , l_array_reference_date_3
184787 , l_array_reference_date_4
184788 , l_array_event_created_by
184789 , l_array_budgetary_control_flag
184790 , l_array_source_12
184791 , l_array_source_12_meaning
184792 , l_array_source_38
184793 , l_array_source_38_meaning
184794 LIMIT l_rows;
184795 --
184796 IF (C_LEVEL_EVENT >= g_log_level) THEN
184797 trace
184798 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
184799 ,p_level => C_LEVEL_EVENT
184800 ,p_module => l_log_module);
184801 END IF;
184802 --
184803 EXIT WHEN l_array_entity_id.COUNT = 0;
184804
184805 -- initialize arrays
184806 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
184807 XLA_AE_LINES_PKG.g_rec_lines := NULL;
184808
184809 --
184810 -- Bug 4458708
184811 --
184812 XLA_AE_LINES_PKG.g_LineNumber := 0;
184813
184814
184815 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
184816 g_last_hdr_idx := l_array_event_id.LAST;
184817 --
184818 -- loop for the headers. Each iteration is for each header extract row
184819 -- fetched in header cursor
184820 --
184821 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
184822
184823 --
184824 -- set event info as cache for other routines to refer event attributes
184825 --
184826 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
184827 (p_application_id => p_application_id
184828 ,p_primary_ledger_id => p_primary_ledger_id
184829 ,p_base_ledger_id => p_base_ledger_id
184830 ,p_target_ledger_id => p_target_ledger_id
184831 ,p_entity_id => l_array_entity_id(hdr_idx)
184832 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
184833 ,p_entity_code => l_array_entity_code(hdr_idx)
184834 ,p_transaction_num => l_array_transaction_num(hdr_idx)
184835 ,p_event_id => l_array_event_id(hdr_idx)
184836 ,p_event_class_code => l_array_class_code(hdr_idx)
184837 ,p_event_type_code => l_array_event_type(hdr_idx)
184838 ,p_event_number => l_array_event_number(hdr_idx)
184839 ,p_event_date => l_array_event_date(hdr_idx)
184840 ,p_transaction_date => l_array_transaction_date(hdr_idx)
184841 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
184842 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
184843 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
184844 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
184845 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
184846 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
184847 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
184848 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
184849 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
184850 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
184851 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
184852 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
184853 ,p_event_created_by => l_array_event_created_by(hdr_idx)
184854 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
184855
184856 --
184857 -- set the status of entry to C_VALID (0)
184858 --
184859 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
184860
184861 --
184862 -- initialize a row for ae header
184863 --
184864 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
184865
184866 l_event_id := l_array_event_id(hdr_idx);
184867
184868 --
184869 -- storing the hdr_idx for event. May be used by line cursor.
184870 --
184871 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
184872
184873 --
184874 -- store sources from header extract. This can be improved to
184875 -- store only those sources from header extract that may be used in lines
184876 --
184877
184878 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
184879 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
184880 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
184881 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
184882
184883 --
184884 -- initilaize the status of ae headers for diffrent balance types
184885 -- the status is initialised to C_NOT_CREATED (2)
184886 --
184887 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184888 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184889 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
184890
184891 --
184892 -- call api to validate and store accounting attributes for header
184893 --
184894
184895 ------------------------------------------------------------
184896 -- Accrual Reversal : to get date for Standard Source (NONE)
184897 ------------------------------------------------------------
184898 l_acc_rev_gl_date_source := NULL;
184899
184900 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
184901 l_rec_acct_attrs.array_date_value(1) :=
184902 xla_ae_sources_pkg.GetSystemSourceDate(
184903 p_source_code => 'XLA_REFERENCE_DATE_1'
184904 , p_source_type_code => 'Y'
184905 , p_source_application_id => 602
184906 );
184907 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
184908 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
184909
184910
184911 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
184912
184913 XLA_AE_HEADER_PKG.SetJeCategoryName;
184914
184915 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
184916 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
184917 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
184918 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
184919 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
184920
184921
184922 -- No header level analytical criteria
184923
184924 --
184925 --accounting attribute enhancement, bug 3612931
184926 --
184927 l_trx_reversal_source := SUBSTR(NULL, 1,30);
184928
184929 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
184930 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
184931
184932 xla_accounting_err_pkg.build_message
184933 (p_appli_s_name => 'XLA'
184934 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
184935 ,p_token_1 => 'ACCT_ATTR_NAME'
184936 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
184937 ,p_token_2 => 'PRODUCT_NAME'
184938 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
184939 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
184940 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
184941 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
184942
184943 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
184944 --
184945 -- following sets the accounting attributes needed to reverse
184946 -- accounting for a distributeion
184947 --
184948 xla_ae_lines_pkg.SetTrxReversalAttrs
184949 (p_event_id => l_event_id
184950 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
184951 ,p_trx_reversal_source => l_trx_reversal_source);
184952
184953 END IF;
184954
184955
184956 ----------------------------------------------------------------
184957 -- 4262811 - update the header statuses to invalid in need be
184958 ----------------------------------------------------------------
184959 --
184960 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
184961
184962
184963 -----------------------------------------------
184964 -- No accrual reversal for the event class/type
184965 -----------------------------------------------
184966 ----------------------------------------------------------------
184967
184968 --
184969 -- this ends the header loop iteration for one bulk fetch
184970 --
184971 END LOOP;
184972
184973 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
184974 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
184975
184976 --
184977 -- insert dummy rows into lines gt table that were created due to
184978 -- transaction reversals
184979 --
184980 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
184981 l_result := XLA_AE_LINES_PKG.InsertLines;
184982 END IF;
184983
184984 --
184985 -- reset the temp_line_num for each set of events fetched from header
184986 -- cursor rather than doing it for each new event in line cursor
184987 -- Bug 3939231
184988 --
184989 xla_ae_lines_pkg.g_temp_line_num := 0;
184990
184991
184992
184993 --
184994 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
184995 --
184996 --
184997 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
184998
184999 trace
185000 (p_msg => 'SQL - FETCH line_cur'
185001 ,p_level => C_LEVEL_STATEMENT
185002 ,p_module => l_log_module);
185003
185004 END IF;
185005 --
185006 --
185007 LOOP
185008 --
185009 FETCH line_cur BULK COLLECT INTO
185010 l_array_entity_id
185011 , l_array_legal_entity_id
185012 , l_array_entity_code
185013 , l_array_transaction_num
185014 , l_array_event_id
185015 , l_array_class_code
185016 , l_array_event_type
185017 , l_array_event_number
185018 , l_array_event_date
185019 , l_array_transaction_date
185020 , l_array_reference_num_1
185021 , l_array_reference_num_2
185022 , l_array_reference_num_3
185023 , l_array_reference_num_4
185024 , l_array_reference_char_1
185025 , l_array_reference_char_2
185026 , l_array_reference_char_3
185027 , l_array_reference_char_4
185028 , l_array_reference_date_1
185029 , l_array_reference_date_2
185030 , l_array_reference_date_3
185031 , l_array_reference_date_4
185032 , l_array_event_created_by
185033 , l_array_budgetary_control_flag
185034 , l_array_extract_line_num
185035 , l_array_source_4
185036 , l_array_source_11
185037 , l_array_source_15
185038 , l_array_source_18
185039 , l_array_source_19
185040 , l_array_source_20
185041 , l_array_source_21
185042 , l_array_source_22
185043 , l_array_source_24
185044 LIMIT l_rows;
185045
185046 --
185047 IF (C_LEVEL_EVENT >= g_log_level) THEN
185048 trace
185049 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
185050 ,p_level => C_LEVEL_EVENT
185051 ,p_module => l_log_module);
185052 END IF;
185053 --
185054 EXIT WHEN l_array_entity_id.count = 0;
185055
185056 XLA_AE_LINES_PKG.g_rec_lines := null;
185057
185058 --
185059 -- Bug 4458708
185060 --
185061 XLA_AE_LINES_PKG.g_LineNumber := 0;
185062 --
185063 --
185064
185065 FOR Idx IN 1..l_array_event_id.count LOOP
185066 --
185067 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
185068 --
185069 l_event_id := l_array_event_id(idx); -- 5648433
185070
185071 --
185072 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
185073 --
185074
185075 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
185076 (g_array_event(l_event_id).array_value_num('header_index'))
185077 ,'N'
185078 ) <> 'Y'
185079 THEN
185080 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185081 trace
185082 (p_msg => 'Trancaction revesal option is not Y '
185083 ,p_level => C_LEVEL_STATEMENT
185084 ,p_module => l_log_module);
185085 END IF;
185086
185087 --
185088 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
185089 --
185090 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
185091 --
185092 -- set event info as cache for other routines to refer event attributes
185093 --
185094
185095 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
185096 l_previous_event_id := l_event_id;
185097
185098 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
185099 (p_application_id => p_application_id
185100 ,p_primary_ledger_id => p_primary_ledger_id
185101 ,p_base_ledger_id => p_base_ledger_id
185102 ,p_target_ledger_id => p_target_ledger_id
185103 ,p_entity_id => l_array_entity_id(Idx)
185104 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
185105 ,p_entity_code => l_array_entity_code(Idx)
185106 ,p_transaction_num => l_array_transaction_num(Idx)
185107 ,p_event_id => l_array_event_id(Idx)
185108 ,p_event_class_code => l_array_class_code(Idx)
185109 ,p_event_type_code => l_array_event_type(Idx)
185110 ,p_event_number => l_array_event_number(Idx)
185111 ,p_event_date => l_array_event_date(Idx)
185112 ,p_transaction_date => l_array_transaction_date(Idx)
185113 ,p_reference_num_1 => l_array_reference_num_1(Idx)
185114 ,p_reference_num_2 => l_array_reference_num_2(Idx)
185115 ,p_reference_num_3 => l_array_reference_num_3(Idx)
185116 ,p_reference_num_4 => l_array_reference_num_4(Idx)
185117 ,p_reference_char_1 => l_array_reference_char_1(Idx)
185118 ,p_reference_char_2 => l_array_reference_char_2(Idx)
185119 ,p_reference_char_3 => l_array_reference_char_3(Idx)
185120 ,p_reference_char_4 => l_array_reference_char_4(Idx)
185121 ,p_reference_date_1 => l_array_reference_date_1(Idx)
185122 ,p_reference_date_2 => l_array_reference_date_2(Idx)
185123 ,p_reference_date_3 => l_array_reference_date_3(Idx)
185124 ,p_reference_date_4 => l_array_reference_date_4(Idx)
185125 ,p_event_created_by => l_array_event_created_by(Idx)
185126 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
185127 --
185128 END IF;
185129
185130
185131
185132 --
185133 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
185134
185135 l_acct_reversal_source := SUBSTR(NULL, 1,30);
185136
185137 IF l_continue_with_lines THEN
185138 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
185139 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
185140
185141 xla_accounting_err_pkg.build_message
185142 (p_appli_s_name => 'XLA'
185143 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
185144 ,p_token_1 => 'LINE_NUMBER'
185145 ,p_value_1 => l_array_extract_line_num(Idx)
185146 ,p_token_2 => 'PRODUCT_NAME'
185147 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
185148 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
185149 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
185150 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
185151
185152 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
185153 --
185154 -- following sets the accounting attributes needed to reverse
185155 -- accounting for a distributeion
185156 --
185157
185158 --
185159 -- 5217187
185160 --
185161 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
185162 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
185163 g_array_event(l_event_id).array_value_num('header_index'));
185164 --
185165 --
185166
185167 -- No reversal code generated
185168
185169 xla_ae_lines_pkg.SetAcctReversalAttrs
185170 (p_event_id => l_event_id
185171 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
185172 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185173 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
185174 END IF;
185175
185176 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
185177 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
185178
185179 --
185180 AcctLineType_38 (
185181 p_application_id => p_application_id
185182 ,p_event_id => l_event_id
185183 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185184 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185185 ,p_actual_flag => l_actual_flag
185186 ,p_balance_type_code => l_balance_type_code
185187 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185188
185189 , p_source_4 => l_array_source_4(Idx)
185190 , p_source_11 => l_array_source_11(Idx)
185191 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185192 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185193 , p_source_15 => l_array_source_15(Idx)
185194 , p_source_18 => l_array_source_18(Idx)
185195 , p_source_19 => l_array_source_19(Idx)
185196 , p_source_20 => l_array_source_20(Idx)
185197 , p_source_21 => l_array_source_21(Idx)
185198 , p_source_22 => l_array_source_22(Idx)
185199 , p_source_24 => l_array_source_24(Idx)
185200 );
185201 If(l_balance_type_code = 'A') THEN
185202 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185203 END IF;
185204
185205 --
185206
185207
185208 --
185209 AcctLineType_67 (
185210 p_application_id => p_application_id
185211 ,p_event_id => l_event_id
185212 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185213 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185214 ,p_actual_flag => l_actual_flag
185215 ,p_balance_type_code => l_balance_type_code
185216 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185217
185218 , p_source_4 => l_array_source_4(Idx)
185219 , p_source_11 => l_array_source_11(Idx)
185220 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185221 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185222 , p_source_15 => l_array_source_15(Idx)
185223 , p_source_18 => l_array_source_18(Idx)
185224 , p_source_19 => l_array_source_19(Idx)
185225 , p_source_20 => l_array_source_20(Idx)
185226 , p_source_21 => l_array_source_21(Idx)
185227 , p_source_22 => l_array_source_22(Idx)
185228 , p_source_24 => l_array_source_24(Idx)
185229 );
185230 If(l_balance_type_code = 'A') THEN
185231 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185232 END IF;
185233
185234 --
185235
185236
185237 --
185238 AcctLineType_74 (
185239 p_application_id => p_application_id
185240 ,p_event_id => l_event_id
185241 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185242 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185243 ,p_actual_flag => l_actual_flag
185244 ,p_balance_type_code => l_balance_type_code
185245 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185246
185247 , p_source_4 => l_array_source_4(Idx)
185248 , p_source_11 => l_array_source_11(Idx)
185249 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185250 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185251 , p_source_15 => l_array_source_15(Idx)
185252 , p_source_18 => l_array_source_18(Idx)
185253 , p_source_19 => l_array_source_19(Idx)
185254 , p_source_20 => l_array_source_20(Idx)
185255 , p_source_21 => l_array_source_21(Idx)
185256 , p_source_22 => l_array_source_22(Idx)
185257 , p_source_24 => l_array_source_24(Idx)
185258 );
185259 If(l_balance_type_code = 'A') THEN
185260 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185261 END IF;
185262
185263 --
185264
185265
185266 --
185267 AcctLineType_108 (
185268 p_application_id => p_application_id
185269 ,p_event_id => l_event_id
185270 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185271 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185272 ,p_actual_flag => l_actual_flag
185273 ,p_balance_type_code => l_balance_type_code
185274 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185275
185276 , p_source_4 => l_array_source_4(Idx)
185277 , p_source_11 => l_array_source_11(Idx)
185278 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185279 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185280 , p_source_15 => l_array_source_15(Idx)
185281 , p_source_18 => l_array_source_18(Idx)
185282 , p_source_19 => l_array_source_19(Idx)
185283 , p_source_20 => l_array_source_20(Idx)
185284 , p_source_21 => l_array_source_21(Idx)
185285 , p_source_22 => l_array_source_22(Idx)
185286 , p_source_24 => l_array_source_24(Idx)
185287 );
185288 If(l_balance_type_code = 'A') THEN
185289 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185290 END IF;
185291
185292 --
185293
185294
185295 --
185296 AcctLineType_112 (
185297 p_application_id => p_application_id
185298 ,p_event_id => l_event_id
185299 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185300 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185301 ,p_actual_flag => l_actual_flag
185302 ,p_balance_type_code => l_balance_type_code
185303 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185304
185305 , p_source_4 => l_array_source_4(Idx)
185306 , p_source_11 => l_array_source_11(Idx)
185307 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185308 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185309 , p_source_15 => l_array_source_15(Idx)
185310 , p_source_18 => l_array_source_18(Idx)
185311 , p_source_19 => l_array_source_19(Idx)
185312 , p_source_20 => l_array_source_20(Idx)
185313 , p_source_21 => l_array_source_21(Idx)
185314 , p_source_22 => l_array_source_22(Idx)
185315 , p_source_24 => l_array_source_24(Idx)
185316 );
185317 If(l_balance_type_code = 'A') THEN
185318 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185319 END IF;
185320
185321 --
185322
185323
185324 --
185325 AcctLineType_133 (
185326 p_application_id => p_application_id
185327 ,p_event_id => l_event_id
185328 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185329 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185330 ,p_actual_flag => l_actual_flag
185331 ,p_balance_type_code => l_balance_type_code
185332 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185333
185334 , p_source_4 => l_array_source_4(Idx)
185335 , p_source_11 => l_array_source_11(Idx)
185336 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185337 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185338 , p_source_15 => l_array_source_15(Idx)
185339 , p_source_18 => l_array_source_18(Idx)
185340 , p_source_19 => l_array_source_19(Idx)
185341 , p_source_20 => l_array_source_20(Idx)
185342 , p_source_21 => l_array_source_21(Idx)
185343 , p_source_22 => l_array_source_22(Idx)
185344 , p_source_24 => l_array_source_24(Idx)
185345 );
185346 If(l_balance_type_code = 'A') THEN
185347 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185348 END IF;
185349
185350 --
185351
185352
185353 --
185354 AcctLineType_173 (
185355 p_application_id => p_application_id
185356 ,p_event_id => l_event_id
185357 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185358 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185359 ,p_actual_flag => l_actual_flag
185360 ,p_balance_type_code => l_balance_type_code
185361 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185362
185363 , p_source_4 => l_array_source_4(Idx)
185364 , p_source_11 => l_array_source_11(Idx)
185365 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185366 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185367 , p_source_15 => l_array_source_15(Idx)
185368 , p_source_18 => l_array_source_18(Idx)
185369 , p_source_19 => l_array_source_19(Idx)
185370 , p_source_20 => l_array_source_20(Idx)
185371 , p_source_21 => l_array_source_21(Idx)
185372 , p_source_22 => l_array_source_22(Idx)
185373 , p_source_24 => l_array_source_24(Idx)
185374 );
185375 If(l_balance_type_code = 'A') THEN
185376 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185377 END IF;
185378
185379 --
185380
185381
185382 --
185383 AcctLineType_201 (
185384 p_application_id => p_application_id
185385 ,p_event_id => l_event_id
185386 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185387 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185388 ,p_actual_flag => l_actual_flag
185389 ,p_balance_type_code => l_balance_type_code
185390 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185391
185392 , p_source_4 => l_array_source_4(Idx)
185393 , p_source_11 => l_array_source_11(Idx)
185394 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185395 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185396 , p_source_15 => l_array_source_15(Idx)
185397 , p_source_18 => l_array_source_18(Idx)
185398 , p_source_19 => l_array_source_19(Idx)
185399 , p_source_20 => l_array_source_20(Idx)
185400 , p_source_21 => l_array_source_21(Idx)
185401 , p_source_22 => l_array_source_22(Idx)
185402 , p_source_24 => l_array_source_24(Idx)
185403 );
185404 If(l_balance_type_code = 'A') THEN
185405 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185406 END IF;
185407
185408 --
185409
185410
185411 --
185412 AcctLineType_227 (
185413 p_application_id => p_application_id
185414 ,p_event_id => l_event_id
185415 ,p_calculate_acctd_flag => l_calculate_acctd_flag
185416 ,p_calculate_g_l_flag => l_calculate_g_l_flag
185417 ,p_actual_flag => l_actual_flag
185418 ,p_balance_type_code => l_balance_type_code
185419 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
185420
185421 , p_source_4 => l_array_source_4(Idx)
185422 , p_source_11 => l_array_source_11(Idx)
185423 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
185424 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
185425 , p_source_15 => l_array_source_15(Idx)
185426 , p_source_18 => l_array_source_18(Idx)
185427 , p_source_19 => l_array_source_19(Idx)
185428 , p_source_20 => l_array_source_20(Idx)
185429 , p_source_21 => l_array_source_21(Idx)
185430 , p_source_22 => l_array_source_22(Idx)
185431 , p_source_24 => l_array_source_24(Idx)
185432 );
185433 If(l_balance_type_code = 'A') THEN
185434 l_actual_gain_loss_ref := l_gain_or_loss_ref;
185435 END IF;
185436
185437 --
185438
185439 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
185440 -- or secondary ledger that has different currency with primary
185441 -- or alc that is calculated by sla
185442 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
185443 (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'))
185444
185445 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
185446 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
185447 AND (l_actual_flag = 'A')) THEN
185448 XLA_AE_LINES_PKG.CreateGainOrLossLines(
185449 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
185450 ,p_application_id => p_application_id
185451 ,p_amb_context_code => 'DEFAULT'
185452 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
185453 ,p_event_class_code => C_EVENT_CLASS_CODE
185454 ,p_event_type_code => C_EVENT_TYPE_CODE
185455
185456 ,p_gain_ccid => -1
185457 ,p_loss_ccid => -1
185458
185459 ,p_actual_flag => l_actual_flag
185460 ,p_enc_flag => null
185461 ,p_actual_g_l_ref => l_actual_gain_loss_ref
185462 ,p_enc_g_l_ref => null
185463 );
185464 END IF;
185465 END IF;
185466 END IF;
185467
185468 ELSE
185469 --
185470 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
185471 --
185472 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185473 trace
185474 (p_msg => 'Trancaction revesal option is Y'
185475 ,p_level => C_LEVEL_STATEMENT
185476 ,p_module => l_log_module);
185477 END IF;
185478 END IF;
185479
185480 END LOOP;
185481 l_result := XLA_AE_LINES_PKG.InsertLines ;
185482 end loop;
185483 close line_cur;
185484
185485
185486 --
185487 -- insert headers into xla_ae_headers_gt table
185488 --
185489 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
185490
185491 -- insert into errors table here.
185492
185493 END LOOP;
185494
185495 --
185496 -- 4865292
185497 --
185498 -- Compare g_hdr_extract_count with event count in
185499 -- CreateHeadersAndLines.
185500 --
185501 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
185502
185503 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185504 trace (p_msg => '# rows extracted from header extract objects '
185505 || ' (running total): '
185506 || g_hdr_extract_count
185507 ,p_level => C_LEVEL_STATEMENT
185508 ,p_module => l_log_module);
185509 END IF;
185510
185511 CLOSE header_cur;
185512 --
185513
185514 --
185515 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185516 trace
185517 (p_msg => 'END of EventType_290'
185518 ,p_level => C_LEVEL_PROCEDURE
185519 ,p_module => l_log_module);
185520 END IF;
185521 --
185522 RETURN l_result;
185523 EXCEPTION
185524 WHEN xla_exceptions_pkg.application_exception THEN
185525
185526 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185527
185528
185529 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
185530
185531 RAISE;
185532
185533 WHEN NO_DATA_FOUND THEN
185534
185535 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
185536 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
185537
185538 FOR header_record IN header_cur
185539 LOOP
185540 l_array_header_events(header_record.event_id) := header_record.event_id;
185541 END LOOP;
185542
185543 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
185544 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
185545
185546 fnd_file.put_line(fnd_file.LOG, ' ');
185547 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185548 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
185549 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
185550
185551 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
185552 LOOP
185553 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
185554 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
185555 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
185556 END IF;
185557 END LOOP;
185558
185559 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
185560 fnd_file.put_line(fnd_file.LOG, ' ');
185561
185562
185563 xla_exceptions_pkg.raise_message
185564 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_290');
185565
185566
185567 WHEN OTHERS THEN
185568 xla_exceptions_pkg.raise_message
185569 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_290');
185570 END EventType_290;
185571 --
185572
185573 ---------------------------------------
185574 --
185575 -- PRIVATE PROCEDURE
185576 -- insert_sources_291
185577 --
185578 ----------------------------------------
185579 --
185580 PROCEDURE insert_sources_291(
185581 p_target_ledger_id IN NUMBER
185582 , p_language IN VARCHAR2
185583 , p_sla_ledger_id IN NUMBER
185584 , p_pad_start_date IN DATE
185585 , p_pad_end_date IN DATE
185586 )
185587 IS
185588
185589 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT_TP';
185590 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
185591 p_apps_owner VARCHAR2(30);
185592 l_log_module VARCHAR2(240);
185593 BEGIN
185594 IF g_log_enabled THEN
185595 l_log_module := C_DEFAULT_MODULE||'.insert_sources_291';
185596 END IF;
185597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185598
185599 trace
185600 (p_msg => 'BEGIN of insert_sources_291'
185601 ,p_level => C_LEVEL_PROCEDURE
185602 ,p_module => l_log_module);
185603
185604 END IF;
185605
185606 -- select APPS owner
185607 SELECT oracle_username
185608 INTO p_apps_owner
185609 FROM fnd_oracle_userid
185610 WHERE read_only_flag = 'U'
185611 ;
185612
185613 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185614 trace
185615 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
185616 ' - p_language = '||p_language||
185617 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
185618 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
185619 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
185620 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
185621 ,p_level => C_LEVEL_STATEMENT
185622 ,p_module => l_log_module);
185623 END IF;
185624
185625
185626 --
185627 INSERT INTO xla_diag_sources --hdr1
185628 (
185629 event_id
185630 , ledger_id
185631 , sla_ledger_id
185632 , description_language
185633 , object_name
185634 , object_type_code
185635 , line_number
185636 , source_application_id
185637 , source_type_code
185638 , source_code
185639 , source_value
185640 , source_meaning
185641 , created_by
185642 , creation_date
185643 , last_update_date
185644 , last_updated_by
185645 , last_update_login
185646 , program_update_date
185647 , program_application_id
185648 , program_id
185649 , request_id
185650 )
185651 SELECT
185652 event_id
185653 , p_target_ledger_id
185654 , p_sla_ledger_id
185655 , p_language
185656 , object_name
185657 , object_type_code
185658 , line_number
185659 , source_application_id
185660 , source_type_code
185661 , source_code
185662 , SUBSTR(source_value ,1,1996)
185663 , SUBSTR(source_meaning,1,200)
185664 , xla_environment_pkg.g_Usr_Id
185665 , TRUNC(SYSDATE)
185666 , TRUNC(SYSDATE)
185667 , xla_environment_pkg.g_Usr_Id
185668 , xla_environment_pkg.g_Login_Id
185669 , TRUNC(SYSDATE)
185670 , xla_environment_pkg.g_Prog_Appl_Id
185671 , xla_environment_pkg.g_Prog_Id
185672 , xla_environment_pkg.g_Req_Id
185673 FROM (
185674 SELECT xet.event_id event_id
185675 , 0 line_number
185676 , CASE r
185677 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
185678 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
185679
185680 ELSE null
185681 END object_name
185682 , CASE r
185683 WHEN 1 THEN 'HEADER'
185684 WHEN 2 THEN 'HEADER'
185685
185686 ELSE null
185687 END object_type_code
185688 , CASE r
185689 WHEN 1 THEN '707'
185690 WHEN 2 THEN '707'
185691
185692 ELSE null
185693 END source_application_id
185694 , 'S' source_type_code
185695 , CASE r
185696 WHEN 1 THEN 'DISTRIBUTION_TYPE'
185697 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
185698
185699 ELSE null
185700 END source_code
185701 , CASE r
185702 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
185703 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
185704
185705 ELSE null
185706 END source_value
185707 , CASE r
185708 WHEN 1 THEN fvl12.meaning
185709 WHEN 2 THEN fvl38.meaning
185710
185711 ELSE null
185712 END source_meaning
185713 FROM xla_events_gt xet
185714 , CST_XLA_INV_HEADERS_V h1
185715 , fnd_lookup_values fvl12
185716 , fnd_lookup_values fvl38
185717 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
185718 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185719 AND xet.event_type_code = C_EVENT_TYPE_CODE
185720 AND h1.event_id = xet.event_id
185721 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
185722 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
185723 AND fvl12.view_application_id(+) = 700
185724 AND fvl12.language(+) = USERENV('LANG')
185725 AND fvl38.lookup_type(+) = 'YES_NO'
185726 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
185727 AND fvl38.view_application_id(+) = 0
185728 AND fvl38.language(+) = USERENV('LANG')
185729
185730 )
185731 ;
185732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185733
185734 trace
185735 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
185736 ,p_level => C_LEVEL_STATEMENT
185737 ,p_module => l_log_module);
185738
185739 END IF;
185740 --
185741
185742
185743
185744 --
185745 INSERT INTO xla_diag_sources --line1
185746 (
185747 event_id
185748 , ledger_id
185749 , sla_ledger_id
185750 , description_language
185751 , object_name
185752 , object_type_code
185753 , line_number
185754 , source_application_id
185755 , source_type_code
185756 , source_code
185757 , source_value
185758 , source_meaning
185759 , created_by
185760 , creation_date
185761 , last_update_date
185762 , last_updated_by
185763 , last_update_login
185764 , program_update_date
185765 , program_application_id
185766 , program_id
185767 , request_id
185768 )
185769 SELECT event_id
185770 , p_target_ledger_id
185771 , p_sla_ledger_id
185772 , p_language
185773 , object_name
185774 , object_type_code
185775 , line_number
185776 , source_application_id
185777 , source_type_code
185778 , source_code
185779 , SUBSTR(source_value,1,1996)
185780 , SUBSTR(source_meaning,1,200)
185781 , xla_environment_pkg.g_Usr_Id
185782 , TRUNC(SYSDATE)
185783 , TRUNC(SYSDATE)
185784 , xla_environment_pkg.g_Usr_Id
185785 , xla_environment_pkg.g_Login_Id
185786 , TRUNC(SYSDATE)
185787 , xla_environment_pkg.g_Prog_Appl_Id
185788 , xla_environment_pkg.g_Prog_Id
185789 , xla_environment_pkg.g_Req_Id
185790 FROM (
185791 SELECT xet.event_id event_id
185792 , l2.line_number line_number
185793 , CASE r
185794 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
185795 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
185796 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
185797 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
185798 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
185799 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
185800 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
185801 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
185802 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
185803
185804 ELSE null
185805 END object_name
185806 , CASE r
185807 WHEN 1 THEN 'LINE'
185808 WHEN 2 THEN 'LINE'
185809 WHEN 3 THEN 'LINE'
185810 WHEN 4 THEN 'LINE'
185811 WHEN 5 THEN 'LINE'
185812 WHEN 6 THEN 'LINE'
185813 WHEN 7 THEN 'LINE'
185814 WHEN 8 THEN 'LINE'
185815 WHEN 9 THEN 'LINE'
185816
185817 ELSE null
185818 END object_type_code
185819 , CASE r
185820 WHEN 1 THEN '707'
185821 WHEN 2 THEN '707'
185822 WHEN 3 THEN '707'
185823 WHEN 4 THEN '707'
185824 WHEN 5 THEN '707'
185825 WHEN 6 THEN '707'
185826 WHEN 7 THEN '707'
185827 WHEN 8 THEN '707'
185828 WHEN 9 THEN '707'
185829
185830 ELSE null
185831 END source_application_id
185832 , 'S' source_type_code
185833 , CASE r
185834 WHEN 1 THEN 'CODE_COMBINATION_ID'
185835 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
185836 WHEN 3 THEN 'CURRENCY_CODE'
185837 WHEN 4 THEN 'ENTERED_AMOUNT'
185838 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
185839 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
185840 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
185841 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
185842 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
185843
185844 ELSE null
185845 END source_code
185846 , CASE r
185847 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
185848 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
185849 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
185850 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
185851 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
185852 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
185853 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
185854 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
185855 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
185856
185857 ELSE null
185858 END source_value
185859 , null source_meaning
185860 FROM xla_events_gt xet
185861 , CST_XLA_INV_LINES_V l2
185862 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
185863 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
185864 AND xet.event_type_code = C_EVENT_TYPE_CODE
185865 AND l2.event_id = xet.event_id
185866
185867 )
185868 ;
185869 --
185870 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
185871
185872 trace
185873 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
185874 ,p_level => C_LEVEL_STATEMENT
185875 ,p_module => l_log_module);
185876
185877 END IF;
185878
185879
185880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
185881 trace
185882 (p_msg => 'END of insert_sources_291'
185883 ,p_level => C_LEVEL_PROCEDURE
185884 ,p_module => l_log_module);
185885 END IF;
185886 EXCEPTION
185887 WHEN xla_exceptions_pkg.application_exception THEN
185888 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185889 trace
185890 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185891 ,p_level => C_LEVEL_EXCEPTION
185892 ,p_module => l_log_module);
185893 END IF;
185894 RAISE;
185895 WHEN OTHERS THEN
185896 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
185897 trace
185898 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
185899 ,p_level => C_LEVEL_EXCEPTION
185900 ,p_module => l_log_module);
185901 END IF;
185902 xla_exceptions_pkg.raise_message
185903 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_291');
185904 END insert_sources_291;
185905 --
185906
185907 ---------------------------------------
185908 --
185909 -- PRIVATE FUNCTION
185910 -- EventType_291
185911 --
185912 ----------------------------------------
185913 --
185914 FUNCTION EventType_291
185915 (p_application_id IN NUMBER
185916 ,p_base_ledger_id IN NUMBER
185917 ,p_target_ledger_id IN NUMBER
185918 ,p_language IN VARCHAR2
185919 ,p_currency_code IN VARCHAR2
185920 ,p_sla_ledger_id IN NUMBER
185921 ,p_pad_start_date IN DATE
185922 ,p_pad_end_date IN DATE
185923 ,p_primary_ledger_id IN NUMBER)
185924 RETURN BOOLEAN IS
185925 --
185926 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_RCPT_TP';
185927 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
185928
185929 l_calculate_acctd_flag VARCHAR2(1) :='Y';
185930 l_calculate_g_l_flag VARCHAR2(1) :='Y';
185931 --
185932 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185933 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185934 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185935 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185936 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185937 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185938 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185939 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185940 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185941 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185942 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185943 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185944 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185945 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
185946 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185947 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185948 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185949 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
185950 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185951 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185952 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185953 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
185954 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
185955 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
185956 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
185957 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
185958
185959 l_event_id NUMBER;
185960 l_previous_event_id NUMBER;
185961 l_first_event_id NUMBER;
185962 l_last_event_id NUMBER;
185963
185964 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
185965 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
185966 --
185967 --
185968 l_result BOOLEAN := TRUE;
185969 l_rows NUMBER := 1000;
185970 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Receipt, Transfer Price';
185971 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
185972 l_description VARCHAR2(4000);
185973 l_transaction_reversal NUMBER;
185974 l_ae_header_id NUMBER;
185975 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
185976 l_log_module VARCHAR2(240);
185977 --
185978 l_acct_reversal_source VARCHAR2(30);
185979 l_trx_reversal_source VARCHAR2(30);
185980
185981 l_continue_with_lines BOOLEAN := TRUE;
185982 --
185983 l_acc_rev_gl_date_source DATE; -- 4262811
185984 --
185985 type t_array_event_id is table of number index by binary_integer;
185986
185987 l_rec_array_event t_rec_array_event;
185988 l_null_rec_array_event t_rec_array_event;
185989 l_array_ae_header_id xla_number_array_type;
185990 l_actual_flag VARCHAR2(1) := NULL;
185991 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
185992 l_balance_type_code VARCHAR2(1) :=NULL;
185993 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
185994
185995 --
185996 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
185997 --
185998
185999 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
186000 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
186001
186002 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
186003 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
186004 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
186005 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
186006 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
186007 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
186008 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
186009 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
186010 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
186011
186012 l_array_source_12 t_array_source_12;
186013 l_array_source_12_meaning t_array_lookup_meaning;
186014 l_array_source_38 t_array_source_38;
186015 l_array_source_38_meaning t_array_lookup_meaning;
186016
186017 l_array_source_4 t_array_source_4;
186018 l_array_source_11 t_array_source_11;
186019 l_array_source_15 t_array_source_15;
186020 l_array_source_18 t_array_source_18;
186021 l_array_source_19 t_array_source_19;
186022 l_array_source_20 t_array_source_20;
186023 l_array_source_21 t_array_source_21;
186024 l_array_source_22 t_array_source_22;
186025 l_array_source_24 t_array_source_24;
186026
186027 --
186028 CURSOR header_cur
186029 IS
186030 SELECT /*+ leading(xet) cardinality(xet,1) */
186031 -- Event Type Code: UDIR_INTERORG_RCPT_TP
186032 -- Event Class Code: USER_DEFINE
186033 xet.entity_id
186034 , xet.legal_entity_id
186035 , xet.entity_code
186036 , xet.transaction_number
186037 , xet.event_id
186038 , xet.event_class_code
186039 , xet.event_type_code
186040 , xet.event_number
186041 , xet.event_date
186042 , xet.transaction_date
186043 , xet.reference_num_1
186044 , xet.reference_num_2
186045 , xet.reference_num_3
186046 , xet.reference_num_4
186047 , xet.reference_char_1
186048 , xet.reference_char_2
186049 , xet.reference_char_3
186050 , xet.reference_char_4
186051 , xet.reference_date_1
186052 , xet.reference_date_2
186053 , xet.reference_date_3
186054 , xet.reference_date_4
186055 , xet.event_created_by
186056 , xet.budgetary_control_flag
186057 , h1.DISTRIBUTION_TYPE source_12
186058 , fvl12.meaning source_12_meaning
186059 , h1.TRANSFER_TO_GL_INDICATOR source_38
186060 , fvl38.meaning source_38_meaning
186061 FROM xla_events_gt xet
186062 , CST_XLA_INV_HEADERS_V h1
186063 , fnd_lookup_values fvl12
186064 , fnd_lookup_values fvl38
186065 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
186066 and xet.event_type_code = C_EVENT_TYPE_CODE
186067 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
186068 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
186069 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
186070 AND fvl12.view_application_id(+) = 700
186071 AND fvl12.language(+) = USERENV('LANG')
186072 AND fvl38.lookup_type(+) = 'YES_NO'
186073 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
186074 AND fvl38.view_application_id(+) = 0
186075 AND fvl38.language(+) = USERENV('LANG')
186076
186077 ORDER BY event_id
186078 ;
186079
186080
186081 --
186082 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
186083 IS
186084 SELECT /*+ leading(xet) cardinality(xet,1) */
186085 -- Event Type Code: UDIR_INTERORG_RCPT_TP
186086 -- Event Class Code: USER_DEFINE
186087 xet.entity_id
186088 ,xet.legal_entity_id
186089 ,xet.entity_code
186090 ,xet.transaction_number
186091 ,xet.event_id
186092 ,xet.event_class_code
186093 ,xet.event_type_code
186094 ,xet.event_number
186095 ,xet.event_date
186096 ,xet.transaction_date
186097 ,xet.reference_num_1
186098 ,xet.reference_num_2
186099 ,xet.reference_num_3
186100 ,xet.reference_num_4
186101 ,xet.reference_char_1
186102 ,xet.reference_char_2
186103 ,xet.reference_char_3
186104 ,xet.reference_char_4
186105 ,xet.reference_date_1
186106 ,xet.reference_date_2
186107 ,xet.reference_date_3
186108 ,xet.reference_date_4
186109 ,xet.event_created_by
186110 ,xet.budgetary_control_flag , l2.LINE_NUMBER
186111 , l2.CODE_COMBINATION_ID source_4
186112 , l2.DISTRIBUTION_IDENTIFIER source_11
186113 , l2.CURRENCY_CODE source_15
186114 , l2.ENTERED_AMOUNT source_18
186115 , l2.CURRENCY_CONVERSION_DATE source_19
186116 , l2.CURRENCY_CONVERSION_RATE source_20
186117 , l2.CURRENCY_CONVERSION_TYPE source_21
186118 , l2.ACCOUNTED_AMOUNT source_22
186119 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
186120 FROM xla_events_gt xet
186121 , CST_XLA_INV_LINES_V l2
186122 WHERE xet.event_id between x_first_event_id and x_last_event_id
186123 and xet.event_date between p_pad_start_date and p_pad_end_date
186124 and xet.event_type_code = C_EVENT_TYPE_CODE
186125 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
186126 ;
186127
186128 --
186129 BEGIN
186130 IF g_log_enabled THEN
186131 l_log_module := C_DEFAULT_MODULE||'.EventType_291';
186132 END IF;
186133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186134 trace
186135 (p_msg => 'BEGIN of EventType_291'
186136 ,p_level => C_LEVEL_PROCEDURE
186137 ,p_module => l_log_module);
186138 END IF;
186139
186140 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186141 trace
186142 (p_msg => 'p_application_id = '||p_application_id||
186143 ' - p_base_ledger_id = '||p_base_ledger_id||
186144 ' - p_target_ledger_id = '||p_target_ledger_id||
186145 ' - p_language = '||p_language||
186146 ' - p_currency_code = '||p_currency_code||
186147 ' - p_sla_ledger_id = '||p_sla_ledger_id
186148 ,p_level => C_LEVEL_STATEMENT
186149 ,p_module => l_log_module);
186150 END IF;
186151 --
186152 -- initialze arrays
186153 --
186154 g_array_event.DELETE;
186155 l_rec_array_event := l_null_rec_array_event;
186156 --
186157 --------------------------------------
186158 -- 4262811 Initialze MPA Line Number
186159 --------------------------------------
186160 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
186161
186162 --
186163
186164 --
186165 OPEN header_cur;
186166 --
186167 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186168 trace
186169 (p_msg => 'SQL - FETCH header_cur'
186170 ,p_level => C_LEVEL_STATEMENT
186171 ,p_module => l_log_module);
186172 END IF;
186173 --
186174 LOOP
186175 FETCH header_cur BULK COLLECT INTO
186176 l_array_entity_id
186177 , l_array_legal_entity_id
186178 , l_array_entity_code
186179 , l_array_transaction_num
186180 , l_array_event_id
186181 , l_array_class_code
186182 , l_array_event_type
186183 , l_array_event_number
186184 , l_array_event_date
186185 , l_array_transaction_date
186186 , l_array_reference_num_1
186187 , l_array_reference_num_2
186188 , l_array_reference_num_3
186189 , l_array_reference_num_4
186190 , l_array_reference_char_1
186191 , l_array_reference_char_2
186192 , l_array_reference_char_3
186193 , l_array_reference_char_4
186194 , l_array_reference_date_1
186195 , l_array_reference_date_2
186196 , l_array_reference_date_3
186197 , l_array_reference_date_4
186198 , l_array_event_created_by
186199 , l_array_budgetary_control_flag
186200 , l_array_source_12
186201 , l_array_source_12_meaning
186202 , l_array_source_38
186203 , l_array_source_38_meaning
186204 LIMIT l_rows;
186205 --
186206 IF (C_LEVEL_EVENT >= g_log_level) THEN
186207 trace
186208 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
186209 ,p_level => C_LEVEL_EVENT
186210 ,p_module => l_log_module);
186211 END IF;
186212 --
186213 EXIT WHEN l_array_entity_id.COUNT = 0;
186214
186215 -- initialize arrays
186216 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
186217 XLA_AE_LINES_PKG.g_rec_lines := NULL;
186218
186219 --
186220 -- Bug 4458708
186221 --
186222 XLA_AE_LINES_PKG.g_LineNumber := 0;
186223
186224
186225 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
186226 g_last_hdr_idx := l_array_event_id.LAST;
186227 --
186228 -- loop for the headers. Each iteration is for each header extract row
186229 -- fetched in header cursor
186230 --
186231 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
186232
186233 --
186234 -- set event info as cache for other routines to refer event attributes
186235 --
186236 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
186237 (p_application_id => p_application_id
186238 ,p_primary_ledger_id => p_primary_ledger_id
186239 ,p_base_ledger_id => p_base_ledger_id
186240 ,p_target_ledger_id => p_target_ledger_id
186241 ,p_entity_id => l_array_entity_id(hdr_idx)
186242 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
186243 ,p_entity_code => l_array_entity_code(hdr_idx)
186244 ,p_transaction_num => l_array_transaction_num(hdr_idx)
186245 ,p_event_id => l_array_event_id(hdr_idx)
186246 ,p_event_class_code => l_array_class_code(hdr_idx)
186247 ,p_event_type_code => l_array_event_type(hdr_idx)
186248 ,p_event_number => l_array_event_number(hdr_idx)
186249 ,p_event_date => l_array_event_date(hdr_idx)
186250 ,p_transaction_date => l_array_transaction_date(hdr_idx)
186251 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
186252 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
186253 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
186254 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
186255 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
186256 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
186257 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
186258 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
186259 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
186260 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
186261 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
186262 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
186263 ,p_event_created_by => l_array_event_created_by(hdr_idx)
186264 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
186265
186266 --
186267 -- set the status of entry to C_VALID (0)
186268 --
186269 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
186270
186271 --
186272 -- initialize a row for ae header
186273 --
186274 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
186275
186276 l_event_id := l_array_event_id(hdr_idx);
186277
186278 --
186279 -- storing the hdr_idx for event. May be used by line cursor.
186280 --
186281 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
186282
186283 --
186284 -- store sources from header extract. This can be improved to
186285 -- store only those sources from header extract that may be used in lines
186286 --
186287
186288 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
186289 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
186290 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
186291 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
186292
186293 --
186294 -- initilaize the status of ae headers for diffrent balance types
186295 -- the status is initialised to C_NOT_CREATED (2)
186296 --
186297 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186298 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186299 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
186300
186301 --
186302 -- call api to validate and store accounting attributes for header
186303 --
186304
186305 ------------------------------------------------------------
186306 -- Accrual Reversal : to get date for Standard Source (NONE)
186307 ------------------------------------------------------------
186308 l_acc_rev_gl_date_source := NULL;
186309
186310 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
186311 l_rec_acct_attrs.array_date_value(1) :=
186312 xla_ae_sources_pkg.GetSystemSourceDate(
186313 p_source_code => 'XLA_REFERENCE_DATE_1'
186314 , p_source_type_code => 'Y'
186315 , p_source_application_id => 602
186316 );
186317 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
186318 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
186319
186320
186321 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
186322
186323 XLA_AE_HEADER_PKG.SetJeCategoryName;
186324
186325 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
186326 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
186327 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
186328 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
186329 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
186330
186331
186332 -- No header level analytical criteria
186333
186334 --
186335 --accounting attribute enhancement, bug 3612931
186336 --
186337 l_trx_reversal_source := SUBSTR(NULL, 1,30);
186338
186339 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
186340 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
186341
186342 xla_accounting_err_pkg.build_message
186343 (p_appli_s_name => 'XLA'
186344 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
186345 ,p_token_1 => 'ACCT_ATTR_NAME'
186346 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
186347 ,p_token_2 => 'PRODUCT_NAME'
186348 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
186349 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
186350 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
186351 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
186352
186353 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
186354 --
186355 -- following sets the accounting attributes needed to reverse
186356 -- accounting for a distributeion
186357 --
186358 xla_ae_lines_pkg.SetTrxReversalAttrs
186359 (p_event_id => l_event_id
186360 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
186361 ,p_trx_reversal_source => l_trx_reversal_source);
186362
186363 END IF;
186364
186365
186366 ----------------------------------------------------------------
186367 -- 4262811 - update the header statuses to invalid in need be
186368 ----------------------------------------------------------------
186369 --
186370 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
186371
186372
186373 -----------------------------------------------
186374 -- No accrual reversal for the event class/type
186375 -----------------------------------------------
186376 ----------------------------------------------------------------
186377
186378 --
186379 -- this ends the header loop iteration for one bulk fetch
186380 --
186381 END LOOP;
186382
186383 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
186384 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
186385
186386 --
186387 -- insert dummy rows into lines gt table that were created due to
186388 -- transaction reversals
186389 --
186390 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
186391 l_result := XLA_AE_LINES_PKG.InsertLines;
186392 END IF;
186393
186394 --
186395 -- reset the temp_line_num for each set of events fetched from header
186396 -- cursor rather than doing it for each new event in line cursor
186397 -- Bug 3939231
186398 --
186399 xla_ae_lines_pkg.g_temp_line_num := 0;
186400
186401
186402
186403 --
186404 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
186405 --
186406 --
186407 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186408
186409 trace
186410 (p_msg => 'SQL - FETCH line_cur'
186411 ,p_level => C_LEVEL_STATEMENT
186412 ,p_module => l_log_module);
186413
186414 END IF;
186415 --
186416 --
186417 LOOP
186418 --
186419 FETCH line_cur BULK COLLECT INTO
186420 l_array_entity_id
186421 , l_array_legal_entity_id
186422 , l_array_entity_code
186423 , l_array_transaction_num
186424 , l_array_event_id
186425 , l_array_class_code
186426 , l_array_event_type
186427 , l_array_event_number
186428 , l_array_event_date
186429 , l_array_transaction_date
186430 , l_array_reference_num_1
186431 , l_array_reference_num_2
186432 , l_array_reference_num_3
186433 , l_array_reference_num_4
186434 , l_array_reference_char_1
186435 , l_array_reference_char_2
186436 , l_array_reference_char_3
186437 , l_array_reference_char_4
186438 , l_array_reference_date_1
186439 , l_array_reference_date_2
186440 , l_array_reference_date_3
186441 , l_array_reference_date_4
186442 , l_array_event_created_by
186443 , l_array_budgetary_control_flag
186444 , l_array_extract_line_num
186445 , l_array_source_4
186446 , l_array_source_11
186447 , l_array_source_15
186448 , l_array_source_18
186449 , l_array_source_19
186450 , l_array_source_20
186451 , l_array_source_21
186452 , l_array_source_22
186453 , l_array_source_24
186454 LIMIT l_rows;
186455
186456 --
186457 IF (C_LEVEL_EVENT >= g_log_level) THEN
186458 trace
186459 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
186460 ,p_level => C_LEVEL_EVENT
186461 ,p_module => l_log_module);
186462 END IF;
186463 --
186464 EXIT WHEN l_array_entity_id.count = 0;
186465
186466 XLA_AE_LINES_PKG.g_rec_lines := null;
186467
186468 --
186469 -- Bug 4458708
186470 --
186471 XLA_AE_LINES_PKG.g_LineNumber := 0;
186472 --
186473 --
186474
186475 FOR Idx IN 1..l_array_event_id.count LOOP
186476 --
186477 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
186478 --
186479 l_event_id := l_array_event_id(idx); -- 5648433
186480
186481 --
186482 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186483 --
186484
186485 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
186486 (g_array_event(l_event_id).array_value_num('header_index'))
186487 ,'N'
186488 ) <> 'Y'
186489 THEN
186490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186491 trace
186492 (p_msg => 'Trancaction revesal option is not Y '
186493 ,p_level => C_LEVEL_STATEMENT
186494 ,p_module => l_log_module);
186495 END IF;
186496
186497 --
186498 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
186499 --
186500 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
186501 --
186502 -- set event info as cache for other routines to refer event attributes
186503 --
186504
186505 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
186506 l_previous_event_id := l_event_id;
186507
186508 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
186509 (p_application_id => p_application_id
186510 ,p_primary_ledger_id => p_primary_ledger_id
186511 ,p_base_ledger_id => p_base_ledger_id
186512 ,p_target_ledger_id => p_target_ledger_id
186513 ,p_entity_id => l_array_entity_id(Idx)
186514 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
186515 ,p_entity_code => l_array_entity_code(Idx)
186516 ,p_transaction_num => l_array_transaction_num(Idx)
186517 ,p_event_id => l_array_event_id(Idx)
186518 ,p_event_class_code => l_array_class_code(Idx)
186519 ,p_event_type_code => l_array_event_type(Idx)
186520 ,p_event_number => l_array_event_number(Idx)
186521 ,p_event_date => l_array_event_date(Idx)
186522 ,p_transaction_date => l_array_transaction_date(Idx)
186523 ,p_reference_num_1 => l_array_reference_num_1(Idx)
186524 ,p_reference_num_2 => l_array_reference_num_2(Idx)
186525 ,p_reference_num_3 => l_array_reference_num_3(Idx)
186526 ,p_reference_num_4 => l_array_reference_num_4(Idx)
186527 ,p_reference_char_1 => l_array_reference_char_1(Idx)
186528 ,p_reference_char_2 => l_array_reference_char_2(Idx)
186529 ,p_reference_char_3 => l_array_reference_char_3(Idx)
186530 ,p_reference_char_4 => l_array_reference_char_4(Idx)
186531 ,p_reference_date_1 => l_array_reference_date_1(Idx)
186532 ,p_reference_date_2 => l_array_reference_date_2(Idx)
186533 ,p_reference_date_3 => l_array_reference_date_3(Idx)
186534 ,p_reference_date_4 => l_array_reference_date_4(Idx)
186535 ,p_event_created_by => l_array_event_created_by(Idx)
186536 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
186537 --
186538 END IF;
186539
186540
186541
186542 --
186543 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
186544
186545 l_acct_reversal_source := SUBSTR(NULL, 1,30);
186546
186547 IF l_continue_with_lines THEN
186548 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
186549 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
186550
186551 xla_accounting_err_pkg.build_message
186552 (p_appli_s_name => 'XLA'
186553 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
186554 ,p_token_1 => 'LINE_NUMBER'
186555 ,p_value_1 => l_array_extract_line_num(Idx)
186556 ,p_token_2 => 'PRODUCT_NAME'
186557 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
186558 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
186559 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
186560 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
186561
186562 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
186563 --
186564 -- following sets the accounting attributes needed to reverse
186565 -- accounting for a distributeion
186566 --
186567
186568 --
186569 -- 5217187
186570 --
186571 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
186572 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
186573 g_array_event(l_event_id).array_value_num('header_index'));
186574 --
186575 --
186576
186577 -- No reversal code generated
186578
186579 xla_ae_lines_pkg.SetAcctReversalAttrs
186580 (p_event_id => l_event_id
186581 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
186582 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186583 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
186584 END IF;
186585
186586 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
186587 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
186588
186589 --
186590 AcctLineType_33 (
186591 p_application_id => p_application_id
186592 ,p_event_id => l_event_id
186593 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186594 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186595 ,p_actual_flag => l_actual_flag
186596 ,p_balance_type_code => l_balance_type_code
186597 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186598
186599 , p_source_4 => l_array_source_4(Idx)
186600 , p_source_11 => l_array_source_11(Idx)
186601 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186602 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186603 , p_source_15 => l_array_source_15(Idx)
186604 , p_source_18 => l_array_source_18(Idx)
186605 , p_source_19 => l_array_source_19(Idx)
186606 , p_source_20 => l_array_source_20(Idx)
186607 , p_source_21 => l_array_source_21(Idx)
186608 , p_source_22 => l_array_source_22(Idx)
186609 , p_source_24 => l_array_source_24(Idx)
186610 );
186611 If(l_balance_type_code = 'A') THEN
186612 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186613 END IF;
186614
186615 --
186616
186617
186618 --
186619 AcctLineType_69 (
186620 p_application_id => p_application_id
186621 ,p_event_id => l_event_id
186622 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186623 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186624 ,p_actual_flag => l_actual_flag
186625 ,p_balance_type_code => l_balance_type_code
186626 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186627
186628 , p_source_4 => l_array_source_4(Idx)
186629 , p_source_11 => l_array_source_11(Idx)
186630 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186631 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186632 , p_source_15 => l_array_source_15(Idx)
186633 , p_source_18 => l_array_source_18(Idx)
186634 , p_source_19 => l_array_source_19(Idx)
186635 , p_source_20 => l_array_source_20(Idx)
186636 , p_source_21 => l_array_source_21(Idx)
186637 , p_source_22 => l_array_source_22(Idx)
186638 , p_source_24 => l_array_source_24(Idx)
186639 );
186640 If(l_balance_type_code = 'A') THEN
186641 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186642 END IF;
186643
186644 --
186645
186646
186647 --
186648 AcctLineType_84 (
186649 p_application_id => p_application_id
186650 ,p_event_id => l_event_id
186651 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186652 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186653 ,p_actual_flag => l_actual_flag
186654 ,p_balance_type_code => l_balance_type_code
186655 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186656
186657 , p_source_4 => l_array_source_4(Idx)
186658 , p_source_11 => l_array_source_11(Idx)
186659 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186660 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186661 , p_source_15 => l_array_source_15(Idx)
186662 , p_source_18 => l_array_source_18(Idx)
186663 , p_source_19 => l_array_source_19(Idx)
186664 , p_source_20 => l_array_source_20(Idx)
186665 , p_source_21 => l_array_source_21(Idx)
186666 , p_source_22 => l_array_source_22(Idx)
186667 , p_source_24 => l_array_source_24(Idx)
186668 );
186669 If(l_balance_type_code = 'A') THEN
186670 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186671 END IF;
186672
186673 --
186674
186675
186676 --
186677 AcctLineType_102 (
186678 p_application_id => p_application_id
186679 ,p_event_id => l_event_id
186680 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186681 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186682 ,p_actual_flag => l_actual_flag
186683 ,p_balance_type_code => l_balance_type_code
186684 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186685
186686 , p_source_4 => l_array_source_4(Idx)
186687 , p_source_11 => l_array_source_11(Idx)
186688 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186689 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186690 , p_source_15 => l_array_source_15(Idx)
186691 , p_source_18 => l_array_source_18(Idx)
186692 , p_source_19 => l_array_source_19(Idx)
186693 , p_source_20 => l_array_source_20(Idx)
186694 , p_source_21 => l_array_source_21(Idx)
186695 , p_source_22 => l_array_source_22(Idx)
186696 , p_source_24 => l_array_source_24(Idx)
186697 );
186698 If(l_balance_type_code = 'A') THEN
186699 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186700 END IF;
186701
186702 --
186703
186704
186705 --
186706 AcctLineType_113 (
186707 p_application_id => p_application_id
186708 ,p_event_id => l_event_id
186709 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186710 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186711 ,p_actual_flag => l_actual_flag
186712 ,p_balance_type_code => l_balance_type_code
186713 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186714
186715 , p_source_4 => l_array_source_4(Idx)
186716 , p_source_11 => l_array_source_11(Idx)
186717 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186718 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186719 , p_source_15 => l_array_source_15(Idx)
186720 , p_source_18 => l_array_source_18(Idx)
186721 , p_source_19 => l_array_source_19(Idx)
186722 , p_source_20 => l_array_source_20(Idx)
186723 , p_source_21 => l_array_source_21(Idx)
186724 , p_source_22 => l_array_source_22(Idx)
186725 , p_source_24 => l_array_source_24(Idx)
186726 );
186727 If(l_balance_type_code = 'A') THEN
186728 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186729 END IF;
186730
186731 --
186732
186733
186734 --
186735 AcctLineType_158 (
186736 p_application_id => p_application_id
186737 ,p_event_id => l_event_id
186738 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186739 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186740 ,p_actual_flag => l_actual_flag
186741 ,p_balance_type_code => l_balance_type_code
186742 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186743
186744 , p_source_4 => l_array_source_4(Idx)
186745 , p_source_11 => l_array_source_11(Idx)
186746 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186747 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186748 , p_source_15 => l_array_source_15(Idx)
186749 , p_source_18 => l_array_source_18(Idx)
186750 , p_source_19 => l_array_source_19(Idx)
186751 , p_source_20 => l_array_source_20(Idx)
186752 , p_source_21 => l_array_source_21(Idx)
186753 , p_source_22 => l_array_source_22(Idx)
186754 , p_source_24 => l_array_source_24(Idx)
186755 );
186756 If(l_balance_type_code = 'A') THEN
186757 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186758 END IF;
186759
186760 --
186761
186762
186763 --
186764 AcctLineType_174 (
186765 p_application_id => p_application_id
186766 ,p_event_id => l_event_id
186767 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186768 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186769 ,p_actual_flag => l_actual_flag
186770 ,p_balance_type_code => l_balance_type_code
186771 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186772
186773 , p_source_4 => l_array_source_4(Idx)
186774 , p_source_11 => l_array_source_11(Idx)
186775 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186776 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186777 , p_source_15 => l_array_source_15(Idx)
186778 , p_source_18 => l_array_source_18(Idx)
186779 , p_source_19 => l_array_source_19(Idx)
186780 , p_source_20 => l_array_source_20(Idx)
186781 , p_source_21 => l_array_source_21(Idx)
186782 , p_source_22 => l_array_source_22(Idx)
186783 , p_source_24 => l_array_source_24(Idx)
186784 );
186785 If(l_balance_type_code = 'A') THEN
186786 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186787 END IF;
186788
186789 --
186790
186791
186792 --
186793 AcctLineType_204 (
186794 p_application_id => p_application_id
186795 ,p_event_id => l_event_id
186796 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186797 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186798 ,p_actual_flag => l_actual_flag
186799 ,p_balance_type_code => l_balance_type_code
186800 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186801
186802 , p_source_4 => l_array_source_4(Idx)
186803 , p_source_11 => l_array_source_11(Idx)
186804 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186805 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186806 , p_source_15 => l_array_source_15(Idx)
186807 , p_source_18 => l_array_source_18(Idx)
186808 , p_source_19 => l_array_source_19(Idx)
186809 , p_source_20 => l_array_source_20(Idx)
186810 , p_source_21 => l_array_source_21(Idx)
186811 , p_source_22 => l_array_source_22(Idx)
186812 , p_source_24 => l_array_source_24(Idx)
186813 );
186814 If(l_balance_type_code = 'A') THEN
186815 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186816 END IF;
186817
186818 --
186819
186820
186821 --
186822 AcctLineType_219 (
186823 p_application_id => p_application_id
186824 ,p_event_id => l_event_id
186825 ,p_calculate_acctd_flag => l_calculate_acctd_flag
186826 ,p_calculate_g_l_flag => l_calculate_g_l_flag
186827 ,p_actual_flag => l_actual_flag
186828 ,p_balance_type_code => l_balance_type_code
186829 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
186830
186831 , p_source_4 => l_array_source_4(Idx)
186832 , p_source_11 => l_array_source_11(Idx)
186833 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
186834 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
186835 , p_source_15 => l_array_source_15(Idx)
186836 , p_source_18 => l_array_source_18(Idx)
186837 , p_source_19 => l_array_source_19(Idx)
186838 , p_source_20 => l_array_source_20(Idx)
186839 , p_source_21 => l_array_source_21(Idx)
186840 , p_source_22 => l_array_source_22(Idx)
186841 , p_source_24 => l_array_source_24(Idx)
186842 );
186843 If(l_balance_type_code = 'A') THEN
186844 l_actual_gain_loss_ref := l_gain_or_loss_ref;
186845 END IF;
186846
186847 --
186848
186849 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
186850 -- or secondary ledger that has different currency with primary
186851 -- or alc that is calculated by sla
186852 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
186853 (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'))
186854
186855 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
186856 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
186857 AND (l_actual_flag = 'A')) THEN
186858 XLA_AE_LINES_PKG.CreateGainOrLossLines(
186859 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
186860 ,p_application_id => p_application_id
186861 ,p_amb_context_code => 'DEFAULT'
186862 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
186863 ,p_event_class_code => C_EVENT_CLASS_CODE
186864 ,p_event_type_code => C_EVENT_TYPE_CODE
186865
186866 ,p_gain_ccid => -1
186867 ,p_loss_ccid => -1
186868
186869 ,p_actual_flag => l_actual_flag
186870 ,p_enc_flag => null
186871 ,p_actual_g_l_ref => l_actual_gain_loss_ref
186872 ,p_enc_g_l_ref => null
186873 );
186874 END IF;
186875 END IF;
186876 END IF;
186877
186878 ELSE
186879 --
186880 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
186881 --
186882 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186883 trace
186884 (p_msg => 'Trancaction revesal option is Y'
186885 ,p_level => C_LEVEL_STATEMENT
186886 ,p_module => l_log_module);
186887 END IF;
186888 END IF;
186889
186890 END LOOP;
186891 l_result := XLA_AE_LINES_PKG.InsertLines ;
186892 end loop;
186893 close line_cur;
186894
186895
186896 --
186897 -- insert headers into xla_ae_headers_gt table
186898 --
186899 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
186900
186901 -- insert into errors table here.
186902
186903 END LOOP;
186904
186905 --
186906 -- 4865292
186907 --
186908 -- Compare g_hdr_extract_count with event count in
186909 -- CreateHeadersAndLines.
186910 --
186911 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
186912
186913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
186914 trace (p_msg => '# rows extracted from header extract objects '
186915 || ' (running total): '
186916 || g_hdr_extract_count
186917 ,p_level => C_LEVEL_STATEMENT
186918 ,p_module => l_log_module);
186919 END IF;
186920
186921 CLOSE header_cur;
186922 --
186923
186924 --
186925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
186926 trace
186927 (p_msg => 'END of EventType_291'
186928 ,p_level => C_LEVEL_PROCEDURE
186929 ,p_module => l_log_module);
186930 END IF;
186931 --
186932 RETURN l_result;
186933 EXCEPTION
186934 WHEN xla_exceptions_pkg.application_exception THEN
186935
186936 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186937
186938
186939 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
186940
186941 RAISE;
186942
186943 WHEN NO_DATA_FOUND THEN
186944
186945 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
186946 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
186947
186948 FOR header_record IN header_cur
186949 LOOP
186950 l_array_header_events(header_record.event_id) := header_record.event_id;
186951 END LOOP;
186952
186953 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
186954 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
186955
186956 fnd_file.put_line(fnd_file.LOG, ' ');
186957 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186958 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
186959 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
186960
186961 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
186962 LOOP
186963 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
186964 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
186965 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
186966 END IF;
186967 END LOOP;
186968
186969 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
186970 fnd_file.put_line(fnd_file.LOG, ' ');
186971
186972
186973 xla_exceptions_pkg.raise_message
186974 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_291');
186975
186976
186977 WHEN OTHERS THEN
186978 xla_exceptions_pkg.raise_message
186979 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_291');
186980 END EventType_291;
186981 --
186982
186983 ---------------------------------------
186984 --
186985 -- PRIVATE PROCEDURE
186986 -- insert_sources_292
186987 --
186988 ----------------------------------------
186989 --
186990 PROCEDURE insert_sources_292(
186991 p_target_ledger_id IN NUMBER
186992 , p_language IN VARCHAR2
186993 , p_sla_ledger_id IN NUMBER
186994 , p_pad_start_date IN DATE
186995 , p_pad_end_date IN DATE
186996 )
186997 IS
186998
186999 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP';
187000 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
187001 p_apps_owner VARCHAR2(30);
187002 l_log_module VARCHAR2(240);
187003 BEGIN
187004 IF g_log_enabled THEN
187005 l_log_module := C_DEFAULT_MODULE||'.insert_sources_292';
187006 END IF;
187007 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187008
187009 trace
187010 (p_msg => 'BEGIN of insert_sources_292'
187011 ,p_level => C_LEVEL_PROCEDURE
187012 ,p_module => l_log_module);
187013
187014 END IF;
187015
187016 -- select APPS owner
187017 SELECT oracle_username
187018 INTO p_apps_owner
187019 FROM fnd_oracle_userid
187020 WHERE read_only_flag = 'U'
187021 ;
187022
187023 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187024 trace
187025 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
187026 ' - p_language = '||p_language||
187027 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
187028 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
187029 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
187030 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
187031 ,p_level => C_LEVEL_STATEMENT
187032 ,p_module => l_log_module);
187033 END IF;
187034
187035
187036 --
187037 INSERT INTO xla_diag_sources --hdr1
187038 (
187039 event_id
187040 , ledger_id
187041 , sla_ledger_id
187042 , description_language
187043 , object_name
187044 , object_type_code
187045 , line_number
187046 , source_application_id
187047 , source_type_code
187048 , source_code
187049 , source_value
187050 , source_meaning
187051 , created_by
187052 , creation_date
187053 , last_update_date
187054 , last_updated_by
187055 , last_update_login
187056 , program_update_date
187057 , program_application_id
187058 , program_id
187059 , request_id
187060 )
187061 SELECT
187062 event_id
187063 , p_target_ledger_id
187064 , p_sla_ledger_id
187065 , p_language
187066 , object_name
187067 , object_type_code
187068 , line_number
187069 , source_application_id
187070 , source_type_code
187071 , source_code
187072 , SUBSTR(source_value ,1,1996)
187073 , SUBSTR(source_meaning,1,200)
187074 , xla_environment_pkg.g_Usr_Id
187075 , TRUNC(SYSDATE)
187076 , TRUNC(SYSDATE)
187077 , xla_environment_pkg.g_Usr_Id
187078 , xla_environment_pkg.g_Login_Id
187079 , TRUNC(SYSDATE)
187080 , xla_environment_pkg.g_Prog_Appl_Id
187081 , xla_environment_pkg.g_Prog_Id
187082 , xla_environment_pkg.g_Req_Id
187083 FROM (
187084 SELECT xet.event_id event_id
187085 , 0 line_number
187086 , CASE r
187087 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
187088 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
187089
187090 ELSE null
187091 END object_name
187092 , CASE r
187093 WHEN 1 THEN 'HEADER'
187094 WHEN 2 THEN 'HEADER'
187095
187096 ELSE null
187097 END object_type_code
187098 , CASE r
187099 WHEN 1 THEN '707'
187100 WHEN 2 THEN '707'
187101
187102 ELSE null
187103 END source_application_id
187104 , 'S' source_type_code
187105 , CASE r
187106 WHEN 1 THEN 'DISTRIBUTION_TYPE'
187107 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
187108
187109 ELSE null
187110 END source_code
187111 , CASE r
187112 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
187113 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
187114
187115 ELSE null
187116 END source_value
187117 , CASE r
187118 WHEN 1 THEN fvl12.meaning
187119 WHEN 2 THEN fvl38.meaning
187120
187121 ELSE null
187122 END source_meaning
187123 FROM xla_events_gt xet
187124 , CST_XLA_INV_HEADERS_V h1
187125 , fnd_lookup_values fvl12
187126 , fnd_lookup_values fvl38
187127 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
187128 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
187129 AND xet.event_type_code = C_EVENT_TYPE_CODE
187130 AND h1.event_id = xet.event_id
187131 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
187132 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
187133 AND fvl12.view_application_id(+) = 700
187134 AND fvl12.language(+) = USERENV('LANG')
187135 AND fvl38.lookup_type(+) = 'YES_NO'
187136 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
187137 AND fvl38.view_application_id(+) = 0
187138 AND fvl38.language(+) = USERENV('LANG')
187139
187140 )
187141 ;
187142 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187143
187144 trace
187145 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
187146 ,p_level => C_LEVEL_STATEMENT
187147 ,p_module => l_log_module);
187148
187149 END IF;
187150 --
187151
187152
187153
187154 --
187155 INSERT INTO xla_diag_sources --line1
187156 (
187157 event_id
187158 , ledger_id
187159 , sla_ledger_id
187160 , description_language
187161 , object_name
187162 , object_type_code
187163 , line_number
187164 , source_application_id
187165 , source_type_code
187166 , source_code
187167 , source_value
187168 , source_meaning
187169 , created_by
187170 , creation_date
187171 , last_update_date
187172 , last_updated_by
187173 , last_update_login
187174 , program_update_date
187175 , program_application_id
187176 , program_id
187177 , request_id
187178 )
187179 SELECT event_id
187180 , p_target_ledger_id
187181 , p_sla_ledger_id
187182 , p_language
187183 , object_name
187184 , object_type_code
187185 , line_number
187186 , source_application_id
187187 , source_type_code
187188 , source_code
187189 , SUBSTR(source_value,1,1996)
187190 , SUBSTR(source_meaning,1,200)
187191 , xla_environment_pkg.g_Usr_Id
187192 , TRUNC(SYSDATE)
187193 , TRUNC(SYSDATE)
187194 , xla_environment_pkg.g_Usr_Id
187195 , xla_environment_pkg.g_Login_Id
187196 , TRUNC(SYSDATE)
187197 , xla_environment_pkg.g_Prog_Appl_Id
187198 , xla_environment_pkg.g_Prog_Id
187199 , xla_environment_pkg.g_Req_Id
187200 FROM (
187201 SELECT xet.event_id event_id
187202 , l2.line_number line_number
187203 , CASE r
187204 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
187205 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
187206 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
187207 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
187208 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
187209 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
187210 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
187211 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
187212 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
187213
187214 ELSE null
187215 END object_name
187216 , CASE r
187217 WHEN 1 THEN 'LINE'
187218 WHEN 2 THEN 'LINE'
187219 WHEN 3 THEN 'LINE'
187220 WHEN 4 THEN 'LINE'
187221 WHEN 5 THEN 'LINE'
187222 WHEN 6 THEN 'LINE'
187223 WHEN 7 THEN 'LINE'
187224 WHEN 8 THEN 'LINE'
187225 WHEN 9 THEN 'LINE'
187226
187227 ELSE null
187228 END object_type_code
187229 , CASE r
187230 WHEN 1 THEN '707'
187231 WHEN 2 THEN '707'
187232 WHEN 3 THEN '707'
187233 WHEN 4 THEN '707'
187234 WHEN 5 THEN '707'
187235 WHEN 6 THEN '707'
187236 WHEN 7 THEN '707'
187237 WHEN 8 THEN '707'
187238 WHEN 9 THEN '707'
187239
187240 ELSE null
187241 END source_application_id
187242 , 'S' source_type_code
187243 , CASE r
187244 WHEN 1 THEN 'CODE_COMBINATION_ID'
187245 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
187246 WHEN 3 THEN 'CURRENCY_CODE'
187247 WHEN 4 THEN 'ENTERED_AMOUNT'
187248 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
187249 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
187250 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
187251 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
187252 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
187253
187254 ELSE null
187255 END source_code
187256 , CASE r
187257 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
187258 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
187259 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
187260 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
187261 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
187262 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
187263 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
187264 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
187265 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
187266
187267 ELSE null
187268 END source_value
187269 , null source_meaning
187270 FROM xla_events_gt xet
187271 , CST_XLA_INV_LINES_V l2
187272 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
187273 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
187274 AND xet.event_type_code = C_EVENT_TYPE_CODE
187275 AND l2.event_id = xet.event_id
187276
187277 )
187278 ;
187279 --
187280 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187281
187282 trace
187283 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
187284 ,p_level => C_LEVEL_STATEMENT
187285 ,p_module => l_log_module);
187286
187287 END IF;
187288
187289
187290 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187291 trace
187292 (p_msg => 'END of insert_sources_292'
187293 ,p_level => C_LEVEL_PROCEDURE
187294 ,p_module => l_log_module);
187295 END IF;
187296 EXCEPTION
187297 WHEN xla_exceptions_pkg.application_exception THEN
187298 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
187299 trace
187300 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
187301 ,p_level => C_LEVEL_EXCEPTION
187302 ,p_module => l_log_module);
187303 END IF;
187304 RAISE;
187305 WHEN OTHERS THEN
187306 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
187307 trace
187308 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
187309 ,p_level => C_LEVEL_EXCEPTION
187310 ,p_module => l_log_module);
187311 END IF;
187312 xla_exceptions_pkg.raise_message
187313 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_292');
187314 END insert_sources_292;
187315 --
187316
187317 ---------------------------------------
187318 --
187319 -- PRIVATE FUNCTION
187320 -- EventType_292
187321 --
187322 ----------------------------------------
187323 --
187324 FUNCTION EventType_292
187325 (p_application_id IN NUMBER
187326 ,p_base_ledger_id IN NUMBER
187327 ,p_target_ledger_id IN NUMBER
187328 ,p_language IN VARCHAR2
187329 ,p_currency_code IN VARCHAR2
187330 ,p_sla_ledger_id IN NUMBER
187331 ,p_pad_start_date IN DATE
187332 ,p_pad_end_date IN DATE
187333 ,p_primary_ledger_id IN NUMBER)
187334 RETURN BOOLEAN IS
187335 --
187336 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP';
187337 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
187338
187339 l_calculate_acctd_flag VARCHAR2(1) :='Y';
187340 l_calculate_g_l_flag VARCHAR2(1) :='Y';
187341 --
187342 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187343 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187344 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
187345 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
187346 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187347 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
187348 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
187349 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187350 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187351 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187352 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187353 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187354 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187355 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
187356 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
187357 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
187358 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
187359 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
187360 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187361 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187362 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187363 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
187364 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
187365 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
187366 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
187367 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
187368
187369 l_event_id NUMBER;
187370 l_previous_event_id NUMBER;
187371 l_first_event_id NUMBER;
187372 l_last_event_id NUMBER;
187373
187374 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
187375 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
187376 --
187377 --
187378 l_result BOOLEAN := TRUE;
187379 l_rows NUMBER := 1000;
187380 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Shipment';
187381 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
187382 l_description VARCHAR2(4000);
187383 l_transaction_reversal NUMBER;
187384 l_ae_header_id NUMBER;
187385 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
187386 l_log_module VARCHAR2(240);
187387 --
187388 l_acct_reversal_source VARCHAR2(30);
187389 l_trx_reversal_source VARCHAR2(30);
187390
187391 l_continue_with_lines BOOLEAN := TRUE;
187392 --
187393 l_acc_rev_gl_date_source DATE; -- 4262811
187394 --
187395 type t_array_event_id is table of number index by binary_integer;
187396
187397 l_rec_array_event t_rec_array_event;
187398 l_null_rec_array_event t_rec_array_event;
187399 l_array_ae_header_id xla_number_array_type;
187400 l_actual_flag VARCHAR2(1) := NULL;
187401 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
187402 l_balance_type_code VARCHAR2(1) :=NULL;
187403 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
187404
187405 --
187406 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
187407 --
187408
187409 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
187410 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
187411
187412 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
187413 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
187414 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
187415 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
187416 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
187417 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
187418 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
187419 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
187420 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
187421
187422 l_array_source_12 t_array_source_12;
187423 l_array_source_12_meaning t_array_lookup_meaning;
187424 l_array_source_38 t_array_source_38;
187425 l_array_source_38_meaning t_array_lookup_meaning;
187426
187427 l_array_source_4 t_array_source_4;
187428 l_array_source_11 t_array_source_11;
187429 l_array_source_15 t_array_source_15;
187430 l_array_source_18 t_array_source_18;
187431 l_array_source_19 t_array_source_19;
187432 l_array_source_20 t_array_source_20;
187433 l_array_source_21 t_array_source_21;
187434 l_array_source_22 t_array_source_22;
187435 l_array_source_24 t_array_source_24;
187436
187437 --
187438 CURSOR header_cur
187439 IS
187440 SELECT /*+ leading(xet) cardinality(xet,1) */
187441 -- Event Type Code: UDIR_INTERORG_SHIP
187442 -- Event Class Code: USER_DEFINE
187443 xet.entity_id
187444 , xet.legal_entity_id
187445 , xet.entity_code
187446 , xet.transaction_number
187447 , xet.event_id
187448 , xet.event_class_code
187449 , xet.event_type_code
187450 , xet.event_number
187451 , xet.event_date
187452 , xet.transaction_date
187453 , xet.reference_num_1
187454 , xet.reference_num_2
187455 , xet.reference_num_3
187456 , xet.reference_num_4
187457 , xet.reference_char_1
187458 , xet.reference_char_2
187459 , xet.reference_char_3
187460 , xet.reference_char_4
187461 , xet.reference_date_1
187462 , xet.reference_date_2
187463 , xet.reference_date_3
187464 , xet.reference_date_4
187465 , xet.event_created_by
187466 , xet.budgetary_control_flag
187467 , h1.DISTRIBUTION_TYPE source_12
187468 , fvl12.meaning source_12_meaning
187469 , h1.TRANSFER_TO_GL_INDICATOR source_38
187470 , fvl38.meaning source_38_meaning
187471 FROM xla_events_gt xet
187472 , CST_XLA_INV_HEADERS_V h1
187473 , fnd_lookup_values fvl12
187474 , fnd_lookup_values fvl38
187475 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
187476 and xet.event_type_code = C_EVENT_TYPE_CODE
187477 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
187478 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
187479 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
187480 AND fvl12.view_application_id(+) = 700
187481 AND fvl12.language(+) = USERENV('LANG')
187482 AND fvl38.lookup_type(+) = 'YES_NO'
187483 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
187484 AND fvl38.view_application_id(+) = 0
187485 AND fvl38.language(+) = USERENV('LANG')
187486
187487 ORDER BY event_id
187488 ;
187489
187490
187491 --
187492 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
187493 IS
187494 SELECT /*+ leading(xet) cardinality(xet,1) */
187495 -- Event Type Code: UDIR_INTERORG_SHIP
187496 -- Event Class Code: USER_DEFINE
187497 xet.entity_id
187498 ,xet.legal_entity_id
187499 ,xet.entity_code
187500 ,xet.transaction_number
187501 ,xet.event_id
187502 ,xet.event_class_code
187503 ,xet.event_type_code
187504 ,xet.event_number
187505 ,xet.event_date
187506 ,xet.transaction_date
187507 ,xet.reference_num_1
187508 ,xet.reference_num_2
187509 ,xet.reference_num_3
187510 ,xet.reference_num_4
187511 ,xet.reference_char_1
187512 ,xet.reference_char_2
187513 ,xet.reference_char_3
187514 ,xet.reference_char_4
187515 ,xet.reference_date_1
187516 ,xet.reference_date_2
187517 ,xet.reference_date_3
187518 ,xet.reference_date_4
187519 ,xet.event_created_by
187520 ,xet.budgetary_control_flag , l2.LINE_NUMBER
187521 , l2.CODE_COMBINATION_ID source_4
187522 , l2.DISTRIBUTION_IDENTIFIER source_11
187523 , l2.CURRENCY_CODE source_15
187524 , l2.ENTERED_AMOUNT source_18
187525 , l2.CURRENCY_CONVERSION_DATE source_19
187526 , l2.CURRENCY_CONVERSION_RATE source_20
187527 , l2.CURRENCY_CONVERSION_TYPE source_21
187528 , l2.ACCOUNTED_AMOUNT source_22
187529 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
187530 FROM xla_events_gt xet
187531 , CST_XLA_INV_LINES_V l2
187532 WHERE xet.event_id between x_first_event_id and x_last_event_id
187533 and xet.event_date between p_pad_start_date and p_pad_end_date
187534 and xet.event_type_code = C_EVENT_TYPE_CODE
187535 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
187536 ;
187537
187538 --
187539 BEGIN
187540 IF g_log_enabled THEN
187541 l_log_module := C_DEFAULT_MODULE||'.EventType_292';
187542 END IF;
187543 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
187544 trace
187545 (p_msg => 'BEGIN of EventType_292'
187546 ,p_level => C_LEVEL_PROCEDURE
187547 ,p_module => l_log_module);
187548 END IF;
187549
187550 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187551 trace
187552 (p_msg => 'p_application_id = '||p_application_id||
187553 ' - p_base_ledger_id = '||p_base_ledger_id||
187554 ' - p_target_ledger_id = '||p_target_ledger_id||
187555 ' - p_language = '||p_language||
187556 ' - p_currency_code = '||p_currency_code||
187557 ' - p_sla_ledger_id = '||p_sla_ledger_id
187558 ,p_level => C_LEVEL_STATEMENT
187559 ,p_module => l_log_module);
187560 END IF;
187561 --
187562 -- initialze arrays
187563 --
187564 g_array_event.DELETE;
187565 l_rec_array_event := l_null_rec_array_event;
187566 --
187567 --------------------------------------
187568 -- 4262811 Initialze MPA Line Number
187569 --------------------------------------
187570 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
187571
187572 --
187573
187574 --
187575 OPEN header_cur;
187576 --
187577 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187578 trace
187579 (p_msg => 'SQL - FETCH header_cur'
187580 ,p_level => C_LEVEL_STATEMENT
187581 ,p_module => l_log_module);
187582 END IF;
187583 --
187584 LOOP
187585 FETCH header_cur BULK COLLECT INTO
187586 l_array_entity_id
187587 , l_array_legal_entity_id
187588 , l_array_entity_code
187589 , l_array_transaction_num
187590 , l_array_event_id
187591 , l_array_class_code
187592 , l_array_event_type
187593 , l_array_event_number
187594 , l_array_event_date
187595 , l_array_transaction_date
187596 , l_array_reference_num_1
187597 , l_array_reference_num_2
187598 , l_array_reference_num_3
187599 , l_array_reference_num_4
187600 , l_array_reference_char_1
187601 , l_array_reference_char_2
187602 , l_array_reference_char_3
187603 , l_array_reference_char_4
187604 , l_array_reference_date_1
187605 , l_array_reference_date_2
187606 , l_array_reference_date_3
187607 , l_array_reference_date_4
187608 , l_array_event_created_by
187609 , l_array_budgetary_control_flag
187610 , l_array_source_12
187611 , l_array_source_12_meaning
187612 , l_array_source_38
187613 , l_array_source_38_meaning
187614 LIMIT l_rows;
187615 --
187616 IF (C_LEVEL_EVENT >= g_log_level) THEN
187617 trace
187618 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
187619 ,p_level => C_LEVEL_EVENT
187620 ,p_module => l_log_module);
187621 END IF;
187622 --
187623 EXIT WHEN l_array_entity_id.COUNT = 0;
187624
187625 -- initialize arrays
187626 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
187627 XLA_AE_LINES_PKG.g_rec_lines := NULL;
187628
187629 --
187630 -- Bug 4458708
187631 --
187632 XLA_AE_LINES_PKG.g_LineNumber := 0;
187633
187634
187635 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
187636 g_last_hdr_idx := l_array_event_id.LAST;
187637 --
187638 -- loop for the headers. Each iteration is for each header extract row
187639 -- fetched in header cursor
187640 --
187641 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
187642
187643 --
187644 -- set event info as cache for other routines to refer event attributes
187645 --
187646 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187647 (p_application_id => p_application_id
187648 ,p_primary_ledger_id => p_primary_ledger_id
187649 ,p_base_ledger_id => p_base_ledger_id
187650 ,p_target_ledger_id => p_target_ledger_id
187651 ,p_entity_id => l_array_entity_id(hdr_idx)
187652 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
187653 ,p_entity_code => l_array_entity_code(hdr_idx)
187654 ,p_transaction_num => l_array_transaction_num(hdr_idx)
187655 ,p_event_id => l_array_event_id(hdr_idx)
187656 ,p_event_class_code => l_array_class_code(hdr_idx)
187657 ,p_event_type_code => l_array_event_type(hdr_idx)
187658 ,p_event_number => l_array_event_number(hdr_idx)
187659 ,p_event_date => l_array_event_date(hdr_idx)
187660 ,p_transaction_date => l_array_transaction_date(hdr_idx)
187661 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
187662 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
187663 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
187664 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
187665 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
187666 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
187667 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
187668 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
187669 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
187670 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
187671 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
187672 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
187673 ,p_event_created_by => l_array_event_created_by(hdr_idx)
187674 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
187675
187676 --
187677 -- set the status of entry to C_VALID (0)
187678 --
187679 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187680
187681 --
187682 -- initialize a row for ae header
187683 --
187684 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
187685
187686 l_event_id := l_array_event_id(hdr_idx);
187687
187688 --
187689 -- storing the hdr_idx for event. May be used by line cursor.
187690 --
187691 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
187692
187693 --
187694 -- store sources from header extract. This can be improved to
187695 -- store only those sources from header extract that may be used in lines
187696 --
187697
187698 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
187699 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
187700 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
187701 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
187702
187703 --
187704 -- initilaize the status of ae headers for diffrent balance types
187705 -- the status is initialised to C_NOT_CREATED (2)
187706 --
187707 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187708 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187709 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
187710
187711 --
187712 -- call api to validate and store accounting attributes for header
187713 --
187714
187715 ------------------------------------------------------------
187716 -- Accrual Reversal : to get date for Standard Source (NONE)
187717 ------------------------------------------------------------
187718 l_acc_rev_gl_date_source := NULL;
187719
187720 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
187721 l_rec_acct_attrs.array_date_value(1) :=
187722 xla_ae_sources_pkg.GetSystemSourceDate(
187723 p_source_code => 'XLA_REFERENCE_DATE_1'
187724 , p_source_type_code => 'Y'
187725 , p_source_application_id => 602
187726 );
187727 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
187728 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
187729
187730
187731 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
187732
187733 XLA_AE_HEADER_PKG.SetJeCategoryName;
187734
187735 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
187736 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
187737 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
187738 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
187739 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
187740
187741
187742 -- No header level analytical criteria
187743
187744 --
187745 --accounting attribute enhancement, bug 3612931
187746 --
187747 l_trx_reversal_source := SUBSTR(NULL, 1,30);
187748
187749 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
187750 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
187751
187752 xla_accounting_err_pkg.build_message
187753 (p_appli_s_name => 'XLA'
187754 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
187755 ,p_token_1 => 'ACCT_ATTR_NAME'
187756 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
187757 ,p_token_2 => 'PRODUCT_NAME'
187758 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187759 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187760 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
187761 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187762
187763 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
187764 --
187765 -- following sets the accounting attributes needed to reverse
187766 -- accounting for a distributeion
187767 --
187768 xla_ae_lines_pkg.SetTrxReversalAttrs
187769 (p_event_id => l_event_id
187770 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
187771 ,p_trx_reversal_source => l_trx_reversal_source);
187772
187773 END IF;
187774
187775
187776 ----------------------------------------------------------------
187777 -- 4262811 - update the header statuses to invalid in need be
187778 ----------------------------------------------------------------
187779 --
187780 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
187781
187782
187783 -----------------------------------------------
187784 -- No accrual reversal for the event class/type
187785 -----------------------------------------------
187786 ----------------------------------------------------------------
187787
187788 --
187789 -- this ends the header loop iteration for one bulk fetch
187790 --
187791 END LOOP;
187792
187793 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
187794 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
187795
187796 --
187797 -- insert dummy rows into lines gt table that were created due to
187798 -- transaction reversals
187799 --
187800 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
187801 l_result := XLA_AE_LINES_PKG.InsertLines;
187802 END IF;
187803
187804 --
187805 -- reset the temp_line_num for each set of events fetched from header
187806 -- cursor rather than doing it for each new event in line cursor
187807 -- Bug 3939231
187808 --
187809 xla_ae_lines_pkg.g_temp_line_num := 0;
187810
187811
187812
187813 --
187814 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
187815 --
187816 --
187817 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187818
187819 trace
187820 (p_msg => 'SQL - FETCH line_cur'
187821 ,p_level => C_LEVEL_STATEMENT
187822 ,p_module => l_log_module);
187823
187824 END IF;
187825 --
187826 --
187827 LOOP
187828 --
187829 FETCH line_cur BULK COLLECT INTO
187830 l_array_entity_id
187831 , l_array_legal_entity_id
187832 , l_array_entity_code
187833 , l_array_transaction_num
187834 , l_array_event_id
187835 , l_array_class_code
187836 , l_array_event_type
187837 , l_array_event_number
187838 , l_array_event_date
187839 , l_array_transaction_date
187840 , l_array_reference_num_1
187841 , l_array_reference_num_2
187842 , l_array_reference_num_3
187843 , l_array_reference_num_4
187844 , l_array_reference_char_1
187845 , l_array_reference_char_2
187846 , l_array_reference_char_3
187847 , l_array_reference_char_4
187848 , l_array_reference_date_1
187849 , l_array_reference_date_2
187850 , l_array_reference_date_3
187851 , l_array_reference_date_4
187852 , l_array_event_created_by
187853 , l_array_budgetary_control_flag
187854 , l_array_extract_line_num
187855 , l_array_source_4
187856 , l_array_source_11
187857 , l_array_source_15
187858 , l_array_source_18
187859 , l_array_source_19
187860 , l_array_source_20
187861 , l_array_source_21
187862 , l_array_source_22
187863 , l_array_source_24
187864 LIMIT l_rows;
187865
187866 --
187867 IF (C_LEVEL_EVENT >= g_log_level) THEN
187868 trace
187869 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
187870 ,p_level => C_LEVEL_EVENT
187871 ,p_module => l_log_module);
187872 END IF;
187873 --
187874 EXIT WHEN l_array_entity_id.count = 0;
187875
187876 XLA_AE_LINES_PKG.g_rec_lines := null;
187877
187878 --
187879 -- Bug 4458708
187880 --
187881 XLA_AE_LINES_PKG.g_LineNumber := 0;
187882 --
187883 --
187884
187885 FOR Idx IN 1..l_array_event_id.count LOOP
187886 --
187887 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
187888 --
187889 l_event_id := l_array_event_id(idx); -- 5648433
187890
187891 --
187892 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
187893 --
187894
187895 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
187896 (g_array_event(l_event_id).array_value_num('header_index'))
187897 ,'N'
187898 ) <> 'Y'
187899 THEN
187900 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
187901 trace
187902 (p_msg => 'Trancaction revesal option is not Y '
187903 ,p_level => C_LEVEL_STATEMENT
187904 ,p_module => l_log_module);
187905 END IF;
187906
187907 --
187908 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
187909 --
187910 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
187911 --
187912 -- set event info as cache for other routines to refer event attributes
187913 --
187914
187915 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
187916 l_previous_event_id := l_event_id;
187917
187918 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
187919 (p_application_id => p_application_id
187920 ,p_primary_ledger_id => p_primary_ledger_id
187921 ,p_base_ledger_id => p_base_ledger_id
187922 ,p_target_ledger_id => p_target_ledger_id
187923 ,p_entity_id => l_array_entity_id(Idx)
187924 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
187925 ,p_entity_code => l_array_entity_code(Idx)
187926 ,p_transaction_num => l_array_transaction_num(Idx)
187927 ,p_event_id => l_array_event_id(Idx)
187928 ,p_event_class_code => l_array_class_code(Idx)
187929 ,p_event_type_code => l_array_event_type(Idx)
187930 ,p_event_number => l_array_event_number(Idx)
187931 ,p_event_date => l_array_event_date(Idx)
187932 ,p_transaction_date => l_array_transaction_date(Idx)
187933 ,p_reference_num_1 => l_array_reference_num_1(Idx)
187934 ,p_reference_num_2 => l_array_reference_num_2(Idx)
187935 ,p_reference_num_3 => l_array_reference_num_3(Idx)
187936 ,p_reference_num_4 => l_array_reference_num_4(Idx)
187937 ,p_reference_char_1 => l_array_reference_char_1(Idx)
187938 ,p_reference_char_2 => l_array_reference_char_2(Idx)
187939 ,p_reference_char_3 => l_array_reference_char_3(Idx)
187940 ,p_reference_char_4 => l_array_reference_char_4(Idx)
187941 ,p_reference_date_1 => l_array_reference_date_1(Idx)
187942 ,p_reference_date_2 => l_array_reference_date_2(Idx)
187943 ,p_reference_date_3 => l_array_reference_date_3(Idx)
187944 ,p_reference_date_4 => l_array_reference_date_4(Idx)
187945 ,p_event_created_by => l_array_event_created_by(Idx)
187946 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
187947 --
187948 END IF;
187949
187950
187951
187952 --
187953 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
187954
187955 l_acct_reversal_source := SUBSTR(NULL, 1,30);
187956
187957 IF l_continue_with_lines THEN
187958 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
187959 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
187960
187961 xla_accounting_err_pkg.build_message
187962 (p_appli_s_name => 'XLA'
187963 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
187964 ,p_token_1 => 'LINE_NUMBER'
187965 ,p_value_1 => l_array_extract_line_num(Idx)
187966 ,p_token_2 => 'PRODUCT_NAME'
187967 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
187968 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
187969 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
187970 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
187971
187972 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
187973 --
187974 -- following sets the accounting attributes needed to reverse
187975 -- accounting for a distributeion
187976 --
187977
187978 --
187979 -- 5217187
187980 --
187981 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
187982 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
187983 g_array_event(l_event_id).array_value_num('header_index'));
187984 --
187985 --
187986
187987 -- No reversal code generated
187988
187989 xla_ae_lines_pkg.SetAcctReversalAttrs
187990 (p_event_id => l_event_id
187991 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
187992 ,p_calculate_acctd_flag => l_calculate_acctd_flag
187993 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
187994 END IF;
187995
187996 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
187997 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
187998
187999 --
188000 AcctLineType_71 (
188001 p_application_id => p_application_id
188002 ,p_event_id => l_event_id
188003 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188004 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188005 ,p_actual_flag => l_actual_flag
188006 ,p_balance_type_code => l_balance_type_code
188007 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188008
188009 , p_source_4 => l_array_source_4(Idx)
188010 , p_source_11 => l_array_source_11(Idx)
188011 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188012 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188013 , p_source_15 => l_array_source_15(Idx)
188014 , p_source_18 => l_array_source_18(Idx)
188015 , p_source_19 => l_array_source_19(Idx)
188016 , p_source_20 => l_array_source_20(Idx)
188017 , p_source_21 => l_array_source_21(Idx)
188018 , p_source_22 => l_array_source_22(Idx)
188019 , p_source_24 => l_array_source_24(Idx)
188020 );
188021 If(l_balance_type_code = 'A') THEN
188022 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188023 END IF;
188024
188025 --
188026
188027
188028 --
188029 AcctLineType_78 (
188030 p_application_id => p_application_id
188031 ,p_event_id => l_event_id
188032 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188033 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188034 ,p_actual_flag => l_actual_flag
188035 ,p_balance_type_code => l_balance_type_code
188036 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188037
188038 , p_source_4 => l_array_source_4(Idx)
188039 , p_source_11 => l_array_source_11(Idx)
188040 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188041 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188042 , p_source_15 => l_array_source_15(Idx)
188043 , p_source_18 => l_array_source_18(Idx)
188044 , p_source_19 => l_array_source_19(Idx)
188045 , p_source_20 => l_array_source_20(Idx)
188046 , p_source_21 => l_array_source_21(Idx)
188047 , p_source_22 => l_array_source_22(Idx)
188048 , p_source_24 => l_array_source_24(Idx)
188049 );
188050 If(l_balance_type_code = 'A') THEN
188051 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188052 END IF;
188053
188054 --
188055
188056
188057 --
188058 AcctLineType_91 (
188059 p_application_id => p_application_id
188060 ,p_event_id => l_event_id
188061 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188062 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188063 ,p_actual_flag => l_actual_flag
188064 ,p_balance_type_code => l_balance_type_code
188065 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188066
188067 , p_source_4 => l_array_source_4(Idx)
188068 , p_source_11 => l_array_source_11(Idx)
188069 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188070 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188071 , p_source_15 => l_array_source_15(Idx)
188072 , p_source_18 => l_array_source_18(Idx)
188073 , p_source_19 => l_array_source_19(Idx)
188074 , p_source_20 => l_array_source_20(Idx)
188075 , p_source_21 => l_array_source_21(Idx)
188076 , p_source_22 => l_array_source_22(Idx)
188077 , p_source_24 => l_array_source_24(Idx)
188078 );
188079 If(l_balance_type_code = 'A') THEN
188080 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188081 END IF;
188082
188083 --
188084
188085
188086 --
188087 AcctLineType_106 (
188088 p_application_id => p_application_id
188089 ,p_event_id => l_event_id
188090 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188091 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188092 ,p_actual_flag => l_actual_flag
188093 ,p_balance_type_code => l_balance_type_code
188094 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188095
188096 , p_source_4 => l_array_source_4(Idx)
188097 , p_source_11 => l_array_source_11(Idx)
188098 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188099 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188100 , p_source_15 => l_array_source_15(Idx)
188101 , p_source_18 => l_array_source_18(Idx)
188102 , p_source_19 => l_array_source_19(Idx)
188103 , p_source_20 => l_array_source_20(Idx)
188104 , p_source_21 => l_array_source_21(Idx)
188105 , p_source_22 => l_array_source_22(Idx)
188106 , p_source_24 => l_array_source_24(Idx)
188107 );
188108 If(l_balance_type_code = 'A') THEN
188109 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188110 END IF;
188111
188112 --
188113
188114
188115 --
188116 AcctLineType_111 (
188117 p_application_id => p_application_id
188118 ,p_event_id => l_event_id
188119 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188120 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188121 ,p_actual_flag => l_actual_flag
188122 ,p_balance_type_code => l_balance_type_code
188123 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188124
188125 , p_source_4 => l_array_source_4(Idx)
188126 , p_source_11 => l_array_source_11(Idx)
188127 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188128 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188129 , p_source_15 => l_array_source_15(Idx)
188130 , p_source_18 => l_array_source_18(Idx)
188131 , p_source_19 => l_array_source_19(Idx)
188132 , p_source_20 => l_array_source_20(Idx)
188133 , p_source_21 => l_array_source_21(Idx)
188134 , p_source_22 => l_array_source_22(Idx)
188135 , p_source_24 => l_array_source_24(Idx)
188136 );
188137 If(l_balance_type_code = 'A') THEN
188138 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188139 END IF;
188140
188141 --
188142
188143
188144 --
188145 AcctLineType_154 (
188146 p_application_id => p_application_id
188147 ,p_event_id => l_event_id
188148 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188149 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188150 ,p_actual_flag => l_actual_flag
188151 ,p_balance_type_code => l_balance_type_code
188152 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188153
188154 , p_source_4 => l_array_source_4(Idx)
188155 , p_source_11 => l_array_source_11(Idx)
188156 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188157 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188158 , p_source_15 => l_array_source_15(Idx)
188159 , p_source_18 => l_array_source_18(Idx)
188160 , p_source_19 => l_array_source_19(Idx)
188161 , p_source_20 => l_array_source_20(Idx)
188162 , p_source_21 => l_array_source_21(Idx)
188163 , p_source_22 => l_array_source_22(Idx)
188164 , p_source_24 => l_array_source_24(Idx)
188165 );
188166 If(l_balance_type_code = 'A') THEN
188167 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188168 END IF;
188169
188170 --
188171
188172
188173 --
188174 AcctLineType_178 (
188175 p_application_id => p_application_id
188176 ,p_event_id => l_event_id
188177 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188178 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188179 ,p_actual_flag => l_actual_flag
188180 ,p_balance_type_code => l_balance_type_code
188181 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188182
188183 , p_source_4 => l_array_source_4(Idx)
188184 , p_source_11 => l_array_source_11(Idx)
188185 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188186 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188187 , p_source_15 => l_array_source_15(Idx)
188188 , p_source_18 => l_array_source_18(Idx)
188189 , p_source_19 => l_array_source_19(Idx)
188190 , p_source_20 => l_array_source_20(Idx)
188191 , p_source_21 => l_array_source_21(Idx)
188192 , p_source_22 => l_array_source_22(Idx)
188193 , p_source_24 => l_array_source_24(Idx)
188194 );
188195 If(l_balance_type_code = 'A') THEN
188196 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188197 END IF;
188198
188199 --
188200
188201
188202 --
188203 AcctLineType_194 (
188204 p_application_id => p_application_id
188205 ,p_event_id => l_event_id
188206 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188207 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188208 ,p_actual_flag => l_actual_flag
188209 ,p_balance_type_code => l_balance_type_code
188210 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188211
188212 , p_source_4 => l_array_source_4(Idx)
188213 , p_source_11 => l_array_source_11(Idx)
188214 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188215 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188216 , p_source_15 => l_array_source_15(Idx)
188217 , p_source_18 => l_array_source_18(Idx)
188218 , p_source_19 => l_array_source_19(Idx)
188219 , p_source_20 => l_array_source_20(Idx)
188220 , p_source_21 => l_array_source_21(Idx)
188221 , p_source_22 => l_array_source_22(Idx)
188222 , p_source_24 => l_array_source_24(Idx)
188223 );
188224 If(l_balance_type_code = 'A') THEN
188225 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188226 END IF;
188227
188228 --
188229
188230
188231 --
188232 AcctLineType_229 (
188233 p_application_id => p_application_id
188234 ,p_event_id => l_event_id
188235 ,p_calculate_acctd_flag => l_calculate_acctd_flag
188236 ,p_calculate_g_l_flag => l_calculate_g_l_flag
188237 ,p_actual_flag => l_actual_flag
188238 ,p_balance_type_code => l_balance_type_code
188239 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
188240
188241 , p_source_4 => l_array_source_4(Idx)
188242 , p_source_11 => l_array_source_11(Idx)
188243 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
188244 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
188245 , p_source_15 => l_array_source_15(Idx)
188246 , p_source_18 => l_array_source_18(Idx)
188247 , p_source_19 => l_array_source_19(Idx)
188248 , p_source_20 => l_array_source_20(Idx)
188249 , p_source_21 => l_array_source_21(Idx)
188250 , p_source_22 => l_array_source_22(Idx)
188251 , p_source_24 => l_array_source_24(Idx)
188252 );
188253 If(l_balance_type_code = 'A') THEN
188254 l_actual_gain_loss_ref := l_gain_or_loss_ref;
188255 END IF;
188256
188257 --
188258
188259 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
188260 -- or secondary ledger that has different currency with primary
188261 -- or alc that is calculated by sla
188262 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
188263 (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'))
188264
188265 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
188266 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
188267 AND (l_actual_flag = 'A')) THEN
188268 XLA_AE_LINES_PKG.CreateGainOrLossLines(
188269 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
188270 ,p_application_id => p_application_id
188271 ,p_amb_context_code => 'DEFAULT'
188272 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
188273 ,p_event_class_code => C_EVENT_CLASS_CODE
188274 ,p_event_type_code => C_EVENT_TYPE_CODE
188275
188276 ,p_gain_ccid => -1
188277 ,p_loss_ccid => -1
188278
188279 ,p_actual_flag => l_actual_flag
188280 ,p_enc_flag => null
188281 ,p_actual_g_l_ref => l_actual_gain_loss_ref
188282 ,p_enc_g_l_ref => null
188283 );
188284 END IF;
188285 END IF;
188286 END IF;
188287
188288 ELSE
188289 --
188290 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
188291 --
188292 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188293 trace
188294 (p_msg => 'Trancaction revesal option is Y'
188295 ,p_level => C_LEVEL_STATEMENT
188296 ,p_module => l_log_module);
188297 END IF;
188298 END IF;
188299
188300 END LOOP;
188301 l_result := XLA_AE_LINES_PKG.InsertLines ;
188302 end loop;
188303 close line_cur;
188304
188305
188306 --
188307 -- insert headers into xla_ae_headers_gt table
188308 --
188309 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
188310
188311 -- insert into errors table here.
188312
188313 END LOOP;
188314
188315 --
188316 -- 4865292
188317 --
188318 -- Compare g_hdr_extract_count with event count in
188319 -- CreateHeadersAndLines.
188320 --
188321 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
188322
188323 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188324 trace (p_msg => '# rows extracted from header extract objects '
188325 || ' (running total): '
188326 || g_hdr_extract_count
188327 ,p_level => C_LEVEL_STATEMENT
188328 ,p_module => l_log_module);
188329 END IF;
188330
188331 CLOSE header_cur;
188332 --
188333
188334 --
188335 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188336 trace
188337 (p_msg => 'END of EventType_292'
188338 ,p_level => C_LEVEL_PROCEDURE
188339 ,p_module => l_log_module);
188340 END IF;
188341 --
188342 RETURN l_result;
188343 EXCEPTION
188344 WHEN xla_exceptions_pkg.application_exception THEN
188345
188346 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
188347
188348
188349 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
188350
188351 RAISE;
188352
188353 WHEN NO_DATA_FOUND THEN
188354
188355 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
188356 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
188357
188358 FOR header_record IN header_cur
188359 LOOP
188360 l_array_header_events(header_record.event_id) := header_record.event_id;
188361 END LOOP;
188362
188363 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
188364 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
188365
188366 fnd_file.put_line(fnd_file.LOG, ' ');
188367 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
188368 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
188369 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
188370
188371 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
188372 LOOP
188373 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
188374 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
188375 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
188376 END IF;
188377 END LOOP;
188378
188379 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
188380 fnd_file.put_line(fnd_file.LOG, ' ');
188381
188382
188383 xla_exceptions_pkg.raise_message
188384 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_292');
188385
188386
188387 WHEN OTHERS THEN
188388 xla_exceptions_pkg.raise_message
188389 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_292');
188390 END EventType_292;
188391 --
188392
188393 ---------------------------------------
188394 --
188395 -- PRIVATE PROCEDURE
188396 -- insert_sources_293
188397 --
188398 ----------------------------------------
188399 --
188400 PROCEDURE insert_sources_293(
188401 p_target_ledger_id IN NUMBER
188402 , p_language IN VARCHAR2
188403 , p_sla_ledger_id IN NUMBER
188404 , p_pad_start_date IN DATE
188405 , p_pad_end_date IN DATE
188406 )
188407 IS
188408
188409 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP_NO_TP';
188410 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
188411 p_apps_owner VARCHAR2(30);
188412 l_log_module VARCHAR2(240);
188413 BEGIN
188414 IF g_log_enabled THEN
188415 l_log_module := C_DEFAULT_MODULE||'.insert_sources_293';
188416 END IF;
188417 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188418
188419 trace
188420 (p_msg => 'BEGIN of insert_sources_293'
188421 ,p_level => C_LEVEL_PROCEDURE
188422 ,p_module => l_log_module);
188423
188424 END IF;
188425
188426 -- select APPS owner
188427 SELECT oracle_username
188428 INTO p_apps_owner
188429 FROM fnd_oracle_userid
188430 WHERE read_only_flag = 'U'
188431 ;
188432
188433 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188434 trace
188435 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
188436 ' - p_language = '||p_language||
188437 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
188438 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
188439 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
188440 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
188441 ,p_level => C_LEVEL_STATEMENT
188442 ,p_module => l_log_module);
188443 END IF;
188444
188445
188446 --
188447 INSERT INTO xla_diag_sources --hdr1
188448 (
188449 event_id
188450 , ledger_id
188451 , sla_ledger_id
188452 , description_language
188453 , object_name
188454 , object_type_code
188455 , line_number
188456 , source_application_id
188457 , source_type_code
188458 , source_code
188459 , source_value
188460 , source_meaning
188461 , created_by
188462 , creation_date
188463 , last_update_date
188464 , last_updated_by
188465 , last_update_login
188466 , program_update_date
188467 , program_application_id
188468 , program_id
188469 , request_id
188470 )
188471 SELECT
188472 event_id
188473 , p_target_ledger_id
188474 , p_sla_ledger_id
188475 , p_language
188476 , object_name
188477 , object_type_code
188478 , line_number
188479 , source_application_id
188480 , source_type_code
188481 , source_code
188482 , SUBSTR(source_value ,1,1996)
188483 , SUBSTR(source_meaning,1,200)
188484 , xla_environment_pkg.g_Usr_Id
188485 , TRUNC(SYSDATE)
188486 , TRUNC(SYSDATE)
188487 , xla_environment_pkg.g_Usr_Id
188488 , xla_environment_pkg.g_Login_Id
188489 , TRUNC(SYSDATE)
188490 , xla_environment_pkg.g_Prog_Appl_Id
188491 , xla_environment_pkg.g_Prog_Id
188492 , xla_environment_pkg.g_Req_Id
188493 FROM (
188494 SELECT xet.event_id event_id
188495 , 0 line_number
188496 , CASE r
188497 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
188498 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
188499
188500 ELSE null
188501 END object_name
188502 , CASE r
188503 WHEN 1 THEN 'HEADER'
188504 WHEN 2 THEN 'HEADER'
188505
188506 ELSE null
188507 END object_type_code
188508 , CASE r
188509 WHEN 1 THEN '707'
188510 WHEN 2 THEN '707'
188511
188512 ELSE null
188513 END source_application_id
188514 , 'S' source_type_code
188515 , CASE r
188516 WHEN 1 THEN 'DISTRIBUTION_TYPE'
188517 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
188518
188519 ELSE null
188520 END source_code
188521 , CASE r
188522 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
188523 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
188524
188525 ELSE null
188526 END source_value
188527 , CASE r
188528 WHEN 1 THEN fvl12.meaning
188529 WHEN 2 THEN fvl38.meaning
188530
188531 ELSE null
188532 END source_meaning
188533 FROM xla_events_gt xet
188534 , CST_XLA_INV_HEADERS_V h1
188535 , fnd_lookup_values fvl12
188536 , fnd_lookup_values fvl38
188537 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
188538 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
188539 AND xet.event_type_code = C_EVENT_TYPE_CODE
188540 AND h1.event_id = xet.event_id
188541 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
188542 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
188543 AND fvl12.view_application_id(+) = 700
188544 AND fvl12.language(+) = USERENV('LANG')
188545 AND fvl38.lookup_type(+) = 'YES_NO'
188546 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
188547 AND fvl38.view_application_id(+) = 0
188548 AND fvl38.language(+) = USERENV('LANG')
188549
188550 )
188551 ;
188552 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188553
188554 trace
188555 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
188556 ,p_level => C_LEVEL_STATEMENT
188557 ,p_module => l_log_module);
188558
188559 END IF;
188560 --
188561
188562
188563
188564 --
188565 INSERT INTO xla_diag_sources --line1
188566 (
188567 event_id
188568 , ledger_id
188569 , sla_ledger_id
188570 , description_language
188571 , object_name
188572 , object_type_code
188573 , line_number
188574 , source_application_id
188575 , source_type_code
188576 , source_code
188577 , source_value
188578 , source_meaning
188579 , created_by
188580 , creation_date
188581 , last_update_date
188582 , last_updated_by
188583 , last_update_login
188584 , program_update_date
188585 , program_application_id
188586 , program_id
188587 , request_id
188588 )
188589 SELECT event_id
188590 , p_target_ledger_id
188591 , p_sla_ledger_id
188592 , p_language
188593 , object_name
188594 , object_type_code
188595 , line_number
188596 , source_application_id
188597 , source_type_code
188598 , source_code
188599 , SUBSTR(source_value,1,1996)
188600 , SUBSTR(source_meaning,1,200)
188601 , xla_environment_pkg.g_Usr_Id
188602 , TRUNC(SYSDATE)
188603 , TRUNC(SYSDATE)
188604 , xla_environment_pkg.g_Usr_Id
188605 , xla_environment_pkg.g_Login_Id
188606 , TRUNC(SYSDATE)
188607 , xla_environment_pkg.g_Prog_Appl_Id
188608 , xla_environment_pkg.g_Prog_Id
188609 , xla_environment_pkg.g_Req_Id
188610 FROM (
188611 SELECT xet.event_id event_id
188612 , l2.line_number line_number
188613 , CASE r
188614 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
188615 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
188616 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
188617 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
188618 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
188619 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
188620 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
188621 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
188622 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
188623
188624 ELSE null
188625 END object_name
188626 , CASE r
188627 WHEN 1 THEN 'LINE'
188628 WHEN 2 THEN 'LINE'
188629 WHEN 3 THEN 'LINE'
188630 WHEN 4 THEN 'LINE'
188631 WHEN 5 THEN 'LINE'
188632 WHEN 6 THEN 'LINE'
188633 WHEN 7 THEN 'LINE'
188634 WHEN 8 THEN 'LINE'
188635 WHEN 9 THEN 'LINE'
188636
188637 ELSE null
188638 END object_type_code
188639 , CASE r
188640 WHEN 1 THEN '707'
188641 WHEN 2 THEN '707'
188642 WHEN 3 THEN '707'
188643 WHEN 4 THEN '707'
188644 WHEN 5 THEN '707'
188645 WHEN 6 THEN '707'
188646 WHEN 7 THEN '707'
188647 WHEN 8 THEN '707'
188648 WHEN 9 THEN '707'
188649
188650 ELSE null
188651 END source_application_id
188652 , 'S' source_type_code
188653 , CASE r
188654 WHEN 1 THEN 'CODE_COMBINATION_ID'
188655 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
188656 WHEN 3 THEN 'CURRENCY_CODE'
188657 WHEN 4 THEN 'ENTERED_AMOUNT'
188658 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
188659 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
188660 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
188661 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
188662 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
188663
188664 ELSE null
188665 END source_code
188666 , CASE r
188667 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
188668 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
188669 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
188670 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
188671 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
188672 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
188673 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
188674 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
188675 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
188676
188677 ELSE null
188678 END source_value
188679 , null source_meaning
188680 FROM xla_events_gt xet
188681 , CST_XLA_INV_LINES_V l2
188682 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
188683 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
188684 AND xet.event_type_code = C_EVENT_TYPE_CODE
188685 AND l2.event_id = xet.event_id
188686
188687 )
188688 ;
188689 --
188690 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188691
188692 trace
188693 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
188694 ,p_level => C_LEVEL_STATEMENT
188695 ,p_module => l_log_module);
188696
188697 END IF;
188698
188699
188700 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188701 trace
188702 (p_msg => 'END of insert_sources_293'
188703 ,p_level => C_LEVEL_PROCEDURE
188704 ,p_module => l_log_module);
188705 END IF;
188706 EXCEPTION
188707 WHEN xla_exceptions_pkg.application_exception THEN
188708 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188709 trace
188710 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188711 ,p_level => C_LEVEL_EXCEPTION
188712 ,p_module => l_log_module);
188713 END IF;
188714 RAISE;
188715 WHEN OTHERS THEN
188716 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
188717 trace
188718 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
188719 ,p_level => C_LEVEL_EXCEPTION
188720 ,p_module => l_log_module);
188721 END IF;
188722 xla_exceptions_pkg.raise_message
188723 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_293');
188724 END insert_sources_293;
188725 --
188726
188727 ---------------------------------------
188728 --
188729 -- PRIVATE FUNCTION
188730 -- EventType_293
188731 --
188732 ----------------------------------------
188733 --
188734 FUNCTION EventType_293
188735 (p_application_id IN NUMBER
188736 ,p_base_ledger_id IN NUMBER
188737 ,p_target_ledger_id IN NUMBER
188738 ,p_language IN VARCHAR2
188739 ,p_currency_code IN VARCHAR2
188740 ,p_sla_ledger_id IN NUMBER
188741 ,p_pad_start_date IN DATE
188742 ,p_pad_end_date IN DATE
188743 ,p_primary_ledger_id IN NUMBER)
188744 RETURN BOOLEAN IS
188745 --
188746 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP_NO_TP';
188747 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
188748
188749 l_calculate_acctd_flag VARCHAR2(1) :='Y';
188750 l_calculate_g_l_flag VARCHAR2(1) :='Y';
188751 --
188752 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188753 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188754 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188755 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188756 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188757 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188758 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188759 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188760 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188761 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188762 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188763 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188764 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188765 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
188766 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188767 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188768 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188769 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
188770 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188771 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188772 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188773 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
188774 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
188775 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
188776 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
188777 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
188778
188779 l_event_id NUMBER;
188780 l_previous_event_id NUMBER;
188781 l_first_event_id NUMBER;
188782 l_last_event_id NUMBER;
188783
188784 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
188785 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
188786 --
188787 --
188788 l_result BOOLEAN := TRUE;
188789 l_rows NUMBER := 1000;
188790 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Shipment, No Transfer Price';
188791 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
188792 l_description VARCHAR2(4000);
188793 l_transaction_reversal NUMBER;
188794 l_ae_header_id NUMBER;
188795 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
188796 l_log_module VARCHAR2(240);
188797 --
188798 l_acct_reversal_source VARCHAR2(30);
188799 l_trx_reversal_source VARCHAR2(30);
188800
188801 l_continue_with_lines BOOLEAN := TRUE;
188802 --
188803 l_acc_rev_gl_date_source DATE; -- 4262811
188804 --
188805 type t_array_event_id is table of number index by binary_integer;
188806
188807 l_rec_array_event t_rec_array_event;
188808 l_null_rec_array_event t_rec_array_event;
188809 l_array_ae_header_id xla_number_array_type;
188810 l_actual_flag VARCHAR2(1) := NULL;
188811 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
188812 l_balance_type_code VARCHAR2(1) :=NULL;
188813 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
188814
188815 --
188816 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
188817 --
188818
188819 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
188820 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
188821
188822 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
188823 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
188824 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
188825 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188826 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
188827 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
188828 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
188829 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
188830 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
188831
188832 l_array_source_12 t_array_source_12;
188833 l_array_source_12_meaning t_array_lookup_meaning;
188834 l_array_source_38 t_array_source_38;
188835 l_array_source_38_meaning t_array_lookup_meaning;
188836
188837 l_array_source_4 t_array_source_4;
188838 l_array_source_11 t_array_source_11;
188839 l_array_source_15 t_array_source_15;
188840 l_array_source_18 t_array_source_18;
188841 l_array_source_19 t_array_source_19;
188842 l_array_source_20 t_array_source_20;
188843 l_array_source_21 t_array_source_21;
188844 l_array_source_22 t_array_source_22;
188845 l_array_source_24 t_array_source_24;
188846
188847 --
188848 CURSOR header_cur
188849 IS
188850 SELECT /*+ leading(xet) cardinality(xet,1) */
188851 -- Event Type Code: UDIR_INTERORG_SHIP_NO_TP
188852 -- Event Class Code: USER_DEFINE
188853 xet.entity_id
188854 , xet.legal_entity_id
188855 , xet.entity_code
188856 , xet.transaction_number
188857 , xet.event_id
188858 , xet.event_class_code
188859 , xet.event_type_code
188860 , xet.event_number
188861 , xet.event_date
188862 , xet.transaction_date
188863 , xet.reference_num_1
188864 , xet.reference_num_2
188865 , xet.reference_num_3
188866 , xet.reference_num_4
188867 , xet.reference_char_1
188868 , xet.reference_char_2
188869 , xet.reference_char_3
188870 , xet.reference_char_4
188871 , xet.reference_date_1
188872 , xet.reference_date_2
188873 , xet.reference_date_3
188874 , xet.reference_date_4
188875 , xet.event_created_by
188876 , xet.budgetary_control_flag
188877 , h1.DISTRIBUTION_TYPE source_12
188878 , fvl12.meaning source_12_meaning
188879 , h1.TRANSFER_TO_GL_INDICATOR source_38
188880 , fvl38.meaning source_38_meaning
188881 FROM xla_events_gt xet
188882 , CST_XLA_INV_HEADERS_V h1
188883 , fnd_lookup_values fvl12
188884 , fnd_lookup_values fvl38
188885 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
188886 and xet.event_type_code = C_EVENT_TYPE_CODE
188887 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
188888 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
188889 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
188890 AND fvl12.view_application_id(+) = 700
188891 AND fvl12.language(+) = USERENV('LANG')
188892 AND fvl38.lookup_type(+) = 'YES_NO'
188893 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
188894 AND fvl38.view_application_id(+) = 0
188895 AND fvl38.language(+) = USERENV('LANG')
188896
188897 ORDER BY event_id
188898 ;
188899
188900
188901 --
188902 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
188903 IS
188904 SELECT /*+ leading(xet) cardinality(xet,1) */
188905 -- Event Type Code: UDIR_INTERORG_SHIP_NO_TP
188906 -- Event Class Code: USER_DEFINE
188907 xet.entity_id
188908 ,xet.legal_entity_id
188909 ,xet.entity_code
188910 ,xet.transaction_number
188911 ,xet.event_id
188912 ,xet.event_class_code
188913 ,xet.event_type_code
188914 ,xet.event_number
188915 ,xet.event_date
188916 ,xet.transaction_date
188917 ,xet.reference_num_1
188918 ,xet.reference_num_2
188919 ,xet.reference_num_3
188920 ,xet.reference_num_4
188921 ,xet.reference_char_1
188922 ,xet.reference_char_2
188923 ,xet.reference_char_3
188924 ,xet.reference_char_4
188925 ,xet.reference_date_1
188926 ,xet.reference_date_2
188927 ,xet.reference_date_3
188928 ,xet.reference_date_4
188929 ,xet.event_created_by
188930 ,xet.budgetary_control_flag , l2.LINE_NUMBER
188931 , l2.CODE_COMBINATION_ID source_4
188932 , l2.DISTRIBUTION_IDENTIFIER source_11
188933 , l2.CURRENCY_CODE source_15
188934 , l2.ENTERED_AMOUNT source_18
188935 , l2.CURRENCY_CONVERSION_DATE source_19
188936 , l2.CURRENCY_CONVERSION_RATE source_20
188937 , l2.CURRENCY_CONVERSION_TYPE source_21
188938 , l2.ACCOUNTED_AMOUNT source_22
188939 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
188940 FROM xla_events_gt xet
188941 , CST_XLA_INV_LINES_V l2
188942 WHERE xet.event_id between x_first_event_id and x_last_event_id
188943 and xet.event_date between p_pad_start_date and p_pad_end_date
188944 and xet.event_type_code = C_EVENT_TYPE_CODE
188945 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
188946 ;
188947
188948 --
188949 BEGIN
188950 IF g_log_enabled THEN
188951 l_log_module := C_DEFAULT_MODULE||'.EventType_293';
188952 END IF;
188953 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
188954 trace
188955 (p_msg => 'BEGIN of EventType_293'
188956 ,p_level => C_LEVEL_PROCEDURE
188957 ,p_module => l_log_module);
188958 END IF;
188959
188960 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188961 trace
188962 (p_msg => 'p_application_id = '||p_application_id||
188963 ' - p_base_ledger_id = '||p_base_ledger_id||
188964 ' - p_target_ledger_id = '||p_target_ledger_id||
188965 ' - p_language = '||p_language||
188966 ' - p_currency_code = '||p_currency_code||
188967 ' - p_sla_ledger_id = '||p_sla_ledger_id
188968 ,p_level => C_LEVEL_STATEMENT
188969 ,p_module => l_log_module);
188970 END IF;
188971 --
188972 -- initialze arrays
188973 --
188974 g_array_event.DELETE;
188975 l_rec_array_event := l_null_rec_array_event;
188976 --
188977 --------------------------------------
188978 -- 4262811 Initialze MPA Line Number
188979 --------------------------------------
188980 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
188981
188982 --
188983
188984 --
188985 OPEN header_cur;
188986 --
188987 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
188988 trace
188989 (p_msg => 'SQL - FETCH header_cur'
188990 ,p_level => C_LEVEL_STATEMENT
188991 ,p_module => l_log_module);
188992 END IF;
188993 --
188994 LOOP
188995 FETCH header_cur BULK COLLECT INTO
188996 l_array_entity_id
188997 , l_array_legal_entity_id
188998 , l_array_entity_code
188999 , l_array_transaction_num
189000 , l_array_event_id
189001 , l_array_class_code
189002 , l_array_event_type
189003 , l_array_event_number
189004 , l_array_event_date
189005 , l_array_transaction_date
189006 , l_array_reference_num_1
189007 , l_array_reference_num_2
189008 , l_array_reference_num_3
189009 , l_array_reference_num_4
189010 , l_array_reference_char_1
189011 , l_array_reference_char_2
189012 , l_array_reference_char_3
189013 , l_array_reference_char_4
189014 , l_array_reference_date_1
189015 , l_array_reference_date_2
189016 , l_array_reference_date_3
189017 , l_array_reference_date_4
189018 , l_array_event_created_by
189019 , l_array_budgetary_control_flag
189020 , l_array_source_12
189021 , l_array_source_12_meaning
189022 , l_array_source_38
189023 , l_array_source_38_meaning
189024 LIMIT l_rows;
189025 --
189026 IF (C_LEVEL_EVENT >= g_log_level) THEN
189027 trace
189028 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
189029 ,p_level => C_LEVEL_EVENT
189030 ,p_module => l_log_module);
189031 END IF;
189032 --
189033 EXIT WHEN l_array_entity_id.COUNT = 0;
189034
189035 -- initialize arrays
189036 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
189037 XLA_AE_LINES_PKG.g_rec_lines := NULL;
189038
189039 --
189040 -- Bug 4458708
189041 --
189042 XLA_AE_LINES_PKG.g_LineNumber := 0;
189043
189044
189045 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
189046 g_last_hdr_idx := l_array_event_id.LAST;
189047 --
189048 -- loop for the headers. Each iteration is for each header extract row
189049 -- fetched in header cursor
189050 --
189051 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
189052
189053 --
189054 -- set event info as cache for other routines to refer event attributes
189055 --
189056 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
189057 (p_application_id => p_application_id
189058 ,p_primary_ledger_id => p_primary_ledger_id
189059 ,p_base_ledger_id => p_base_ledger_id
189060 ,p_target_ledger_id => p_target_ledger_id
189061 ,p_entity_id => l_array_entity_id(hdr_idx)
189062 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
189063 ,p_entity_code => l_array_entity_code(hdr_idx)
189064 ,p_transaction_num => l_array_transaction_num(hdr_idx)
189065 ,p_event_id => l_array_event_id(hdr_idx)
189066 ,p_event_class_code => l_array_class_code(hdr_idx)
189067 ,p_event_type_code => l_array_event_type(hdr_idx)
189068 ,p_event_number => l_array_event_number(hdr_idx)
189069 ,p_event_date => l_array_event_date(hdr_idx)
189070 ,p_transaction_date => l_array_transaction_date(hdr_idx)
189071 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
189072 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
189073 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
189074 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
189075 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
189076 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
189077 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
189078 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
189079 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
189080 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
189081 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
189082 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
189083 ,p_event_created_by => l_array_event_created_by(hdr_idx)
189084 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
189085
189086 --
189087 -- set the status of entry to C_VALID (0)
189088 --
189089 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
189090
189091 --
189092 -- initialize a row for ae header
189093 --
189094 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
189095
189096 l_event_id := l_array_event_id(hdr_idx);
189097
189098 --
189099 -- storing the hdr_idx for event. May be used by line cursor.
189100 --
189101 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
189102
189103 --
189104 -- store sources from header extract. This can be improved to
189105 -- store only those sources from header extract that may be used in lines
189106 --
189107
189108 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
189109 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
189110 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
189111 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
189112
189113 --
189114 -- initilaize the status of ae headers for diffrent balance types
189115 -- the status is initialised to C_NOT_CREATED (2)
189116 --
189117 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189118 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189119 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
189120
189121 --
189122 -- call api to validate and store accounting attributes for header
189123 --
189124
189125 ------------------------------------------------------------
189126 -- Accrual Reversal : to get date for Standard Source (NONE)
189127 ------------------------------------------------------------
189128 l_acc_rev_gl_date_source := NULL;
189129
189130 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
189131 l_rec_acct_attrs.array_date_value(1) :=
189132 xla_ae_sources_pkg.GetSystemSourceDate(
189133 p_source_code => 'XLA_REFERENCE_DATE_1'
189134 , p_source_type_code => 'Y'
189135 , p_source_application_id => 602
189136 );
189137 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
189138 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
189139
189140
189141 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
189142
189143 XLA_AE_HEADER_PKG.SetJeCategoryName;
189144
189145 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
189146 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
189147 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
189148 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
189149 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
189150
189151
189152 -- No header level analytical criteria
189153
189154 --
189155 --accounting attribute enhancement, bug 3612931
189156 --
189157 l_trx_reversal_source := SUBSTR(NULL, 1,30);
189158
189159 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
189160 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
189161
189162 xla_accounting_err_pkg.build_message
189163 (p_appli_s_name => 'XLA'
189164 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
189165 ,p_token_1 => 'ACCT_ATTR_NAME'
189166 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
189167 ,p_token_2 => 'PRODUCT_NAME'
189168 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
189169 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
189170 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
189171 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
189172
189173 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
189174 --
189175 -- following sets the accounting attributes needed to reverse
189176 -- accounting for a distributeion
189177 --
189178 xla_ae_lines_pkg.SetTrxReversalAttrs
189179 (p_event_id => l_event_id
189180 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
189181 ,p_trx_reversal_source => l_trx_reversal_source);
189182
189183 END IF;
189184
189185
189186 ----------------------------------------------------------------
189187 -- 4262811 - update the header statuses to invalid in need be
189188 ----------------------------------------------------------------
189189 --
189190 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
189191
189192
189193 -----------------------------------------------
189194 -- No accrual reversal for the event class/type
189195 -----------------------------------------------
189196 ----------------------------------------------------------------
189197
189198 --
189199 -- this ends the header loop iteration for one bulk fetch
189200 --
189201 END LOOP;
189202
189203 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
189204 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
189205
189206 --
189207 -- insert dummy rows into lines gt table that were created due to
189208 -- transaction reversals
189209 --
189210 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
189211 l_result := XLA_AE_LINES_PKG.InsertLines;
189212 END IF;
189213
189214 --
189215 -- reset the temp_line_num for each set of events fetched from header
189216 -- cursor rather than doing it for each new event in line cursor
189217 -- Bug 3939231
189218 --
189219 xla_ae_lines_pkg.g_temp_line_num := 0;
189220
189221
189222
189223 --
189224 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
189225 --
189226 --
189227 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189228
189229 trace
189230 (p_msg => 'SQL - FETCH line_cur'
189231 ,p_level => C_LEVEL_STATEMENT
189232 ,p_module => l_log_module);
189233
189234 END IF;
189235 --
189236 --
189237 LOOP
189238 --
189239 FETCH line_cur BULK COLLECT INTO
189240 l_array_entity_id
189241 , l_array_legal_entity_id
189242 , l_array_entity_code
189243 , l_array_transaction_num
189244 , l_array_event_id
189245 , l_array_class_code
189246 , l_array_event_type
189247 , l_array_event_number
189248 , l_array_event_date
189249 , l_array_transaction_date
189250 , l_array_reference_num_1
189251 , l_array_reference_num_2
189252 , l_array_reference_num_3
189253 , l_array_reference_num_4
189254 , l_array_reference_char_1
189255 , l_array_reference_char_2
189256 , l_array_reference_char_3
189257 , l_array_reference_char_4
189258 , l_array_reference_date_1
189259 , l_array_reference_date_2
189260 , l_array_reference_date_3
189261 , l_array_reference_date_4
189262 , l_array_event_created_by
189263 , l_array_budgetary_control_flag
189264 , l_array_extract_line_num
189265 , l_array_source_4
189266 , l_array_source_11
189267 , l_array_source_15
189268 , l_array_source_18
189269 , l_array_source_19
189270 , l_array_source_20
189271 , l_array_source_21
189272 , l_array_source_22
189273 , l_array_source_24
189274 LIMIT l_rows;
189275
189276 --
189277 IF (C_LEVEL_EVENT >= g_log_level) THEN
189278 trace
189279 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
189280 ,p_level => C_LEVEL_EVENT
189281 ,p_module => l_log_module);
189282 END IF;
189283 --
189284 EXIT WHEN l_array_entity_id.count = 0;
189285
189286 XLA_AE_LINES_PKG.g_rec_lines := null;
189287
189288 --
189289 -- Bug 4458708
189290 --
189291 XLA_AE_LINES_PKG.g_LineNumber := 0;
189292 --
189293 --
189294
189295 FOR Idx IN 1..l_array_event_id.count LOOP
189296 --
189297 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
189298 --
189299 l_event_id := l_array_event_id(idx); -- 5648433
189300
189301 --
189302 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
189303 --
189304
189305 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
189306 (g_array_event(l_event_id).array_value_num('header_index'))
189307 ,'N'
189308 ) <> 'Y'
189309 THEN
189310 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189311 trace
189312 (p_msg => 'Trancaction revesal option is not Y '
189313 ,p_level => C_LEVEL_STATEMENT
189314 ,p_module => l_log_module);
189315 END IF;
189316
189317 --
189318 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
189319 --
189320 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
189321 --
189322 -- set event info as cache for other routines to refer event attributes
189323 --
189324
189325 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
189326 l_previous_event_id := l_event_id;
189327
189328 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
189329 (p_application_id => p_application_id
189330 ,p_primary_ledger_id => p_primary_ledger_id
189331 ,p_base_ledger_id => p_base_ledger_id
189332 ,p_target_ledger_id => p_target_ledger_id
189333 ,p_entity_id => l_array_entity_id(Idx)
189334 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
189335 ,p_entity_code => l_array_entity_code(Idx)
189336 ,p_transaction_num => l_array_transaction_num(Idx)
189337 ,p_event_id => l_array_event_id(Idx)
189338 ,p_event_class_code => l_array_class_code(Idx)
189339 ,p_event_type_code => l_array_event_type(Idx)
189340 ,p_event_number => l_array_event_number(Idx)
189341 ,p_event_date => l_array_event_date(Idx)
189342 ,p_transaction_date => l_array_transaction_date(Idx)
189343 ,p_reference_num_1 => l_array_reference_num_1(Idx)
189344 ,p_reference_num_2 => l_array_reference_num_2(Idx)
189345 ,p_reference_num_3 => l_array_reference_num_3(Idx)
189346 ,p_reference_num_4 => l_array_reference_num_4(Idx)
189347 ,p_reference_char_1 => l_array_reference_char_1(Idx)
189348 ,p_reference_char_2 => l_array_reference_char_2(Idx)
189349 ,p_reference_char_3 => l_array_reference_char_3(Idx)
189350 ,p_reference_char_4 => l_array_reference_char_4(Idx)
189351 ,p_reference_date_1 => l_array_reference_date_1(Idx)
189352 ,p_reference_date_2 => l_array_reference_date_2(Idx)
189353 ,p_reference_date_3 => l_array_reference_date_3(Idx)
189354 ,p_reference_date_4 => l_array_reference_date_4(Idx)
189355 ,p_event_created_by => l_array_event_created_by(Idx)
189356 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
189357 --
189358 END IF;
189359
189360
189361
189362 --
189363 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
189364
189365 l_acct_reversal_source := SUBSTR(NULL, 1,30);
189366
189367 IF l_continue_with_lines THEN
189368 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
189369 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
189370
189371 xla_accounting_err_pkg.build_message
189372 (p_appli_s_name => 'XLA'
189373 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
189374 ,p_token_1 => 'LINE_NUMBER'
189375 ,p_value_1 => l_array_extract_line_num(Idx)
189376 ,p_token_2 => 'PRODUCT_NAME'
189377 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
189378 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
189379 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
189380 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
189381
189382 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
189383 --
189384 -- following sets the accounting attributes needed to reverse
189385 -- accounting for a distributeion
189386 --
189387
189388 --
189389 -- 5217187
189390 --
189391 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
189392 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
189393 g_array_event(l_event_id).array_value_num('header_index'));
189394 --
189395 --
189396
189397 -- No reversal code generated
189398
189399 xla_ae_lines_pkg.SetAcctReversalAttrs
189400 (p_event_id => l_event_id
189401 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
189402 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189403 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
189404 END IF;
189405
189406 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
189407 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
189408
189409 --
189410 AcctLineType_64 (
189411 p_application_id => p_application_id
189412 ,p_event_id => l_event_id
189413 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189414 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189415 ,p_actual_flag => l_actual_flag
189416 ,p_balance_type_code => l_balance_type_code
189417 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189418
189419 , p_source_4 => l_array_source_4(Idx)
189420 , p_source_11 => l_array_source_11(Idx)
189421 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189422 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189423 , p_source_15 => l_array_source_15(Idx)
189424 , p_source_18 => l_array_source_18(Idx)
189425 , p_source_19 => l_array_source_19(Idx)
189426 , p_source_20 => l_array_source_20(Idx)
189427 , p_source_21 => l_array_source_21(Idx)
189428 , p_source_22 => l_array_source_22(Idx)
189429 , p_source_24 => l_array_source_24(Idx)
189430 );
189431 If(l_balance_type_code = 'A') THEN
189432 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189433 END IF;
189434
189435 --
189436
189437
189438 --
189439 AcctLineType_85 (
189440 p_application_id => p_application_id
189441 ,p_event_id => l_event_id
189442 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189443 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189444 ,p_actual_flag => l_actual_flag
189445 ,p_balance_type_code => l_balance_type_code
189446 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189447
189448 , p_source_4 => l_array_source_4(Idx)
189449 , p_source_11 => l_array_source_11(Idx)
189450 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189451 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189452 , p_source_15 => l_array_source_15(Idx)
189453 , p_source_18 => l_array_source_18(Idx)
189454 , p_source_19 => l_array_source_19(Idx)
189455 , p_source_20 => l_array_source_20(Idx)
189456 , p_source_21 => l_array_source_21(Idx)
189457 , p_source_22 => l_array_source_22(Idx)
189458 , p_source_24 => l_array_source_24(Idx)
189459 );
189460 If(l_balance_type_code = 'A') THEN
189461 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189462 END IF;
189463
189464 --
189465
189466
189467 --
189468 AcctLineType_87 (
189469 p_application_id => p_application_id
189470 ,p_event_id => l_event_id
189471 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189472 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189473 ,p_actual_flag => l_actual_flag
189474 ,p_balance_type_code => l_balance_type_code
189475 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189476
189477 , p_source_4 => l_array_source_4(Idx)
189478 , p_source_11 => l_array_source_11(Idx)
189479 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189480 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189481 , p_source_15 => l_array_source_15(Idx)
189482 , p_source_18 => l_array_source_18(Idx)
189483 , p_source_19 => l_array_source_19(Idx)
189484 , p_source_20 => l_array_source_20(Idx)
189485 , p_source_21 => l_array_source_21(Idx)
189486 , p_source_22 => l_array_source_22(Idx)
189487 , p_source_24 => l_array_source_24(Idx)
189488 );
189489 If(l_balance_type_code = 'A') THEN
189490 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189491 END IF;
189492
189493 --
189494
189495
189496 --
189497 AcctLineType_101 (
189498 p_application_id => p_application_id
189499 ,p_event_id => l_event_id
189500 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189501 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189502 ,p_actual_flag => l_actual_flag
189503 ,p_balance_type_code => l_balance_type_code
189504 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189505
189506 , p_source_4 => l_array_source_4(Idx)
189507 , p_source_11 => l_array_source_11(Idx)
189508 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189509 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189510 , p_source_15 => l_array_source_15(Idx)
189511 , p_source_18 => l_array_source_18(Idx)
189512 , p_source_19 => l_array_source_19(Idx)
189513 , p_source_20 => l_array_source_20(Idx)
189514 , p_source_21 => l_array_source_21(Idx)
189515 , p_source_22 => l_array_source_22(Idx)
189516 , p_source_24 => l_array_source_24(Idx)
189517 );
189518 If(l_balance_type_code = 'A') THEN
189519 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189520 END IF;
189521
189522 --
189523
189524
189525 --
189526 AcctLineType_114 (
189527 p_application_id => p_application_id
189528 ,p_event_id => l_event_id
189529 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189530 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189531 ,p_actual_flag => l_actual_flag
189532 ,p_balance_type_code => l_balance_type_code
189533 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189534
189535 , p_source_4 => l_array_source_4(Idx)
189536 , p_source_11 => l_array_source_11(Idx)
189537 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189538 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189539 , p_source_15 => l_array_source_15(Idx)
189540 , p_source_18 => l_array_source_18(Idx)
189541 , p_source_19 => l_array_source_19(Idx)
189542 , p_source_20 => l_array_source_20(Idx)
189543 , p_source_21 => l_array_source_21(Idx)
189544 , p_source_22 => l_array_source_22(Idx)
189545 , p_source_24 => l_array_source_24(Idx)
189546 );
189547 If(l_balance_type_code = 'A') THEN
189548 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189549 END IF;
189550
189551 --
189552
189553
189554 --
189555 AcctLineType_144 (
189556 p_application_id => p_application_id
189557 ,p_event_id => l_event_id
189558 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189559 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189560 ,p_actual_flag => l_actual_flag
189561 ,p_balance_type_code => l_balance_type_code
189562 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189563
189564 , p_source_4 => l_array_source_4(Idx)
189565 , p_source_11 => l_array_source_11(Idx)
189566 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189567 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189568 , p_source_15 => l_array_source_15(Idx)
189569 , p_source_18 => l_array_source_18(Idx)
189570 , p_source_19 => l_array_source_19(Idx)
189571 , p_source_20 => l_array_source_20(Idx)
189572 , p_source_21 => l_array_source_21(Idx)
189573 , p_source_22 => l_array_source_22(Idx)
189574 , p_source_24 => l_array_source_24(Idx)
189575 );
189576 If(l_balance_type_code = 'A') THEN
189577 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189578 END IF;
189579
189580 --
189581
189582
189583 --
189584 AcctLineType_171 (
189585 p_application_id => p_application_id
189586 ,p_event_id => l_event_id
189587 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189588 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189589 ,p_actual_flag => l_actual_flag
189590 ,p_balance_type_code => l_balance_type_code
189591 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189592
189593 , p_source_4 => l_array_source_4(Idx)
189594 , p_source_11 => l_array_source_11(Idx)
189595 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189596 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189597 , p_source_15 => l_array_source_15(Idx)
189598 , p_source_18 => l_array_source_18(Idx)
189599 , p_source_19 => l_array_source_19(Idx)
189600 , p_source_20 => l_array_source_20(Idx)
189601 , p_source_21 => l_array_source_21(Idx)
189602 , p_source_22 => l_array_source_22(Idx)
189603 , p_source_24 => l_array_source_24(Idx)
189604 );
189605 If(l_balance_type_code = 'A') THEN
189606 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189607 END IF;
189608
189609 --
189610
189611
189612 --
189613 AcctLineType_205 (
189614 p_application_id => p_application_id
189615 ,p_event_id => l_event_id
189616 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189617 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189618 ,p_actual_flag => l_actual_flag
189619 ,p_balance_type_code => l_balance_type_code
189620 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189621
189622 , p_source_4 => l_array_source_4(Idx)
189623 , p_source_11 => l_array_source_11(Idx)
189624 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189625 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189626 , p_source_15 => l_array_source_15(Idx)
189627 , p_source_18 => l_array_source_18(Idx)
189628 , p_source_19 => l_array_source_19(Idx)
189629 , p_source_20 => l_array_source_20(Idx)
189630 , p_source_21 => l_array_source_21(Idx)
189631 , p_source_22 => l_array_source_22(Idx)
189632 , p_source_24 => l_array_source_24(Idx)
189633 );
189634 If(l_balance_type_code = 'A') THEN
189635 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189636 END IF;
189637
189638 --
189639
189640
189641 --
189642 AcctLineType_228 (
189643 p_application_id => p_application_id
189644 ,p_event_id => l_event_id
189645 ,p_calculate_acctd_flag => l_calculate_acctd_flag
189646 ,p_calculate_g_l_flag => l_calculate_g_l_flag
189647 ,p_actual_flag => l_actual_flag
189648 ,p_balance_type_code => l_balance_type_code
189649 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
189650
189651 , p_source_4 => l_array_source_4(Idx)
189652 , p_source_11 => l_array_source_11(Idx)
189653 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
189654 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
189655 , p_source_15 => l_array_source_15(Idx)
189656 , p_source_18 => l_array_source_18(Idx)
189657 , p_source_19 => l_array_source_19(Idx)
189658 , p_source_20 => l_array_source_20(Idx)
189659 , p_source_21 => l_array_source_21(Idx)
189660 , p_source_22 => l_array_source_22(Idx)
189661 , p_source_24 => l_array_source_24(Idx)
189662 );
189663 If(l_balance_type_code = 'A') THEN
189664 l_actual_gain_loss_ref := l_gain_or_loss_ref;
189665 END IF;
189666
189667 --
189668
189669 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
189670 -- or secondary ledger that has different currency with primary
189671 -- or alc that is calculated by sla
189672 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
189673 (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'))
189674
189675 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
189676 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
189677 AND (l_actual_flag = 'A')) THEN
189678 XLA_AE_LINES_PKG.CreateGainOrLossLines(
189679 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
189680 ,p_application_id => p_application_id
189681 ,p_amb_context_code => 'DEFAULT'
189682 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
189683 ,p_event_class_code => C_EVENT_CLASS_CODE
189684 ,p_event_type_code => C_EVENT_TYPE_CODE
189685
189686 ,p_gain_ccid => -1
189687 ,p_loss_ccid => -1
189688
189689 ,p_actual_flag => l_actual_flag
189690 ,p_enc_flag => null
189691 ,p_actual_g_l_ref => l_actual_gain_loss_ref
189692 ,p_enc_g_l_ref => null
189693 );
189694 END IF;
189695 END IF;
189696 END IF;
189697
189698 ELSE
189699 --
189700 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
189701 --
189702 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189703 trace
189704 (p_msg => 'Trancaction revesal option is Y'
189705 ,p_level => C_LEVEL_STATEMENT
189706 ,p_module => l_log_module);
189707 END IF;
189708 END IF;
189709
189710 END LOOP;
189711 l_result := XLA_AE_LINES_PKG.InsertLines ;
189712 end loop;
189713 close line_cur;
189714
189715
189716 --
189717 -- insert headers into xla_ae_headers_gt table
189718 --
189719 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
189720
189721 -- insert into errors table here.
189722
189723 END LOOP;
189724
189725 --
189726 -- 4865292
189727 --
189728 -- Compare g_hdr_extract_count with event count in
189729 -- CreateHeadersAndLines.
189730 --
189731 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
189732
189733 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189734 trace (p_msg => '# rows extracted from header extract objects '
189735 || ' (running total): '
189736 || g_hdr_extract_count
189737 ,p_level => C_LEVEL_STATEMENT
189738 ,p_module => l_log_module);
189739 END IF;
189740
189741 CLOSE header_cur;
189742 --
189743
189744 --
189745 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189746 trace
189747 (p_msg => 'END of EventType_293'
189748 ,p_level => C_LEVEL_PROCEDURE
189749 ,p_module => l_log_module);
189750 END IF;
189751 --
189752 RETURN l_result;
189753 EXCEPTION
189754 WHEN xla_exceptions_pkg.application_exception THEN
189755
189756 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189757
189758
189759 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
189760
189761 RAISE;
189762
189763 WHEN NO_DATA_FOUND THEN
189764
189765 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
189766 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
189767
189768 FOR header_record IN header_cur
189769 LOOP
189770 l_array_header_events(header_record.event_id) := header_record.event_id;
189771 END LOOP;
189772
189773 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
189774 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
189775
189776 fnd_file.put_line(fnd_file.LOG, ' ');
189777 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189778 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
189779 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
189780
189781 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
189782 LOOP
189783 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
189784 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
189785 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
189786 END IF;
189787 END LOOP;
189788
189789 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
189790 fnd_file.put_line(fnd_file.LOG, ' ');
189791
189792
189793 xla_exceptions_pkg.raise_message
189794 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_293');
189795
189796
189797 WHEN OTHERS THEN
189798 xla_exceptions_pkg.raise_message
189799 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_293');
189800 END EventType_293;
189801 --
189802
189803 ---------------------------------------
189804 --
189805 -- PRIVATE PROCEDURE
189806 -- insert_sources_294
189807 --
189808 ----------------------------------------
189809 --
189810 PROCEDURE insert_sources_294(
189811 p_target_ledger_id IN NUMBER
189812 , p_language IN VARCHAR2
189813 , p_sla_ledger_id IN NUMBER
189814 , p_pad_start_date IN DATE
189815 , p_pad_end_date IN DATE
189816 )
189817 IS
189818
189819 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP_TP';
189820 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
189821 p_apps_owner VARCHAR2(30);
189822 l_log_module VARCHAR2(240);
189823 BEGIN
189824 IF g_log_enabled THEN
189825 l_log_module := C_DEFAULT_MODULE||'.insert_sources_294';
189826 END IF;
189827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
189828
189829 trace
189830 (p_msg => 'BEGIN of insert_sources_294'
189831 ,p_level => C_LEVEL_PROCEDURE
189832 ,p_module => l_log_module);
189833
189834 END IF;
189835
189836 -- select APPS owner
189837 SELECT oracle_username
189838 INTO p_apps_owner
189839 FROM fnd_oracle_userid
189840 WHERE read_only_flag = 'U'
189841 ;
189842
189843 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189844 trace
189845 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
189846 ' - p_language = '||p_language||
189847 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
189848 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
189849 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
189850 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
189851 ,p_level => C_LEVEL_STATEMENT
189852 ,p_module => l_log_module);
189853 END IF;
189854
189855
189856 --
189857 INSERT INTO xla_diag_sources --hdr1
189858 (
189859 event_id
189860 , ledger_id
189861 , sla_ledger_id
189862 , description_language
189863 , object_name
189864 , object_type_code
189865 , line_number
189866 , source_application_id
189867 , source_type_code
189868 , source_code
189869 , source_value
189870 , source_meaning
189871 , created_by
189872 , creation_date
189873 , last_update_date
189874 , last_updated_by
189875 , last_update_login
189876 , program_update_date
189877 , program_application_id
189878 , program_id
189879 , request_id
189880 )
189881 SELECT
189882 event_id
189883 , p_target_ledger_id
189884 , p_sla_ledger_id
189885 , p_language
189886 , object_name
189887 , object_type_code
189888 , line_number
189889 , source_application_id
189890 , source_type_code
189891 , source_code
189892 , SUBSTR(source_value ,1,1996)
189893 , SUBSTR(source_meaning,1,200)
189894 , xla_environment_pkg.g_Usr_Id
189895 , TRUNC(SYSDATE)
189896 , TRUNC(SYSDATE)
189897 , xla_environment_pkg.g_Usr_Id
189898 , xla_environment_pkg.g_Login_Id
189899 , TRUNC(SYSDATE)
189900 , xla_environment_pkg.g_Prog_Appl_Id
189901 , xla_environment_pkg.g_Prog_Id
189902 , xla_environment_pkg.g_Req_Id
189903 FROM (
189904 SELECT xet.event_id event_id
189905 , 0 line_number
189906 , CASE r
189907 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
189908 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
189909
189910 ELSE null
189911 END object_name
189912 , CASE r
189913 WHEN 1 THEN 'HEADER'
189914 WHEN 2 THEN 'HEADER'
189915
189916 ELSE null
189917 END object_type_code
189918 , CASE r
189919 WHEN 1 THEN '707'
189920 WHEN 2 THEN '707'
189921
189922 ELSE null
189923 END source_application_id
189924 , 'S' source_type_code
189925 , CASE r
189926 WHEN 1 THEN 'DISTRIBUTION_TYPE'
189927 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
189928
189929 ELSE null
189930 END source_code
189931 , CASE r
189932 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
189933 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
189934
189935 ELSE null
189936 END source_value
189937 , CASE r
189938 WHEN 1 THEN fvl12.meaning
189939 WHEN 2 THEN fvl38.meaning
189940
189941 ELSE null
189942 END source_meaning
189943 FROM xla_events_gt xet
189944 , CST_XLA_INV_HEADERS_V h1
189945 , fnd_lookup_values fvl12
189946 , fnd_lookup_values fvl38
189947 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
189948 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
189949 AND xet.event_type_code = C_EVENT_TYPE_CODE
189950 AND h1.event_id = xet.event_id
189951 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
189952 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
189953 AND fvl12.view_application_id(+) = 700
189954 AND fvl12.language(+) = USERENV('LANG')
189955 AND fvl38.lookup_type(+) = 'YES_NO'
189956 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
189957 AND fvl38.view_application_id(+) = 0
189958 AND fvl38.language(+) = USERENV('LANG')
189959
189960 )
189961 ;
189962 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
189963
189964 trace
189965 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
189966 ,p_level => C_LEVEL_STATEMENT
189967 ,p_module => l_log_module);
189968
189969 END IF;
189970 --
189971
189972
189973
189974 --
189975 INSERT INTO xla_diag_sources --line1
189976 (
189977 event_id
189978 , ledger_id
189979 , sla_ledger_id
189980 , description_language
189981 , object_name
189982 , object_type_code
189983 , line_number
189984 , source_application_id
189985 , source_type_code
189986 , source_code
189987 , source_value
189988 , source_meaning
189989 , created_by
189990 , creation_date
189991 , last_update_date
189992 , last_updated_by
189993 , last_update_login
189994 , program_update_date
189995 , program_application_id
189996 , program_id
189997 , request_id
189998 )
189999 SELECT event_id
190000 , p_target_ledger_id
190001 , p_sla_ledger_id
190002 , p_language
190003 , object_name
190004 , object_type_code
190005 , line_number
190006 , source_application_id
190007 , source_type_code
190008 , source_code
190009 , SUBSTR(source_value,1,1996)
190010 , SUBSTR(source_meaning,1,200)
190011 , xla_environment_pkg.g_Usr_Id
190012 , TRUNC(SYSDATE)
190013 , TRUNC(SYSDATE)
190014 , xla_environment_pkg.g_Usr_Id
190015 , xla_environment_pkg.g_Login_Id
190016 , TRUNC(SYSDATE)
190017 , xla_environment_pkg.g_Prog_Appl_Id
190018 , xla_environment_pkg.g_Prog_Id
190019 , xla_environment_pkg.g_Req_Id
190020 FROM (
190021 SELECT xet.event_id event_id
190022 , l2.line_number line_number
190023 , CASE r
190024 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
190025 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
190026 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
190027 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
190028 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
190029 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
190030 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
190031 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
190032 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
190033
190034 ELSE null
190035 END object_name
190036 , CASE r
190037 WHEN 1 THEN 'LINE'
190038 WHEN 2 THEN 'LINE'
190039 WHEN 3 THEN 'LINE'
190040 WHEN 4 THEN 'LINE'
190041 WHEN 5 THEN 'LINE'
190042 WHEN 6 THEN 'LINE'
190043 WHEN 7 THEN 'LINE'
190044 WHEN 8 THEN 'LINE'
190045 WHEN 9 THEN 'LINE'
190046
190047 ELSE null
190048 END object_type_code
190049 , CASE r
190050 WHEN 1 THEN '707'
190051 WHEN 2 THEN '707'
190052 WHEN 3 THEN '707'
190053 WHEN 4 THEN '707'
190054 WHEN 5 THEN '707'
190055 WHEN 6 THEN '707'
190056 WHEN 7 THEN '707'
190057 WHEN 8 THEN '707'
190058 WHEN 9 THEN '707'
190059
190060 ELSE null
190061 END source_application_id
190062 , 'S' source_type_code
190063 , CASE r
190064 WHEN 1 THEN 'CODE_COMBINATION_ID'
190065 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
190066 WHEN 3 THEN 'CURRENCY_CODE'
190067 WHEN 4 THEN 'ENTERED_AMOUNT'
190068 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
190069 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
190070 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
190071 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
190072 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
190073
190074 ELSE null
190075 END source_code
190076 , CASE r
190077 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
190078 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
190079 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
190080 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
190081 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
190082 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
190083 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
190084 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
190085 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
190086
190087 ELSE null
190088 END source_value
190089 , null source_meaning
190090 FROM xla_events_gt xet
190091 , CST_XLA_INV_LINES_V l2
190092 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
190093 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
190094 AND xet.event_type_code = C_EVENT_TYPE_CODE
190095 AND l2.event_id = xet.event_id
190096
190097 )
190098 ;
190099 --
190100 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190101
190102 trace
190103 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
190104 ,p_level => C_LEVEL_STATEMENT
190105 ,p_module => l_log_module);
190106
190107 END IF;
190108
190109
190110 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190111 trace
190112 (p_msg => 'END of insert_sources_294'
190113 ,p_level => C_LEVEL_PROCEDURE
190114 ,p_module => l_log_module);
190115 END IF;
190116 EXCEPTION
190117 WHEN xla_exceptions_pkg.application_exception THEN
190118 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
190119 trace
190120 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
190121 ,p_level => C_LEVEL_EXCEPTION
190122 ,p_module => l_log_module);
190123 END IF;
190124 RAISE;
190125 WHEN OTHERS THEN
190126 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
190127 trace
190128 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
190129 ,p_level => C_LEVEL_EXCEPTION
190130 ,p_module => l_log_module);
190131 END IF;
190132 xla_exceptions_pkg.raise_message
190133 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_294');
190134 END insert_sources_294;
190135 --
190136
190137 ---------------------------------------
190138 --
190139 -- PRIVATE FUNCTION
190140 -- EventType_294
190141 --
190142 ----------------------------------------
190143 --
190144 FUNCTION EventType_294
190145 (p_application_id IN NUMBER
190146 ,p_base_ledger_id IN NUMBER
190147 ,p_target_ledger_id IN NUMBER
190148 ,p_language IN VARCHAR2
190149 ,p_currency_code IN VARCHAR2
190150 ,p_sla_ledger_id IN NUMBER
190151 ,p_pad_start_date IN DATE
190152 ,p_pad_end_date IN DATE
190153 ,p_primary_ledger_id IN NUMBER)
190154 RETURN BOOLEAN IS
190155 --
190156 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UDIR_INTERORG_SHIP_TP';
190157 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
190158
190159 l_calculate_acctd_flag VARCHAR2(1) :='Y';
190160 l_calculate_g_l_flag VARCHAR2(1) :='Y';
190161 --
190162 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190163 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190164 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190165 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190166 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190167 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190168 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190169 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190170 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190171 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190172 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190173 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190174 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190175 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
190176 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190177 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190178 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190179 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
190180 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190181 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190182 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190183 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
190184 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
190185 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
190186 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
190187 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
190188
190189 l_event_id NUMBER;
190190 l_previous_event_id NUMBER;
190191 l_first_event_id NUMBER;
190192 l_last_event_id NUMBER;
190193
190194 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
190195 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
190196 --
190197 --
190198 l_result BOOLEAN := TRUE;
190199 l_rows NUMBER := 1000;
190200 l_event_type_name VARCHAR2(80) := 'User-defined Direct Interorg Shipment, Transfer Price';
190201 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
190202 l_description VARCHAR2(4000);
190203 l_transaction_reversal NUMBER;
190204 l_ae_header_id NUMBER;
190205 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
190206 l_log_module VARCHAR2(240);
190207 --
190208 l_acct_reversal_source VARCHAR2(30);
190209 l_trx_reversal_source VARCHAR2(30);
190210
190211 l_continue_with_lines BOOLEAN := TRUE;
190212 --
190213 l_acc_rev_gl_date_source DATE; -- 4262811
190214 --
190215 type t_array_event_id is table of number index by binary_integer;
190216
190217 l_rec_array_event t_rec_array_event;
190218 l_null_rec_array_event t_rec_array_event;
190219 l_array_ae_header_id xla_number_array_type;
190220 l_actual_flag VARCHAR2(1) := NULL;
190221 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
190222 l_balance_type_code VARCHAR2(1) :=NULL;
190223 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
190224
190225 --
190226 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
190227 --
190228
190229 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
190230 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
190231
190232 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
190233 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
190234 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
190235 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
190236 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
190237 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
190238 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
190239 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
190240 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
190241
190242 l_array_source_12 t_array_source_12;
190243 l_array_source_12_meaning t_array_lookup_meaning;
190244 l_array_source_38 t_array_source_38;
190245 l_array_source_38_meaning t_array_lookup_meaning;
190246
190247 l_array_source_4 t_array_source_4;
190248 l_array_source_11 t_array_source_11;
190249 l_array_source_15 t_array_source_15;
190250 l_array_source_18 t_array_source_18;
190251 l_array_source_19 t_array_source_19;
190252 l_array_source_20 t_array_source_20;
190253 l_array_source_21 t_array_source_21;
190254 l_array_source_22 t_array_source_22;
190255 l_array_source_24 t_array_source_24;
190256
190257 --
190258 CURSOR header_cur
190259 IS
190260 SELECT /*+ leading(xet) cardinality(xet,1) */
190261 -- Event Type Code: UDIR_INTERORG_SHIP_TP
190262 -- Event Class Code: USER_DEFINE
190263 xet.entity_id
190264 , xet.legal_entity_id
190265 , xet.entity_code
190266 , xet.transaction_number
190267 , xet.event_id
190268 , xet.event_class_code
190269 , xet.event_type_code
190270 , xet.event_number
190271 , xet.event_date
190272 , xet.transaction_date
190273 , xet.reference_num_1
190274 , xet.reference_num_2
190275 , xet.reference_num_3
190276 , xet.reference_num_4
190277 , xet.reference_char_1
190278 , xet.reference_char_2
190279 , xet.reference_char_3
190280 , xet.reference_char_4
190281 , xet.reference_date_1
190282 , xet.reference_date_2
190283 , xet.reference_date_3
190284 , xet.reference_date_4
190285 , xet.event_created_by
190286 , xet.budgetary_control_flag
190287 , h1.DISTRIBUTION_TYPE source_12
190288 , fvl12.meaning source_12_meaning
190289 , h1.TRANSFER_TO_GL_INDICATOR source_38
190290 , fvl38.meaning source_38_meaning
190291 FROM xla_events_gt xet
190292 , CST_XLA_INV_HEADERS_V h1
190293 , fnd_lookup_values fvl12
190294 , fnd_lookup_values fvl38
190295 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
190296 and xet.event_type_code = C_EVENT_TYPE_CODE
190297 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
190298 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
190299 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
190300 AND fvl12.view_application_id(+) = 700
190301 AND fvl12.language(+) = USERENV('LANG')
190302 AND fvl38.lookup_type(+) = 'YES_NO'
190303 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
190304 AND fvl38.view_application_id(+) = 0
190305 AND fvl38.language(+) = USERENV('LANG')
190306
190307 ORDER BY event_id
190308 ;
190309
190310
190311 --
190312 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
190313 IS
190314 SELECT /*+ leading(xet) cardinality(xet,1) */
190315 -- Event Type Code: UDIR_INTERORG_SHIP_TP
190316 -- Event Class Code: USER_DEFINE
190317 xet.entity_id
190318 ,xet.legal_entity_id
190319 ,xet.entity_code
190320 ,xet.transaction_number
190321 ,xet.event_id
190322 ,xet.event_class_code
190323 ,xet.event_type_code
190324 ,xet.event_number
190325 ,xet.event_date
190326 ,xet.transaction_date
190327 ,xet.reference_num_1
190328 ,xet.reference_num_2
190329 ,xet.reference_num_3
190330 ,xet.reference_num_4
190331 ,xet.reference_char_1
190332 ,xet.reference_char_2
190333 ,xet.reference_char_3
190334 ,xet.reference_char_4
190335 ,xet.reference_date_1
190336 ,xet.reference_date_2
190337 ,xet.reference_date_3
190338 ,xet.reference_date_4
190339 ,xet.event_created_by
190340 ,xet.budgetary_control_flag , l2.LINE_NUMBER
190341 , l2.CODE_COMBINATION_ID source_4
190342 , l2.DISTRIBUTION_IDENTIFIER source_11
190343 , l2.CURRENCY_CODE source_15
190344 , l2.ENTERED_AMOUNT source_18
190345 , l2.CURRENCY_CONVERSION_DATE source_19
190346 , l2.CURRENCY_CONVERSION_RATE source_20
190347 , l2.CURRENCY_CONVERSION_TYPE source_21
190348 , l2.ACCOUNTED_AMOUNT source_22
190349 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
190350 FROM xla_events_gt xet
190351 , CST_XLA_INV_LINES_V l2
190352 WHERE xet.event_id between x_first_event_id and x_last_event_id
190353 and xet.event_date between p_pad_start_date and p_pad_end_date
190354 and xet.event_type_code = C_EVENT_TYPE_CODE
190355 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
190356 ;
190357
190358 --
190359 BEGIN
190360 IF g_log_enabled THEN
190361 l_log_module := C_DEFAULT_MODULE||'.EventType_294';
190362 END IF;
190363 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
190364 trace
190365 (p_msg => 'BEGIN of EventType_294'
190366 ,p_level => C_LEVEL_PROCEDURE
190367 ,p_module => l_log_module);
190368 END IF;
190369
190370 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190371 trace
190372 (p_msg => 'p_application_id = '||p_application_id||
190373 ' - p_base_ledger_id = '||p_base_ledger_id||
190374 ' - p_target_ledger_id = '||p_target_ledger_id||
190375 ' - p_language = '||p_language||
190376 ' - p_currency_code = '||p_currency_code||
190377 ' - p_sla_ledger_id = '||p_sla_ledger_id
190378 ,p_level => C_LEVEL_STATEMENT
190379 ,p_module => l_log_module);
190380 END IF;
190381 --
190382 -- initialze arrays
190383 --
190384 g_array_event.DELETE;
190385 l_rec_array_event := l_null_rec_array_event;
190386 --
190387 --------------------------------------
190388 -- 4262811 Initialze MPA Line Number
190389 --------------------------------------
190390 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
190391
190392 --
190393
190394 --
190395 OPEN header_cur;
190396 --
190397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190398 trace
190399 (p_msg => 'SQL - FETCH header_cur'
190400 ,p_level => C_LEVEL_STATEMENT
190401 ,p_module => l_log_module);
190402 END IF;
190403 --
190404 LOOP
190405 FETCH header_cur BULK COLLECT INTO
190406 l_array_entity_id
190407 , l_array_legal_entity_id
190408 , l_array_entity_code
190409 , l_array_transaction_num
190410 , l_array_event_id
190411 , l_array_class_code
190412 , l_array_event_type
190413 , l_array_event_number
190414 , l_array_event_date
190415 , l_array_transaction_date
190416 , l_array_reference_num_1
190417 , l_array_reference_num_2
190418 , l_array_reference_num_3
190419 , l_array_reference_num_4
190420 , l_array_reference_char_1
190421 , l_array_reference_char_2
190422 , l_array_reference_char_3
190423 , l_array_reference_char_4
190424 , l_array_reference_date_1
190425 , l_array_reference_date_2
190426 , l_array_reference_date_3
190427 , l_array_reference_date_4
190428 , l_array_event_created_by
190429 , l_array_budgetary_control_flag
190430 , l_array_source_12
190431 , l_array_source_12_meaning
190432 , l_array_source_38
190433 , l_array_source_38_meaning
190434 LIMIT l_rows;
190435 --
190436 IF (C_LEVEL_EVENT >= g_log_level) THEN
190437 trace
190438 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
190439 ,p_level => C_LEVEL_EVENT
190440 ,p_module => l_log_module);
190441 END IF;
190442 --
190443 EXIT WHEN l_array_entity_id.COUNT = 0;
190444
190445 -- initialize arrays
190446 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
190447 XLA_AE_LINES_PKG.g_rec_lines := NULL;
190448
190449 --
190450 -- Bug 4458708
190451 --
190452 XLA_AE_LINES_PKG.g_LineNumber := 0;
190453
190454
190455 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
190456 g_last_hdr_idx := l_array_event_id.LAST;
190457 --
190458 -- loop for the headers. Each iteration is for each header extract row
190459 -- fetched in header cursor
190460 --
190461 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
190462
190463 --
190464 -- set event info as cache for other routines to refer event attributes
190465 --
190466 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
190467 (p_application_id => p_application_id
190468 ,p_primary_ledger_id => p_primary_ledger_id
190469 ,p_base_ledger_id => p_base_ledger_id
190470 ,p_target_ledger_id => p_target_ledger_id
190471 ,p_entity_id => l_array_entity_id(hdr_idx)
190472 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
190473 ,p_entity_code => l_array_entity_code(hdr_idx)
190474 ,p_transaction_num => l_array_transaction_num(hdr_idx)
190475 ,p_event_id => l_array_event_id(hdr_idx)
190476 ,p_event_class_code => l_array_class_code(hdr_idx)
190477 ,p_event_type_code => l_array_event_type(hdr_idx)
190478 ,p_event_number => l_array_event_number(hdr_idx)
190479 ,p_event_date => l_array_event_date(hdr_idx)
190480 ,p_transaction_date => l_array_transaction_date(hdr_idx)
190481 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
190482 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
190483 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
190484 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
190485 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
190486 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
190487 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
190488 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
190489 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
190490 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
190491 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
190492 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
190493 ,p_event_created_by => l_array_event_created_by(hdr_idx)
190494 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
190495
190496 --
190497 -- set the status of entry to C_VALID (0)
190498 --
190499 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
190500
190501 --
190502 -- initialize a row for ae header
190503 --
190504 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
190505
190506 l_event_id := l_array_event_id(hdr_idx);
190507
190508 --
190509 -- storing the hdr_idx for event. May be used by line cursor.
190510 --
190511 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
190512
190513 --
190514 -- store sources from header extract. This can be improved to
190515 -- store only those sources from header extract that may be used in lines
190516 --
190517
190518 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
190519 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
190520 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
190521 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
190522
190523 --
190524 -- initilaize the status of ae headers for diffrent balance types
190525 -- the status is initialised to C_NOT_CREATED (2)
190526 --
190527 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
190528 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
190529 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
190530
190531 --
190532 -- call api to validate and store accounting attributes for header
190533 --
190534
190535 ------------------------------------------------------------
190536 -- Accrual Reversal : to get date for Standard Source (NONE)
190537 ------------------------------------------------------------
190538 l_acc_rev_gl_date_source := NULL;
190539
190540 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
190541 l_rec_acct_attrs.array_date_value(1) :=
190542 xla_ae_sources_pkg.GetSystemSourceDate(
190543 p_source_code => 'XLA_REFERENCE_DATE_1'
190544 , p_source_type_code => 'Y'
190545 , p_source_application_id => 602
190546 );
190547 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
190548 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
190549
190550
190551 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
190552
190553 XLA_AE_HEADER_PKG.SetJeCategoryName;
190554
190555 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
190556 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
190557 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
190558 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
190559 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
190560
190561
190562 -- No header level analytical criteria
190563
190564 --
190565 --accounting attribute enhancement, bug 3612931
190566 --
190567 l_trx_reversal_source := SUBSTR(NULL, 1,30);
190568
190569 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
190570 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
190571
190572 xla_accounting_err_pkg.build_message
190573 (p_appli_s_name => 'XLA'
190574 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
190575 ,p_token_1 => 'ACCT_ATTR_NAME'
190576 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
190577 ,p_token_2 => 'PRODUCT_NAME'
190578 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
190579 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
190580 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
190581 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
190582
190583 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
190584 --
190585 -- following sets the accounting attributes needed to reverse
190586 -- accounting for a distributeion
190587 --
190588 xla_ae_lines_pkg.SetTrxReversalAttrs
190589 (p_event_id => l_event_id
190590 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
190591 ,p_trx_reversal_source => l_trx_reversal_source);
190592
190593 END IF;
190594
190595
190596 ----------------------------------------------------------------
190597 -- 4262811 - update the header statuses to invalid in need be
190598 ----------------------------------------------------------------
190599 --
190600 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
190601
190602
190603 -----------------------------------------------
190604 -- No accrual reversal for the event class/type
190605 -----------------------------------------------
190606 ----------------------------------------------------------------
190607
190608 --
190609 -- this ends the header loop iteration for one bulk fetch
190610 --
190611 END LOOP;
190612
190613 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
190614 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
190615
190616 --
190617 -- insert dummy rows into lines gt table that were created due to
190618 -- transaction reversals
190619 --
190620 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
190621 l_result := XLA_AE_LINES_PKG.InsertLines;
190622 END IF;
190623
190624 --
190625 -- reset the temp_line_num for each set of events fetched from header
190626 -- cursor rather than doing it for each new event in line cursor
190627 -- Bug 3939231
190628 --
190629 xla_ae_lines_pkg.g_temp_line_num := 0;
190630
190631
190632
190633 --
190634 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
190635 --
190636 --
190637 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190638
190639 trace
190640 (p_msg => 'SQL - FETCH line_cur'
190641 ,p_level => C_LEVEL_STATEMENT
190642 ,p_module => l_log_module);
190643
190644 END IF;
190645 --
190646 --
190647 LOOP
190648 --
190649 FETCH line_cur BULK COLLECT INTO
190650 l_array_entity_id
190651 , l_array_legal_entity_id
190652 , l_array_entity_code
190653 , l_array_transaction_num
190654 , l_array_event_id
190655 , l_array_class_code
190656 , l_array_event_type
190657 , l_array_event_number
190658 , l_array_event_date
190659 , l_array_transaction_date
190660 , l_array_reference_num_1
190661 , l_array_reference_num_2
190662 , l_array_reference_num_3
190663 , l_array_reference_num_4
190664 , l_array_reference_char_1
190665 , l_array_reference_char_2
190666 , l_array_reference_char_3
190667 , l_array_reference_char_4
190668 , l_array_reference_date_1
190669 , l_array_reference_date_2
190670 , l_array_reference_date_3
190671 , l_array_reference_date_4
190672 , l_array_event_created_by
190673 , l_array_budgetary_control_flag
190674 , l_array_extract_line_num
190675 , l_array_source_4
190676 , l_array_source_11
190677 , l_array_source_15
190678 , l_array_source_18
190679 , l_array_source_19
190680 , l_array_source_20
190681 , l_array_source_21
190682 , l_array_source_22
190683 , l_array_source_24
190684 LIMIT l_rows;
190685
190686 --
190687 IF (C_LEVEL_EVENT >= g_log_level) THEN
190688 trace
190689 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
190690 ,p_level => C_LEVEL_EVENT
190691 ,p_module => l_log_module);
190692 END IF;
190693 --
190694 EXIT WHEN l_array_entity_id.count = 0;
190695
190696 XLA_AE_LINES_PKG.g_rec_lines := null;
190697
190698 --
190699 -- Bug 4458708
190700 --
190701 XLA_AE_LINES_PKG.g_LineNumber := 0;
190702 --
190703 --
190704
190705 FOR Idx IN 1..l_array_event_id.count LOOP
190706 --
190707 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
190708 --
190709 l_event_id := l_array_event_id(idx); -- 5648433
190710
190711 --
190712 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
190713 --
190714
190715 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
190716 (g_array_event(l_event_id).array_value_num('header_index'))
190717 ,'N'
190718 ) <> 'Y'
190719 THEN
190720 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
190721 trace
190722 (p_msg => 'Trancaction revesal option is not Y '
190723 ,p_level => C_LEVEL_STATEMENT
190724 ,p_module => l_log_module);
190725 END IF;
190726
190727 --
190728 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
190729 --
190730 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
190731 --
190732 -- set event info as cache for other routines to refer event attributes
190733 --
190734
190735 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
190736 l_previous_event_id := l_event_id;
190737
190738 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
190739 (p_application_id => p_application_id
190740 ,p_primary_ledger_id => p_primary_ledger_id
190741 ,p_base_ledger_id => p_base_ledger_id
190742 ,p_target_ledger_id => p_target_ledger_id
190743 ,p_entity_id => l_array_entity_id(Idx)
190744 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
190745 ,p_entity_code => l_array_entity_code(Idx)
190746 ,p_transaction_num => l_array_transaction_num(Idx)
190747 ,p_event_id => l_array_event_id(Idx)
190748 ,p_event_class_code => l_array_class_code(Idx)
190749 ,p_event_type_code => l_array_event_type(Idx)
190750 ,p_event_number => l_array_event_number(Idx)
190751 ,p_event_date => l_array_event_date(Idx)
190752 ,p_transaction_date => l_array_transaction_date(Idx)
190753 ,p_reference_num_1 => l_array_reference_num_1(Idx)
190754 ,p_reference_num_2 => l_array_reference_num_2(Idx)
190755 ,p_reference_num_3 => l_array_reference_num_3(Idx)
190756 ,p_reference_num_4 => l_array_reference_num_4(Idx)
190757 ,p_reference_char_1 => l_array_reference_char_1(Idx)
190758 ,p_reference_char_2 => l_array_reference_char_2(Idx)
190759 ,p_reference_char_3 => l_array_reference_char_3(Idx)
190760 ,p_reference_char_4 => l_array_reference_char_4(Idx)
190761 ,p_reference_date_1 => l_array_reference_date_1(Idx)
190762 ,p_reference_date_2 => l_array_reference_date_2(Idx)
190763 ,p_reference_date_3 => l_array_reference_date_3(Idx)
190764 ,p_reference_date_4 => l_array_reference_date_4(Idx)
190765 ,p_event_created_by => l_array_event_created_by(Idx)
190766 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
190767 --
190768 END IF;
190769
190770
190771
190772 --
190773 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
190774
190775 l_acct_reversal_source := SUBSTR(NULL, 1,30);
190776
190777 IF l_continue_with_lines THEN
190778 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
190779 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
190780
190781 xla_accounting_err_pkg.build_message
190782 (p_appli_s_name => 'XLA'
190783 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
190784 ,p_token_1 => 'LINE_NUMBER'
190785 ,p_value_1 => l_array_extract_line_num(Idx)
190786 ,p_token_2 => 'PRODUCT_NAME'
190787 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
190788 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
190789 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
190790 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
190791
190792 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
190793 --
190794 -- following sets the accounting attributes needed to reverse
190795 -- accounting for a distributeion
190796 --
190797
190798 --
190799 -- 5217187
190800 --
190801 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
190802 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
190803 g_array_event(l_event_id).array_value_num('header_index'));
190804 --
190805 --
190806
190807 -- No reversal code generated
190808
190809 xla_ae_lines_pkg.SetAcctReversalAttrs
190810 (p_event_id => l_event_id
190811 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
190812 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190813 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
190814 END IF;
190815
190816 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
190817 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
190818
190819 --
190820 AcctLineType_62 (
190821 p_application_id => p_application_id
190822 ,p_event_id => l_event_id
190823 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190824 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190825 ,p_actual_flag => l_actual_flag
190826 ,p_balance_type_code => l_balance_type_code
190827 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190828
190829 , p_source_4 => l_array_source_4(Idx)
190830 , p_source_11 => l_array_source_11(Idx)
190831 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190832 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190833 , p_source_15 => l_array_source_15(Idx)
190834 , p_source_18 => l_array_source_18(Idx)
190835 , p_source_19 => l_array_source_19(Idx)
190836 , p_source_20 => l_array_source_20(Idx)
190837 , p_source_21 => l_array_source_21(Idx)
190838 , p_source_22 => l_array_source_22(Idx)
190839 , p_source_24 => l_array_source_24(Idx)
190840 );
190841 If(l_balance_type_code = 'A') THEN
190842 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190843 END IF;
190844
190845 --
190846
190847
190848 --
190849 AcctLineType_79 (
190850 p_application_id => p_application_id
190851 ,p_event_id => l_event_id
190852 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190853 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190854 ,p_actual_flag => l_actual_flag
190855 ,p_balance_type_code => l_balance_type_code
190856 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190857
190858 , p_source_4 => l_array_source_4(Idx)
190859 , p_source_11 => l_array_source_11(Idx)
190860 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190861 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190862 , p_source_15 => l_array_source_15(Idx)
190863 , p_source_18 => l_array_source_18(Idx)
190864 , p_source_19 => l_array_source_19(Idx)
190865 , p_source_20 => l_array_source_20(Idx)
190866 , p_source_21 => l_array_source_21(Idx)
190867 , p_source_22 => l_array_source_22(Idx)
190868 , p_source_24 => l_array_source_24(Idx)
190869 );
190870 If(l_balance_type_code = 'A') THEN
190871 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190872 END IF;
190873
190874 --
190875
190876
190877 --
190878 AcctLineType_93 (
190879 p_application_id => p_application_id
190880 ,p_event_id => l_event_id
190881 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190882 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190883 ,p_actual_flag => l_actual_flag
190884 ,p_balance_type_code => l_balance_type_code
190885 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190886
190887 , p_source_4 => l_array_source_4(Idx)
190888 , p_source_11 => l_array_source_11(Idx)
190889 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190890 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190891 , p_source_15 => l_array_source_15(Idx)
190892 , p_source_18 => l_array_source_18(Idx)
190893 , p_source_19 => l_array_source_19(Idx)
190894 , p_source_20 => l_array_source_20(Idx)
190895 , p_source_21 => l_array_source_21(Idx)
190896 , p_source_22 => l_array_source_22(Idx)
190897 , p_source_24 => l_array_source_24(Idx)
190898 );
190899 If(l_balance_type_code = 'A') THEN
190900 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190901 END IF;
190902
190903 --
190904
190905
190906 --
190907 AcctLineType_107 (
190908 p_application_id => p_application_id
190909 ,p_event_id => l_event_id
190910 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190911 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190912 ,p_actual_flag => l_actual_flag
190913 ,p_balance_type_code => l_balance_type_code
190914 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190915
190916 , p_source_4 => l_array_source_4(Idx)
190917 , p_source_11 => l_array_source_11(Idx)
190918 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190919 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190920 , p_source_15 => l_array_source_15(Idx)
190921 , p_source_18 => l_array_source_18(Idx)
190922 , p_source_19 => l_array_source_19(Idx)
190923 , p_source_20 => l_array_source_20(Idx)
190924 , p_source_21 => l_array_source_21(Idx)
190925 , p_source_22 => l_array_source_22(Idx)
190926 , p_source_24 => l_array_source_24(Idx)
190927 );
190928 If(l_balance_type_code = 'A') THEN
190929 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190930 END IF;
190931
190932 --
190933
190934
190935 --
190936 AcctLineType_117 (
190937 p_application_id => p_application_id
190938 ,p_event_id => l_event_id
190939 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190940 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190941 ,p_actual_flag => l_actual_flag
190942 ,p_balance_type_code => l_balance_type_code
190943 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190944
190945 , p_source_4 => l_array_source_4(Idx)
190946 , p_source_11 => l_array_source_11(Idx)
190947 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190948 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190949 , p_source_15 => l_array_source_15(Idx)
190950 , p_source_18 => l_array_source_18(Idx)
190951 , p_source_19 => l_array_source_19(Idx)
190952 , p_source_20 => l_array_source_20(Idx)
190953 , p_source_21 => l_array_source_21(Idx)
190954 , p_source_22 => l_array_source_22(Idx)
190955 , p_source_24 => l_array_source_24(Idx)
190956 );
190957 If(l_balance_type_code = 'A') THEN
190958 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190959 END IF;
190960
190961 --
190962
190963
190964 --
190965 AcctLineType_145 (
190966 p_application_id => p_application_id
190967 ,p_event_id => l_event_id
190968 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190969 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190970 ,p_actual_flag => l_actual_flag
190971 ,p_balance_type_code => l_balance_type_code
190972 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
190973
190974 , p_source_4 => l_array_source_4(Idx)
190975 , p_source_11 => l_array_source_11(Idx)
190976 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
190977 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
190978 , p_source_15 => l_array_source_15(Idx)
190979 , p_source_18 => l_array_source_18(Idx)
190980 , p_source_19 => l_array_source_19(Idx)
190981 , p_source_20 => l_array_source_20(Idx)
190982 , p_source_21 => l_array_source_21(Idx)
190983 , p_source_22 => l_array_source_22(Idx)
190984 , p_source_24 => l_array_source_24(Idx)
190985 );
190986 If(l_balance_type_code = 'A') THEN
190987 l_actual_gain_loss_ref := l_gain_or_loss_ref;
190988 END IF;
190989
190990 --
190991
190992
190993 --
190994 AcctLineType_165 (
190995 p_application_id => p_application_id
190996 ,p_event_id => l_event_id
190997 ,p_calculate_acctd_flag => l_calculate_acctd_flag
190998 ,p_calculate_g_l_flag => l_calculate_g_l_flag
190999 ,p_actual_flag => l_actual_flag
191000 ,p_balance_type_code => l_balance_type_code
191001 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191002
191003 , p_source_4 => l_array_source_4(Idx)
191004 , p_source_11 => l_array_source_11(Idx)
191005 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191006 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191007 , p_source_15 => l_array_source_15(Idx)
191008 , p_source_18 => l_array_source_18(Idx)
191009 , p_source_19 => l_array_source_19(Idx)
191010 , p_source_20 => l_array_source_20(Idx)
191011 , p_source_21 => l_array_source_21(Idx)
191012 , p_source_22 => l_array_source_22(Idx)
191013 , p_source_24 => l_array_source_24(Idx)
191014 );
191015 If(l_balance_type_code = 'A') THEN
191016 l_actual_gain_loss_ref := l_gain_or_loss_ref;
191017 END IF;
191018
191019 --
191020
191021
191022 --
191023 AcctLineType_187 (
191024 p_application_id => p_application_id
191025 ,p_event_id => l_event_id
191026 ,p_calculate_acctd_flag => l_calculate_acctd_flag
191027 ,p_calculate_g_l_flag => l_calculate_g_l_flag
191028 ,p_actual_flag => l_actual_flag
191029 ,p_balance_type_code => l_balance_type_code
191030 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191031
191032 , p_source_4 => l_array_source_4(Idx)
191033 , p_source_11 => l_array_source_11(Idx)
191034 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191035 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191036 , p_source_15 => l_array_source_15(Idx)
191037 , p_source_18 => l_array_source_18(Idx)
191038 , p_source_19 => l_array_source_19(Idx)
191039 , p_source_20 => l_array_source_20(Idx)
191040 , p_source_21 => l_array_source_21(Idx)
191041 , p_source_22 => l_array_source_22(Idx)
191042 , p_source_24 => l_array_source_24(Idx)
191043 );
191044 If(l_balance_type_code = 'A') THEN
191045 l_actual_gain_loss_ref := l_gain_or_loss_ref;
191046 END IF;
191047
191048 --
191049
191050
191051 --
191052 AcctLineType_233 (
191053 p_application_id => p_application_id
191054 ,p_event_id => l_event_id
191055 ,p_calculate_acctd_flag => l_calculate_acctd_flag
191056 ,p_calculate_g_l_flag => l_calculate_g_l_flag
191057 ,p_actual_flag => l_actual_flag
191058 ,p_balance_type_code => l_balance_type_code
191059 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
191060
191061 , p_source_4 => l_array_source_4(Idx)
191062 , p_source_11 => l_array_source_11(Idx)
191063 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
191064 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
191065 , p_source_15 => l_array_source_15(Idx)
191066 , p_source_18 => l_array_source_18(Idx)
191067 , p_source_19 => l_array_source_19(Idx)
191068 , p_source_20 => l_array_source_20(Idx)
191069 , p_source_21 => l_array_source_21(Idx)
191070 , p_source_22 => l_array_source_22(Idx)
191071 , p_source_24 => l_array_source_24(Idx)
191072 );
191073 If(l_balance_type_code = 'A') THEN
191074 l_actual_gain_loss_ref := l_gain_or_loss_ref;
191075 END IF;
191076
191077 --
191078
191079 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
191080 -- or secondary ledger that has different currency with primary
191081 -- or alc that is calculated by sla
191082 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
191083 (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'))
191084
191085 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
191086 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
191087 AND (l_actual_flag = 'A')) THEN
191088 XLA_AE_LINES_PKG.CreateGainOrLossLines(
191089 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
191090 ,p_application_id => p_application_id
191091 ,p_amb_context_code => 'DEFAULT'
191092 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
191093 ,p_event_class_code => C_EVENT_CLASS_CODE
191094 ,p_event_type_code => C_EVENT_TYPE_CODE
191095
191096 ,p_gain_ccid => -1
191097 ,p_loss_ccid => -1
191098
191099 ,p_actual_flag => l_actual_flag
191100 ,p_enc_flag => null
191101 ,p_actual_g_l_ref => l_actual_gain_loss_ref
191102 ,p_enc_g_l_ref => null
191103 );
191104 END IF;
191105 END IF;
191106 END IF;
191107
191108 ELSE
191109 --
191110 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
191111 --
191112 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191113 trace
191114 (p_msg => 'Trancaction revesal option is Y'
191115 ,p_level => C_LEVEL_STATEMENT
191116 ,p_module => l_log_module);
191117 END IF;
191118 END IF;
191119
191120 END LOOP;
191121 l_result := XLA_AE_LINES_PKG.InsertLines ;
191122 end loop;
191123 close line_cur;
191124
191125
191126 --
191127 -- insert headers into xla_ae_headers_gt table
191128 --
191129 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
191130
191131 -- insert into errors table here.
191132
191133 END LOOP;
191134
191135 --
191136 -- 4865292
191137 --
191138 -- Compare g_hdr_extract_count with event count in
191139 -- CreateHeadersAndLines.
191140 --
191141 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
191142
191143 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191144 trace (p_msg => '# rows extracted from header extract objects '
191145 || ' (running total): '
191146 || g_hdr_extract_count
191147 ,p_level => C_LEVEL_STATEMENT
191148 ,p_module => l_log_module);
191149 END IF;
191150
191151 CLOSE header_cur;
191152 --
191153
191154 --
191155 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191156 trace
191157 (p_msg => 'END of EventType_294'
191158 ,p_level => C_LEVEL_PROCEDURE
191159 ,p_module => l_log_module);
191160 END IF;
191161 --
191162 RETURN l_result;
191163 EXCEPTION
191164 WHEN xla_exceptions_pkg.application_exception THEN
191165
191166 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
191167
191168
191169 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
191170
191171 RAISE;
191172
191173 WHEN NO_DATA_FOUND THEN
191174
191175 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
191176 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
191177
191178 FOR header_record IN header_cur
191179 LOOP
191180 l_array_header_events(header_record.event_id) := header_record.event_id;
191181 END LOOP;
191182
191183 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
191184 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
191185
191186 fnd_file.put_line(fnd_file.LOG, ' ');
191187 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
191188 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
191189 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
191190
191191 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
191192 LOOP
191193 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
191194 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
191195 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
191196 END IF;
191197 END LOOP;
191198
191199 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
191200 fnd_file.put_line(fnd_file.LOG, ' ');
191201
191202
191203 xla_exceptions_pkg.raise_message
191204 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_294');
191205
191206
191207 WHEN OTHERS THEN
191208 xla_exceptions_pkg.raise_message
191209 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_294');
191210 END EventType_294;
191211 --
191212
191213 ---------------------------------------
191214 --
191215 -- PRIVATE PROCEDURE
191216 -- insert_sources_295
191217 --
191218 ----------------------------------------
191219 --
191220 PROCEDURE insert_sources_295(
191221 p_target_ledger_id IN NUMBER
191222 , p_language IN VARCHAR2
191223 , p_sla_ledger_id IN NUMBER
191224 , p_pad_start_date IN DATE
191225 , p_pad_end_date IN DATE
191226 )
191227 IS
191228
191229 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_RCPT_SENDER_SHIP';
191230 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
191231 p_apps_owner VARCHAR2(30);
191232 l_log_module VARCHAR2(240);
191233 BEGIN
191234 IF g_log_enabled THEN
191235 l_log_module := C_DEFAULT_MODULE||'.insert_sources_295';
191236 END IF;
191237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191238
191239 trace
191240 (p_msg => 'BEGIN of insert_sources_295'
191241 ,p_level => C_LEVEL_PROCEDURE
191242 ,p_module => l_log_module);
191243
191244 END IF;
191245
191246 -- select APPS owner
191247 SELECT oracle_username
191248 INTO p_apps_owner
191249 FROM fnd_oracle_userid
191250 WHERE read_only_flag = 'U'
191251 ;
191252
191253 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191254 trace
191255 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
191256 ' - p_language = '||p_language||
191257 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
191258 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
191259 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
191260 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
191261 ,p_level => C_LEVEL_STATEMENT
191262 ,p_module => l_log_module);
191263 END IF;
191264
191265
191266 --
191267 INSERT INTO xla_diag_sources --hdr1
191268 (
191269 event_id
191270 , ledger_id
191271 , sla_ledger_id
191272 , description_language
191273 , object_name
191274 , object_type_code
191275 , line_number
191276 , source_application_id
191277 , source_type_code
191278 , source_code
191279 , source_value
191280 , source_meaning
191281 , created_by
191282 , creation_date
191283 , last_update_date
191284 , last_updated_by
191285 , last_update_login
191286 , program_update_date
191287 , program_application_id
191288 , program_id
191289 , request_id
191290 )
191291 SELECT
191292 event_id
191293 , p_target_ledger_id
191294 , p_sla_ledger_id
191295 , p_language
191296 , object_name
191297 , object_type_code
191298 , line_number
191299 , source_application_id
191300 , source_type_code
191301 , source_code
191302 , SUBSTR(source_value ,1,1996)
191303 , SUBSTR(source_meaning,1,200)
191304 , xla_environment_pkg.g_Usr_Id
191305 , TRUNC(SYSDATE)
191306 , TRUNC(SYSDATE)
191307 , xla_environment_pkg.g_Usr_Id
191308 , xla_environment_pkg.g_Login_Id
191309 , TRUNC(SYSDATE)
191310 , xla_environment_pkg.g_Prog_Appl_Id
191311 , xla_environment_pkg.g_Prog_Id
191312 , xla_environment_pkg.g_Req_Id
191313 FROM (
191314 SELECT xet.event_id event_id
191315 , 0 line_number
191316 , CASE r
191317 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
191318 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
191319
191320 ELSE null
191321 END object_name
191322 , CASE r
191323 WHEN 1 THEN 'HEADER'
191324 WHEN 2 THEN 'HEADER'
191325
191326 ELSE null
191327 END object_type_code
191328 , CASE r
191329 WHEN 1 THEN '707'
191330 WHEN 2 THEN '707'
191331
191332 ELSE null
191333 END source_application_id
191334 , 'S' source_type_code
191335 , CASE r
191336 WHEN 1 THEN 'DISTRIBUTION_TYPE'
191337 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
191338
191339 ELSE null
191340 END source_code
191341 , CASE r
191342 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
191343 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
191344
191345 ELSE null
191346 END source_value
191347 , CASE r
191348 WHEN 1 THEN fvl12.meaning
191349 WHEN 2 THEN fvl38.meaning
191350
191351 ELSE null
191352 END source_meaning
191353 FROM xla_events_gt xet
191354 , CST_XLA_INV_HEADERS_V h1
191355 , fnd_lookup_values fvl12
191356 , fnd_lookup_values fvl38
191357 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
191358 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
191359 AND xet.event_type_code = C_EVENT_TYPE_CODE
191360 AND h1.event_id = xet.event_id
191361 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
191362 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
191363 AND fvl12.view_application_id(+) = 700
191364 AND fvl12.language(+) = USERENV('LANG')
191365 AND fvl38.lookup_type(+) = 'YES_NO'
191366 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
191367 AND fvl38.view_application_id(+) = 0
191368 AND fvl38.language(+) = USERENV('LANG')
191369
191370 )
191371 ;
191372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191373
191374 trace
191375 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
191376 ,p_level => C_LEVEL_STATEMENT
191377 ,p_module => l_log_module);
191378
191379 END IF;
191380 --
191381
191382
191383
191384 --
191385 INSERT INTO xla_diag_sources --line1
191386 (
191387 event_id
191388 , ledger_id
191389 , sla_ledger_id
191390 , description_language
191391 , object_name
191392 , object_type_code
191393 , line_number
191394 , source_application_id
191395 , source_type_code
191396 , source_code
191397 , source_value
191398 , source_meaning
191399 , created_by
191400 , creation_date
191401 , last_update_date
191402 , last_updated_by
191403 , last_update_login
191404 , program_update_date
191405 , program_application_id
191406 , program_id
191407 , request_id
191408 )
191409 SELECT event_id
191410 , p_target_ledger_id
191411 , p_sla_ledger_id
191412 , p_language
191413 , object_name
191414 , object_type_code
191415 , line_number
191416 , source_application_id
191417 , source_type_code
191418 , source_code
191419 , SUBSTR(source_value,1,1996)
191420 , SUBSTR(source_meaning,1,200)
191421 , xla_environment_pkg.g_Usr_Id
191422 , TRUNC(SYSDATE)
191423 , TRUNC(SYSDATE)
191424 , xla_environment_pkg.g_Usr_Id
191425 , xla_environment_pkg.g_Login_Id
191426 , TRUNC(SYSDATE)
191427 , xla_environment_pkg.g_Prog_Appl_Id
191428 , xla_environment_pkg.g_Prog_Id
191429 , xla_environment_pkg.g_Req_Id
191430 FROM (
191431 SELECT xet.event_id event_id
191432 , l2.line_number line_number
191433 , CASE r
191434 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
191435 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
191436 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
191437 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
191438 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
191439 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
191440 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
191441 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
191442 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
191443
191444 ELSE null
191445 END object_name
191446 , CASE r
191447 WHEN 1 THEN 'LINE'
191448 WHEN 2 THEN 'LINE'
191449 WHEN 3 THEN 'LINE'
191450 WHEN 4 THEN 'LINE'
191451 WHEN 5 THEN 'LINE'
191452 WHEN 6 THEN 'LINE'
191453 WHEN 7 THEN 'LINE'
191454 WHEN 8 THEN 'LINE'
191455 WHEN 9 THEN 'LINE'
191456
191457 ELSE null
191458 END object_type_code
191459 , CASE r
191460 WHEN 1 THEN '707'
191461 WHEN 2 THEN '707'
191462 WHEN 3 THEN '707'
191463 WHEN 4 THEN '707'
191464 WHEN 5 THEN '707'
191465 WHEN 6 THEN '707'
191466 WHEN 7 THEN '707'
191467 WHEN 8 THEN '707'
191468 WHEN 9 THEN '707'
191469
191470 ELSE null
191471 END source_application_id
191472 , 'S' source_type_code
191473 , CASE r
191474 WHEN 1 THEN 'CODE_COMBINATION_ID'
191475 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
191476 WHEN 3 THEN 'CURRENCY_CODE'
191477 WHEN 4 THEN 'ENTERED_AMOUNT'
191478 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
191479 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
191480 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
191481 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
191482 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
191483
191484 ELSE null
191485 END source_code
191486 , CASE r
191487 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
191488 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
191489 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
191490 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
191491 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
191492 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
191493 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
191494 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
191495 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
191496
191497 ELSE null
191498 END source_value
191499 , null source_meaning
191500 FROM xla_events_gt xet
191501 , CST_XLA_INV_LINES_V l2
191502 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
191503 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
191504 AND xet.event_type_code = C_EVENT_TYPE_CODE
191505 AND l2.event_id = xet.event_id
191506
191507 )
191508 ;
191509 --
191510 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191511
191512 trace
191513 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
191514 ,p_level => C_LEVEL_STATEMENT
191515 ,p_module => l_log_module);
191516
191517 END IF;
191518
191519
191520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191521 trace
191522 (p_msg => 'END of insert_sources_295'
191523 ,p_level => C_LEVEL_PROCEDURE
191524 ,p_module => l_log_module);
191525 END IF;
191526 EXCEPTION
191527 WHEN xla_exceptions_pkg.application_exception THEN
191528 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
191529 trace
191530 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
191531 ,p_level => C_LEVEL_EXCEPTION
191532 ,p_module => l_log_module);
191533 END IF;
191534 RAISE;
191535 WHEN OTHERS THEN
191536 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
191537 trace
191538 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
191539 ,p_level => C_LEVEL_EXCEPTION
191540 ,p_module => l_log_module);
191541 END IF;
191542 xla_exceptions_pkg.raise_message
191543 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_295');
191544 END insert_sources_295;
191545 --
191546
191547 ---------------------------------------
191548 --
191549 -- PRIVATE FUNCTION
191550 -- EventType_295
191551 --
191552 ----------------------------------------
191553 --
191554 FUNCTION EventType_295
191555 (p_application_id IN NUMBER
191556 ,p_base_ledger_id IN NUMBER
191557 ,p_target_ledger_id IN NUMBER
191558 ,p_language IN VARCHAR2
191559 ,p_currency_code IN VARCHAR2
191560 ,p_sla_ledger_id IN NUMBER
191561 ,p_pad_start_date IN DATE
191562 ,p_pad_end_date IN DATE
191563 ,p_primary_ledger_id IN NUMBER)
191564 RETURN BOOLEAN IS
191565 --
191566 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_RCPT_SENDER_SHIP';
191567 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
191568
191569 l_calculate_acctd_flag VARCHAR2(1) :='Y';
191570 l_calculate_g_l_flag VARCHAR2(1) :='Y';
191571 --
191572 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191573 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191574 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
191575 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
191576 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191577 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
191578 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
191579 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191580 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191581 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191582 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191583 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191584 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191585 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
191586 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
191587 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
191588 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
191589 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
191590 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191591 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191592 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191593 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
191594 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
191595 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
191596 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
191597 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
191598
191599 l_event_id NUMBER;
191600 l_previous_event_id NUMBER;
191601 l_first_event_id NUMBER;
191602 l_last_event_id NUMBER;
191603
191604 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
191605 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
191606 --
191607 --
191608 l_result BOOLEAN := TRUE;
191609 l_rows NUMBER := 1000;
191610 l_event_type_name VARCHAR2(80) := 'User-defined Sender Intransit Shipment - FOB Receipt';
191611 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
191612 l_description VARCHAR2(4000);
191613 l_transaction_reversal NUMBER;
191614 l_ae_header_id NUMBER;
191615 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
191616 l_log_module VARCHAR2(240);
191617 --
191618 l_acct_reversal_source VARCHAR2(30);
191619 l_trx_reversal_source VARCHAR2(30);
191620
191621 l_continue_with_lines BOOLEAN := TRUE;
191622 --
191623 l_acc_rev_gl_date_source DATE; -- 4262811
191624 --
191625 type t_array_event_id is table of number index by binary_integer;
191626
191627 l_rec_array_event t_rec_array_event;
191628 l_null_rec_array_event t_rec_array_event;
191629 l_array_ae_header_id xla_number_array_type;
191630 l_actual_flag VARCHAR2(1) := NULL;
191631 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
191632 l_balance_type_code VARCHAR2(1) :=NULL;
191633 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
191634
191635 --
191636 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
191637 --
191638
191639 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
191640 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
191641
191642 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
191643 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
191644 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
191645 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
191646 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
191647 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
191648 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
191649 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
191650 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
191651
191652 l_array_source_12 t_array_source_12;
191653 l_array_source_12_meaning t_array_lookup_meaning;
191654 l_array_source_38 t_array_source_38;
191655 l_array_source_38_meaning t_array_lookup_meaning;
191656
191657 l_array_source_4 t_array_source_4;
191658 l_array_source_11 t_array_source_11;
191659 l_array_source_15 t_array_source_15;
191660 l_array_source_18 t_array_source_18;
191661 l_array_source_19 t_array_source_19;
191662 l_array_source_20 t_array_source_20;
191663 l_array_source_21 t_array_source_21;
191664 l_array_source_22 t_array_source_22;
191665 l_array_source_24 t_array_source_24;
191666
191667 --
191668 CURSOR header_cur
191669 IS
191670 SELECT /*+ leading(xet) cardinality(xet,1) */
191671 -- Event Type Code: UFOB_RCPT_SENDER_SHIP
191672 -- Event Class Code: USER_DEFINE
191673 xet.entity_id
191674 , xet.legal_entity_id
191675 , xet.entity_code
191676 , xet.transaction_number
191677 , xet.event_id
191678 , xet.event_class_code
191679 , xet.event_type_code
191680 , xet.event_number
191681 , xet.event_date
191682 , xet.transaction_date
191683 , xet.reference_num_1
191684 , xet.reference_num_2
191685 , xet.reference_num_3
191686 , xet.reference_num_4
191687 , xet.reference_char_1
191688 , xet.reference_char_2
191689 , xet.reference_char_3
191690 , xet.reference_char_4
191691 , xet.reference_date_1
191692 , xet.reference_date_2
191693 , xet.reference_date_3
191694 , xet.reference_date_4
191695 , xet.event_created_by
191696 , xet.budgetary_control_flag
191697 , h1.DISTRIBUTION_TYPE source_12
191698 , fvl12.meaning source_12_meaning
191699 , h1.TRANSFER_TO_GL_INDICATOR source_38
191700 , fvl38.meaning source_38_meaning
191701 FROM xla_events_gt xet
191702 , CST_XLA_INV_HEADERS_V h1
191703 , fnd_lookup_values fvl12
191704 , fnd_lookup_values fvl38
191705 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
191706 and xet.event_type_code = C_EVENT_TYPE_CODE
191707 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
191708 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
191709 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
191710 AND fvl12.view_application_id(+) = 700
191711 AND fvl12.language(+) = USERENV('LANG')
191712 AND fvl38.lookup_type(+) = 'YES_NO'
191713 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
191714 AND fvl38.view_application_id(+) = 0
191715 AND fvl38.language(+) = USERENV('LANG')
191716
191717 ORDER BY event_id
191718 ;
191719
191720
191721 --
191722 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
191723 IS
191724 SELECT /*+ leading(xet) cardinality(xet,1) */
191725 -- Event Type Code: UFOB_RCPT_SENDER_SHIP
191726 -- Event Class Code: USER_DEFINE
191727 xet.entity_id
191728 ,xet.legal_entity_id
191729 ,xet.entity_code
191730 ,xet.transaction_number
191731 ,xet.event_id
191732 ,xet.event_class_code
191733 ,xet.event_type_code
191734 ,xet.event_number
191735 ,xet.event_date
191736 ,xet.transaction_date
191737 ,xet.reference_num_1
191738 ,xet.reference_num_2
191739 ,xet.reference_num_3
191740 ,xet.reference_num_4
191741 ,xet.reference_char_1
191742 ,xet.reference_char_2
191743 ,xet.reference_char_3
191744 ,xet.reference_char_4
191745 ,xet.reference_date_1
191746 ,xet.reference_date_2
191747 ,xet.reference_date_3
191748 ,xet.reference_date_4
191749 ,xet.event_created_by
191750 ,xet.budgetary_control_flag , l2.LINE_NUMBER
191751 , l2.CODE_COMBINATION_ID source_4
191752 , l2.DISTRIBUTION_IDENTIFIER source_11
191753 , l2.CURRENCY_CODE source_15
191754 , l2.ENTERED_AMOUNT source_18
191755 , l2.CURRENCY_CONVERSION_DATE source_19
191756 , l2.CURRENCY_CONVERSION_RATE source_20
191757 , l2.CURRENCY_CONVERSION_TYPE source_21
191758 , l2.ACCOUNTED_AMOUNT source_22
191759 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
191760 FROM xla_events_gt xet
191761 , CST_XLA_INV_LINES_V l2
191762 WHERE xet.event_id between x_first_event_id and x_last_event_id
191763 and xet.event_date between p_pad_start_date and p_pad_end_date
191764 and xet.event_type_code = C_EVENT_TYPE_CODE
191765 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
191766 ;
191767
191768 --
191769 BEGIN
191770 IF g_log_enabled THEN
191771 l_log_module := C_DEFAULT_MODULE||'.EventType_295';
191772 END IF;
191773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
191774 trace
191775 (p_msg => 'BEGIN of EventType_295'
191776 ,p_level => C_LEVEL_PROCEDURE
191777 ,p_module => l_log_module);
191778 END IF;
191779
191780 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191781 trace
191782 (p_msg => 'p_application_id = '||p_application_id||
191783 ' - p_base_ledger_id = '||p_base_ledger_id||
191784 ' - p_target_ledger_id = '||p_target_ledger_id||
191785 ' - p_language = '||p_language||
191786 ' - p_currency_code = '||p_currency_code||
191787 ' - p_sla_ledger_id = '||p_sla_ledger_id
191788 ,p_level => C_LEVEL_STATEMENT
191789 ,p_module => l_log_module);
191790 END IF;
191791 --
191792 -- initialze arrays
191793 --
191794 g_array_event.DELETE;
191795 l_rec_array_event := l_null_rec_array_event;
191796 --
191797 --------------------------------------
191798 -- 4262811 Initialze MPA Line Number
191799 --------------------------------------
191800 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
191801
191802 --
191803
191804 --
191805 OPEN header_cur;
191806 --
191807 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
191808 trace
191809 (p_msg => 'SQL - FETCH header_cur'
191810 ,p_level => C_LEVEL_STATEMENT
191811 ,p_module => l_log_module);
191812 END IF;
191813 --
191814 LOOP
191815 FETCH header_cur BULK COLLECT INTO
191816 l_array_entity_id
191817 , l_array_legal_entity_id
191818 , l_array_entity_code
191819 , l_array_transaction_num
191820 , l_array_event_id
191821 , l_array_class_code
191822 , l_array_event_type
191823 , l_array_event_number
191824 , l_array_event_date
191825 , l_array_transaction_date
191826 , l_array_reference_num_1
191827 , l_array_reference_num_2
191828 , l_array_reference_num_3
191829 , l_array_reference_num_4
191830 , l_array_reference_char_1
191831 , l_array_reference_char_2
191832 , l_array_reference_char_3
191833 , l_array_reference_char_4
191834 , l_array_reference_date_1
191835 , l_array_reference_date_2
191836 , l_array_reference_date_3
191837 , l_array_reference_date_4
191838 , l_array_event_created_by
191839 , l_array_budgetary_control_flag
191840 , l_array_source_12
191841 , l_array_source_12_meaning
191842 , l_array_source_38
191843 , l_array_source_38_meaning
191844 LIMIT l_rows;
191845 --
191846 IF (C_LEVEL_EVENT >= g_log_level) THEN
191847 trace
191848 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
191849 ,p_level => C_LEVEL_EVENT
191850 ,p_module => l_log_module);
191851 END IF;
191852 --
191853 EXIT WHEN l_array_entity_id.COUNT = 0;
191854
191855 -- initialize arrays
191856 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
191857 XLA_AE_LINES_PKG.g_rec_lines := NULL;
191858
191859 --
191860 -- Bug 4458708
191861 --
191862 XLA_AE_LINES_PKG.g_LineNumber := 0;
191863
191864
191865 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
191866 g_last_hdr_idx := l_array_event_id.LAST;
191867 --
191868 -- loop for the headers. Each iteration is for each header extract row
191869 -- fetched in header cursor
191870 --
191871 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
191872
191873 --
191874 -- set event info as cache for other routines to refer event attributes
191875 --
191876 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
191877 (p_application_id => p_application_id
191878 ,p_primary_ledger_id => p_primary_ledger_id
191879 ,p_base_ledger_id => p_base_ledger_id
191880 ,p_target_ledger_id => p_target_ledger_id
191881 ,p_entity_id => l_array_entity_id(hdr_idx)
191882 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
191883 ,p_entity_code => l_array_entity_code(hdr_idx)
191884 ,p_transaction_num => l_array_transaction_num(hdr_idx)
191885 ,p_event_id => l_array_event_id(hdr_idx)
191886 ,p_event_class_code => l_array_class_code(hdr_idx)
191887 ,p_event_type_code => l_array_event_type(hdr_idx)
191888 ,p_event_number => l_array_event_number(hdr_idx)
191889 ,p_event_date => l_array_event_date(hdr_idx)
191890 ,p_transaction_date => l_array_transaction_date(hdr_idx)
191891 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
191892 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
191893 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
191894 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
191895 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
191896 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
191897 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
191898 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
191899 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
191900 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
191901 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
191902 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
191903 ,p_event_created_by => l_array_event_created_by(hdr_idx)
191904 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
191905
191906 --
191907 -- set the status of entry to C_VALID (0)
191908 --
191909 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
191910
191911 --
191912 -- initialize a row for ae header
191913 --
191914 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
191915
191916 l_event_id := l_array_event_id(hdr_idx);
191917
191918 --
191919 -- storing the hdr_idx for event. May be used by line cursor.
191920 --
191921 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
191922
191923 --
191924 -- store sources from header extract. This can be improved to
191925 -- store only those sources from header extract that may be used in lines
191926 --
191927
191928 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
191929 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
191930 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
191931 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
191932
191933 --
191934 -- initilaize the status of ae headers for diffrent balance types
191935 -- the status is initialised to C_NOT_CREATED (2)
191936 --
191937 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191938 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191939 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
191940
191941 --
191942 -- call api to validate and store accounting attributes for header
191943 --
191944
191945 ------------------------------------------------------------
191946 -- Accrual Reversal : to get date for Standard Source (NONE)
191947 ------------------------------------------------------------
191948 l_acc_rev_gl_date_source := NULL;
191949
191950 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
191951 l_rec_acct_attrs.array_date_value(1) :=
191952 xla_ae_sources_pkg.GetSystemSourceDate(
191953 p_source_code => 'XLA_REFERENCE_DATE_1'
191954 , p_source_type_code => 'Y'
191955 , p_source_application_id => 602
191956 );
191957 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
191958 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
191959
191960
191961 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
191962
191963 XLA_AE_HEADER_PKG.SetJeCategoryName;
191964
191965 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
191966 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
191967 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
191968 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
191969 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
191970
191971
191972 -- No header level analytical criteria
191973
191974 --
191975 --accounting attribute enhancement, bug 3612931
191976 --
191977 l_trx_reversal_source := SUBSTR(NULL, 1,30);
191978
191979 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
191980 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
191981
191982 xla_accounting_err_pkg.build_message
191983 (p_appli_s_name => 'XLA'
191984 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
191985 ,p_token_1 => 'ACCT_ATTR_NAME'
191986 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
191987 ,p_token_2 => 'PRODUCT_NAME'
191988 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
191989 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
191990 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
191991 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
191992
191993 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
191994 --
191995 -- following sets the accounting attributes needed to reverse
191996 -- accounting for a distributeion
191997 --
191998 xla_ae_lines_pkg.SetTrxReversalAttrs
191999 (p_event_id => l_event_id
192000 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
192001 ,p_trx_reversal_source => l_trx_reversal_source);
192002
192003 END IF;
192004
192005
192006 ----------------------------------------------------------------
192007 -- 4262811 - update the header statuses to invalid in need be
192008 ----------------------------------------------------------------
192009 --
192010 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
192011
192012
192013 -----------------------------------------------
192014 -- No accrual reversal for the event class/type
192015 -----------------------------------------------
192016 ----------------------------------------------------------------
192017
192018 --
192019 -- this ends the header loop iteration for one bulk fetch
192020 --
192021 END LOOP;
192022
192023 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
192024 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
192025
192026 --
192027 -- insert dummy rows into lines gt table that were created due to
192028 -- transaction reversals
192029 --
192030 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
192031 l_result := XLA_AE_LINES_PKG.InsertLines;
192032 END IF;
192033
192034 --
192035 -- reset the temp_line_num for each set of events fetched from header
192036 -- cursor rather than doing it for each new event in line cursor
192037 -- Bug 3939231
192038 --
192039 xla_ae_lines_pkg.g_temp_line_num := 0;
192040
192041
192042
192043 --
192044 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
192045 --
192046 --
192047 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192048
192049 trace
192050 (p_msg => 'SQL - FETCH line_cur'
192051 ,p_level => C_LEVEL_STATEMENT
192052 ,p_module => l_log_module);
192053
192054 END IF;
192055 --
192056 --
192057 LOOP
192058 --
192059 FETCH line_cur BULK COLLECT INTO
192060 l_array_entity_id
192061 , l_array_legal_entity_id
192062 , l_array_entity_code
192063 , l_array_transaction_num
192064 , l_array_event_id
192065 , l_array_class_code
192066 , l_array_event_type
192067 , l_array_event_number
192068 , l_array_event_date
192069 , l_array_transaction_date
192070 , l_array_reference_num_1
192071 , l_array_reference_num_2
192072 , l_array_reference_num_3
192073 , l_array_reference_num_4
192074 , l_array_reference_char_1
192075 , l_array_reference_char_2
192076 , l_array_reference_char_3
192077 , l_array_reference_char_4
192078 , l_array_reference_date_1
192079 , l_array_reference_date_2
192080 , l_array_reference_date_3
192081 , l_array_reference_date_4
192082 , l_array_event_created_by
192083 , l_array_budgetary_control_flag
192084 , l_array_extract_line_num
192085 , l_array_source_4
192086 , l_array_source_11
192087 , l_array_source_15
192088 , l_array_source_18
192089 , l_array_source_19
192090 , l_array_source_20
192091 , l_array_source_21
192092 , l_array_source_22
192093 , l_array_source_24
192094 LIMIT l_rows;
192095
192096 --
192097 IF (C_LEVEL_EVENT >= g_log_level) THEN
192098 trace
192099 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
192100 ,p_level => C_LEVEL_EVENT
192101 ,p_module => l_log_module);
192102 END IF;
192103 --
192104 EXIT WHEN l_array_entity_id.count = 0;
192105
192106 XLA_AE_LINES_PKG.g_rec_lines := null;
192107
192108 --
192109 -- Bug 4458708
192110 --
192111 XLA_AE_LINES_PKG.g_LineNumber := 0;
192112 --
192113 --
192114
192115 FOR Idx IN 1..l_array_event_id.count LOOP
192116 --
192117 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
192118 --
192119 l_event_id := l_array_event_id(idx); -- 5648433
192120
192121 --
192122 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
192123 --
192124
192125 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
192126 (g_array_event(l_event_id).array_value_num('header_index'))
192127 ,'N'
192128 ) <> 'Y'
192129 THEN
192130 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192131 trace
192132 (p_msg => 'Trancaction revesal option is not Y '
192133 ,p_level => C_LEVEL_STATEMENT
192134 ,p_module => l_log_module);
192135 END IF;
192136
192137 --
192138 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
192139 --
192140 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
192141 --
192142 -- set event info as cache for other routines to refer event attributes
192143 --
192144
192145 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
192146 l_previous_event_id := l_event_id;
192147
192148 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
192149 (p_application_id => p_application_id
192150 ,p_primary_ledger_id => p_primary_ledger_id
192151 ,p_base_ledger_id => p_base_ledger_id
192152 ,p_target_ledger_id => p_target_ledger_id
192153 ,p_entity_id => l_array_entity_id(Idx)
192154 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
192155 ,p_entity_code => l_array_entity_code(Idx)
192156 ,p_transaction_num => l_array_transaction_num(Idx)
192157 ,p_event_id => l_array_event_id(Idx)
192158 ,p_event_class_code => l_array_class_code(Idx)
192159 ,p_event_type_code => l_array_event_type(Idx)
192160 ,p_event_number => l_array_event_number(Idx)
192161 ,p_event_date => l_array_event_date(Idx)
192162 ,p_transaction_date => l_array_transaction_date(Idx)
192163 ,p_reference_num_1 => l_array_reference_num_1(Idx)
192164 ,p_reference_num_2 => l_array_reference_num_2(Idx)
192165 ,p_reference_num_3 => l_array_reference_num_3(Idx)
192166 ,p_reference_num_4 => l_array_reference_num_4(Idx)
192167 ,p_reference_char_1 => l_array_reference_char_1(Idx)
192168 ,p_reference_char_2 => l_array_reference_char_2(Idx)
192169 ,p_reference_char_3 => l_array_reference_char_3(Idx)
192170 ,p_reference_char_4 => l_array_reference_char_4(Idx)
192171 ,p_reference_date_1 => l_array_reference_date_1(Idx)
192172 ,p_reference_date_2 => l_array_reference_date_2(Idx)
192173 ,p_reference_date_3 => l_array_reference_date_3(Idx)
192174 ,p_reference_date_4 => l_array_reference_date_4(Idx)
192175 ,p_event_created_by => l_array_event_created_by(Idx)
192176 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
192177 --
192178 END IF;
192179
192180
192181
192182 --
192183 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
192184
192185 l_acct_reversal_source := SUBSTR(NULL, 1,30);
192186
192187 IF l_continue_with_lines THEN
192188 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
192189 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
192190
192191 xla_accounting_err_pkg.build_message
192192 (p_appli_s_name => 'XLA'
192193 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
192194 ,p_token_1 => 'LINE_NUMBER'
192195 ,p_value_1 => l_array_extract_line_num(Idx)
192196 ,p_token_2 => 'PRODUCT_NAME'
192197 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
192198 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
192199 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
192200 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
192201
192202 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
192203 --
192204 -- following sets the accounting attributes needed to reverse
192205 -- accounting for a distributeion
192206 --
192207
192208 --
192209 -- 5217187
192210 --
192211 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
192212 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
192213 g_array_event(l_event_id).array_value_num('header_index'));
192214 --
192215 --
192216
192217 -- No reversal code generated
192218
192219 xla_ae_lines_pkg.SetAcctReversalAttrs
192220 (p_event_id => l_event_id
192221 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
192222 ,p_calculate_acctd_flag => l_calculate_acctd_flag
192223 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
192224 END IF;
192225
192226 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
192227 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
192228
192229 --
192230 AcctLineType_121 (
192231 p_application_id => p_application_id
192232 ,p_event_id => l_event_id
192233 ,p_calculate_acctd_flag => l_calculate_acctd_flag
192234 ,p_calculate_g_l_flag => l_calculate_g_l_flag
192235 ,p_actual_flag => l_actual_flag
192236 ,p_balance_type_code => l_balance_type_code
192237 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192238
192239 , p_source_4 => l_array_source_4(Idx)
192240 , p_source_11 => l_array_source_11(Idx)
192241 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192242 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192243 , p_source_15 => l_array_source_15(Idx)
192244 , p_source_18 => l_array_source_18(Idx)
192245 , p_source_19 => l_array_source_19(Idx)
192246 , p_source_20 => l_array_source_20(Idx)
192247 , p_source_21 => l_array_source_21(Idx)
192248 , p_source_22 => l_array_source_22(Idx)
192249 , p_source_24 => l_array_source_24(Idx)
192250 );
192251 If(l_balance_type_code = 'A') THEN
192252 l_actual_gain_loss_ref := l_gain_or_loss_ref;
192253 END IF;
192254
192255 --
192256
192257
192258 --
192259 AcctLineType_138 (
192260 p_application_id => p_application_id
192261 ,p_event_id => l_event_id
192262 ,p_calculate_acctd_flag => l_calculate_acctd_flag
192263 ,p_calculate_g_l_flag => l_calculate_g_l_flag
192264 ,p_actual_flag => l_actual_flag
192265 ,p_balance_type_code => l_balance_type_code
192266 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192267
192268 , p_source_4 => l_array_source_4(Idx)
192269 , p_source_11 => l_array_source_11(Idx)
192270 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192271 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192272 , p_source_15 => l_array_source_15(Idx)
192273 , p_source_18 => l_array_source_18(Idx)
192274 , p_source_19 => l_array_source_19(Idx)
192275 , p_source_20 => l_array_source_20(Idx)
192276 , p_source_21 => l_array_source_21(Idx)
192277 , p_source_22 => l_array_source_22(Idx)
192278 , p_source_24 => l_array_source_24(Idx)
192279 );
192280 If(l_balance_type_code = 'A') THEN
192281 l_actual_gain_loss_ref := l_gain_or_loss_ref;
192282 END IF;
192283
192284 --
192285
192286
192287 --
192288 AcctLineType_206 (
192289 p_application_id => p_application_id
192290 ,p_event_id => l_event_id
192291 ,p_calculate_acctd_flag => l_calculate_acctd_flag
192292 ,p_calculate_g_l_flag => l_calculate_g_l_flag
192293 ,p_actual_flag => l_actual_flag
192294 ,p_balance_type_code => l_balance_type_code
192295 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
192296
192297 , p_source_4 => l_array_source_4(Idx)
192298 , p_source_11 => l_array_source_11(Idx)
192299 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
192300 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
192301 , p_source_15 => l_array_source_15(Idx)
192302 , p_source_18 => l_array_source_18(Idx)
192303 , p_source_19 => l_array_source_19(Idx)
192304 , p_source_20 => l_array_source_20(Idx)
192305 , p_source_21 => l_array_source_21(Idx)
192306 , p_source_22 => l_array_source_22(Idx)
192307 , p_source_24 => l_array_source_24(Idx)
192308 );
192309 If(l_balance_type_code = 'A') THEN
192310 l_actual_gain_loss_ref := l_gain_or_loss_ref;
192311 END IF;
192312
192313 --
192314
192315 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
192316 -- or secondary ledger that has different currency with primary
192317 -- or alc that is calculated by sla
192318 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
192319 (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'))
192320
192321 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
192322 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
192323 AND (l_actual_flag = 'A')) THEN
192324 XLA_AE_LINES_PKG.CreateGainOrLossLines(
192325 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
192326 ,p_application_id => p_application_id
192327 ,p_amb_context_code => 'DEFAULT'
192328 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
192329 ,p_event_class_code => C_EVENT_CLASS_CODE
192330 ,p_event_type_code => C_EVENT_TYPE_CODE
192331
192332 ,p_gain_ccid => -1
192333 ,p_loss_ccid => -1
192334
192335 ,p_actual_flag => l_actual_flag
192336 ,p_enc_flag => null
192337 ,p_actual_g_l_ref => l_actual_gain_loss_ref
192338 ,p_enc_g_l_ref => null
192339 );
192340 END IF;
192341 END IF;
192342 END IF;
192343
192344 ELSE
192345 --
192346 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
192347 --
192348 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192349 trace
192350 (p_msg => 'Trancaction revesal option is Y'
192351 ,p_level => C_LEVEL_STATEMENT
192352 ,p_module => l_log_module);
192353 END IF;
192354 END IF;
192355
192356 END LOOP;
192357 l_result := XLA_AE_LINES_PKG.InsertLines ;
192358 end loop;
192359 close line_cur;
192360
192361
192362 --
192363 -- insert headers into xla_ae_headers_gt table
192364 --
192365 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
192366
192367 -- insert into errors table here.
192368
192369 END LOOP;
192370
192371 --
192372 -- 4865292
192373 --
192374 -- Compare g_hdr_extract_count with event count in
192375 -- CreateHeadersAndLines.
192376 --
192377 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
192378
192379 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192380 trace (p_msg => '# rows extracted from header extract objects '
192381 || ' (running total): '
192382 || g_hdr_extract_count
192383 ,p_level => C_LEVEL_STATEMENT
192384 ,p_module => l_log_module);
192385 END IF;
192386
192387 CLOSE header_cur;
192388 --
192389
192390 --
192391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192392 trace
192393 (p_msg => 'END of EventType_295'
192394 ,p_level => C_LEVEL_PROCEDURE
192395 ,p_module => l_log_module);
192396 END IF;
192397 --
192398 RETURN l_result;
192399 EXCEPTION
192400 WHEN xla_exceptions_pkg.application_exception THEN
192401
192402 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
192403
192404
192405 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
192406
192407 RAISE;
192408
192409 WHEN NO_DATA_FOUND THEN
192410
192411 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
192412 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
192413
192414 FOR header_record IN header_cur
192415 LOOP
192416 l_array_header_events(header_record.event_id) := header_record.event_id;
192417 END LOOP;
192418
192419 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
192420 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
192421
192422 fnd_file.put_line(fnd_file.LOG, ' ');
192423 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
192424 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
192425 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
192426
192427 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
192428 LOOP
192429 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
192430 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
192431 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
192432 END IF;
192433 END LOOP;
192434
192435 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
192436 fnd_file.put_line(fnd_file.LOG, ' ');
192437
192438
192439 xla_exceptions_pkg.raise_message
192440 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_295');
192441
192442
192443 WHEN OTHERS THEN
192444 xla_exceptions_pkg.raise_message
192445 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_295');
192446 END EventType_295;
192447 --
192448
192449 ---------------------------------------
192450 --
192451 -- PRIVATE PROCEDURE
192452 -- insert_sources_296
192453 --
192454 ----------------------------------------
192455 --
192456 PROCEDURE insert_sources_296(
192457 p_target_ledger_id IN NUMBER
192458 , p_language IN VARCHAR2
192459 , p_sla_ledger_id IN NUMBER
192460 , p_pad_start_date IN DATE
192461 , p_pad_end_date IN DATE
192462 )
192463 IS
192464
192465 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
192466 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
192467 p_apps_owner VARCHAR2(30);
192468 l_log_module VARCHAR2(240);
192469 BEGIN
192470 IF g_log_enabled THEN
192471 l_log_module := C_DEFAULT_MODULE||'.insert_sources_296';
192472 END IF;
192473 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192474
192475 trace
192476 (p_msg => 'BEGIN of insert_sources_296'
192477 ,p_level => C_LEVEL_PROCEDURE
192478 ,p_module => l_log_module);
192479
192480 END IF;
192481
192482 -- select APPS owner
192483 SELECT oracle_username
192484 INTO p_apps_owner
192485 FROM fnd_oracle_userid
192486 WHERE read_only_flag = 'U'
192487 ;
192488
192489 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192490 trace
192491 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
192492 ' - p_language = '||p_language||
192493 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
192494 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
192495 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
192496 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
192497 ,p_level => C_LEVEL_STATEMENT
192498 ,p_module => l_log_module);
192499 END IF;
192500
192501
192502 --
192503 INSERT INTO xla_diag_sources --hdr1
192504 (
192505 event_id
192506 , ledger_id
192507 , sla_ledger_id
192508 , description_language
192509 , object_name
192510 , object_type_code
192511 , line_number
192512 , source_application_id
192513 , source_type_code
192514 , source_code
192515 , source_value
192516 , source_meaning
192517 , created_by
192518 , creation_date
192519 , last_update_date
192520 , last_updated_by
192521 , last_update_login
192522 , program_update_date
192523 , program_application_id
192524 , program_id
192525 , request_id
192526 )
192527 SELECT
192528 event_id
192529 , p_target_ledger_id
192530 , p_sla_ledger_id
192531 , p_language
192532 , object_name
192533 , object_type_code
192534 , line_number
192535 , source_application_id
192536 , source_type_code
192537 , source_code
192538 , SUBSTR(source_value ,1,1996)
192539 , SUBSTR(source_meaning,1,200)
192540 , xla_environment_pkg.g_Usr_Id
192541 , TRUNC(SYSDATE)
192542 , TRUNC(SYSDATE)
192543 , xla_environment_pkg.g_Usr_Id
192544 , xla_environment_pkg.g_Login_Id
192545 , TRUNC(SYSDATE)
192546 , xla_environment_pkg.g_Prog_Appl_Id
192547 , xla_environment_pkg.g_Prog_Id
192548 , xla_environment_pkg.g_Req_Id
192549 FROM (
192550 SELECT xet.event_id event_id
192551 , 0 line_number
192552 , CASE r
192553 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
192554 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
192555
192556 ELSE null
192557 END object_name
192558 , CASE r
192559 WHEN 1 THEN 'HEADER'
192560 WHEN 2 THEN 'HEADER'
192561
192562 ELSE null
192563 END object_type_code
192564 , CASE r
192565 WHEN 1 THEN '707'
192566 WHEN 2 THEN '707'
192567
192568 ELSE null
192569 END source_application_id
192570 , 'S' source_type_code
192571 , CASE r
192572 WHEN 1 THEN 'DISTRIBUTION_TYPE'
192573 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
192574
192575 ELSE null
192576 END source_code
192577 , CASE r
192578 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
192579 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
192580
192581 ELSE null
192582 END source_value
192583 , CASE r
192584 WHEN 1 THEN fvl12.meaning
192585 WHEN 2 THEN fvl38.meaning
192586
192587 ELSE null
192588 END source_meaning
192589 FROM xla_events_gt xet
192590 , CST_XLA_INV_HEADERS_V h1
192591 , fnd_lookup_values fvl12
192592 , fnd_lookup_values fvl38
192593 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
192594 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
192595 AND xet.event_type_code = C_EVENT_TYPE_CODE
192596 AND h1.event_id = xet.event_id
192597 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
192598 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
192599 AND fvl12.view_application_id(+) = 700
192600 AND fvl12.language(+) = USERENV('LANG')
192601 AND fvl38.lookup_type(+) = 'YES_NO'
192602 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
192603 AND fvl38.view_application_id(+) = 0
192604 AND fvl38.language(+) = USERENV('LANG')
192605
192606 )
192607 ;
192608 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192609
192610 trace
192611 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
192612 ,p_level => C_LEVEL_STATEMENT
192613 ,p_module => l_log_module);
192614
192615 END IF;
192616 --
192617
192618
192619
192620 --
192621 INSERT INTO xla_diag_sources --line1
192622 (
192623 event_id
192624 , ledger_id
192625 , sla_ledger_id
192626 , description_language
192627 , object_name
192628 , object_type_code
192629 , line_number
192630 , source_application_id
192631 , source_type_code
192632 , source_code
192633 , source_value
192634 , source_meaning
192635 , created_by
192636 , creation_date
192637 , last_update_date
192638 , last_updated_by
192639 , last_update_login
192640 , program_update_date
192641 , program_application_id
192642 , program_id
192643 , request_id
192644 )
192645 SELECT event_id
192646 , p_target_ledger_id
192647 , p_sla_ledger_id
192648 , p_language
192649 , object_name
192650 , object_type_code
192651 , line_number
192652 , source_application_id
192653 , source_type_code
192654 , source_code
192655 , SUBSTR(source_value,1,1996)
192656 , SUBSTR(source_meaning,1,200)
192657 , xla_environment_pkg.g_Usr_Id
192658 , TRUNC(SYSDATE)
192659 , TRUNC(SYSDATE)
192660 , xla_environment_pkg.g_Usr_Id
192661 , xla_environment_pkg.g_Login_Id
192662 , TRUNC(SYSDATE)
192663 , xla_environment_pkg.g_Prog_Appl_Id
192664 , xla_environment_pkg.g_Prog_Id
192665 , xla_environment_pkg.g_Req_Id
192666 FROM (
192667 SELECT xet.event_id event_id
192668 , l2.line_number line_number
192669 , CASE r
192670 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
192671 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
192672 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
192673 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
192674 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
192675 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
192676 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
192677 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
192678 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
192679
192680 ELSE null
192681 END object_name
192682 , CASE r
192683 WHEN 1 THEN 'LINE'
192684 WHEN 2 THEN 'LINE'
192685 WHEN 3 THEN 'LINE'
192686 WHEN 4 THEN 'LINE'
192687 WHEN 5 THEN 'LINE'
192688 WHEN 6 THEN 'LINE'
192689 WHEN 7 THEN 'LINE'
192690 WHEN 8 THEN 'LINE'
192691 WHEN 9 THEN 'LINE'
192692
192693 ELSE null
192694 END object_type_code
192695 , CASE r
192696 WHEN 1 THEN '707'
192697 WHEN 2 THEN '707'
192698 WHEN 3 THEN '707'
192699 WHEN 4 THEN '707'
192700 WHEN 5 THEN '707'
192701 WHEN 6 THEN '707'
192702 WHEN 7 THEN '707'
192703 WHEN 8 THEN '707'
192704 WHEN 9 THEN '707'
192705
192706 ELSE null
192707 END source_application_id
192708 , 'S' source_type_code
192709 , CASE r
192710 WHEN 1 THEN 'CODE_COMBINATION_ID'
192711 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
192712 WHEN 3 THEN 'CURRENCY_CODE'
192713 WHEN 4 THEN 'ENTERED_AMOUNT'
192714 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
192715 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
192716 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
192717 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
192718 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
192719
192720 ELSE null
192721 END source_code
192722 , CASE r
192723 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
192724 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
192725 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
192726 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
192727 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
192728 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
192729 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
192730 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
192731 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
192732
192733 ELSE null
192734 END source_value
192735 , null source_meaning
192736 FROM xla_events_gt xet
192737 , CST_XLA_INV_LINES_V l2
192738 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
192739 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
192740 AND xet.event_type_code = C_EVENT_TYPE_CODE
192741 AND l2.event_id = xet.event_id
192742
192743 )
192744 ;
192745 --
192746 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
192747
192748 trace
192749 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
192750 ,p_level => C_LEVEL_STATEMENT
192751 ,p_module => l_log_module);
192752
192753 END IF;
192754
192755
192756 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192757 trace
192758 (p_msg => 'END of insert_sources_296'
192759 ,p_level => C_LEVEL_PROCEDURE
192760 ,p_module => l_log_module);
192761 END IF;
192762 EXCEPTION
192763 WHEN xla_exceptions_pkg.application_exception THEN
192764 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
192765 trace
192766 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
192767 ,p_level => C_LEVEL_EXCEPTION
192768 ,p_module => l_log_module);
192769 END IF;
192770 RAISE;
192771 WHEN OTHERS THEN
192772 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
192773 trace
192774 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
192775 ,p_level => C_LEVEL_EXCEPTION
192776 ,p_module => l_log_module);
192777 END IF;
192778 xla_exceptions_pkg.raise_message
192779 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_296');
192780 END insert_sources_296;
192781 --
192782
192783 ---------------------------------------
192784 --
192785 -- PRIVATE FUNCTION
192786 -- EventType_296
192787 --
192788 ----------------------------------------
192789 --
192790 FUNCTION EventType_296
192791 (p_application_id IN NUMBER
192792 ,p_base_ledger_id IN NUMBER
192793 ,p_target_ledger_id IN NUMBER
192794 ,p_language IN VARCHAR2
192795 ,p_currency_code IN VARCHAR2
192796 ,p_sla_ledger_id IN NUMBER
192797 ,p_pad_start_date IN DATE
192798 ,p_pad_end_date IN DATE
192799 ,p_primary_ledger_id IN NUMBER)
192800 RETURN BOOLEAN IS
192801 --
192802 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_RECIPIENT_SHIP_NO_TP';
192803 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
192804
192805 l_calculate_acctd_flag VARCHAR2(1) :='Y';
192806 l_calculate_g_l_flag VARCHAR2(1) :='Y';
192807 --
192808 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192809 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192810 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192811 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192812 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192813 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192814 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192815 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192816 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192817 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192818 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192819 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192820 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192821 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
192822 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192823 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192824 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192825 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
192826 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192827 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192828 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192829 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
192830 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
192831 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
192832 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
192833 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
192834
192835 l_event_id NUMBER;
192836 l_previous_event_id NUMBER;
192837 l_first_event_id NUMBER;
192838 l_last_event_id NUMBER;
192839
192840 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
192841 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
192842 --
192843 --
192844 l_result BOOLEAN := TRUE;
192845 l_rows NUMBER := 1000;
192846 l_event_type_name VARCHAR2(80) := 'User-defined Recipient Intransit Shipment - No Transfer Price - FOB Shipment';
192847 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
192848 l_description VARCHAR2(4000);
192849 l_transaction_reversal NUMBER;
192850 l_ae_header_id NUMBER;
192851 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
192852 l_log_module VARCHAR2(240);
192853 --
192854 l_acct_reversal_source VARCHAR2(30);
192855 l_trx_reversal_source VARCHAR2(30);
192856
192857 l_continue_with_lines BOOLEAN := TRUE;
192858 --
192859 l_acc_rev_gl_date_source DATE; -- 4262811
192860 --
192861 type t_array_event_id is table of number index by binary_integer;
192862
192863 l_rec_array_event t_rec_array_event;
192864 l_null_rec_array_event t_rec_array_event;
192865 l_array_ae_header_id xla_number_array_type;
192866 l_actual_flag VARCHAR2(1) := NULL;
192867 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
192868 l_balance_type_code VARCHAR2(1) :=NULL;
192869 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
192870
192871 --
192872 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
192873 --
192874
192875 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
192876 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
192877
192878 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
192879 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
192880 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
192881 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
192882 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
192883 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
192884 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
192885 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
192886 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
192887
192888 l_array_source_12 t_array_source_12;
192889 l_array_source_12_meaning t_array_lookup_meaning;
192890 l_array_source_38 t_array_source_38;
192891 l_array_source_38_meaning t_array_lookup_meaning;
192892
192893 l_array_source_4 t_array_source_4;
192894 l_array_source_11 t_array_source_11;
192895 l_array_source_15 t_array_source_15;
192896 l_array_source_18 t_array_source_18;
192897 l_array_source_19 t_array_source_19;
192898 l_array_source_20 t_array_source_20;
192899 l_array_source_21 t_array_source_21;
192900 l_array_source_22 t_array_source_22;
192901 l_array_source_24 t_array_source_24;
192902
192903 --
192904 CURSOR header_cur
192905 IS
192906 SELECT /*+ leading(xet) cardinality(xet,1) */
192907 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_NO_TP
192908 -- Event Class Code: USER_DEFINE
192909 xet.entity_id
192910 , xet.legal_entity_id
192911 , xet.entity_code
192912 , xet.transaction_number
192913 , xet.event_id
192914 , xet.event_class_code
192915 , xet.event_type_code
192916 , xet.event_number
192917 , xet.event_date
192918 , xet.transaction_date
192919 , xet.reference_num_1
192920 , xet.reference_num_2
192921 , xet.reference_num_3
192922 , xet.reference_num_4
192923 , xet.reference_char_1
192924 , xet.reference_char_2
192925 , xet.reference_char_3
192926 , xet.reference_char_4
192927 , xet.reference_date_1
192928 , xet.reference_date_2
192929 , xet.reference_date_3
192930 , xet.reference_date_4
192931 , xet.event_created_by
192932 , xet.budgetary_control_flag
192933 , h1.DISTRIBUTION_TYPE source_12
192934 , fvl12.meaning source_12_meaning
192935 , h1.TRANSFER_TO_GL_INDICATOR source_38
192936 , fvl38.meaning source_38_meaning
192937 FROM xla_events_gt xet
192938 , CST_XLA_INV_HEADERS_V h1
192939 , fnd_lookup_values fvl12
192940 , fnd_lookup_values fvl38
192941 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
192942 and xet.event_type_code = C_EVENT_TYPE_CODE
192943 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
192944 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
192945 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
192946 AND fvl12.view_application_id(+) = 700
192947 AND fvl12.language(+) = USERENV('LANG')
192948 AND fvl38.lookup_type(+) = 'YES_NO'
192949 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
192950 AND fvl38.view_application_id(+) = 0
192951 AND fvl38.language(+) = USERENV('LANG')
192952
192953 ORDER BY event_id
192954 ;
192955
192956
192957 --
192958 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
192959 IS
192960 SELECT /*+ leading(xet) cardinality(xet,1) */
192961 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_NO_TP
192962 -- Event Class Code: USER_DEFINE
192963 xet.entity_id
192964 ,xet.legal_entity_id
192965 ,xet.entity_code
192966 ,xet.transaction_number
192967 ,xet.event_id
192968 ,xet.event_class_code
192969 ,xet.event_type_code
192970 ,xet.event_number
192971 ,xet.event_date
192972 ,xet.transaction_date
192973 ,xet.reference_num_1
192974 ,xet.reference_num_2
192975 ,xet.reference_num_3
192976 ,xet.reference_num_4
192977 ,xet.reference_char_1
192978 ,xet.reference_char_2
192979 ,xet.reference_char_3
192980 ,xet.reference_char_4
192981 ,xet.reference_date_1
192982 ,xet.reference_date_2
192983 ,xet.reference_date_3
192984 ,xet.reference_date_4
192985 ,xet.event_created_by
192986 ,xet.budgetary_control_flag , l2.LINE_NUMBER
192987 , l2.CODE_COMBINATION_ID source_4
192988 , l2.DISTRIBUTION_IDENTIFIER source_11
192989 , l2.CURRENCY_CODE source_15
192990 , l2.ENTERED_AMOUNT source_18
192991 , l2.CURRENCY_CONVERSION_DATE source_19
192992 , l2.CURRENCY_CONVERSION_RATE source_20
192993 , l2.CURRENCY_CONVERSION_TYPE source_21
192994 , l2.ACCOUNTED_AMOUNT source_22
192995 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
192996 FROM xla_events_gt xet
192997 , CST_XLA_INV_LINES_V l2
192998 WHERE xet.event_id between x_first_event_id and x_last_event_id
192999 and xet.event_date between p_pad_start_date and p_pad_end_date
193000 and xet.event_type_code = C_EVENT_TYPE_CODE
193001 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
193002 ;
193003
193004 --
193005 BEGIN
193006 IF g_log_enabled THEN
193007 l_log_module := C_DEFAULT_MODULE||'.EventType_296';
193008 END IF;
193009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193010 trace
193011 (p_msg => 'BEGIN of EventType_296'
193012 ,p_level => C_LEVEL_PROCEDURE
193013 ,p_module => l_log_module);
193014 END IF;
193015
193016 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193017 trace
193018 (p_msg => 'p_application_id = '||p_application_id||
193019 ' - p_base_ledger_id = '||p_base_ledger_id||
193020 ' - p_target_ledger_id = '||p_target_ledger_id||
193021 ' - p_language = '||p_language||
193022 ' - p_currency_code = '||p_currency_code||
193023 ' - p_sla_ledger_id = '||p_sla_ledger_id
193024 ,p_level => C_LEVEL_STATEMENT
193025 ,p_module => l_log_module);
193026 END IF;
193027 --
193028 -- initialze arrays
193029 --
193030 g_array_event.DELETE;
193031 l_rec_array_event := l_null_rec_array_event;
193032 --
193033 --------------------------------------
193034 -- 4262811 Initialze MPA Line Number
193035 --------------------------------------
193036 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
193037
193038 --
193039
193040 --
193041 OPEN header_cur;
193042 --
193043 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193044 trace
193045 (p_msg => 'SQL - FETCH header_cur'
193046 ,p_level => C_LEVEL_STATEMENT
193047 ,p_module => l_log_module);
193048 END IF;
193049 --
193050 LOOP
193051 FETCH header_cur BULK COLLECT INTO
193052 l_array_entity_id
193053 , l_array_legal_entity_id
193054 , l_array_entity_code
193055 , l_array_transaction_num
193056 , l_array_event_id
193057 , l_array_class_code
193058 , l_array_event_type
193059 , l_array_event_number
193060 , l_array_event_date
193061 , l_array_transaction_date
193062 , l_array_reference_num_1
193063 , l_array_reference_num_2
193064 , l_array_reference_num_3
193065 , l_array_reference_num_4
193066 , l_array_reference_char_1
193067 , l_array_reference_char_2
193068 , l_array_reference_char_3
193069 , l_array_reference_char_4
193070 , l_array_reference_date_1
193071 , l_array_reference_date_2
193072 , l_array_reference_date_3
193073 , l_array_reference_date_4
193074 , l_array_event_created_by
193075 , l_array_budgetary_control_flag
193076 , l_array_source_12
193077 , l_array_source_12_meaning
193078 , l_array_source_38
193079 , l_array_source_38_meaning
193080 LIMIT l_rows;
193081 --
193082 IF (C_LEVEL_EVENT >= g_log_level) THEN
193083 trace
193084 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
193085 ,p_level => C_LEVEL_EVENT
193086 ,p_module => l_log_module);
193087 END IF;
193088 --
193089 EXIT WHEN l_array_entity_id.COUNT = 0;
193090
193091 -- initialize arrays
193092 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
193093 XLA_AE_LINES_PKG.g_rec_lines := NULL;
193094
193095 --
193096 -- Bug 4458708
193097 --
193098 XLA_AE_LINES_PKG.g_LineNumber := 0;
193099
193100
193101 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
193102 g_last_hdr_idx := l_array_event_id.LAST;
193103 --
193104 -- loop for the headers. Each iteration is for each header extract row
193105 -- fetched in header cursor
193106 --
193107 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
193108
193109 --
193110 -- set event info as cache for other routines to refer event attributes
193111 --
193112 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
193113 (p_application_id => p_application_id
193114 ,p_primary_ledger_id => p_primary_ledger_id
193115 ,p_base_ledger_id => p_base_ledger_id
193116 ,p_target_ledger_id => p_target_ledger_id
193117 ,p_entity_id => l_array_entity_id(hdr_idx)
193118 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
193119 ,p_entity_code => l_array_entity_code(hdr_idx)
193120 ,p_transaction_num => l_array_transaction_num(hdr_idx)
193121 ,p_event_id => l_array_event_id(hdr_idx)
193122 ,p_event_class_code => l_array_class_code(hdr_idx)
193123 ,p_event_type_code => l_array_event_type(hdr_idx)
193124 ,p_event_number => l_array_event_number(hdr_idx)
193125 ,p_event_date => l_array_event_date(hdr_idx)
193126 ,p_transaction_date => l_array_transaction_date(hdr_idx)
193127 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
193128 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
193129 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
193130 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
193131 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
193132 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
193133 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
193134 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
193135 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
193136 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
193137 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
193138 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
193139 ,p_event_created_by => l_array_event_created_by(hdr_idx)
193140 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
193141
193142 --
193143 -- set the status of entry to C_VALID (0)
193144 --
193145 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
193146
193147 --
193148 -- initialize a row for ae header
193149 --
193150 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
193151
193152 l_event_id := l_array_event_id(hdr_idx);
193153
193154 --
193155 -- storing the hdr_idx for event. May be used by line cursor.
193156 --
193157 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
193158
193159 --
193160 -- store sources from header extract. This can be improved to
193161 -- store only those sources from header extract that may be used in lines
193162 --
193163
193164 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
193165 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
193166 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
193167 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
193168
193169 --
193170 -- initilaize the status of ae headers for diffrent balance types
193171 -- the status is initialised to C_NOT_CREATED (2)
193172 --
193173 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193174 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193175 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
193176
193177 --
193178 -- call api to validate and store accounting attributes for header
193179 --
193180
193181 ------------------------------------------------------------
193182 -- Accrual Reversal : to get date for Standard Source (NONE)
193183 ------------------------------------------------------------
193184 l_acc_rev_gl_date_source := NULL;
193185
193186 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
193187 l_rec_acct_attrs.array_date_value(1) :=
193188 xla_ae_sources_pkg.GetSystemSourceDate(
193189 p_source_code => 'XLA_REFERENCE_DATE_1'
193190 , p_source_type_code => 'Y'
193191 , p_source_application_id => 602
193192 );
193193 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
193194 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
193195
193196
193197 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
193198
193199 XLA_AE_HEADER_PKG.SetJeCategoryName;
193200
193201 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
193202 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
193203 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
193204 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
193205 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
193206
193207
193208 -- No header level analytical criteria
193209
193210 --
193211 --accounting attribute enhancement, bug 3612931
193212 --
193213 l_trx_reversal_source := SUBSTR(NULL, 1,30);
193214
193215 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
193216 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
193217
193218 xla_accounting_err_pkg.build_message
193219 (p_appli_s_name => 'XLA'
193220 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
193221 ,p_token_1 => 'ACCT_ATTR_NAME'
193222 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
193223 ,p_token_2 => 'PRODUCT_NAME'
193224 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
193225 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
193226 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
193227 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
193228
193229 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
193230 --
193231 -- following sets the accounting attributes needed to reverse
193232 -- accounting for a distributeion
193233 --
193234 xla_ae_lines_pkg.SetTrxReversalAttrs
193235 (p_event_id => l_event_id
193236 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
193237 ,p_trx_reversal_source => l_trx_reversal_source);
193238
193239 END IF;
193240
193241
193242 ----------------------------------------------------------------
193243 -- 4262811 - update the header statuses to invalid in need be
193244 ----------------------------------------------------------------
193245 --
193246 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
193247
193248
193249 -----------------------------------------------
193250 -- No accrual reversal for the event class/type
193251 -----------------------------------------------
193252 ----------------------------------------------------------------
193253
193254 --
193255 -- this ends the header loop iteration for one bulk fetch
193256 --
193257 END LOOP;
193258
193259 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
193260 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
193261
193262 --
193263 -- insert dummy rows into lines gt table that were created due to
193264 -- transaction reversals
193265 --
193266 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
193267 l_result := XLA_AE_LINES_PKG.InsertLines;
193268 END IF;
193269
193270 --
193271 -- reset the temp_line_num for each set of events fetched from header
193272 -- cursor rather than doing it for each new event in line cursor
193273 -- Bug 3939231
193274 --
193275 xla_ae_lines_pkg.g_temp_line_num := 0;
193276
193277
193278
193279 --
193280 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
193281 --
193282 --
193283 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193284
193285 trace
193286 (p_msg => 'SQL - FETCH line_cur'
193287 ,p_level => C_LEVEL_STATEMENT
193288 ,p_module => l_log_module);
193289
193290 END IF;
193291 --
193292 --
193293 LOOP
193294 --
193295 FETCH line_cur BULK COLLECT INTO
193296 l_array_entity_id
193297 , l_array_legal_entity_id
193298 , l_array_entity_code
193299 , l_array_transaction_num
193300 , l_array_event_id
193301 , l_array_class_code
193302 , l_array_event_type
193303 , l_array_event_number
193304 , l_array_event_date
193305 , l_array_transaction_date
193306 , l_array_reference_num_1
193307 , l_array_reference_num_2
193308 , l_array_reference_num_3
193309 , l_array_reference_num_4
193310 , l_array_reference_char_1
193311 , l_array_reference_char_2
193312 , l_array_reference_char_3
193313 , l_array_reference_char_4
193314 , l_array_reference_date_1
193315 , l_array_reference_date_2
193316 , l_array_reference_date_3
193317 , l_array_reference_date_4
193318 , l_array_event_created_by
193319 , l_array_budgetary_control_flag
193320 , l_array_extract_line_num
193321 , l_array_source_4
193322 , l_array_source_11
193323 , l_array_source_15
193324 , l_array_source_18
193325 , l_array_source_19
193326 , l_array_source_20
193327 , l_array_source_21
193328 , l_array_source_22
193329 , l_array_source_24
193330 LIMIT l_rows;
193331
193332 --
193333 IF (C_LEVEL_EVENT >= g_log_level) THEN
193334 trace
193335 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
193336 ,p_level => C_LEVEL_EVENT
193337 ,p_module => l_log_module);
193338 END IF;
193339 --
193340 EXIT WHEN l_array_entity_id.count = 0;
193341
193342 XLA_AE_LINES_PKG.g_rec_lines := null;
193343
193344 --
193345 -- Bug 4458708
193346 --
193347 XLA_AE_LINES_PKG.g_LineNumber := 0;
193348 --
193349 --
193350
193351 FOR Idx IN 1..l_array_event_id.count LOOP
193352 --
193353 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
193354 --
193355 l_event_id := l_array_event_id(idx); -- 5648433
193356
193357 --
193358 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
193359 --
193360
193361 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
193362 (g_array_event(l_event_id).array_value_num('header_index'))
193363 ,'N'
193364 ) <> 'Y'
193365 THEN
193366 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193367 trace
193368 (p_msg => 'Trancaction revesal option is not Y '
193369 ,p_level => C_LEVEL_STATEMENT
193370 ,p_module => l_log_module);
193371 END IF;
193372
193373 --
193374 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
193375 --
193376 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
193377 --
193378 -- set event info as cache for other routines to refer event attributes
193379 --
193380
193381 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
193382 l_previous_event_id := l_event_id;
193383
193384 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
193385 (p_application_id => p_application_id
193386 ,p_primary_ledger_id => p_primary_ledger_id
193387 ,p_base_ledger_id => p_base_ledger_id
193388 ,p_target_ledger_id => p_target_ledger_id
193389 ,p_entity_id => l_array_entity_id(Idx)
193390 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
193391 ,p_entity_code => l_array_entity_code(Idx)
193392 ,p_transaction_num => l_array_transaction_num(Idx)
193393 ,p_event_id => l_array_event_id(Idx)
193394 ,p_event_class_code => l_array_class_code(Idx)
193395 ,p_event_type_code => l_array_event_type(Idx)
193396 ,p_event_number => l_array_event_number(Idx)
193397 ,p_event_date => l_array_event_date(Idx)
193398 ,p_transaction_date => l_array_transaction_date(Idx)
193399 ,p_reference_num_1 => l_array_reference_num_1(Idx)
193400 ,p_reference_num_2 => l_array_reference_num_2(Idx)
193401 ,p_reference_num_3 => l_array_reference_num_3(Idx)
193402 ,p_reference_num_4 => l_array_reference_num_4(Idx)
193403 ,p_reference_char_1 => l_array_reference_char_1(Idx)
193404 ,p_reference_char_2 => l_array_reference_char_2(Idx)
193405 ,p_reference_char_3 => l_array_reference_char_3(Idx)
193406 ,p_reference_char_4 => l_array_reference_char_4(Idx)
193407 ,p_reference_date_1 => l_array_reference_date_1(Idx)
193408 ,p_reference_date_2 => l_array_reference_date_2(Idx)
193409 ,p_reference_date_3 => l_array_reference_date_3(Idx)
193410 ,p_reference_date_4 => l_array_reference_date_4(Idx)
193411 ,p_event_created_by => l_array_event_created_by(Idx)
193412 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
193413 --
193414 END IF;
193415
193416
193417
193418 --
193419 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
193420
193421 l_acct_reversal_source := SUBSTR(NULL, 1,30);
193422
193423 IF l_continue_with_lines THEN
193424 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
193425 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
193426
193427 xla_accounting_err_pkg.build_message
193428 (p_appli_s_name => 'XLA'
193429 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
193430 ,p_token_1 => 'LINE_NUMBER'
193431 ,p_value_1 => l_array_extract_line_num(Idx)
193432 ,p_token_2 => 'PRODUCT_NAME'
193433 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
193434 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
193435 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
193436 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
193437
193438 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
193439 --
193440 -- following sets the accounting attributes needed to reverse
193441 -- accounting for a distributeion
193442 --
193443
193444 --
193445 -- 5217187
193446 --
193447 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
193448 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
193449 g_array_event(l_event_id).array_value_num('header_index'));
193450 --
193451 --
193452
193453 -- No reversal code generated
193454
193455 xla_ae_lines_pkg.SetAcctReversalAttrs
193456 (p_event_id => l_event_id
193457 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
193458 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193459 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
193460 END IF;
193461
193462 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
193463 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
193464
193465 --
193466 AcctLineType_47 (
193467 p_application_id => p_application_id
193468 ,p_event_id => l_event_id
193469 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193470 ,p_calculate_g_l_flag => l_calculate_g_l_flag
193471 ,p_actual_flag => l_actual_flag
193472 ,p_balance_type_code => l_balance_type_code
193473 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193474
193475 , p_source_4 => l_array_source_4(Idx)
193476 , p_source_11 => l_array_source_11(Idx)
193477 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193478 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193479 , p_source_15 => l_array_source_15(Idx)
193480 , p_source_18 => l_array_source_18(Idx)
193481 , p_source_19 => l_array_source_19(Idx)
193482 , p_source_20 => l_array_source_20(Idx)
193483 , p_source_21 => l_array_source_21(Idx)
193484 , p_source_22 => l_array_source_22(Idx)
193485 , p_source_24 => l_array_source_24(Idx)
193486 );
193487 If(l_balance_type_code = 'A') THEN
193488 l_actual_gain_loss_ref := l_gain_or_loss_ref;
193489 END IF;
193490
193491 --
193492
193493
193494 --
193495 AcctLineType_54 (
193496 p_application_id => p_application_id
193497 ,p_event_id => l_event_id
193498 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193499 ,p_calculate_g_l_flag => l_calculate_g_l_flag
193500 ,p_actual_flag => l_actual_flag
193501 ,p_balance_type_code => l_balance_type_code
193502 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193503
193504 , p_source_4 => l_array_source_4(Idx)
193505 , p_source_11 => l_array_source_11(Idx)
193506 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193507 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193508 , p_source_15 => l_array_source_15(Idx)
193509 , p_source_18 => l_array_source_18(Idx)
193510 , p_source_19 => l_array_source_19(Idx)
193511 , p_source_20 => l_array_source_20(Idx)
193512 , p_source_21 => l_array_source_21(Idx)
193513 , p_source_22 => l_array_source_22(Idx)
193514 , p_source_24 => l_array_source_24(Idx)
193515 );
193516 If(l_balance_type_code = 'A') THEN
193517 l_actual_gain_loss_ref := l_gain_or_loss_ref;
193518 END IF;
193519
193520 --
193521
193522
193523 --
193524 AcctLineType_66 (
193525 p_application_id => p_application_id
193526 ,p_event_id => l_event_id
193527 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193528 ,p_calculate_g_l_flag => l_calculate_g_l_flag
193529 ,p_actual_flag => l_actual_flag
193530 ,p_balance_type_code => l_balance_type_code
193531 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193532
193533 , p_source_4 => l_array_source_4(Idx)
193534 , p_source_11 => l_array_source_11(Idx)
193535 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193536 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193537 , p_source_15 => l_array_source_15(Idx)
193538 , p_source_18 => l_array_source_18(Idx)
193539 , p_source_19 => l_array_source_19(Idx)
193540 , p_source_20 => l_array_source_20(Idx)
193541 , p_source_21 => l_array_source_21(Idx)
193542 , p_source_22 => l_array_source_22(Idx)
193543 , p_source_24 => l_array_source_24(Idx)
193544 );
193545 If(l_balance_type_code = 'A') THEN
193546 l_actual_gain_loss_ref := l_gain_or_loss_ref;
193547 END IF;
193548
193549 --
193550
193551
193552 --
193553 AcctLineType_80 (
193554 p_application_id => p_application_id
193555 ,p_event_id => l_event_id
193556 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193557 ,p_calculate_g_l_flag => l_calculate_g_l_flag
193558 ,p_actual_flag => l_actual_flag
193559 ,p_balance_type_code => l_balance_type_code
193560 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193561
193562 , p_source_4 => l_array_source_4(Idx)
193563 , p_source_11 => l_array_source_11(Idx)
193564 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193565 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193566 , p_source_15 => l_array_source_15(Idx)
193567 , p_source_18 => l_array_source_18(Idx)
193568 , p_source_19 => l_array_source_19(Idx)
193569 , p_source_20 => l_array_source_20(Idx)
193570 , p_source_21 => l_array_source_21(Idx)
193571 , p_source_22 => l_array_source_22(Idx)
193572 , p_source_24 => l_array_source_24(Idx)
193573 );
193574 If(l_balance_type_code = 'A') THEN
193575 l_actual_gain_loss_ref := l_gain_or_loss_ref;
193576 END IF;
193577
193578 --
193579
193580
193581 --
193582 AcctLineType_123 (
193583 p_application_id => p_application_id
193584 ,p_event_id => l_event_id
193585 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193586 ,p_calculate_g_l_flag => l_calculate_g_l_flag
193587 ,p_actual_flag => l_actual_flag
193588 ,p_balance_type_code => l_balance_type_code
193589 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193590
193591 , p_source_4 => l_array_source_4(Idx)
193592 , p_source_11 => l_array_source_11(Idx)
193593 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193594 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193595 , p_source_15 => l_array_source_15(Idx)
193596 , p_source_18 => l_array_source_18(Idx)
193597 , p_source_19 => l_array_source_19(Idx)
193598 , p_source_20 => l_array_source_20(Idx)
193599 , p_source_21 => l_array_source_21(Idx)
193600 , p_source_22 => l_array_source_22(Idx)
193601 , p_source_24 => l_array_source_24(Idx)
193602 );
193603 If(l_balance_type_code = 'A') THEN
193604 l_actual_gain_loss_ref := l_gain_or_loss_ref;
193605 END IF;
193606
193607 --
193608
193609
193610 --
193611 AcctLineType_175 (
193612 p_application_id => p_application_id
193613 ,p_event_id => l_event_id
193614 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193615 ,p_calculate_g_l_flag => l_calculate_g_l_flag
193616 ,p_actual_flag => l_actual_flag
193617 ,p_balance_type_code => l_balance_type_code
193618 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193619
193620 , p_source_4 => l_array_source_4(Idx)
193621 , p_source_11 => l_array_source_11(Idx)
193622 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193623 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193624 , p_source_15 => l_array_source_15(Idx)
193625 , p_source_18 => l_array_source_18(Idx)
193626 , p_source_19 => l_array_source_19(Idx)
193627 , p_source_20 => l_array_source_20(Idx)
193628 , p_source_21 => l_array_source_21(Idx)
193629 , p_source_22 => l_array_source_22(Idx)
193630 , p_source_24 => l_array_source_24(Idx)
193631 );
193632 If(l_balance_type_code = 'A') THEN
193633 l_actual_gain_loss_ref := l_gain_or_loss_ref;
193634 END IF;
193635
193636 --
193637
193638
193639 --
193640 AcctLineType_188 (
193641 p_application_id => p_application_id
193642 ,p_event_id => l_event_id
193643 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193644 ,p_calculate_g_l_flag => l_calculate_g_l_flag
193645 ,p_actual_flag => l_actual_flag
193646 ,p_balance_type_code => l_balance_type_code
193647 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193648
193649 , p_source_4 => l_array_source_4(Idx)
193650 , p_source_11 => l_array_source_11(Idx)
193651 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193652 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193653 , p_source_15 => l_array_source_15(Idx)
193654 , p_source_18 => l_array_source_18(Idx)
193655 , p_source_19 => l_array_source_19(Idx)
193656 , p_source_20 => l_array_source_20(Idx)
193657 , p_source_21 => l_array_source_21(Idx)
193658 , p_source_22 => l_array_source_22(Idx)
193659 , p_source_24 => l_array_source_24(Idx)
193660 );
193661 If(l_balance_type_code = 'A') THEN
193662 l_actual_gain_loss_ref := l_gain_or_loss_ref;
193663 END IF;
193664
193665 --
193666
193667
193668 --
193669 AcctLineType_217 (
193670 p_application_id => p_application_id
193671 ,p_event_id => l_event_id
193672 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193673 ,p_calculate_g_l_flag => l_calculate_g_l_flag
193674 ,p_actual_flag => l_actual_flag
193675 ,p_balance_type_code => l_balance_type_code
193676 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193677
193678 , p_source_4 => l_array_source_4(Idx)
193679 , p_source_11 => l_array_source_11(Idx)
193680 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193681 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193682 , p_source_15 => l_array_source_15(Idx)
193683 , p_source_18 => l_array_source_18(Idx)
193684 , p_source_19 => l_array_source_19(Idx)
193685 , p_source_20 => l_array_source_20(Idx)
193686 , p_source_21 => l_array_source_21(Idx)
193687 , p_source_22 => l_array_source_22(Idx)
193688 , p_source_24 => l_array_source_24(Idx)
193689 );
193690 If(l_balance_type_code = 'A') THEN
193691 l_actual_gain_loss_ref := l_gain_or_loss_ref;
193692 END IF;
193693
193694 --
193695
193696
193697 --
193698 AcctLineType_224 (
193699 p_application_id => p_application_id
193700 ,p_event_id => l_event_id
193701 ,p_calculate_acctd_flag => l_calculate_acctd_flag
193702 ,p_calculate_g_l_flag => l_calculate_g_l_flag
193703 ,p_actual_flag => l_actual_flag
193704 ,p_balance_type_code => l_balance_type_code
193705 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
193706
193707 , p_source_4 => l_array_source_4(Idx)
193708 , p_source_11 => l_array_source_11(Idx)
193709 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
193710 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
193711 , p_source_15 => l_array_source_15(Idx)
193712 , p_source_18 => l_array_source_18(Idx)
193713 , p_source_19 => l_array_source_19(Idx)
193714 , p_source_20 => l_array_source_20(Idx)
193715 , p_source_21 => l_array_source_21(Idx)
193716 , p_source_22 => l_array_source_22(Idx)
193717 , p_source_24 => l_array_source_24(Idx)
193718 );
193719 If(l_balance_type_code = 'A') THEN
193720 l_actual_gain_loss_ref := l_gain_or_loss_ref;
193721 END IF;
193722
193723 --
193724
193725 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
193726 -- or secondary ledger that has different currency with primary
193727 -- or alc that is calculated by sla
193728 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
193729 (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'))
193730
193731 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
193732 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
193733 AND (l_actual_flag = 'A')) THEN
193734 XLA_AE_LINES_PKG.CreateGainOrLossLines(
193735 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
193736 ,p_application_id => p_application_id
193737 ,p_amb_context_code => 'DEFAULT'
193738 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
193739 ,p_event_class_code => C_EVENT_CLASS_CODE
193740 ,p_event_type_code => C_EVENT_TYPE_CODE
193741
193742 ,p_gain_ccid => -1
193743 ,p_loss_ccid => -1
193744
193745 ,p_actual_flag => l_actual_flag
193746 ,p_enc_flag => null
193747 ,p_actual_g_l_ref => l_actual_gain_loss_ref
193748 ,p_enc_g_l_ref => null
193749 );
193750 END IF;
193751 END IF;
193752 END IF;
193753
193754 ELSE
193755 --
193756 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
193757 --
193758 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193759 trace
193760 (p_msg => 'Trancaction revesal option is Y'
193761 ,p_level => C_LEVEL_STATEMENT
193762 ,p_module => l_log_module);
193763 END IF;
193764 END IF;
193765
193766 END LOOP;
193767 l_result := XLA_AE_LINES_PKG.InsertLines ;
193768 end loop;
193769 close line_cur;
193770
193771
193772 --
193773 -- insert headers into xla_ae_headers_gt table
193774 --
193775 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
193776
193777 -- insert into errors table here.
193778
193779 END LOOP;
193780
193781 --
193782 -- 4865292
193783 --
193784 -- Compare g_hdr_extract_count with event count in
193785 -- CreateHeadersAndLines.
193786 --
193787 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
193788
193789 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193790 trace (p_msg => '# rows extracted from header extract objects '
193791 || ' (running total): '
193792 || g_hdr_extract_count
193793 ,p_level => C_LEVEL_STATEMENT
193794 ,p_module => l_log_module);
193795 END IF;
193796
193797 CLOSE header_cur;
193798 --
193799
193800 --
193801 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193802 trace
193803 (p_msg => 'END of EventType_296'
193804 ,p_level => C_LEVEL_PROCEDURE
193805 ,p_module => l_log_module);
193806 END IF;
193807 --
193808 RETURN l_result;
193809 EXCEPTION
193810 WHEN xla_exceptions_pkg.application_exception THEN
193811
193812 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
193813
193814
193815 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
193816
193817 RAISE;
193818
193819 WHEN NO_DATA_FOUND THEN
193820
193821 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
193822 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
193823
193824 FOR header_record IN header_cur
193825 LOOP
193826 l_array_header_events(header_record.event_id) := header_record.event_id;
193827 END LOOP;
193828
193829 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
193830 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
193831
193832 fnd_file.put_line(fnd_file.LOG, ' ');
193833 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
193834 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
193835 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
193836
193837 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
193838 LOOP
193839 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
193840 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
193841 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
193842 END IF;
193843 END LOOP;
193844
193845 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
193846 fnd_file.put_line(fnd_file.LOG, ' ');
193847
193848
193849 xla_exceptions_pkg.raise_message
193850 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_296');
193851
193852
193853 WHEN OTHERS THEN
193854 xla_exceptions_pkg.raise_message
193855 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_296');
193856 END EventType_296;
193857 --
193858
193859 ---------------------------------------
193860 --
193861 -- PRIVATE PROCEDURE
193862 -- insert_sources_297
193863 --
193864 ----------------------------------------
193865 --
193866 PROCEDURE insert_sources_297(
193867 p_target_ledger_id IN NUMBER
193868 , p_language IN VARCHAR2
193869 , p_sla_ledger_id IN NUMBER
193870 , p_pad_start_date IN DATE
193871 , p_pad_end_date IN DATE
193872 )
193873 IS
193874
193875 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
193876 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
193877 p_apps_owner VARCHAR2(30);
193878 l_log_module VARCHAR2(240);
193879 BEGIN
193880 IF g_log_enabled THEN
193881 l_log_module := C_DEFAULT_MODULE||'.insert_sources_297';
193882 END IF;
193883 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
193884
193885 trace
193886 (p_msg => 'BEGIN of insert_sources_297'
193887 ,p_level => C_LEVEL_PROCEDURE
193888 ,p_module => l_log_module);
193889
193890 END IF;
193891
193892 -- select APPS owner
193893 SELECT oracle_username
193894 INTO p_apps_owner
193895 FROM fnd_oracle_userid
193896 WHERE read_only_flag = 'U'
193897 ;
193898
193899 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
193900 trace
193901 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
193902 ' - p_language = '||p_language||
193903 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
193904 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
193905 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
193906 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
193907 ,p_level => C_LEVEL_STATEMENT
193908 ,p_module => l_log_module);
193909 END IF;
193910
193911
193912 --
193913 INSERT INTO xla_diag_sources --hdr1
193914 (
193915 event_id
193916 , ledger_id
193917 , sla_ledger_id
193918 , description_language
193919 , object_name
193920 , object_type_code
193921 , line_number
193922 , source_application_id
193923 , source_type_code
193924 , source_code
193925 , source_value
193926 , source_meaning
193927 , created_by
193928 , creation_date
193929 , last_update_date
193930 , last_updated_by
193931 , last_update_login
193932 , program_update_date
193933 , program_application_id
193934 , program_id
193935 , request_id
193936 )
193937 SELECT
193938 event_id
193939 , p_target_ledger_id
193940 , p_sla_ledger_id
193941 , p_language
193942 , object_name
193943 , object_type_code
193944 , line_number
193945 , source_application_id
193946 , source_type_code
193947 , source_code
193948 , SUBSTR(source_value ,1,1996)
193949 , SUBSTR(source_meaning,1,200)
193950 , xla_environment_pkg.g_Usr_Id
193951 , TRUNC(SYSDATE)
193952 , TRUNC(SYSDATE)
193953 , xla_environment_pkg.g_Usr_Id
193954 , xla_environment_pkg.g_Login_Id
193955 , TRUNC(SYSDATE)
193956 , xla_environment_pkg.g_Prog_Appl_Id
193957 , xla_environment_pkg.g_Prog_Id
193958 , xla_environment_pkg.g_Req_Id
193959 FROM (
193960 SELECT xet.event_id event_id
193961 , 0 line_number
193962 , CASE r
193963 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
193964 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
193965
193966 ELSE null
193967 END object_name
193968 , CASE r
193969 WHEN 1 THEN 'HEADER'
193970 WHEN 2 THEN 'HEADER'
193971
193972 ELSE null
193973 END object_type_code
193974 , CASE r
193975 WHEN 1 THEN '707'
193976 WHEN 2 THEN '707'
193977
193978 ELSE null
193979 END source_application_id
193980 , 'S' source_type_code
193981 , CASE r
193982 WHEN 1 THEN 'DISTRIBUTION_TYPE'
193983 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
193984
193985 ELSE null
193986 END source_code
193987 , CASE r
193988 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
193989 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
193990
193991 ELSE null
193992 END source_value
193993 , CASE r
193994 WHEN 1 THEN fvl12.meaning
193995 WHEN 2 THEN fvl38.meaning
193996
193997 ELSE null
193998 END source_meaning
193999 FROM xla_events_gt xet
194000 , CST_XLA_INV_HEADERS_V h1
194001 , fnd_lookup_values fvl12
194002 , fnd_lookup_values fvl38
194003 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
194004 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
194005 AND xet.event_type_code = C_EVENT_TYPE_CODE
194006 AND h1.event_id = xet.event_id
194007 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
194008 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
194009 AND fvl12.view_application_id(+) = 700
194010 AND fvl12.language(+) = USERENV('LANG')
194011 AND fvl38.lookup_type(+) = 'YES_NO'
194012 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
194013 AND fvl38.view_application_id(+) = 0
194014 AND fvl38.language(+) = USERENV('LANG')
194015
194016 )
194017 ;
194018 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194019
194020 trace
194021 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
194022 ,p_level => C_LEVEL_STATEMENT
194023 ,p_module => l_log_module);
194024
194025 END IF;
194026 --
194027
194028
194029
194030 --
194031 INSERT INTO xla_diag_sources --line1
194032 (
194033 event_id
194034 , ledger_id
194035 , sla_ledger_id
194036 , description_language
194037 , object_name
194038 , object_type_code
194039 , line_number
194040 , source_application_id
194041 , source_type_code
194042 , source_code
194043 , source_value
194044 , source_meaning
194045 , created_by
194046 , creation_date
194047 , last_update_date
194048 , last_updated_by
194049 , last_update_login
194050 , program_update_date
194051 , program_application_id
194052 , program_id
194053 , request_id
194054 )
194055 SELECT event_id
194056 , p_target_ledger_id
194057 , p_sla_ledger_id
194058 , p_language
194059 , object_name
194060 , object_type_code
194061 , line_number
194062 , source_application_id
194063 , source_type_code
194064 , source_code
194065 , SUBSTR(source_value,1,1996)
194066 , SUBSTR(source_meaning,1,200)
194067 , xla_environment_pkg.g_Usr_Id
194068 , TRUNC(SYSDATE)
194069 , TRUNC(SYSDATE)
194070 , xla_environment_pkg.g_Usr_Id
194071 , xla_environment_pkg.g_Login_Id
194072 , TRUNC(SYSDATE)
194073 , xla_environment_pkg.g_Prog_Appl_Id
194074 , xla_environment_pkg.g_Prog_Id
194075 , xla_environment_pkg.g_Req_Id
194076 FROM (
194077 SELECT xet.event_id event_id
194078 , l2.line_number line_number
194079 , CASE r
194080 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
194081 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
194082 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
194083 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
194084 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
194085 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
194086 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
194087 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
194088 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
194089
194090 ELSE null
194091 END object_name
194092 , CASE r
194093 WHEN 1 THEN 'LINE'
194094 WHEN 2 THEN 'LINE'
194095 WHEN 3 THEN 'LINE'
194096 WHEN 4 THEN 'LINE'
194097 WHEN 5 THEN 'LINE'
194098 WHEN 6 THEN 'LINE'
194099 WHEN 7 THEN 'LINE'
194100 WHEN 8 THEN 'LINE'
194101 WHEN 9 THEN 'LINE'
194102
194103 ELSE null
194104 END object_type_code
194105 , CASE r
194106 WHEN 1 THEN '707'
194107 WHEN 2 THEN '707'
194108 WHEN 3 THEN '707'
194109 WHEN 4 THEN '707'
194110 WHEN 5 THEN '707'
194111 WHEN 6 THEN '707'
194112 WHEN 7 THEN '707'
194113 WHEN 8 THEN '707'
194114 WHEN 9 THEN '707'
194115
194116 ELSE null
194117 END source_application_id
194118 , 'S' source_type_code
194119 , CASE r
194120 WHEN 1 THEN 'CODE_COMBINATION_ID'
194121 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
194122 WHEN 3 THEN 'CURRENCY_CODE'
194123 WHEN 4 THEN 'ENTERED_AMOUNT'
194124 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
194125 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
194126 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
194127 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
194128 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
194129
194130 ELSE null
194131 END source_code
194132 , CASE r
194133 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
194134 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
194135 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
194136 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
194137 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
194138 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
194139 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
194140 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
194141 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
194142
194143 ELSE null
194144 END source_value
194145 , null source_meaning
194146 FROM xla_events_gt xet
194147 , CST_XLA_INV_LINES_V l2
194148 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
194149 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
194150 AND xet.event_type_code = C_EVENT_TYPE_CODE
194151 AND l2.event_id = xet.event_id
194152
194153 )
194154 ;
194155 --
194156 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194157
194158 trace
194159 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
194160 ,p_level => C_LEVEL_STATEMENT
194161 ,p_module => l_log_module);
194162
194163 END IF;
194164
194165
194166 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194167 trace
194168 (p_msg => 'END of insert_sources_297'
194169 ,p_level => C_LEVEL_PROCEDURE
194170 ,p_module => l_log_module);
194171 END IF;
194172 EXCEPTION
194173 WHEN xla_exceptions_pkg.application_exception THEN
194174 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
194175 trace
194176 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
194177 ,p_level => C_LEVEL_EXCEPTION
194178 ,p_module => l_log_module);
194179 END IF;
194180 RAISE;
194181 WHEN OTHERS THEN
194182 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
194183 trace
194184 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
194185 ,p_level => C_LEVEL_EXCEPTION
194186 ,p_module => l_log_module);
194187 END IF;
194188 xla_exceptions_pkg.raise_message
194189 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_297');
194190 END insert_sources_297;
194191 --
194192
194193 ---------------------------------------
194194 --
194195 -- PRIVATE FUNCTION
194196 -- EventType_297
194197 --
194198 ----------------------------------------
194199 --
194200 FUNCTION EventType_297
194201 (p_application_id IN NUMBER
194202 ,p_base_ledger_id IN NUMBER
194203 ,p_target_ledger_id IN NUMBER
194204 ,p_language IN VARCHAR2
194205 ,p_currency_code IN VARCHAR2
194206 ,p_sla_ledger_id IN NUMBER
194207 ,p_pad_start_date IN DATE
194208 ,p_pad_end_date IN DATE
194209 ,p_primary_ledger_id IN NUMBER)
194210 RETURN BOOLEAN IS
194211 --
194212 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_RECIPIENT_SHIP_TP';
194213 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
194214
194215 l_calculate_acctd_flag VARCHAR2(1) :='Y';
194216 l_calculate_g_l_flag VARCHAR2(1) :='Y';
194217 --
194218 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194219 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194220 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194221 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194222 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194223 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194224 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194225 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194226 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194227 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194228 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194229 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194230 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194231 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
194232 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194233 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194234 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194235 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
194236 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194237 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194238 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194239 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
194240 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
194241 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
194242 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
194243 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
194244
194245 l_event_id NUMBER;
194246 l_previous_event_id NUMBER;
194247 l_first_event_id NUMBER;
194248 l_last_event_id NUMBER;
194249
194250 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
194251 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
194252 --
194253 --
194254 l_result BOOLEAN := TRUE;
194255 l_rows NUMBER := 1000;
194256 l_event_type_name VARCHAR2(80) := 'User-defined Recipient Intransit Shipment - Transfer Price - FOB Shipment';
194257 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
194258 l_description VARCHAR2(4000);
194259 l_transaction_reversal NUMBER;
194260 l_ae_header_id NUMBER;
194261 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
194262 l_log_module VARCHAR2(240);
194263 --
194264 l_acct_reversal_source VARCHAR2(30);
194265 l_trx_reversal_source VARCHAR2(30);
194266
194267 l_continue_with_lines BOOLEAN := TRUE;
194268 --
194269 l_acc_rev_gl_date_source DATE; -- 4262811
194270 --
194271 type t_array_event_id is table of number index by binary_integer;
194272
194273 l_rec_array_event t_rec_array_event;
194274 l_null_rec_array_event t_rec_array_event;
194275 l_array_ae_header_id xla_number_array_type;
194276 l_actual_flag VARCHAR2(1) := NULL;
194277 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
194278 l_balance_type_code VARCHAR2(1) :=NULL;
194279 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
194280
194281 --
194282 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
194283 --
194284
194285 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
194286 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
194287
194288 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
194289 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
194290 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
194291 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
194292 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
194293 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
194294 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
194295 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
194296 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
194297
194298 l_array_source_12 t_array_source_12;
194299 l_array_source_12_meaning t_array_lookup_meaning;
194300 l_array_source_38 t_array_source_38;
194301 l_array_source_38_meaning t_array_lookup_meaning;
194302
194303 l_array_source_4 t_array_source_4;
194304 l_array_source_11 t_array_source_11;
194305 l_array_source_15 t_array_source_15;
194306 l_array_source_18 t_array_source_18;
194307 l_array_source_19 t_array_source_19;
194308 l_array_source_20 t_array_source_20;
194309 l_array_source_21 t_array_source_21;
194310 l_array_source_22 t_array_source_22;
194311 l_array_source_24 t_array_source_24;
194312
194313 --
194314 CURSOR header_cur
194315 IS
194316 SELECT /*+ leading(xet) cardinality(xet,1) */
194317 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_TP
194318 -- Event Class Code: USER_DEFINE
194319 xet.entity_id
194320 , xet.legal_entity_id
194321 , xet.entity_code
194322 , xet.transaction_number
194323 , xet.event_id
194324 , xet.event_class_code
194325 , xet.event_type_code
194326 , xet.event_number
194327 , xet.event_date
194328 , xet.transaction_date
194329 , xet.reference_num_1
194330 , xet.reference_num_2
194331 , xet.reference_num_3
194332 , xet.reference_num_4
194333 , xet.reference_char_1
194334 , xet.reference_char_2
194335 , xet.reference_char_3
194336 , xet.reference_char_4
194337 , xet.reference_date_1
194338 , xet.reference_date_2
194339 , xet.reference_date_3
194340 , xet.reference_date_4
194341 , xet.event_created_by
194342 , xet.budgetary_control_flag
194343 , h1.DISTRIBUTION_TYPE source_12
194344 , fvl12.meaning source_12_meaning
194345 , h1.TRANSFER_TO_GL_INDICATOR source_38
194346 , fvl38.meaning source_38_meaning
194347 FROM xla_events_gt xet
194348 , CST_XLA_INV_HEADERS_V h1
194349 , fnd_lookup_values fvl12
194350 , fnd_lookup_values fvl38
194351 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
194352 and xet.event_type_code = C_EVENT_TYPE_CODE
194353 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
194354 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
194355 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
194356 AND fvl12.view_application_id(+) = 700
194357 AND fvl12.language(+) = USERENV('LANG')
194358 AND fvl38.lookup_type(+) = 'YES_NO'
194359 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
194360 AND fvl38.view_application_id(+) = 0
194361 AND fvl38.language(+) = USERENV('LANG')
194362
194363 ORDER BY event_id
194364 ;
194365
194366
194367 --
194368 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
194369 IS
194370 SELECT /*+ leading(xet) cardinality(xet,1) */
194371 -- Event Type Code: UFOB_SHIP_RECIPIENT_SHIP_TP
194372 -- Event Class Code: USER_DEFINE
194373 xet.entity_id
194374 ,xet.legal_entity_id
194375 ,xet.entity_code
194376 ,xet.transaction_number
194377 ,xet.event_id
194378 ,xet.event_class_code
194379 ,xet.event_type_code
194380 ,xet.event_number
194381 ,xet.event_date
194382 ,xet.transaction_date
194383 ,xet.reference_num_1
194384 ,xet.reference_num_2
194385 ,xet.reference_num_3
194386 ,xet.reference_num_4
194387 ,xet.reference_char_1
194388 ,xet.reference_char_2
194389 ,xet.reference_char_3
194390 ,xet.reference_char_4
194391 ,xet.reference_date_1
194392 ,xet.reference_date_2
194393 ,xet.reference_date_3
194394 ,xet.reference_date_4
194395 ,xet.event_created_by
194396 ,xet.budgetary_control_flag , l2.LINE_NUMBER
194397 , l2.CODE_COMBINATION_ID source_4
194398 , l2.DISTRIBUTION_IDENTIFIER source_11
194399 , l2.CURRENCY_CODE source_15
194400 , l2.ENTERED_AMOUNT source_18
194401 , l2.CURRENCY_CONVERSION_DATE source_19
194402 , l2.CURRENCY_CONVERSION_RATE source_20
194403 , l2.CURRENCY_CONVERSION_TYPE source_21
194404 , l2.ACCOUNTED_AMOUNT source_22
194405 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
194406 FROM xla_events_gt xet
194407 , CST_XLA_INV_LINES_V l2
194408 WHERE xet.event_id between x_first_event_id and x_last_event_id
194409 and xet.event_date between p_pad_start_date and p_pad_end_date
194410 and xet.event_type_code = C_EVENT_TYPE_CODE
194411 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
194412 ;
194413
194414 --
194415 BEGIN
194416 IF g_log_enabled THEN
194417 l_log_module := C_DEFAULT_MODULE||'.EventType_297';
194418 END IF;
194419 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
194420 trace
194421 (p_msg => 'BEGIN of EventType_297'
194422 ,p_level => C_LEVEL_PROCEDURE
194423 ,p_module => l_log_module);
194424 END IF;
194425
194426 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194427 trace
194428 (p_msg => 'p_application_id = '||p_application_id||
194429 ' - p_base_ledger_id = '||p_base_ledger_id||
194430 ' - p_target_ledger_id = '||p_target_ledger_id||
194431 ' - p_language = '||p_language||
194432 ' - p_currency_code = '||p_currency_code||
194433 ' - p_sla_ledger_id = '||p_sla_ledger_id
194434 ,p_level => C_LEVEL_STATEMENT
194435 ,p_module => l_log_module);
194436 END IF;
194437 --
194438 -- initialze arrays
194439 --
194440 g_array_event.DELETE;
194441 l_rec_array_event := l_null_rec_array_event;
194442 --
194443 --------------------------------------
194444 -- 4262811 Initialze MPA Line Number
194445 --------------------------------------
194446 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
194447
194448 --
194449
194450 --
194451 OPEN header_cur;
194452 --
194453 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194454 trace
194455 (p_msg => 'SQL - FETCH header_cur'
194456 ,p_level => C_LEVEL_STATEMENT
194457 ,p_module => l_log_module);
194458 END IF;
194459 --
194460 LOOP
194461 FETCH header_cur BULK COLLECT INTO
194462 l_array_entity_id
194463 , l_array_legal_entity_id
194464 , l_array_entity_code
194465 , l_array_transaction_num
194466 , l_array_event_id
194467 , l_array_class_code
194468 , l_array_event_type
194469 , l_array_event_number
194470 , l_array_event_date
194471 , l_array_transaction_date
194472 , l_array_reference_num_1
194473 , l_array_reference_num_2
194474 , l_array_reference_num_3
194475 , l_array_reference_num_4
194476 , l_array_reference_char_1
194477 , l_array_reference_char_2
194478 , l_array_reference_char_3
194479 , l_array_reference_char_4
194480 , l_array_reference_date_1
194481 , l_array_reference_date_2
194482 , l_array_reference_date_3
194483 , l_array_reference_date_4
194484 , l_array_event_created_by
194485 , l_array_budgetary_control_flag
194486 , l_array_source_12
194487 , l_array_source_12_meaning
194488 , l_array_source_38
194489 , l_array_source_38_meaning
194490 LIMIT l_rows;
194491 --
194492 IF (C_LEVEL_EVENT >= g_log_level) THEN
194493 trace
194494 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
194495 ,p_level => C_LEVEL_EVENT
194496 ,p_module => l_log_module);
194497 END IF;
194498 --
194499 EXIT WHEN l_array_entity_id.COUNT = 0;
194500
194501 -- initialize arrays
194502 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
194503 XLA_AE_LINES_PKG.g_rec_lines := NULL;
194504
194505 --
194506 -- Bug 4458708
194507 --
194508 XLA_AE_LINES_PKG.g_LineNumber := 0;
194509
194510
194511 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
194512 g_last_hdr_idx := l_array_event_id.LAST;
194513 --
194514 -- loop for the headers. Each iteration is for each header extract row
194515 -- fetched in header cursor
194516 --
194517 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
194518
194519 --
194520 -- set event info as cache for other routines to refer event attributes
194521 --
194522 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
194523 (p_application_id => p_application_id
194524 ,p_primary_ledger_id => p_primary_ledger_id
194525 ,p_base_ledger_id => p_base_ledger_id
194526 ,p_target_ledger_id => p_target_ledger_id
194527 ,p_entity_id => l_array_entity_id(hdr_idx)
194528 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
194529 ,p_entity_code => l_array_entity_code(hdr_idx)
194530 ,p_transaction_num => l_array_transaction_num(hdr_idx)
194531 ,p_event_id => l_array_event_id(hdr_idx)
194532 ,p_event_class_code => l_array_class_code(hdr_idx)
194533 ,p_event_type_code => l_array_event_type(hdr_idx)
194534 ,p_event_number => l_array_event_number(hdr_idx)
194535 ,p_event_date => l_array_event_date(hdr_idx)
194536 ,p_transaction_date => l_array_transaction_date(hdr_idx)
194537 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
194538 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
194539 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
194540 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
194541 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
194542 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
194543 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
194544 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
194545 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
194546 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
194547 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
194548 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
194549 ,p_event_created_by => l_array_event_created_by(hdr_idx)
194550 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
194551
194552 --
194553 -- set the status of entry to C_VALID (0)
194554 --
194555 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
194556
194557 --
194558 -- initialize a row for ae header
194559 --
194560 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
194561
194562 l_event_id := l_array_event_id(hdr_idx);
194563
194564 --
194565 -- storing the hdr_idx for event. May be used by line cursor.
194566 --
194567 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
194568
194569 --
194570 -- store sources from header extract. This can be improved to
194571 -- store only those sources from header extract that may be used in lines
194572 --
194573
194574 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
194575 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
194576 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
194577 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
194578
194579 --
194580 -- initilaize the status of ae headers for diffrent balance types
194581 -- the status is initialised to C_NOT_CREATED (2)
194582 --
194583 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194584 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194585 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
194586
194587 --
194588 -- call api to validate and store accounting attributes for header
194589 --
194590
194591 ------------------------------------------------------------
194592 -- Accrual Reversal : to get date for Standard Source (NONE)
194593 ------------------------------------------------------------
194594 l_acc_rev_gl_date_source := NULL;
194595
194596 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
194597 l_rec_acct_attrs.array_date_value(1) :=
194598 xla_ae_sources_pkg.GetSystemSourceDate(
194599 p_source_code => 'XLA_REFERENCE_DATE_1'
194600 , p_source_type_code => 'Y'
194601 , p_source_application_id => 602
194602 );
194603 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
194604 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
194605
194606
194607 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
194608
194609 XLA_AE_HEADER_PKG.SetJeCategoryName;
194610
194611 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
194612 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
194613 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
194614 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
194615 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
194616
194617
194618 -- No header level analytical criteria
194619
194620 --
194621 --accounting attribute enhancement, bug 3612931
194622 --
194623 l_trx_reversal_source := SUBSTR(NULL, 1,30);
194624
194625 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
194626 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
194627
194628 xla_accounting_err_pkg.build_message
194629 (p_appli_s_name => 'XLA'
194630 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
194631 ,p_token_1 => 'ACCT_ATTR_NAME'
194632 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
194633 ,p_token_2 => 'PRODUCT_NAME'
194634 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
194635 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
194636 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
194637 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
194638
194639 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
194640 --
194641 -- following sets the accounting attributes needed to reverse
194642 -- accounting for a distributeion
194643 --
194644 xla_ae_lines_pkg.SetTrxReversalAttrs
194645 (p_event_id => l_event_id
194646 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
194647 ,p_trx_reversal_source => l_trx_reversal_source);
194648
194649 END IF;
194650
194651
194652 ----------------------------------------------------------------
194653 -- 4262811 - update the header statuses to invalid in need be
194654 ----------------------------------------------------------------
194655 --
194656 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
194657
194658
194659 -----------------------------------------------
194660 -- No accrual reversal for the event class/type
194661 -----------------------------------------------
194662 ----------------------------------------------------------------
194663
194664 --
194665 -- this ends the header loop iteration for one bulk fetch
194666 --
194667 END LOOP;
194668
194669 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
194670 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
194671
194672 --
194673 -- insert dummy rows into lines gt table that were created due to
194674 -- transaction reversals
194675 --
194676 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
194677 l_result := XLA_AE_LINES_PKG.InsertLines;
194678 END IF;
194679
194680 --
194681 -- reset the temp_line_num for each set of events fetched from header
194682 -- cursor rather than doing it for each new event in line cursor
194683 -- Bug 3939231
194684 --
194685 xla_ae_lines_pkg.g_temp_line_num := 0;
194686
194687
194688
194689 --
194690 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
194691 --
194692 --
194693 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194694
194695 trace
194696 (p_msg => 'SQL - FETCH line_cur'
194697 ,p_level => C_LEVEL_STATEMENT
194698 ,p_module => l_log_module);
194699
194700 END IF;
194701 --
194702 --
194703 LOOP
194704 --
194705 FETCH line_cur BULK COLLECT INTO
194706 l_array_entity_id
194707 , l_array_legal_entity_id
194708 , l_array_entity_code
194709 , l_array_transaction_num
194710 , l_array_event_id
194711 , l_array_class_code
194712 , l_array_event_type
194713 , l_array_event_number
194714 , l_array_event_date
194715 , l_array_transaction_date
194716 , l_array_reference_num_1
194717 , l_array_reference_num_2
194718 , l_array_reference_num_3
194719 , l_array_reference_num_4
194720 , l_array_reference_char_1
194721 , l_array_reference_char_2
194722 , l_array_reference_char_3
194723 , l_array_reference_char_4
194724 , l_array_reference_date_1
194725 , l_array_reference_date_2
194726 , l_array_reference_date_3
194727 , l_array_reference_date_4
194728 , l_array_event_created_by
194729 , l_array_budgetary_control_flag
194730 , l_array_extract_line_num
194731 , l_array_source_4
194732 , l_array_source_11
194733 , l_array_source_15
194734 , l_array_source_18
194735 , l_array_source_19
194736 , l_array_source_20
194737 , l_array_source_21
194738 , l_array_source_22
194739 , l_array_source_24
194740 LIMIT l_rows;
194741
194742 --
194743 IF (C_LEVEL_EVENT >= g_log_level) THEN
194744 trace
194745 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
194746 ,p_level => C_LEVEL_EVENT
194747 ,p_module => l_log_module);
194748 END IF;
194749 --
194750 EXIT WHEN l_array_entity_id.count = 0;
194751
194752 XLA_AE_LINES_PKG.g_rec_lines := null;
194753
194754 --
194755 -- Bug 4458708
194756 --
194757 XLA_AE_LINES_PKG.g_LineNumber := 0;
194758 --
194759 --
194760
194761 FOR Idx IN 1..l_array_event_id.count LOOP
194762 --
194763 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
194764 --
194765 l_event_id := l_array_event_id(idx); -- 5648433
194766
194767 --
194768 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
194769 --
194770
194771 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
194772 (g_array_event(l_event_id).array_value_num('header_index'))
194773 ,'N'
194774 ) <> 'Y'
194775 THEN
194776 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
194777 trace
194778 (p_msg => 'Trancaction revesal option is not Y '
194779 ,p_level => C_LEVEL_STATEMENT
194780 ,p_module => l_log_module);
194781 END IF;
194782
194783 --
194784 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
194785 --
194786 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
194787 --
194788 -- set event info as cache for other routines to refer event attributes
194789 --
194790
194791 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
194792 l_previous_event_id := l_event_id;
194793
194794 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
194795 (p_application_id => p_application_id
194796 ,p_primary_ledger_id => p_primary_ledger_id
194797 ,p_base_ledger_id => p_base_ledger_id
194798 ,p_target_ledger_id => p_target_ledger_id
194799 ,p_entity_id => l_array_entity_id(Idx)
194800 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
194801 ,p_entity_code => l_array_entity_code(Idx)
194802 ,p_transaction_num => l_array_transaction_num(Idx)
194803 ,p_event_id => l_array_event_id(Idx)
194804 ,p_event_class_code => l_array_class_code(Idx)
194805 ,p_event_type_code => l_array_event_type(Idx)
194806 ,p_event_number => l_array_event_number(Idx)
194807 ,p_event_date => l_array_event_date(Idx)
194808 ,p_transaction_date => l_array_transaction_date(Idx)
194809 ,p_reference_num_1 => l_array_reference_num_1(Idx)
194810 ,p_reference_num_2 => l_array_reference_num_2(Idx)
194811 ,p_reference_num_3 => l_array_reference_num_3(Idx)
194812 ,p_reference_num_4 => l_array_reference_num_4(Idx)
194813 ,p_reference_char_1 => l_array_reference_char_1(Idx)
194814 ,p_reference_char_2 => l_array_reference_char_2(Idx)
194815 ,p_reference_char_3 => l_array_reference_char_3(Idx)
194816 ,p_reference_char_4 => l_array_reference_char_4(Idx)
194817 ,p_reference_date_1 => l_array_reference_date_1(Idx)
194818 ,p_reference_date_2 => l_array_reference_date_2(Idx)
194819 ,p_reference_date_3 => l_array_reference_date_3(Idx)
194820 ,p_reference_date_4 => l_array_reference_date_4(Idx)
194821 ,p_event_created_by => l_array_event_created_by(Idx)
194822 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
194823 --
194824 END IF;
194825
194826
194827
194828 --
194829 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
194830
194831 l_acct_reversal_source := SUBSTR(NULL, 1,30);
194832
194833 IF l_continue_with_lines THEN
194834 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
194835 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
194836
194837 xla_accounting_err_pkg.build_message
194838 (p_appli_s_name => 'XLA'
194839 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
194840 ,p_token_1 => 'LINE_NUMBER'
194841 ,p_value_1 => l_array_extract_line_num(Idx)
194842 ,p_token_2 => 'PRODUCT_NAME'
194843 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
194844 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
194845 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
194846 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
194847
194848 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
194849 --
194850 -- following sets the accounting attributes needed to reverse
194851 -- accounting for a distributeion
194852 --
194853
194854 --
194855 -- 5217187
194856 --
194857 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
194858 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
194859 g_array_event(l_event_id).array_value_num('header_index'));
194860 --
194861 --
194862
194863 -- No reversal code generated
194864
194865 xla_ae_lines_pkg.SetAcctReversalAttrs
194866 (p_event_id => l_event_id
194867 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
194868 ,p_calculate_acctd_flag => l_calculate_acctd_flag
194869 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
194870 END IF;
194871
194872 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
194873 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
194874
194875 --
194876 AcctLineType_32 (
194877 p_application_id => p_application_id
194878 ,p_event_id => l_event_id
194879 ,p_calculate_acctd_flag => l_calculate_acctd_flag
194880 ,p_calculate_g_l_flag => l_calculate_g_l_flag
194881 ,p_actual_flag => l_actual_flag
194882 ,p_balance_type_code => l_balance_type_code
194883 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194884
194885 , p_source_4 => l_array_source_4(Idx)
194886 , p_source_11 => l_array_source_11(Idx)
194887 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194888 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194889 , p_source_15 => l_array_source_15(Idx)
194890 , p_source_18 => l_array_source_18(Idx)
194891 , p_source_19 => l_array_source_19(Idx)
194892 , p_source_20 => l_array_source_20(Idx)
194893 , p_source_21 => l_array_source_21(Idx)
194894 , p_source_22 => l_array_source_22(Idx)
194895 , p_source_24 => l_array_source_24(Idx)
194896 );
194897 If(l_balance_type_code = 'A') THEN
194898 l_actual_gain_loss_ref := l_gain_or_loss_ref;
194899 END IF;
194900
194901 --
194902
194903
194904 --
194905 AcctLineType_55 (
194906 p_application_id => p_application_id
194907 ,p_event_id => l_event_id
194908 ,p_calculate_acctd_flag => l_calculate_acctd_flag
194909 ,p_calculate_g_l_flag => l_calculate_g_l_flag
194910 ,p_actual_flag => l_actual_flag
194911 ,p_balance_type_code => l_balance_type_code
194912 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194913
194914 , p_source_4 => l_array_source_4(Idx)
194915 , p_source_11 => l_array_source_11(Idx)
194916 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194917 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194918 , p_source_15 => l_array_source_15(Idx)
194919 , p_source_18 => l_array_source_18(Idx)
194920 , p_source_19 => l_array_source_19(Idx)
194921 , p_source_20 => l_array_source_20(Idx)
194922 , p_source_21 => l_array_source_21(Idx)
194923 , p_source_22 => l_array_source_22(Idx)
194924 , p_source_24 => l_array_source_24(Idx)
194925 );
194926 If(l_balance_type_code = 'A') THEN
194927 l_actual_gain_loss_ref := l_gain_or_loss_ref;
194928 END IF;
194929
194930 --
194931
194932
194933 --
194934 AcctLineType_63 (
194935 p_application_id => p_application_id
194936 ,p_event_id => l_event_id
194937 ,p_calculate_acctd_flag => l_calculate_acctd_flag
194938 ,p_calculate_g_l_flag => l_calculate_g_l_flag
194939 ,p_actual_flag => l_actual_flag
194940 ,p_balance_type_code => l_balance_type_code
194941 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194942
194943 , p_source_4 => l_array_source_4(Idx)
194944 , p_source_11 => l_array_source_11(Idx)
194945 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194946 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194947 , p_source_15 => l_array_source_15(Idx)
194948 , p_source_18 => l_array_source_18(Idx)
194949 , p_source_19 => l_array_source_19(Idx)
194950 , p_source_20 => l_array_source_20(Idx)
194951 , p_source_21 => l_array_source_21(Idx)
194952 , p_source_22 => l_array_source_22(Idx)
194953 , p_source_24 => l_array_source_24(Idx)
194954 );
194955 If(l_balance_type_code = 'A') THEN
194956 l_actual_gain_loss_ref := l_gain_or_loss_ref;
194957 END IF;
194958
194959 --
194960
194961
194962 --
194963 AcctLineType_81 (
194964 p_application_id => p_application_id
194965 ,p_event_id => l_event_id
194966 ,p_calculate_acctd_flag => l_calculate_acctd_flag
194967 ,p_calculate_g_l_flag => l_calculate_g_l_flag
194968 ,p_actual_flag => l_actual_flag
194969 ,p_balance_type_code => l_balance_type_code
194970 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
194971
194972 , p_source_4 => l_array_source_4(Idx)
194973 , p_source_11 => l_array_source_11(Idx)
194974 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
194975 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
194976 , p_source_15 => l_array_source_15(Idx)
194977 , p_source_18 => l_array_source_18(Idx)
194978 , p_source_19 => l_array_source_19(Idx)
194979 , p_source_20 => l_array_source_20(Idx)
194980 , p_source_21 => l_array_source_21(Idx)
194981 , p_source_22 => l_array_source_22(Idx)
194982 , p_source_24 => l_array_source_24(Idx)
194983 );
194984 If(l_balance_type_code = 'A') THEN
194985 l_actual_gain_loss_ref := l_gain_or_loss_ref;
194986 END IF;
194987
194988 --
194989
194990
194991 --
194992 AcctLineType_122 (
194993 p_application_id => p_application_id
194994 ,p_event_id => l_event_id
194995 ,p_calculate_acctd_flag => l_calculate_acctd_flag
194996 ,p_calculate_g_l_flag => l_calculate_g_l_flag
194997 ,p_actual_flag => l_actual_flag
194998 ,p_balance_type_code => l_balance_type_code
194999 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195000
195001 , p_source_4 => l_array_source_4(Idx)
195002 , p_source_11 => l_array_source_11(Idx)
195003 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195004 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195005 , p_source_15 => l_array_source_15(Idx)
195006 , p_source_18 => l_array_source_18(Idx)
195007 , p_source_19 => l_array_source_19(Idx)
195008 , p_source_20 => l_array_source_20(Idx)
195009 , p_source_21 => l_array_source_21(Idx)
195010 , p_source_22 => l_array_source_22(Idx)
195011 , p_source_24 => l_array_source_24(Idx)
195012 );
195013 If(l_balance_type_code = 'A') THEN
195014 l_actual_gain_loss_ref := l_gain_or_loss_ref;
195015 END IF;
195016
195017 --
195018
195019
195020 --
195021 AcctLineType_176 (
195022 p_application_id => p_application_id
195023 ,p_event_id => l_event_id
195024 ,p_calculate_acctd_flag => l_calculate_acctd_flag
195025 ,p_calculate_g_l_flag => l_calculate_g_l_flag
195026 ,p_actual_flag => l_actual_flag
195027 ,p_balance_type_code => l_balance_type_code
195028 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195029
195030 , p_source_4 => l_array_source_4(Idx)
195031 , p_source_11 => l_array_source_11(Idx)
195032 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195033 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195034 , p_source_15 => l_array_source_15(Idx)
195035 , p_source_18 => l_array_source_18(Idx)
195036 , p_source_19 => l_array_source_19(Idx)
195037 , p_source_20 => l_array_source_20(Idx)
195038 , p_source_21 => l_array_source_21(Idx)
195039 , p_source_22 => l_array_source_22(Idx)
195040 , p_source_24 => l_array_source_24(Idx)
195041 );
195042 If(l_balance_type_code = 'A') THEN
195043 l_actual_gain_loss_ref := l_gain_or_loss_ref;
195044 END IF;
195045
195046 --
195047
195048
195049 --
195050 AcctLineType_181 (
195051 p_application_id => p_application_id
195052 ,p_event_id => l_event_id
195053 ,p_calculate_acctd_flag => l_calculate_acctd_flag
195054 ,p_calculate_g_l_flag => l_calculate_g_l_flag
195055 ,p_actual_flag => l_actual_flag
195056 ,p_balance_type_code => l_balance_type_code
195057 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195058
195059 , p_source_4 => l_array_source_4(Idx)
195060 , p_source_11 => l_array_source_11(Idx)
195061 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195062 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195063 , p_source_15 => l_array_source_15(Idx)
195064 , p_source_18 => l_array_source_18(Idx)
195065 , p_source_19 => l_array_source_19(Idx)
195066 , p_source_20 => l_array_source_20(Idx)
195067 , p_source_21 => l_array_source_21(Idx)
195068 , p_source_22 => l_array_source_22(Idx)
195069 , p_source_24 => l_array_source_24(Idx)
195070 );
195071 If(l_balance_type_code = 'A') THEN
195072 l_actual_gain_loss_ref := l_gain_or_loss_ref;
195073 END IF;
195074
195075 --
195076
195077
195078 --
195079 AcctLineType_215 (
195080 p_application_id => p_application_id
195081 ,p_event_id => l_event_id
195082 ,p_calculate_acctd_flag => l_calculate_acctd_flag
195083 ,p_calculate_g_l_flag => l_calculate_g_l_flag
195084 ,p_actual_flag => l_actual_flag
195085 ,p_balance_type_code => l_balance_type_code
195086 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195087
195088 , p_source_4 => l_array_source_4(Idx)
195089 , p_source_11 => l_array_source_11(Idx)
195090 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195091 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195092 , p_source_15 => l_array_source_15(Idx)
195093 , p_source_18 => l_array_source_18(Idx)
195094 , p_source_19 => l_array_source_19(Idx)
195095 , p_source_20 => l_array_source_20(Idx)
195096 , p_source_21 => l_array_source_21(Idx)
195097 , p_source_22 => l_array_source_22(Idx)
195098 , p_source_24 => l_array_source_24(Idx)
195099 );
195100 If(l_balance_type_code = 'A') THEN
195101 l_actual_gain_loss_ref := l_gain_or_loss_ref;
195102 END IF;
195103
195104 --
195105
195106
195107 --
195108 AcctLineType_220 (
195109 p_application_id => p_application_id
195110 ,p_event_id => l_event_id
195111 ,p_calculate_acctd_flag => l_calculate_acctd_flag
195112 ,p_calculate_g_l_flag => l_calculate_g_l_flag
195113 ,p_actual_flag => l_actual_flag
195114 ,p_balance_type_code => l_balance_type_code
195115 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
195116
195117 , p_source_4 => l_array_source_4(Idx)
195118 , p_source_11 => l_array_source_11(Idx)
195119 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
195120 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
195121 , p_source_15 => l_array_source_15(Idx)
195122 , p_source_18 => l_array_source_18(Idx)
195123 , p_source_19 => l_array_source_19(Idx)
195124 , p_source_20 => l_array_source_20(Idx)
195125 , p_source_21 => l_array_source_21(Idx)
195126 , p_source_22 => l_array_source_22(Idx)
195127 , p_source_24 => l_array_source_24(Idx)
195128 );
195129 If(l_balance_type_code = 'A') THEN
195130 l_actual_gain_loss_ref := l_gain_or_loss_ref;
195131 END IF;
195132
195133 --
195134
195135 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
195136 -- or secondary ledger that has different currency with primary
195137 -- or alc that is calculated by sla
195138 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
195139 (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'))
195140
195141 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
195142 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
195143 AND (l_actual_flag = 'A')) THEN
195144 XLA_AE_LINES_PKG.CreateGainOrLossLines(
195145 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
195146 ,p_application_id => p_application_id
195147 ,p_amb_context_code => 'DEFAULT'
195148 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
195149 ,p_event_class_code => C_EVENT_CLASS_CODE
195150 ,p_event_type_code => C_EVENT_TYPE_CODE
195151
195152 ,p_gain_ccid => -1
195153 ,p_loss_ccid => -1
195154
195155 ,p_actual_flag => l_actual_flag
195156 ,p_enc_flag => null
195157 ,p_actual_g_l_ref => l_actual_gain_loss_ref
195158 ,p_enc_g_l_ref => null
195159 );
195160 END IF;
195161 END IF;
195162 END IF;
195163
195164 ELSE
195165 --
195166 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
195167 --
195168 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195169 trace
195170 (p_msg => 'Trancaction revesal option is Y'
195171 ,p_level => C_LEVEL_STATEMENT
195172 ,p_module => l_log_module);
195173 END IF;
195174 END IF;
195175
195176 END LOOP;
195177 l_result := XLA_AE_LINES_PKG.InsertLines ;
195178 end loop;
195179 close line_cur;
195180
195181
195182 --
195183 -- insert headers into xla_ae_headers_gt table
195184 --
195185 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
195186
195187 -- insert into errors table here.
195188
195189 END LOOP;
195190
195191 --
195192 -- 4865292
195193 --
195194 -- Compare g_hdr_extract_count with event count in
195195 -- CreateHeadersAndLines.
195196 --
195197 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
195198
195199 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195200 trace (p_msg => '# rows extracted from header extract objects '
195201 || ' (running total): '
195202 || g_hdr_extract_count
195203 ,p_level => C_LEVEL_STATEMENT
195204 ,p_module => l_log_module);
195205 END IF;
195206
195207 CLOSE header_cur;
195208 --
195209
195210 --
195211 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195212 trace
195213 (p_msg => 'END of EventType_297'
195214 ,p_level => C_LEVEL_PROCEDURE
195215 ,p_module => l_log_module);
195216 END IF;
195217 --
195218 RETURN l_result;
195219 EXCEPTION
195220 WHEN xla_exceptions_pkg.application_exception THEN
195221
195222 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
195223
195224
195225 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
195226
195227 RAISE;
195228
195229 WHEN NO_DATA_FOUND THEN
195230
195231 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
195232 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
195233
195234 FOR header_record IN header_cur
195235 LOOP
195236 l_array_header_events(header_record.event_id) := header_record.event_id;
195237 END LOOP;
195238
195239 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
195240 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
195241
195242 fnd_file.put_line(fnd_file.LOG, ' ');
195243 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
195244 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
195245 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
195246
195247 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
195248 LOOP
195249 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
195250 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
195251 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
195252 END IF;
195253 END LOOP;
195254
195255 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
195256 fnd_file.put_line(fnd_file.LOG, ' ');
195257
195258
195259 xla_exceptions_pkg.raise_message
195260 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_297');
195261
195262
195263 WHEN OTHERS THEN
195264 xla_exceptions_pkg.raise_message
195265 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_297');
195266 END EventType_297;
195267 --
195268
195269 ---------------------------------------
195270 --
195271 -- PRIVATE PROCEDURE
195272 -- insert_sources_298
195273 --
195274 ----------------------------------------
195275 --
195276 PROCEDURE insert_sources_298(
195277 p_target_ledger_id IN NUMBER
195278 , p_language IN VARCHAR2
195279 , p_sla_ledger_id IN NUMBER
195280 , p_pad_start_date IN DATE
195281 , p_pad_end_date IN DATE
195282 )
195283 IS
195284
195285 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
195286 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
195287 p_apps_owner VARCHAR2(30);
195288 l_log_module VARCHAR2(240);
195289 BEGIN
195290 IF g_log_enabled THEN
195291 l_log_module := C_DEFAULT_MODULE||'.insert_sources_298';
195292 END IF;
195293 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195294
195295 trace
195296 (p_msg => 'BEGIN of insert_sources_298'
195297 ,p_level => C_LEVEL_PROCEDURE
195298 ,p_module => l_log_module);
195299
195300 END IF;
195301
195302 -- select APPS owner
195303 SELECT oracle_username
195304 INTO p_apps_owner
195305 FROM fnd_oracle_userid
195306 WHERE read_only_flag = 'U'
195307 ;
195308
195309 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195310 trace
195311 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
195312 ' - p_language = '||p_language||
195313 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
195314 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
195315 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
195316 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
195317 ,p_level => C_LEVEL_STATEMENT
195318 ,p_module => l_log_module);
195319 END IF;
195320
195321
195322 --
195323 INSERT INTO xla_diag_sources --hdr1
195324 (
195325 event_id
195326 , ledger_id
195327 , sla_ledger_id
195328 , description_language
195329 , object_name
195330 , object_type_code
195331 , line_number
195332 , source_application_id
195333 , source_type_code
195334 , source_code
195335 , source_value
195336 , source_meaning
195337 , created_by
195338 , creation_date
195339 , last_update_date
195340 , last_updated_by
195341 , last_update_login
195342 , program_update_date
195343 , program_application_id
195344 , program_id
195345 , request_id
195346 )
195347 SELECT
195348 event_id
195349 , p_target_ledger_id
195350 , p_sla_ledger_id
195351 , p_language
195352 , object_name
195353 , object_type_code
195354 , line_number
195355 , source_application_id
195356 , source_type_code
195357 , source_code
195358 , SUBSTR(source_value ,1,1996)
195359 , SUBSTR(source_meaning,1,200)
195360 , xla_environment_pkg.g_Usr_Id
195361 , TRUNC(SYSDATE)
195362 , TRUNC(SYSDATE)
195363 , xla_environment_pkg.g_Usr_Id
195364 , xla_environment_pkg.g_Login_Id
195365 , TRUNC(SYSDATE)
195366 , xla_environment_pkg.g_Prog_Appl_Id
195367 , xla_environment_pkg.g_Prog_Id
195368 , xla_environment_pkg.g_Req_Id
195369 FROM (
195370 SELECT xet.event_id event_id
195371 , 0 line_number
195372 , CASE r
195373 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
195374 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
195375
195376 ELSE null
195377 END object_name
195378 , CASE r
195379 WHEN 1 THEN 'HEADER'
195380 WHEN 2 THEN 'HEADER'
195381
195382 ELSE null
195383 END object_type_code
195384 , CASE r
195385 WHEN 1 THEN '707'
195386 WHEN 2 THEN '707'
195387
195388 ELSE null
195389 END source_application_id
195390 , 'S' source_type_code
195391 , CASE r
195392 WHEN 1 THEN 'DISTRIBUTION_TYPE'
195393 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
195394
195395 ELSE null
195396 END source_code
195397 , CASE r
195398 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
195399 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
195400
195401 ELSE null
195402 END source_value
195403 , CASE r
195404 WHEN 1 THEN fvl12.meaning
195405 WHEN 2 THEN fvl38.meaning
195406
195407 ELSE null
195408 END source_meaning
195409 FROM xla_events_gt xet
195410 , CST_XLA_INV_HEADERS_V h1
195411 , fnd_lookup_values fvl12
195412 , fnd_lookup_values fvl38
195413 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
195414 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
195415 AND xet.event_type_code = C_EVENT_TYPE_CODE
195416 AND h1.event_id = xet.event_id
195417 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
195418 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
195419 AND fvl12.view_application_id(+) = 700
195420 AND fvl12.language(+) = USERENV('LANG')
195421 AND fvl38.lookup_type(+) = 'YES_NO'
195422 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
195423 AND fvl38.view_application_id(+) = 0
195424 AND fvl38.language(+) = USERENV('LANG')
195425
195426 )
195427 ;
195428 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195429
195430 trace
195431 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
195432 ,p_level => C_LEVEL_STATEMENT
195433 ,p_module => l_log_module);
195434
195435 END IF;
195436 --
195437
195438
195439
195440 --
195441 INSERT INTO xla_diag_sources --line1
195442 (
195443 event_id
195444 , ledger_id
195445 , sla_ledger_id
195446 , description_language
195447 , object_name
195448 , object_type_code
195449 , line_number
195450 , source_application_id
195451 , source_type_code
195452 , source_code
195453 , source_value
195454 , source_meaning
195455 , created_by
195456 , creation_date
195457 , last_update_date
195458 , last_updated_by
195459 , last_update_login
195460 , program_update_date
195461 , program_application_id
195462 , program_id
195463 , request_id
195464 )
195465 SELECT event_id
195466 , p_target_ledger_id
195467 , p_sla_ledger_id
195468 , p_language
195469 , object_name
195470 , object_type_code
195471 , line_number
195472 , source_application_id
195473 , source_type_code
195474 , source_code
195475 , SUBSTR(source_value,1,1996)
195476 , SUBSTR(source_meaning,1,200)
195477 , xla_environment_pkg.g_Usr_Id
195478 , TRUNC(SYSDATE)
195479 , TRUNC(SYSDATE)
195480 , xla_environment_pkg.g_Usr_Id
195481 , xla_environment_pkg.g_Login_Id
195482 , TRUNC(SYSDATE)
195483 , xla_environment_pkg.g_Prog_Appl_Id
195484 , xla_environment_pkg.g_Prog_Id
195485 , xla_environment_pkg.g_Req_Id
195486 FROM (
195487 SELECT xet.event_id event_id
195488 , l2.line_number line_number
195489 , CASE r
195490 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
195491 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
195492 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
195493 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
195494 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
195495 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
195496 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
195497 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
195498 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
195499
195500 ELSE null
195501 END object_name
195502 , CASE r
195503 WHEN 1 THEN 'LINE'
195504 WHEN 2 THEN 'LINE'
195505 WHEN 3 THEN 'LINE'
195506 WHEN 4 THEN 'LINE'
195507 WHEN 5 THEN 'LINE'
195508 WHEN 6 THEN 'LINE'
195509 WHEN 7 THEN 'LINE'
195510 WHEN 8 THEN 'LINE'
195511 WHEN 9 THEN 'LINE'
195512
195513 ELSE null
195514 END object_type_code
195515 , CASE r
195516 WHEN 1 THEN '707'
195517 WHEN 2 THEN '707'
195518 WHEN 3 THEN '707'
195519 WHEN 4 THEN '707'
195520 WHEN 5 THEN '707'
195521 WHEN 6 THEN '707'
195522 WHEN 7 THEN '707'
195523 WHEN 8 THEN '707'
195524 WHEN 9 THEN '707'
195525
195526 ELSE null
195527 END source_application_id
195528 , 'S' source_type_code
195529 , CASE r
195530 WHEN 1 THEN 'CODE_COMBINATION_ID'
195531 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
195532 WHEN 3 THEN 'CURRENCY_CODE'
195533 WHEN 4 THEN 'ENTERED_AMOUNT'
195534 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
195535 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
195536 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
195537 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
195538 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
195539
195540 ELSE null
195541 END source_code
195542 , CASE r
195543 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
195544 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
195545 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
195546 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
195547 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
195548 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
195549 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
195550 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
195551 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
195552
195553 ELSE null
195554 END source_value
195555 , null source_meaning
195556 FROM xla_events_gt xet
195557 , CST_XLA_INV_LINES_V l2
195558 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
195559 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
195560 AND xet.event_type_code = C_EVENT_TYPE_CODE
195561 AND l2.event_id = xet.event_id
195562
195563 )
195564 ;
195565 --
195566 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195567
195568 trace
195569 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
195570 ,p_level => C_LEVEL_STATEMENT
195571 ,p_module => l_log_module);
195572
195573 END IF;
195574
195575
195576 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195577 trace
195578 (p_msg => 'END of insert_sources_298'
195579 ,p_level => C_LEVEL_PROCEDURE
195580 ,p_module => l_log_module);
195581 END IF;
195582 EXCEPTION
195583 WHEN xla_exceptions_pkg.application_exception THEN
195584 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
195585 trace
195586 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
195587 ,p_level => C_LEVEL_EXCEPTION
195588 ,p_module => l_log_module);
195589 END IF;
195590 RAISE;
195591 WHEN OTHERS THEN
195592 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
195593 trace
195594 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
195595 ,p_level => C_LEVEL_EXCEPTION
195596 ,p_module => l_log_module);
195597 END IF;
195598 xla_exceptions_pkg.raise_message
195599 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_298');
195600 END insert_sources_298;
195601 --
195602
195603 ---------------------------------------
195604 --
195605 -- PRIVATE FUNCTION
195606 -- EventType_298
195607 --
195608 ----------------------------------------
195609 --
195610 FUNCTION EventType_298
195611 (p_application_id IN NUMBER
195612 ,p_base_ledger_id IN NUMBER
195613 ,p_target_ledger_id IN NUMBER
195614 ,p_language IN VARCHAR2
195615 ,p_currency_code IN VARCHAR2
195616 ,p_sla_ledger_id IN NUMBER
195617 ,p_pad_start_date IN DATE
195618 ,p_pad_end_date IN DATE
195619 ,p_primary_ledger_id IN NUMBER)
195620 RETURN BOOLEAN IS
195621 --
195622 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_SENDER_SHIP_NO_TP';
195623 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
195624
195625 l_calculate_acctd_flag VARCHAR2(1) :='Y';
195626 l_calculate_g_l_flag VARCHAR2(1) :='Y';
195627 --
195628 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195629 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195630 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195631 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195632 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195633 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195634 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195635 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195636 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195637 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195638 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195639 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195640 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195641 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
195642 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195643 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195644 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195645 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
195646 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195647 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195648 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195649 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
195650 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
195651 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
195652 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
195653 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
195654
195655 l_event_id NUMBER;
195656 l_previous_event_id NUMBER;
195657 l_first_event_id NUMBER;
195658 l_last_event_id NUMBER;
195659
195660 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
195661 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
195662 --
195663 --
195664 l_result BOOLEAN := TRUE;
195665 l_rows NUMBER := 1000;
195666 l_event_type_name VARCHAR2(80) := 'User-defined Sender Intransit Shipment - No Transfer Price - FOB Shipment';
195667 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
195668 l_description VARCHAR2(4000);
195669 l_transaction_reversal NUMBER;
195670 l_ae_header_id NUMBER;
195671 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
195672 l_log_module VARCHAR2(240);
195673 --
195674 l_acct_reversal_source VARCHAR2(30);
195675 l_trx_reversal_source VARCHAR2(30);
195676
195677 l_continue_with_lines BOOLEAN := TRUE;
195678 --
195679 l_acc_rev_gl_date_source DATE; -- 4262811
195680 --
195681 type t_array_event_id is table of number index by binary_integer;
195682
195683 l_rec_array_event t_rec_array_event;
195684 l_null_rec_array_event t_rec_array_event;
195685 l_array_ae_header_id xla_number_array_type;
195686 l_actual_flag VARCHAR2(1) := NULL;
195687 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
195688 l_balance_type_code VARCHAR2(1) :=NULL;
195689 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
195690
195691 --
195692 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
195693 --
195694
195695 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
195696 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
195697
195698 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
195699 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
195700 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
195701 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
195702 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
195703 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
195704 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
195705 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
195706 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
195707
195708 l_array_source_12 t_array_source_12;
195709 l_array_source_12_meaning t_array_lookup_meaning;
195710 l_array_source_38 t_array_source_38;
195711 l_array_source_38_meaning t_array_lookup_meaning;
195712
195713 l_array_source_4 t_array_source_4;
195714 l_array_source_11 t_array_source_11;
195715 l_array_source_15 t_array_source_15;
195716 l_array_source_18 t_array_source_18;
195717 l_array_source_19 t_array_source_19;
195718 l_array_source_20 t_array_source_20;
195719 l_array_source_21 t_array_source_21;
195720 l_array_source_22 t_array_source_22;
195721 l_array_source_24 t_array_source_24;
195722
195723 --
195724 CURSOR header_cur
195725 IS
195726 SELECT /*+ leading(xet) cardinality(xet,1) */
195727 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_NO_TP
195728 -- Event Class Code: USER_DEFINE
195729 xet.entity_id
195730 , xet.legal_entity_id
195731 , xet.entity_code
195732 , xet.transaction_number
195733 , xet.event_id
195734 , xet.event_class_code
195735 , xet.event_type_code
195736 , xet.event_number
195737 , xet.event_date
195738 , xet.transaction_date
195739 , xet.reference_num_1
195740 , xet.reference_num_2
195741 , xet.reference_num_3
195742 , xet.reference_num_4
195743 , xet.reference_char_1
195744 , xet.reference_char_2
195745 , xet.reference_char_3
195746 , xet.reference_char_4
195747 , xet.reference_date_1
195748 , xet.reference_date_2
195749 , xet.reference_date_3
195750 , xet.reference_date_4
195751 , xet.event_created_by
195752 , xet.budgetary_control_flag
195753 , h1.DISTRIBUTION_TYPE source_12
195754 , fvl12.meaning source_12_meaning
195755 , h1.TRANSFER_TO_GL_INDICATOR source_38
195756 , fvl38.meaning source_38_meaning
195757 FROM xla_events_gt xet
195758 , CST_XLA_INV_HEADERS_V h1
195759 , fnd_lookup_values fvl12
195760 , fnd_lookup_values fvl38
195761 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
195762 and xet.event_type_code = C_EVENT_TYPE_CODE
195763 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
195764 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
195765 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
195766 AND fvl12.view_application_id(+) = 700
195767 AND fvl12.language(+) = USERENV('LANG')
195768 AND fvl38.lookup_type(+) = 'YES_NO'
195769 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
195770 AND fvl38.view_application_id(+) = 0
195771 AND fvl38.language(+) = USERENV('LANG')
195772
195773 ORDER BY event_id
195774 ;
195775
195776
195777 --
195778 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
195779 IS
195780 SELECT /*+ leading(xet) cardinality(xet,1) */
195781 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_NO_TP
195782 -- Event Class Code: USER_DEFINE
195783 xet.entity_id
195784 ,xet.legal_entity_id
195785 ,xet.entity_code
195786 ,xet.transaction_number
195787 ,xet.event_id
195788 ,xet.event_class_code
195789 ,xet.event_type_code
195790 ,xet.event_number
195791 ,xet.event_date
195792 ,xet.transaction_date
195793 ,xet.reference_num_1
195794 ,xet.reference_num_2
195795 ,xet.reference_num_3
195796 ,xet.reference_num_4
195797 ,xet.reference_char_1
195798 ,xet.reference_char_2
195799 ,xet.reference_char_3
195800 ,xet.reference_char_4
195801 ,xet.reference_date_1
195802 ,xet.reference_date_2
195803 ,xet.reference_date_3
195804 ,xet.reference_date_4
195805 ,xet.event_created_by
195806 ,xet.budgetary_control_flag , l2.LINE_NUMBER
195807 , l2.CODE_COMBINATION_ID source_4
195808 , l2.DISTRIBUTION_IDENTIFIER source_11
195809 , l2.CURRENCY_CODE source_15
195810 , l2.ENTERED_AMOUNT source_18
195811 , l2.CURRENCY_CONVERSION_DATE source_19
195812 , l2.CURRENCY_CONVERSION_RATE source_20
195813 , l2.CURRENCY_CONVERSION_TYPE source_21
195814 , l2.ACCOUNTED_AMOUNT source_22
195815 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
195816 FROM xla_events_gt xet
195817 , CST_XLA_INV_LINES_V l2
195818 WHERE xet.event_id between x_first_event_id and x_last_event_id
195819 and xet.event_date between p_pad_start_date and p_pad_end_date
195820 and xet.event_type_code = C_EVENT_TYPE_CODE
195821 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
195822 ;
195823
195824 --
195825 BEGIN
195826 IF g_log_enabled THEN
195827 l_log_module := C_DEFAULT_MODULE||'.EventType_298';
195828 END IF;
195829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
195830 trace
195831 (p_msg => 'BEGIN of EventType_298'
195832 ,p_level => C_LEVEL_PROCEDURE
195833 ,p_module => l_log_module);
195834 END IF;
195835
195836 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195837 trace
195838 (p_msg => 'p_application_id = '||p_application_id||
195839 ' - p_base_ledger_id = '||p_base_ledger_id||
195840 ' - p_target_ledger_id = '||p_target_ledger_id||
195841 ' - p_language = '||p_language||
195842 ' - p_currency_code = '||p_currency_code||
195843 ' - p_sla_ledger_id = '||p_sla_ledger_id
195844 ,p_level => C_LEVEL_STATEMENT
195845 ,p_module => l_log_module);
195846 END IF;
195847 --
195848 -- initialze arrays
195849 --
195850 g_array_event.DELETE;
195851 l_rec_array_event := l_null_rec_array_event;
195852 --
195853 --------------------------------------
195854 -- 4262811 Initialze MPA Line Number
195855 --------------------------------------
195856 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
195857
195858 --
195859
195860 --
195861 OPEN header_cur;
195862 --
195863 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
195864 trace
195865 (p_msg => 'SQL - FETCH header_cur'
195866 ,p_level => C_LEVEL_STATEMENT
195867 ,p_module => l_log_module);
195868 END IF;
195869 --
195870 LOOP
195871 FETCH header_cur BULK COLLECT INTO
195872 l_array_entity_id
195873 , l_array_legal_entity_id
195874 , l_array_entity_code
195875 , l_array_transaction_num
195876 , l_array_event_id
195877 , l_array_class_code
195878 , l_array_event_type
195879 , l_array_event_number
195880 , l_array_event_date
195881 , l_array_transaction_date
195882 , l_array_reference_num_1
195883 , l_array_reference_num_2
195884 , l_array_reference_num_3
195885 , l_array_reference_num_4
195886 , l_array_reference_char_1
195887 , l_array_reference_char_2
195888 , l_array_reference_char_3
195889 , l_array_reference_char_4
195890 , l_array_reference_date_1
195891 , l_array_reference_date_2
195892 , l_array_reference_date_3
195893 , l_array_reference_date_4
195894 , l_array_event_created_by
195895 , l_array_budgetary_control_flag
195896 , l_array_source_12
195897 , l_array_source_12_meaning
195898 , l_array_source_38
195899 , l_array_source_38_meaning
195900 LIMIT l_rows;
195901 --
195902 IF (C_LEVEL_EVENT >= g_log_level) THEN
195903 trace
195904 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
195905 ,p_level => C_LEVEL_EVENT
195906 ,p_module => l_log_module);
195907 END IF;
195908 --
195909 EXIT WHEN l_array_entity_id.COUNT = 0;
195910
195911 -- initialize arrays
195912 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
195913 XLA_AE_LINES_PKG.g_rec_lines := NULL;
195914
195915 --
195916 -- Bug 4458708
195917 --
195918 XLA_AE_LINES_PKG.g_LineNumber := 0;
195919
195920
195921 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
195922 g_last_hdr_idx := l_array_event_id.LAST;
195923 --
195924 -- loop for the headers. Each iteration is for each header extract row
195925 -- fetched in header cursor
195926 --
195927 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
195928
195929 --
195930 -- set event info as cache for other routines to refer event attributes
195931 --
195932 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
195933 (p_application_id => p_application_id
195934 ,p_primary_ledger_id => p_primary_ledger_id
195935 ,p_base_ledger_id => p_base_ledger_id
195936 ,p_target_ledger_id => p_target_ledger_id
195937 ,p_entity_id => l_array_entity_id(hdr_idx)
195938 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
195939 ,p_entity_code => l_array_entity_code(hdr_idx)
195940 ,p_transaction_num => l_array_transaction_num(hdr_idx)
195941 ,p_event_id => l_array_event_id(hdr_idx)
195942 ,p_event_class_code => l_array_class_code(hdr_idx)
195943 ,p_event_type_code => l_array_event_type(hdr_idx)
195944 ,p_event_number => l_array_event_number(hdr_idx)
195945 ,p_event_date => l_array_event_date(hdr_idx)
195946 ,p_transaction_date => l_array_transaction_date(hdr_idx)
195947 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
195948 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
195949 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
195950 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
195951 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
195952 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
195953 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
195954 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
195955 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
195956 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
195957 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
195958 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
195959 ,p_event_created_by => l_array_event_created_by(hdr_idx)
195960 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
195961
195962 --
195963 -- set the status of entry to C_VALID (0)
195964 --
195965 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
195966
195967 --
195968 -- initialize a row for ae header
195969 --
195970 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
195971
195972 l_event_id := l_array_event_id(hdr_idx);
195973
195974 --
195975 -- storing the hdr_idx for event. May be used by line cursor.
195976 --
195977 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
195978
195979 --
195980 -- store sources from header extract. This can be improved to
195981 -- store only those sources from header extract that may be used in lines
195982 --
195983
195984 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
195985 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
195986 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
195987 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
195988
195989 --
195990 -- initilaize the status of ae headers for diffrent balance types
195991 -- the status is initialised to C_NOT_CREATED (2)
195992 --
195993 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
195994 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
195995 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
195996
195997 --
195998 -- call api to validate and store accounting attributes for header
195999 --
196000
196001 ------------------------------------------------------------
196002 -- Accrual Reversal : to get date for Standard Source (NONE)
196003 ------------------------------------------------------------
196004 l_acc_rev_gl_date_source := NULL;
196005
196006 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
196007 l_rec_acct_attrs.array_date_value(1) :=
196008 xla_ae_sources_pkg.GetSystemSourceDate(
196009 p_source_code => 'XLA_REFERENCE_DATE_1'
196010 , p_source_type_code => 'Y'
196011 , p_source_application_id => 602
196012 );
196013 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
196014 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
196015
196016
196017 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
196018
196019 XLA_AE_HEADER_PKG.SetJeCategoryName;
196020
196021 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
196022 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
196023 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
196024 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
196025 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
196026
196027
196028 -- No header level analytical criteria
196029
196030 --
196031 --accounting attribute enhancement, bug 3612931
196032 --
196033 l_trx_reversal_source := SUBSTR(NULL, 1,30);
196034
196035 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
196036 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
196037
196038 xla_accounting_err_pkg.build_message
196039 (p_appli_s_name => 'XLA'
196040 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
196041 ,p_token_1 => 'ACCT_ATTR_NAME'
196042 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
196043 ,p_token_2 => 'PRODUCT_NAME'
196044 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
196045 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
196046 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
196047 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
196048
196049 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
196050 --
196051 -- following sets the accounting attributes needed to reverse
196052 -- accounting for a distributeion
196053 --
196054 xla_ae_lines_pkg.SetTrxReversalAttrs
196055 (p_event_id => l_event_id
196056 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
196057 ,p_trx_reversal_source => l_trx_reversal_source);
196058
196059 END IF;
196060
196061
196062 ----------------------------------------------------------------
196063 -- 4262811 - update the header statuses to invalid in need be
196064 ----------------------------------------------------------------
196065 --
196066 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
196067
196068
196069 -----------------------------------------------
196070 -- No accrual reversal for the event class/type
196071 -----------------------------------------------
196072 ----------------------------------------------------------------
196073
196074 --
196075 -- this ends the header loop iteration for one bulk fetch
196076 --
196077 END LOOP;
196078
196079 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
196080 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
196081
196082 --
196083 -- insert dummy rows into lines gt table that were created due to
196084 -- transaction reversals
196085 --
196086 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
196087 l_result := XLA_AE_LINES_PKG.InsertLines;
196088 END IF;
196089
196090 --
196091 -- reset the temp_line_num for each set of events fetched from header
196092 -- cursor rather than doing it for each new event in line cursor
196093 -- Bug 3939231
196094 --
196095 xla_ae_lines_pkg.g_temp_line_num := 0;
196096
196097
196098
196099 --
196100 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
196101 --
196102 --
196103 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196104
196105 trace
196106 (p_msg => 'SQL - FETCH line_cur'
196107 ,p_level => C_LEVEL_STATEMENT
196108 ,p_module => l_log_module);
196109
196110 END IF;
196111 --
196112 --
196113 LOOP
196114 --
196115 FETCH line_cur BULK COLLECT INTO
196116 l_array_entity_id
196117 , l_array_legal_entity_id
196118 , l_array_entity_code
196119 , l_array_transaction_num
196120 , l_array_event_id
196121 , l_array_class_code
196122 , l_array_event_type
196123 , l_array_event_number
196124 , l_array_event_date
196125 , l_array_transaction_date
196126 , l_array_reference_num_1
196127 , l_array_reference_num_2
196128 , l_array_reference_num_3
196129 , l_array_reference_num_4
196130 , l_array_reference_char_1
196131 , l_array_reference_char_2
196132 , l_array_reference_char_3
196133 , l_array_reference_char_4
196134 , l_array_reference_date_1
196135 , l_array_reference_date_2
196136 , l_array_reference_date_3
196137 , l_array_reference_date_4
196138 , l_array_event_created_by
196139 , l_array_budgetary_control_flag
196140 , l_array_extract_line_num
196141 , l_array_source_4
196142 , l_array_source_11
196143 , l_array_source_15
196144 , l_array_source_18
196145 , l_array_source_19
196146 , l_array_source_20
196147 , l_array_source_21
196148 , l_array_source_22
196149 , l_array_source_24
196150 LIMIT l_rows;
196151
196152 --
196153 IF (C_LEVEL_EVENT >= g_log_level) THEN
196154 trace
196155 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
196156 ,p_level => C_LEVEL_EVENT
196157 ,p_module => l_log_module);
196158 END IF;
196159 --
196160 EXIT WHEN l_array_entity_id.count = 0;
196161
196162 XLA_AE_LINES_PKG.g_rec_lines := null;
196163
196164 --
196165 -- Bug 4458708
196166 --
196167 XLA_AE_LINES_PKG.g_LineNumber := 0;
196168 --
196169 --
196170
196171 FOR Idx IN 1..l_array_event_id.count LOOP
196172 --
196173 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
196174 --
196175 l_event_id := l_array_event_id(idx); -- 5648433
196176
196177 --
196178 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
196179 --
196180
196181 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
196182 (g_array_event(l_event_id).array_value_num('header_index'))
196183 ,'N'
196184 ) <> 'Y'
196185 THEN
196186 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196187 trace
196188 (p_msg => 'Trancaction revesal option is not Y '
196189 ,p_level => C_LEVEL_STATEMENT
196190 ,p_module => l_log_module);
196191 END IF;
196192
196193 --
196194 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
196195 --
196196 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
196197 --
196198 -- set event info as cache for other routines to refer event attributes
196199 --
196200
196201 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
196202 l_previous_event_id := l_event_id;
196203
196204 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
196205 (p_application_id => p_application_id
196206 ,p_primary_ledger_id => p_primary_ledger_id
196207 ,p_base_ledger_id => p_base_ledger_id
196208 ,p_target_ledger_id => p_target_ledger_id
196209 ,p_entity_id => l_array_entity_id(Idx)
196210 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
196211 ,p_entity_code => l_array_entity_code(Idx)
196212 ,p_transaction_num => l_array_transaction_num(Idx)
196213 ,p_event_id => l_array_event_id(Idx)
196214 ,p_event_class_code => l_array_class_code(Idx)
196215 ,p_event_type_code => l_array_event_type(Idx)
196216 ,p_event_number => l_array_event_number(Idx)
196217 ,p_event_date => l_array_event_date(Idx)
196218 ,p_transaction_date => l_array_transaction_date(Idx)
196219 ,p_reference_num_1 => l_array_reference_num_1(Idx)
196220 ,p_reference_num_2 => l_array_reference_num_2(Idx)
196221 ,p_reference_num_3 => l_array_reference_num_3(Idx)
196222 ,p_reference_num_4 => l_array_reference_num_4(Idx)
196223 ,p_reference_char_1 => l_array_reference_char_1(Idx)
196224 ,p_reference_char_2 => l_array_reference_char_2(Idx)
196225 ,p_reference_char_3 => l_array_reference_char_3(Idx)
196226 ,p_reference_char_4 => l_array_reference_char_4(Idx)
196227 ,p_reference_date_1 => l_array_reference_date_1(Idx)
196228 ,p_reference_date_2 => l_array_reference_date_2(Idx)
196229 ,p_reference_date_3 => l_array_reference_date_3(Idx)
196230 ,p_reference_date_4 => l_array_reference_date_4(Idx)
196231 ,p_event_created_by => l_array_event_created_by(Idx)
196232 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
196233 --
196234 END IF;
196235
196236
196237
196238 --
196239 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
196240
196241 l_acct_reversal_source := SUBSTR(NULL, 1,30);
196242
196243 IF l_continue_with_lines THEN
196244 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
196245 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
196246
196247 xla_accounting_err_pkg.build_message
196248 (p_appli_s_name => 'XLA'
196249 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
196250 ,p_token_1 => 'LINE_NUMBER'
196251 ,p_value_1 => l_array_extract_line_num(Idx)
196252 ,p_token_2 => 'PRODUCT_NAME'
196253 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
196254 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
196255 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
196256 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
196257
196258 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
196259 --
196260 -- following sets the accounting attributes needed to reverse
196261 -- accounting for a distributeion
196262 --
196263
196264 --
196265 -- 5217187
196266 --
196267 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
196268 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
196269 g_array_event(l_event_id).array_value_num('header_index'));
196270 --
196271 --
196272
196273 -- No reversal code generated
196274
196275 xla_ae_lines_pkg.SetAcctReversalAttrs
196276 (p_event_id => l_event_id
196277 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
196278 ,p_calculate_acctd_flag => l_calculate_acctd_flag
196279 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
196280 END IF;
196281
196282 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
196283 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
196284
196285 --
196286 AcctLineType_21 (
196287 p_application_id => p_application_id
196288 ,p_event_id => l_event_id
196289 ,p_calculate_acctd_flag => l_calculate_acctd_flag
196290 ,p_calculate_g_l_flag => l_calculate_g_l_flag
196291 ,p_actual_flag => l_actual_flag
196292 ,p_balance_type_code => l_balance_type_code
196293 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196294
196295 , p_source_4 => l_array_source_4(Idx)
196296 , p_source_11 => l_array_source_11(Idx)
196297 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196298 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196299 , p_source_15 => l_array_source_15(Idx)
196300 , p_source_18 => l_array_source_18(Idx)
196301 , p_source_19 => l_array_source_19(Idx)
196302 , p_source_20 => l_array_source_20(Idx)
196303 , p_source_21 => l_array_source_21(Idx)
196304 , p_source_22 => l_array_source_22(Idx)
196305 , p_source_24 => l_array_source_24(Idx)
196306 );
196307 If(l_balance_type_code = 'A') THEN
196308 l_actual_gain_loss_ref := l_gain_or_loss_ref;
196309 END IF;
196310
196311 --
196312
196313
196314 --
196315 AcctLineType_89 (
196316 p_application_id => p_application_id
196317 ,p_event_id => l_event_id
196318 ,p_calculate_acctd_flag => l_calculate_acctd_flag
196319 ,p_calculate_g_l_flag => l_calculate_g_l_flag
196320 ,p_actual_flag => l_actual_flag
196321 ,p_balance_type_code => l_balance_type_code
196322 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196323
196324 , p_source_4 => l_array_source_4(Idx)
196325 , p_source_11 => l_array_source_11(Idx)
196326 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196327 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196328 , p_source_15 => l_array_source_15(Idx)
196329 , p_source_18 => l_array_source_18(Idx)
196330 , p_source_19 => l_array_source_19(Idx)
196331 , p_source_20 => l_array_source_20(Idx)
196332 , p_source_21 => l_array_source_21(Idx)
196333 , p_source_22 => l_array_source_22(Idx)
196334 , p_source_24 => l_array_source_24(Idx)
196335 );
196336 If(l_balance_type_code = 'A') THEN
196337 l_actual_gain_loss_ref := l_gain_or_loss_ref;
196338 END IF;
196339
196340 --
196341
196342
196343 --
196344 AcctLineType_96 (
196345 p_application_id => p_application_id
196346 ,p_event_id => l_event_id
196347 ,p_calculate_acctd_flag => l_calculate_acctd_flag
196348 ,p_calculate_g_l_flag => l_calculate_g_l_flag
196349 ,p_actual_flag => l_actual_flag
196350 ,p_balance_type_code => l_balance_type_code
196351 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196352
196353 , p_source_4 => l_array_source_4(Idx)
196354 , p_source_11 => l_array_source_11(Idx)
196355 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196356 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196357 , p_source_15 => l_array_source_15(Idx)
196358 , p_source_18 => l_array_source_18(Idx)
196359 , p_source_19 => l_array_source_19(Idx)
196360 , p_source_20 => l_array_source_20(Idx)
196361 , p_source_21 => l_array_source_21(Idx)
196362 , p_source_22 => l_array_source_22(Idx)
196363 , p_source_24 => l_array_source_24(Idx)
196364 );
196365 If(l_balance_type_code = 'A') THEN
196366 l_actual_gain_loss_ref := l_gain_or_loss_ref;
196367 END IF;
196368
196369 --
196370
196371
196372 --
196373 AcctLineType_118 (
196374 p_application_id => p_application_id
196375 ,p_event_id => l_event_id
196376 ,p_calculate_acctd_flag => l_calculate_acctd_flag
196377 ,p_calculate_g_l_flag => l_calculate_g_l_flag
196378 ,p_actual_flag => l_actual_flag
196379 ,p_balance_type_code => l_balance_type_code
196380 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196381
196382 , p_source_4 => l_array_source_4(Idx)
196383 , p_source_11 => l_array_source_11(Idx)
196384 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196385 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196386 , p_source_15 => l_array_source_15(Idx)
196387 , p_source_18 => l_array_source_18(Idx)
196388 , p_source_19 => l_array_source_19(Idx)
196389 , p_source_20 => l_array_source_20(Idx)
196390 , p_source_21 => l_array_source_21(Idx)
196391 , p_source_22 => l_array_source_22(Idx)
196392 , p_source_24 => l_array_source_24(Idx)
196393 );
196394 If(l_balance_type_code = 'A') THEN
196395 l_actual_gain_loss_ref := l_gain_or_loss_ref;
196396 END IF;
196397
196398 --
196399
196400
196401 --
196402 AcctLineType_134 (
196403 p_application_id => p_application_id
196404 ,p_event_id => l_event_id
196405 ,p_calculate_acctd_flag => l_calculate_acctd_flag
196406 ,p_calculate_g_l_flag => l_calculate_g_l_flag
196407 ,p_actual_flag => l_actual_flag
196408 ,p_balance_type_code => l_balance_type_code
196409 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196410
196411 , p_source_4 => l_array_source_4(Idx)
196412 , p_source_11 => l_array_source_11(Idx)
196413 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196414 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196415 , p_source_15 => l_array_source_15(Idx)
196416 , p_source_18 => l_array_source_18(Idx)
196417 , p_source_19 => l_array_source_19(Idx)
196418 , p_source_20 => l_array_source_20(Idx)
196419 , p_source_21 => l_array_source_21(Idx)
196420 , p_source_22 => l_array_source_22(Idx)
196421 , p_source_24 => l_array_source_24(Idx)
196422 );
196423 If(l_balance_type_code = 'A') THEN
196424 l_actual_gain_loss_ref := l_gain_or_loss_ref;
196425 END IF;
196426
196427 --
196428
196429
196430 --
196431 AcctLineType_189 (
196432 p_application_id => p_application_id
196433 ,p_event_id => l_event_id
196434 ,p_calculate_acctd_flag => l_calculate_acctd_flag
196435 ,p_calculate_g_l_flag => l_calculate_g_l_flag
196436 ,p_actual_flag => l_actual_flag
196437 ,p_balance_type_code => l_balance_type_code
196438 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
196439
196440 , p_source_4 => l_array_source_4(Idx)
196441 , p_source_11 => l_array_source_11(Idx)
196442 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
196443 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
196444 , p_source_15 => l_array_source_15(Idx)
196445 , p_source_18 => l_array_source_18(Idx)
196446 , p_source_19 => l_array_source_19(Idx)
196447 , p_source_20 => l_array_source_20(Idx)
196448 , p_source_21 => l_array_source_21(Idx)
196449 , p_source_22 => l_array_source_22(Idx)
196450 , p_source_24 => l_array_source_24(Idx)
196451 );
196452 If(l_balance_type_code = 'A') THEN
196453 l_actual_gain_loss_ref := l_gain_or_loss_ref;
196454 END IF;
196455
196456 --
196457
196458 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
196459 -- or secondary ledger that has different currency with primary
196460 -- or alc that is calculated by sla
196461 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
196462 (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'))
196463
196464 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
196465 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
196466 AND (l_actual_flag = 'A')) THEN
196467 XLA_AE_LINES_PKG.CreateGainOrLossLines(
196468 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
196469 ,p_application_id => p_application_id
196470 ,p_amb_context_code => 'DEFAULT'
196471 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
196472 ,p_event_class_code => C_EVENT_CLASS_CODE
196473 ,p_event_type_code => C_EVENT_TYPE_CODE
196474
196475 ,p_gain_ccid => -1
196476 ,p_loss_ccid => -1
196477
196478 ,p_actual_flag => l_actual_flag
196479 ,p_enc_flag => null
196480 ,p_actual_g_l_ref => l_actual_gain_loss_ref
196481 ,p_enc_g_l_ref => null
196482 );
196483 END IF;
196484 END IF;
196485 END IF;
196486
196487 ELSE
196488 --
196489 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
196490 --
196491 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196492 trace
196493 (p_msg => 'Trancaction revesal option is Y'
196494 ,p_level => C_LEVEL_STATEMENT
196495 ,p_module => l_log_module);
196496 END IF;
196497 END IF;
196498
196499 END LOOP;
196500 l_result := XLA_AE_LINES_PKG.InsertLines ;
196501 end loop;
196502 close line_cur;
196503
196504
196505 --
196506 -- insert headers into xla_ae_headers_gt table
196507 --
196508 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
196509
196510 -- insert into errors table here.
196511
196512 END LOOP;
196513
196514 --
196515 -- 4865292
196516 --
196517 -- Compare g_hdr_extract_count with event count in
196518 -- CreateHeadersAndLines.
196519 --
196520 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
196521
196522 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196523 trace (p_msg => '# rows extracted from header extract objects '
196524 || ' (running total): '
196525 || g_hdr_extract_count
196526 ,p_level => C_LEVEL_STATEMENT
196527 ,p_module => l_log_module);
196528 END IF;
196529
196530 CLOSE header_cur;
196531 --
196532
196533 --
196534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196535 trace
196536 (p_msg => 'END of EventType_298'
196537 ,p_level => C_LEVEL_PROCEDURE
196538 ,p_module => l_log_module);
196539 END IF;
196540 --
196541 RETURN l_result;
196542 EXCEPTION
196543 WHEN xla_exceptions_pkg.application_exception THEN
196544
196545 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
196546
196547
196548 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
196549
196550 RAISE;
196551
196552 WHEN NO_DATA_FOUND THEN
196553
196554 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
196555 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
196556
196557 FOR header_record IN header_cur
196558 LOOP
196559 l_array_header_events(header_record.event_id) := header_record.event_id;
196560 END LOOP;
196561
196562 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
196563 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
196564
196565 fnd_file.put_line(fnd_file.LOG, ' ');
196566 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
196567 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
196568 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
196569
196570 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
196571 LOOP
196572 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
196573 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
196574 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
196575 END IF;
196576 END LOOP;
196577
196578 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
196579 fnd_file.put_line(fnd_file.LOG, ' ');
196580
196581
196582 xla_exceptions_pkg.raise_message
196583 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_298');
196584
196585
196586 WHEN OTHERS THEN
196587 xla_exceptions_pkg.raise_message
196588 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_298');
196589 END EventType_298;
196590 --
196591
196592 ---------------------------------------
196593 --
196594 -- PRIVATE PROCEDURE
196595 -- insert_sources_299
196596 --
196597 ----------------------------------------
196598 --
196599 PROCEDURE insert_sources_299(
196600 p_target_ledger_id IN NUMBER
196601 , p_language IN VARCHAR2
196602 , p_sla_ledger_id IN NUMBER
196603 , p_pad_start_date IN DATE
196604 , p_pad_end_date IN DATE
196605 )
196606 IS
196607
196608 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_SENDER_SHIP_TP';
196609 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
196610 p_apps_owner VARCHAR2(30);
196611 l_log_module VARCHAR2(240);
196612 BEGIN
196613 IF g_log_enabled THEN
196614 l_log_module := C_DEFAULT_MODULE||'.insert_sources_299';
196615 END IF;
196616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196617
196618 trace
196619 (p_msg => 'BEGIN of insert_sources_299'
196620 ,p_level => C_LEVEL_PROCEDURE
196621 ,p_module => l_log_module);
196622
196623 END IF;
196624
196625 -- select APPS owner
196626 SELECT oracle_username
196627 INTO p_apps_owner
196628 FROM fnd_oracle_userid
196629 WHERE read_only_flag = 'U'
196630 ;
196631
196632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196633 trace
196634 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
196635 ' - p_language = '||p_language||
196636 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
196637 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
196638 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
196639 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
196640 ,p_level => C_LEVEL_STATEMENT
196641 ,p_module => l_log_module);
196642 END IF;
196643
196644
196645 --
196646 INSERT INTO xla_diag_sources --hdr1
196647 (
196648 event_id
196649 , ledger_id
196650 , sla_ledger_id
196651 , description_language
196652 , object_name
196653 , object_type_code
196654 , line_number
196655 , source_application_id
196656 , source_type_code
196657 , source_code
196658 , source_value
196659 , source_meaning
196660 , created_by
196661 , creation_date
196662 , last_update_date
196663 , last_updated_by
196664 , last_update_login
196665 , program_update_date
196666 , program_application_id
196667 , program_id
196668 , request_id
196669 )
196670 SELECT
196671 event_id
196672 , p_target_ledger_id
196673 , p_sla_ledger_id
196674 , p_language
196675 , object_name
196676 , object_type_code
196677 , line_number
196678 , source_application_id
196679 , source_type_code
196680 , source_code
196681 , SUBSTR(source_value ,1,1996)
196682 , SUBSTR(source_meaning,1,200)
196683 , xla_environment_pkg.g_Usr_Id
196684 , TRUNC(SYSDATE)
196685 , TRUNC(SYSDATE)
196686 , xla_environment_pkg.g_Usr_Id
196687 , xla_environment_pkg.g_Login_Id
196688 , TRUNC(SYSDATE)
196689 , xla_environment_pkg.g_Prog_Appl_Id
196690 , xla_environment_pkg.g_Prog_Id
196691 , xla_environment_pkg.g_Req_Id
196692 FROM (
196693 SELECT xet.event_id event_id
196694 , 0 line_number
196695 , CASE r
196696 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
196697 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
196698
196699 ELSE null
196700 END object_name
196701 , CASE r
196702 WHEN 1 THEN 'HEADER'
196703 WHEN 2 THEN 'HEADER'
196704
196705 ELSE null
196706 END object_type_code
196707 , CASE r
196708 WHEN 1 THEN '707'
196709 WHEN 2 THEN '707'
196710
196711 ELSE null
196712 END source_application_id
196713 , 'S' source_type_code
196714 , CASE r
196715 WHEN 1 THEN 'DISTRIBUTION_TYPE'
196716 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
196717
196718 ELSE null
196719 END source_code
196720 , CASE r
196721 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
196722 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
196723
196724 ELSE null
196725 END source_value
196726 , CASE r
196727 WHEN 1 THEN fvl12.meaning
196728 WHEN 2 THEN fvl38.meaning
196729
196730 ELSE null
196731 END source_meaning
196732 FROM xla_events_gt xet
196733 , CST_XLA_INV_HEADERS_V h1
196734 , fnd_lookup_values fvl12
196735 , fnd_lookup_values fvl38
196736 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
196737 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
196738 AND xet.event_type_code = C_EVENT_TYPE_CODE
196739 AND h1.event_id = xet.event_id
196740 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
196741 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
196742 AND fvl12.view_application_id(+) = 700
196743 AND fvl12.language(+) = USERENV('LANG')
196744 AND fvl38.lookup_type(+) = 'YES_NO'
196745 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
196746 AND fvl38.view_application_id(+) = 0
196747 AND fvl38.language(+) = USERENV('LANG')
196748
196749 )
196750 ;
196751 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196752
196753 trace
196754 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
196755 ,p_level => C_LEVEL_STATEMENT
196756 ,p_module => l_log_module);
196757
196758 END IF;
196759 --
196760
196761
196762
196763 --
196764 INSERT INTO xla_diag_sources --line1
196765 (
196766 event_id
196767 , ledger_id
196768 , sla_ledger_id
196769 , description_language
196770 , object_name
196771 , object_type_code
196772 , line_number
196773 , source_application_id
196774 , source_type_code
196775 , source_code
196776 , source_value
196777 , source_meaning
196778 , created_by
196779 , creation_date
196780 , last_update_date
196781 , last_updated_by
196782 , last_update_login
196783 , program_update_date
196784 , program_application_id
196785 , program_id
196786 , request_id
196787 )
196788 SELECT event_id
196789 , p_target_ledger_id
196790 , p_sla_ledger_id
196791 , p_language
196792 , object_name
196793 , object_type_code
196794 , line_number
196795 , source_application_id
196796 , source_type_code
196797 , source_code
196798 , SUBSTR(source_value,1,1996)
196799 , SUBSTR(source_meaning,1,200)
196800 , xla_environment_pkg.g_Usr_Id
196801 , TRUNC(SYSDATE)
196802 , TRUNC(SYSDATE)
196803 , xla_environment_pkg.g_Usr_Id
196804 , xla_environment_pkg.g_Login_Id
196805 , TRUNC(SYSDATE)
196806 , xla_environment_pkg.g_Prog_Appl_Id
196807 , xla_environment_pkg.g_Prog_Id
196808 , xla_environment_pkg.g_Req_Id
196809 FROM (
196810 SELECT xet.event_id event_id
196811 , l2.line_number line_number
196812 , CASE r
196813 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
196814 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
196815 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
196816 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
196817 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
196818 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
196819 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
196820 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
196821 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
196822
196823 ELSE null
196824 END object_name
196825 , CASE r
196826 WHEN 1 THEN 'LINE'
196827 WHEN 2 THEN 'LINE'
196828 WHEN 3 THEN 'LINE'
196829 WHEN 4 THEN 'LINE'
196830 WHEN 5 THEN 'LINE'
196831 WHEN 6 THEN 'LINE'
196832 WHEN 7 THEN 'LINE'
196833 WHEN 8 THEN 'LINE'
196834 WHEN 9 THEN 'LINE'
196835
196836 ELSE null
196837 END object_type_code
196838 , CASE r
196839 WHEN 1 THEN '707'
196840 WHEN 2 THEN '707'
196841 WHEN 3 THEN '707'
196842 WHEN 4 THEN '707'
196843 WHEN 5 THEN '707'
196844 WHEN 6 THEN '707'
196845 WHEN 7 THEN '707'
196846 WHEN 8 THEN '707'
196847 WHEN 9 THEN '707'
196848
196849 ELSE null
196850 END source_application_id
196851 , 'S' source_type_code
196852 , CASE r
196853 WHEN 1 THEN 'CODE_COMBINATION_ID'
196854 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
196855 WHEN 3 THEN 'CURRENCY_CODE'
196856 WHEN 4 THEN 'ENTERED_AMOUNT'
196857 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
196858 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
196859 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
196860 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
196861 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
196862
196863 ELSE null
196864 END source_code
196865 , CASE r
196866 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
196867 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
196868 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
196869 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
196870 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
196871 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
196872 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
196873 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
196874 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
196875
196876 ELSE null
196877 END source_value
196878 , null source_meaning
196879 FROM xla_events_gt xet
196880 , CST_XLA_INV_LINES_V l2
196881 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
196882 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
196883 AND xet.event_type_code = C_EVENT_TYPE_CODE
196884 AND l2.event_id = xet.event_id
196885
196886 )
196887 ;
196888 --
196889 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
196890
196891 trace
196892 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
196893 ,p_level => C_LEVEL_STATEMENT
196894 ,p_module => l_log_module);
196895
196896 END IF;
196897
196898
196899 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
196900 trace
196901 (p_msg => 'END of insert_sources_299'
196902 ,p_level => C_LEVEL_PROCEDURE
196903 ,p_module => l_log_module);
196904 END IF;
196905 EXCEPTION
196906 WHEN xla_exceptions_pkg.application_exception THEN
196907 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
196908 trace
196909 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
196910 ,p_level => C_LEVEL_EXCEPTION
196911 ,p_module => l_log_module);
196912 END IF;
196913 RAISE;
196914 WHEN OTHERS THEN
196915 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
196916 trace
196917 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
196918 ,p_level => C_LEVEL_EXCEPTION
196919 ,p_module => l_log_module);
196920 END IF;
196921 xla_exceptions_pkg.raise_message
196922 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_299');
196923 END insert_sources_299;
196924 --
196925
196926 ---------------------------------------
196927 --
196928 -- PRIVATE FUNCTION
196929 -- EventType_299
196930 --
196931 ----------------------------------------
196932 --
196933 FUNCTION EventType_299
196934 (p_application_id IN NUMBER
196935 ,p_base_ledger_id IN NUMBER
196936 ,p_target_ledger_id IN NUMBER
196937 ,p_language IN VARCHAR2
196938 ,p_currency_code IN VARCHAR2
196939 ,p_sla_ledger_id IN NUMBER
196940 ,p_pad_start_date IN DATE
196941 ,p_pad_end_date IN DATE
196942 ,p_primary_ledger_id IN NUMBER)
196943 RETURN BOOLEAN IS
196944 --
196945 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UFOB_SHIP_SENDER_SHIP_TP';
196946 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
196947
196948 l_calculate_acctd_flag VARCHAR2(1) :='Y';
196949 l_calculate_g_l_flag VARCHAR2(1) :='Y';
196950 --
196951 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196952 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196953 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196954 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196955 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196956 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196957 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196958 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196959 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196960 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196961 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196962 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196963 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196964 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
196965 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196966 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196967 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196968 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
196969 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196970 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196971 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196972 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
196973 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
196974 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
196975 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
196976 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
196977
196978 l_event_id NUMBER;
196979 l_previous_event_id NUMBER;
196980 l_first_event_id NUMBER;
196981 l_last_event_id NUMBER;
196982
196983 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
196984 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
196985 --
196986 --
196987 l_result BOOLEAN := TRUE;
196988 l_rows NUMBER := 1000;
196989 l_event_type_name VARCHAR2(80) := 'User-defined Sender Intransit Shipment - Transfer Price - FOB Shipment';
196990 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
196991 l_description VARCHAR2(4000);
196992 l_transaction_reversal NUMBER;
196993 l_ae_header_id NUMBER;
196994 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
196995 l_log_module VARCHAR2(240);
196996 --
196997 l_acct_reversal_source VARCHAR2(30);
196998 l_trx_reversal_source VARCHAR2(30);
196999
197000 l_continue_with_lines BOOLEAN := TRUE;
197001 --
197002 l_acc_rev_gl_date_source DATE; -- 4262811
197003 --
197004 type t_array_event_id is table of number index by binary_integer;
197005
197006 l_rec_array_event t_rec_array_event;
197007 l_null_rec_array_event t_rec_array_event;
197008 l_array_ae_header_id xla_number_array_type;
197009 l_actual_flag VARCHAR2(1) := NULL;
197010 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
197011 l_balance_type_code VARCHAR2(1) :=NULL;
197012 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
197013
197014 --
197015 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
197016 --
197017
197018 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
197019 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
197020
197021 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
197022 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
197023 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
197024 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
197025 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
197026 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
197027 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
197028 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
197029 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
197030
197031 l_array_source_12 t_array_source_12;
197032 l_array_source_12_meaning t_array_lookup_meaning;
197033 l_array_source_38 t_array_source_38;
197034 l_array_source_38_meaning t_array_lookup_meaning;
197035
197036 l_array_source_4 t_array_source_4;
197037 l_array_source_11 t_array_source_11;
197038 l_array_source_15 t_array_source_15;
197039 l_array_source_18 t_array_source_18;
197040 l_array_source_19 t_array_source_19;
197041 l_array_source_20 t_array_source_20;
197042 l_array_source_21 t_array_source_21;
197043 l_array_source_22 t_array_source_22;
197044 l_array_source_24 t_array_source_24;
197045
197046 --
197047 CURSOR header_cur
197048 IS
197049 SELECT /*+ leading(xet) cardinality(xet,1) */
197050 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_TP
197051 -- Event Class Code: USER_DEFINE
197052 xet.entity_id
197053 , xet.legal_entity_id
197054 , xet.entity_code
197055 , xet.transaction_number
197056 , xet.event_id
197057 , xet.event_class_code
197058 , xet.event_type_code
197059 , xet.event_number
197060 , xet.event_date
197061 , xet.transaction_date
197062 , xet.reference_num_1
197063 , xet.reference_num_2
197064 , xet.reference_num_3
197065 , xet.reference_num_4
197066 , xet.reference_char_1
197067 , xet.reference_char_2
197068 , xet.reference_char_3
197069 , xet.reference_char_4
197070 , xet.reference_date_1
197071 , xet.reference_date_2
197072 , xet.reference_date_3
197073 , xet.reference_date_4
197074 , xet.event_created_by
197075 , xet.budgetary_control_flag
197076 , h1.DISTRIBUTION_TYPE source_12
197077 , fvl12.meaning source_12_meaning
197078 , h1.TRANSFER_TO_GL_INDICATOR source_38
197079 , fvl38.meaning source_38_meaning
197080 FROM xla_events_gt xet
197081 , CST_XLA_INV_HEADERS_V h1
197082 , fnd_lookup_values fvl12
197083 , fnd_lookup_values fvl38
197084 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
197085 and xet.event_type_code = C_EVENT_TYPE_CODE
197086 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
197087 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
197088 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
197089 AND fvl12.view_application_id(+) = 700
197090 AND fvl12.language(+) = USERENV('LANG')
197091 AND fvl38.lookup_type(+) = 'YES_NO'
197092 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
197093 AND fvl38.view_application_id(+) = 0
197094 AND fvl38.language(+) = USERENV('LANG')
197095
197096 ORDER BY event_id
197097 ;
197098
197099
197100 --
197101 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
197102 IS
197103 SELECT /*+ leading(xet) cardinality(xet,1) */
197104 -- Event Type Code: UFOB_SHIP_SENDER_SHIP_TP
197105 -- Event Class Code: USER_DEFINE
197106 xet.entity_id
197107 ,xet.legal_entity_id
197108 ,xet.entity_code
197109 ,xet.transaction_number
197110 ,xet.event_id
197111 ,xet.event_class_code
197112 ,xet.event_type_code
197113 ,xet.event_number
197114 ,xet.event_date
197115 ,xet.transaction_date
197116 ,xet.reference_num_1
197117 ,xet.reference_num_2
197118 ,xet.reference_num_3
197119 ,xet.reference_num_4
197120 ,xet.reference_char_1
197121 ,xet.reference_char_2
197122 ,xet.reference_char_3
197123 ,xet.reference_char_4
197124 ,xet.reference_date_1
197125 ,xet.reference_date_2
197126 ,xet.reference_date_3
197127 ,xet.reference_date_4
197128 ,xet.event_created_by
197129 ,xet.budgetary_control_flag , l2.LINE_NUMBER
197130 , l2.CODE_COMBINATION_ID source_4
197131 , l2.DISTRIBUTION_IDENTIFIER source_11
197132 , l2.CURRENCY_CODE source_15
197133 , l2.ENTERED_AMOUNT source_18
197134 , l2.CURRENCY_CONVERSION_DATE source_19
197135 , l2.CURRENCY_CONVERSION_RATE source_20
197136 , l2.CURRENCY_CONVERSION_TYPE source_21
197137 , l2.ACCOUNTED_AMOUNT source_22
197138 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
197139 FROM xla_events_gt xet
197140 , CST_XLA_INV_LINES_V l2
197141 WHERE xet.event_id between x_first_event_id and x_last_event_id
197142 and xet.event_date between p_pad_start_date and p_pad_end_date
197143 and xet.event_type_code = C_EVENT_TYPE_CODE
197144 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
197145 ;
197146
197147 --
197148 BEGIN
197149 IF g_log_enabled THEN
197150 l_log_module := C_DEFAULT_MODULE||'.EventType_299';
197151 END IF;
197152 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197153 trace
197154 (p_msg => 'BEGIN of EventType_299'
197155 ,p_level => C_LEVEL_PROCEDURE
197156 ,p_module => l_log_module);
197157 END IF;
197158
197159 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197160 trace
197161 (p_msg => 'p_application_id = '||p_application_id||
197162 ' - p_base_ledger_id = '||p_base_ledger_id||
197163 ' - p_target_ledger_id = '||p_target_ledger_id||
197164 ' - p_language = '||p_language||
197165 ' - p_currency_code = '||p_currency_code||
197166 ' - p_sla_ledger_id = '||p_sla_ledger_id
197167 ,p_level => C_LEVEL_STATEMENT
197168 ,p_module => l_log_module);
197169 END IF;
197170 --
197171 -- initialze arrays
197172 --
197173 g_array_event.DELETE;
197174 l_rec_array_event := l_null_rec_array_event;
197175 --
197176 --------------------------------------
197177 -- 4262811 Initialze MPA Line Number
197178 --------------------------------------
197179 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
197180
197181 --
197182
197183 --
197184 OPEN header_cur;
197185 --
197186 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197187 trace
197188 (p_msg => 'SQL - FETCH header_cur'
197189 ,p_level => C_LEVEL_STATEMENT
197190 ,p_module => l_log_module);
197191 END IF;
197192 --
197193 LOOP
197194 FETCH header_cur BULK COLLECT INTO
197195 l_array_entity_id
197196 , l_array_legal_entity_id
197197 , l_array_entity_code
197198 , l_array_transaction_num
197199 , l_array_event_id
197200 , l_array_class_code
197201 , l_array_event_type
197202 , l_array_event_number
197203 , l_array_event_date
197204 , l_array_transaction_date
197205 , l_array_reference_num_1
197206 , l_array_reference_num_2
197207 , l_array_reference_num_3
197208 , l_array_reference_num_4
197209 , l_array_reference_char_1
197210 , l_array_reference_char_2
197211 , l_array_reference_char_3
197212 , l_array_reference_char_4
197213 , l_array_reference_date_1
197214 , l_array_reference_date_2
197215 , l_array_reference_date_3
197216 , l_array_reference_date_4
197217 , l_array_event_created_by
197218 , l_array_budgetary_control_flag
197219 , l_array_source_12
197220 , l_array_source_12_meaning
197221 , l_array_source_38
197222 , l_array_source_38_meaning
197223 LIMIT l_rows;
197224 --
197225 IF (C_LEVEL_EVENT >= g_log_level) THEN
197226 trace
197227 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
197228 ,p_level => C_LEVEL_EVENT
197229 ,p_module => l_log_module);
197230 END IF;
197231 --
197232 EXIT WHEN l_array_entity_id.COUNT = 0;
197233
197234 -- initialize arrays
197235 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
197236 XLA_AE_LINES_PKG.g_rec_lines := NULL;
197237
197238 --
197239 -- Bug 4458708
197240 --
197241 XLA_AE_LINES_PKG.g_LineNumber := 0;
197242
197243
197244 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
197245 g_last_hdr_idx := l_array_event_id.LAST;
197246 --
197247 -- loop for the headers. Each iteration is for each header extract row
197248 -- fetched in header cursor
197249 --
197250 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
197251
197252 --
197253 -- set event info as cache for other routines to refer event attributes
197254 --
197255 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
197256 (p_application_id => p_application_id
197257 ,p_primary_ledger_id => p_primary_ledger_id
197258 ,p_base_ledger_id => p_base_ledger_id
197259 ,p_target_ledger_id => p_target_ledger_id
197260 ,p_entity_id => l_array_entity_id(hdr_idx)
197261 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
197262 ,p_entity_code => l_array_entity_code(hdr_idx)
197263 ,p_transaction_num => l_array_transaction_num(hdr_idx)
197264 ,p_event_id => l_array_event_id(hdr_idx)
197265 ,p_event_class_code => l_array_class_code(hdr_idx)
197266 ,p_event_type_code => l_array_event_type(hdr_idx)
197267 ,p_event_number => l_array_event_number(hdr_idx)
197268 ,p_event_date => l_array_event_date(hdr_idx)
197269 ,p_transaction_date => l_array_transaction_date(hdr_idx)
197270 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
197271 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
197272 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
197273 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
197274 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
197275 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
197276 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
197277 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
197278 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
197279 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
197280 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
197281 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
197282 ,p_event_created_by => l_array_event_created_by(hdr_idx)
197283 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
197284
197285 --
197286 -- set the status of entry to C_VALID (0)
197287 --
197288 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
197289
197290 --
197291 -- initialize a row for ae header
197292 --
197293 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
197294
197295 l_event_id := l_array_event_id(hdr_idx);
197296
197297 --
197298 -- storing the hdr_idx for event. May be used by line cursor.
197299 --
197300 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
197301
197302 --
197303 -- store sources from header extract. This can be improved to
197304 -- store only those sources from header extract that may be used in lines
197305 --
197306
197307 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
197308 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
197309 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
197310 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
197311
197312 --
197313 -- initilaize the status of ae headers for diffrent balance types
197314 -- the status is initialised to C_NOT_CREATED (2)
197315 --
197316 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197317 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197318 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
197319
197320 --
197321 -- call api to validate and store accounting attributes for header
197322 --
197323
197324 ------------------------------------------------------------
197325 -- Accrual Reversal : to get date for Standard Source (NONE)
197326 ------------------------------------------------------------
197327 l_acc_rev_gl_date_source := NULL;
197328
197329 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
197330 l_rec_acct_attrs.array_date_value(1) :=
197331 xla_ae_sources_pkg.GetSystemSourceDate(
197332 p_source_code => 'XLA_REFERENCE_DATE_1'
197333 , p_source_type_code => 'Y'
197334 , p_source_application_id => 602
197335 );
197336 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
197337 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
197338
197339
197340 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
197341
197342 XLA_AE_HEADER_PKG.SetJeCategoryName;
197343
197344 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
197345 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
197346 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
197347 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
197348 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
197349
197350
197351 -- No header level analytical criteria
197352
197353 --
197354 --accounting attribute enhancement, bug 3612931
197355 --
197356 l_trx_reversal_source := SUBSTR(NULL, 1,30);
197357
197358 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
197359 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
197360
197361 xla_accounting_err_pkg.build_message
197362 (p_appli_s_name => 'XLA'
197363 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
197364 ,p_token_1 => 'ACCT_ATTR_NAME'
197365 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
197366 ,p_token_2 => 'PRODUCT_NAME'
197367 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
197368 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
197369 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
197370 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
197371
197372 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
197373 --
197374 -- following sets the accounting attributes needed to reverse
197375 -- accounting for a distributeion
197376 --
197377 xla_ae_lines_pkg.SetTrxReversalAttrs
197378 (p_event_id => l_event_id
197379 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
197380 ,p_trx_reversal_source => l_trx_reversal_source);
197381
197382 END IF;
197383
197384
197385 ----------------------------------------------------------------
197386 -- 4262811 - update the header statuses to invalid in need be
197387 ----------------------------------------------------------------
197388 --
197389 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
197390
197391
197392 -----------------------------------------------
197393 -- No accrual reversal for the event class/type
197394 -----------------------------------------------
197395 ----------------------------------------------------------------
197396
197397 --
197398 -- this ends the header loop iteration for one bulk fetch
197399 --
197400 END LOOP;
197401
197402 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
197403 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
197404
197405 --
197406 -- insert dummy rows into lines gt table that were created due to
197407 -- transaction reversals
197408 --
197409 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
197410 l_result := XLA_AE_LINES_PKG.InsertLines;
197411 END IF;
197412
197413 --
197414 -- reset the temp_line_num for each set of events fetched from header
197415 -- cursor rather than doing it for each new event in line cursor
197416 -- Bug 3939231
197417 --
197418 xla_ae_lines_pkg.g_temp_line_num := 0;
197419
197420
197421
197422 --
197423 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
197424 --
197425 --
197426 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197427
197428 trace
197429 (p_msg => 'SQL - FETCH line_cur'
197430 ,p_level => C_LEVEL_STATEMENT
197431 ,p_module => l_log_module);
197432
197433 END IF;
197434 --
197435 --
197436 LOOP
197437 --
197438 FETCH line_cur BULK COLLECT INTO
197439 l_array_entity_id
197440 , l_array_legal_entity_id
197441 , l_array_entity_code
197442 , l_array_transaction_num
197443 , l_array_event_id
197444 , l_array_class_code
197445 , l_array_event_type
197446 , l_array_event_number
197447 , l_array_event_date
197448 , l_array_transaction_date
197449 , l_array_reference_num_1
197450 , l_array_reference_num_2
197451 , l_array_reference_num_3
197452 , l_array_reference_num_4
197453 , l_array_reference_char_1
197454 , l_array_reference_char_2
197455 , l_array_reference_char_3
197456 , l_array_reference_char_4
197457 , l_array_reference_date_1
197458 , l_array_reference_date_2
197459 , l_array_reference_date_3
197460 , l_array_reference_date_4
197461 , l_array_event_created_by
197462 , l_array_budgetary_control_flag
197463 , l_array_extract_line_num
197464 , l_array_source_4
197465 , l_array_source_11
197466 , l_array_source_15
197467 , l_array_source_18
197468 , l_array_source_19
197469 , l_array_source_20
197470 , l_array_source_21
197471 , l_array_source_22
197472 , l_array_source_24
197473 LIMIT l_rows;
197474
197475 --
197476 IF (C_LEVEL_EVENT >= g_log_level) THEN
197477 trace
197478 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
197479 ,p_level => C_LEVEL_EVENT
197480 ,p_module => l_log_module);
197481 END IF;
197482 --
197483 EXIT WHEN l_array_entity_id.count = 0;
197484
197485 XLA_AE_LINES_PKG.g_rec_lines := null;
197486
197487 --
197488 -- Bug 4458708
197489 --
197490 XLA_AE_LINES_PKG.g_LineNumber := 0;
197491 --
197492 --
197493
197494 FOR Idx IN 1..l_array_event_id.count LOOP
197495 --
197496 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
197497 --
197498 l_event_id := l_array_event_id(idx); -- 5648433
197499
197500 --
197501 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
197502 --
197503
197504 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
197505 (g_array_event(l_event_id).array_value_num('header_index'))
197506 ,'N'
197507 ) <> 'Y'
197508 THEN
197509 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197510 trace
197511 (p_msg => 'Trancaction revesal option is not Y '
197512 ,p_level => C_LEVEL_STATEMENT
197513 ,p_module => l_log_module);
197514 END IF;
197515
197516 --
197517 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
197518 --
197519 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
197520 --
197521 -- set event info as cache for other routines to refer event attributes
197522 --
197523
197524 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
197525 l_previous_event_id := l_event_id;
197526
197527 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
197528 (p_application_id => p_application_id
197529 ,p_primary_ledger_id => p_primary_ledger_id
197530 ,p_base_ledger_id => p_base_ledger_id
197531 ,p_target_ledger_id => p_target_ledger_id
197532 ,p_entity_id => l_array_entity_id(Idx)
197533 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
197534 ,p_entity_code => l_array_entity_code(Idx)
197535 ,p_transaction_num => l_array_transaction_num(Idx)
197536 ,p_event_id => l_array_event_id(Idx)
197537 ,p_event_class_code => l_array_class_code(Idx)
197538 ,p_event_type_code => l_array_event_type(Idx)
197539 ,p_event_number => l_array_event_number(Idx)
197540 ,p_event_date => l_array_event_date(Idx)
197541 ,p_transaction_date => l_array_transaction_date(Idx)
197542 ,p_reference_num_1 => l_array_reference_num_1(Idx)
197543 ,p_reference_num_2 => l_array_reference_num_2(Idx)
197544 ,p_reference_num_3 => l_array_reference_num_3(Idx)
197545 ,p_reference_num_4 => l_array_reference_num_4(Idx)
197546 ,p_reference_char_1 => l_array_reference_char_1(Idx)
197547 ,p_reference_char_2 => l_array_reference_char_2(Idx)
197548 ,p_reference_char_3 => l_array_reference_char_3(Idx)
197549 ,p_reference_char_4 => l_array_reference_char_4(Idx)
197550 ,p_reference_date_1 => l_array_reference_date_1(Idx)
197551 ,p_reference_date_2 => l_array_reference_date_2(Idx)
197552 ,p_reference_date_3 => l_array_reference_date_3(Idx)
197553 ,p_reference_date_4 => l_array_reference_date_4(Idx)
197554 ,p_event_created_by => l_array_event_created_by(Idx)
197555 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
197556 --
197557 END IF;
197558
197559
197560
197561 --
197562 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
197563
197564 l_acct_reversal_source := SUBSTR(NULL, 1,30);
197565
197566 IF l_continue_with_lines THEN
197567 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
197568 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
197569
197570 xla_accounting_err_pkg.build_message
197571 (p_appli_s_name => 'XLA'
197572 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
197573 ,p_token_1 => 'LINE_NUMBER'
197574 ,p_value_1 => l_array_extract_line_num(Idx)
197575 ,p_token_2 => 'PRODUCT_NAME'
197576 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
197577 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
197578 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
197579 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
197580
197581 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
197582 --
197583 -- following sets the accounting attributes needed to reverse
197584 -- accounting for a distributeion
197585 --
197586
197587 --
197588 -- 5217187
197589 --
197590 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
197591 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
197592 g_array_event(l_event_id).array_value_num('header_index'));
197593 --
197594 --
197595
197596 -- No reversal code generated
197597
197598 xla_ae_lines_pkg.SetAcctReversalAttrs
197599 (p_event_id => l_event_id
197600 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
197601 ,p_calculate_acctd_flag => l_calculate_acctd_flag
197602 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
197603 END IF;
197604
197605 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
197606 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
197607
197608 --
197609 AcctLineType_18 (
197610 p_application_id => p_application_id
197611 ,p_event_id => l_event_id
197612 ,p_calculate_acctd_flag => l_calculate_acctd_flag
197613 ,p_calculate_g_l_flag => l_calculate_g_l_flag
197614 ,p_actual_flag => l_actual_flag
197615 ,p_balance_type_code => l_balance_type_code
197616 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197617
197618 , p_source_4 => l_array_source_4(Idx)
197619 , p_source_11 => l_array_source_11(Idx)
197620 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197621 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197622 , p_source_15 => l_array_source_15(Idx)
197623 , p_source_18 => l_array_source_18(Idx)
197624 , p_source_19 => l_array_source_19(Idx)
197625 , p_source_20 => l_array_source_20(Idx)
197626 , p_source_21 => l_array_source_21(Idx)
197627 , p_source_22 => l_array_source_22(Idx)
197628 , p_source_24 => l_array_source_24(Idx)
197629 );
197630 If(l_balance_type_code = 'A') THEN
197631 l_actual_gain_loss_ref := l_gain_or_loss_ref;
197632 END IF;
197633
197634 --
197635
197636
197637 --
197638 AcctLineType_90 (
197639 p_application_id => p_application_id
197640 ,p_event_id => l_event_id
197641 ,p_calculate_acctd_flag => l_calculate_acctd_flag
197642 ,p_calculate_g_l_flag => l_calculate_g_l_flag
197643 ,p_actual_flag => l_actual_flag
197644 ,p_balance_type_code => l_balance_type_code
197645 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197646
197647 , p_source_4 => l_array_source_4(Idx)
197648 , p_source_11 => l_array_source_11(Idx)
197649 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197650 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197651 , p_source_15 => l_array_source_15(Idx)
197652 , p_source_18 => l_array_source_18(Idx)
197653 , p_source_19 => l_array_source_19(Idx)
197654 , p_source_20 => l_array_source_20(Idx)
197655 , p_source_21 => l_array_source_21(Idx)
197656 , p_source_22 => l_array_source_22(Idx)
197657 , p_source_24 => l_array_source_24(Idx)
197658 );
197659 If(l_balance_type_code = 'A') THEN
197660 l_actual_gain_loss_ref := l_gain_or_loss_ref;
197661 END IF;
197662
197663 --
197664
197665
197666 --
197667 AcctLineType_100 (
197668 p_application_id => p_application_id
197669 ,p_event_id => l_event_id
197670 ,p_calculate_acctd_flag => l_calculate_acctd_flag
197671 ,p_calculate_g_l_flag => l_calculate_g_l_flag
197672 ,p_actual_flag => l_actual_flag
197673 ,p_balance_type_code => l_balance_type_code
197674 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197675
197676 , p_source_4 => l_array_source_4(Idx)
197677 , p_source_11 => l_array_source_11(Idx)
197678 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197679 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197680 , p_source_15 => l_array_source_15(Idx)
197681 , p_source_18 => l_array_source_18(Idx)
197682 , p_source_19 => l_array_source_19(Idx)
197683 , p_source_20 => l_array_source_20(Idx)
197684 , p_source_21 => l_array_source_21(Idx)
197685 , p_source_22 => l_array_source_22(Idx)
197686 , p_source_24 => l_array_source_24(Idx)
197687 );
197688 If(l_balance_type_code = 'A') THEN
197689 l_actual_gain_loss_ref := l_gain_or_loss_ref;
197690 END IF;
197691
197692 --
197693
197694
197695 --
197696 AcctLineType_110 (
197697 p_application_id => p_application_id
197698 ,p_event_id => l_event_id
197699 ,p_calculate_acctd_flag => l_calculate_acctd_flag
197700 ,p_calculate_g_l_flag => l_calculate_g_l_flag
197701 ,p_actual_flag => l_actual_flag
197702 ,p_balance_type_code => l_balance_type_code
197703 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197704
197705 , p_source_4 => l_array_source_4(Idx)
197706 , p_source_11 => l_array_source_11(Idx)
197707 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197708 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197709 , p_source_15 => l_array_source_15(Idx)
197710 , p_source_18 => l_array_source_18(Idx)
197711 , p_source_19 => l_array_source_19(Idx)
197712 , p_source_20 => l_array_source_20(Idx)
197713 , p_source_21 => l_array_source_21(Idx)
197714 , p_source_22 => l_array_source_22(Idx)
197715 , p_source_24 => l_array_source_24(Idx)
197716 );
197717 If(l_balance_type_code = 'A') THEN
197718 l_actual_gain_loss_ref := l_gain_or_loss_ref;
197719 END IF;
197720
197721 --
197722
197723
197724 --
197725 AcctLineType_159 (
197726 p_application_id => p_application_id
197727 ,p_event_id => l_event_id
197728 ,p_calculate_acctd_flag => l_calculate_acctd_flag
197729 ,p_calculate_g_l_flag => l_calculate_g_l_flag
197730 ,p_actual_flag => l_actual_flag
197731 ,p_balance_type_code => l_balance_type_code
197732 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197733
197734 , p_source_4 => l_array_source_4(Idx)
197735 , p_source_11 => l_array_source_11(Idx)
197736 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197737 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197738 , p_source_15 => l_array_source_15(Idx)
197739 , p_source_18 => l_array_source_18(Idx)
197740 , p_source_19 => l_array_source_19(Idx)
197741 , p_source_20 => l_array_source_20(Idx)
197742 , p_source_21 => l_array_source_21(Idx)
197743 , p_source_22 => l_array_source_22(Idx)
197744 , p_source_24 => l_array_source_24(Idx)
197745 );
197746 If(l_balance_type_code = 'A') THEN
197747 l_actual_gain_loss_ref := l_gain_or_loss_ref;
197748 END IF;
197749
197750 --
197751
197752
197753 --
197754 AcctLineType_207 (
197755 p_application_id => p_application_id
197756 ,p_event_id => l_event_id
197757 ,p_calculate_acctd_flag => l_calculate_acctd_flag
197758 ,p_calculate_g_l_flag => l_calculate_g_l_flag
197759 ,p_actual_flag => l_actual_flag
197760 ,p_balance_type_code => l_balance_type_code
197761 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
197762
197763 , p_source_4 => l_array_source_4(Idx)
197764 , p_source_11 => l_array_source_11(Idx)
197765 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
197766 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
197767 , p_source_15 => l_array_source_15(Idx)
197768 , p_source_18 => l_array_source_18(Idx)
197769 , p_source_19 => l_array_source_19(Idx)
197770 , p_source_20 => l_array_source_20(Idx)
197771 , p_source_21 => l_array_source_21(Idx)
197772 , p_source_22 => l_array_source_22(Idx)
197773 , p_source_24 => l_array_source_24(Idx)
197774 );
197775 If(l_balance_type_code = 'A') THEN
197776 l_actual_gain_loss_ref := l_gain_or_loss_ref;
197777 END IF;
197778
197779 --
197780
197781 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
197782 -- or secondary ledger that has different currency with primary
197783 -- or alc that is calculated by sla
197784 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
197785 (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'))
197786
197787 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
197788 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
197789 AND (l_actual_flag = 'A')) THEN
197790 XLA_AE_LINES_PKG.CreateGainOrLossLines(
197791 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
197792 ,p_application_id => p_application_id
197793 ,p_amb_context_code => 'DEFAULT'
197794 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
197795 ,p_event_class_code => C_EVENT_CLASS_CODE
197796 ,p_event_type_code => C_EVENT_TYPE_CODE
197797
197798 ,p_gain_ccid => -1
197799 ,p_loss_ccid => -1
197800
197801 ,p_actual_flag => l_actual_flag
197802 ,p_enc_flag => null
197803 ,p_actual_g_l_ref => l_actual_gain_loss_ref
197804 ,p_enc_g_l_ref => null
197805 );
197806 END IF;
197807 END IF;
197808 END IF;
197809
197810 ELSE
197811 --
197812 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
197813 --
197814 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197815 trace
197816 (p_msg => 'Trancaction revesal option is Y'
197817 ,p_level => C_LEVEL_STATEMENT
197818 ,p_module => l_log_module);
197819 END IF;
197820 END IF;
197821
197822 END LOOP;
197823 l_result := XLA_AE_LINES_PKG.InsertLines ;
197824 end loop;
197825 close line_cur;
197826
197827
197828 --
197829 -- insert headers into xla_ae_headers_gt table
197830 --
197831 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
197832
197833 -- insert into errors table here.
197834
197835 END LOOP;
197836
197837 --
197838 -- 4865292
197839 --
197840 -- Compare g_hdr_extract_count with event count in
197841 -- CreateHeadersAndLines.
197842 --
197843 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
197844
197845 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197846 trace (p_msg => '# rows extracted from header extract objects '
197847 || ' (running total): '
197848 || g_hdr_extract_count
197849 ,p_level => C_LEVEL_STATEMENT
197850 ,p_module => l_log_module);
197851 END IF;
197852
197853 CLOSE header_cur;
197854 --
197855
197856 --
197857 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197858 trace
197859 (p_msg => 'END of EventType_299'
197860 ,p_level => C_LEVEL_PROCEDURE
197861 ,p_module => l_log_module);
197862 END IF;
197863 --
197864 RETURN l_result;
197865 EXCEPTION
197866 WHEN xla_exceptions_pkg.application_exception THEN
197867
197868 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
197869
197870
197871 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
197872
197873 RAISE;
197874
197875 WHEN NO_DATA_FOUND THEN
197876
197877 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
197878 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
197879
197880 FOR header_record IN header_cur
197881 LOOP
197882 l_array_header_events(header_record.event_id) := header_record.event_id;
197883 END LOOP;
197884
197885 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
197886 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
197887
197888 fnd_file.put_line(fnd_file.LOG, ' ');
197889 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
197890 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
197891 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
197892
197893 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
197894 LOOP
197895 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
197896 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
197897 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
197898 END IF;
197899 END LOOP;
197900
197901 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
197902 fnd_file.put_line(fnd_file.LOG, ' ');
197903
197904
197905 xla_exceptions_pkg.raise_message
197906 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_299');
197907
197908
197909 WHEN OTHERS THEN
197910 xla_exceptions_pkg.raise_message
197911 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_299');
197912 END EventType_299;
197913 --
197914
197915 ---------------------------------------
197916 --
197917 -- PRIVATE PROCEDURE
197918 -- insert_sources_300
197919 --
197920 ----------------------------------------
197921 --
197922 PROCEDURE insert_sources_300(
197923 p_target_ledger_id IN NUMBER
197924 , p_language IN VARCHAR2
197925 , p_sla_ledger_id IN NUMBER
197926 , p_pad_start_date IN DATE
197927 , p_pad_end_date IN DATE
197928 )
197929 IS
197930
197931 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UIPV_TXFR';
197932 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
197933 p_apps_owner VARCHAR2(30);
197934 l_log_module VARCHAR2(240);
197935 BEGIN
197936 IF g_log_enabled THEN
197937 l_log_module := C_DEFAULT_MODULE||'.insert_sources_300';
197938 END IF;
197939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
197940
197941 trace
197942 (p_msg => 'BEGIN of insert_sources_300'
197943 ,p_level => C_LEVEL_PROCEDURE
197944 ,p_module => l_log_module);
197945
197946 END IF;
197947
197948 -- select APPS owner
197949 SELECT oracle_username
197950 INTO p_apps_owner
197951 FROM fnd_oracle_userid
197952 WHERE read_only_flag = 'U'
197953 ;
197954
197955 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
197956 trace
197957 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
197958 ' - p_language = '||p_language||
197959 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
197960 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
197961 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
197962 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
197963 ,p_level => C_LEVEL_STATEMENT
197964 ,p_module => l_log_module);
197965 END IF;
197966
197967
197968 --
197969 INSERT INTO xla_diag_sources --hdr1
197970 (
197971 event_id
197972 , ledger_id
197973 , sla_ledger_id
197974 , description_language
197975 , object_name
197976 , object_type_code
197977 , line_number
197978 , source_application_id
197979 , source_type_code
197980 , source_code
197981 , source_value
197982 , source_meaning
197983 , created_by
197984 , creation_date
197985 , last_update_date
197986 , last_updated_by
197987 , last_update_login
197988 , program_update_date
197989 , program_application_id
197990 , program_id
197991 , request_id
197992 )
197993 SELECT
197994 event_id
197995 , p_target_ledger_id
197996 , p_sla_ledger_id
197997 , p_language
197998 , object_name
197999 , object_type_code
198000 , line_number
198001 , source_application_id
198002 , source_type_code
198003 , source_code
198004 , SUBSTR(source_value ,1,1996)
198005 , SUBSTR(source_meaning,1,200)
198006 , xla_environment_pkg.g_Usr_Id
198007 , TRUNC(SYSDATE)
198008 , TRUNC(SYSDATE)
198009 , xla_environment_pkg.g_Usr_Id
198010 , xla_environment_pkg.g_Login_Id
198011 , TRUNC(SYSDATE)
198012 , xla_environment_pkg.g_Prog_Appl_Id
198013 , xla_environment_pkg.g_Prog_Id
198014 , xla_environment_pkg.g_Req_Id
198015 FROM (
198016 SELECT xet.event_id event_id
198017 , 0 line_number
198018 , CASE r
198019 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
198020 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
198021
198022 ELSE null
198023 END object_name
198024 , CASE r
198025 WHEN 1 THEN 'HEADER'
198026 WHEN 2 THEN 'HEADER'
198027
198028 ELSE null
198029 END object_type_code
198030 , CASE r
198031 WHEN 1 THEN '707'
198032 WHEN 2 THEN '707'
198033
198034 ELSE null
198035 END source_application_id
198036 , 'S' source_type_code
198037 , CASE r
198038 WHEN 1 THEN 'DISTRIBUTION_TYPE'
198039 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
198040
198041 ELSE null
198042 END source_code
198043 , CASE r
198044 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
198045 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
198046
198047 ELSE null
198048 END source_value
198049 , CASE r
198050 WHEN 1 THEN fvl12.meaning
198051 WHEN 2 THEN fvl38.meaning
198052
198053 ELSE null
198054 END source_meaning
198055 FROM xla_events_gt xet
198056 , CST_XLA_INV_HEADERS_V h1
198057 , fnd_lookup_values fvl12
198058 , fnd_lookup_values fvl38
198059 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
198060 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
198061 AND xet.event_type_code = C_EVENT_TYPE_CODE
198062 AND h1.event_id = xet.event_id
198063 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
198064 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
198065 AND fvl12.view_application_id(+) = 700
198066 AND fvl12.language(+) = USERENV('LANG')
198067 AND fvl38.lookup_type(+) = 'YES_NO'
198068 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
198069 AND fvl38.view_application_id(+) = 0
198070 AND fvl38.language(+) = USERENV('LANG')
198071
198072 )
198073 ;
198074 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198075
198076 trace
198077 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
198078 ,p_level => C_LEVEL_STATEMENT
198079 ,p_module => l_log_module);
198080
198081 END IF;
198082 --
198083
198084
198085
198086 --
198087 INSERT INTO xla_diag_sources --line1
198088 (
198089 event_id
198090 , ledger_id
198091 , sla_ledger_id
198092 , description_language
198093 , object_name
198094 , object_type_code
198095 , line_number
198096 , source_application_id
198097 , source_type_code
198098 , source_code
198099 , source_value
198100 , source_meaning
198101 , created_by
198102 , creation_date
198103 , last_update_date
198104 , last_updated_by
198105 , last_update_login
198106 , program_update_date
198107 , program_application_id
198108 , program_id
198109 , request_id
198110 )
198111 SELECT event_id
198112 , p_target_ledger_id
198113 , p_sla_ledger_id
198114 , p_language
198115 , object_name
198116 , object_type_code
198117 , line_number
198118 , source_application_id
198119 , source_type_code
198120 , source_code
198121 , SUBSTR(source_value,1,1996)
198122 , SUBSTR(source_meaning,1,200)
198123 , xla_environment_pkg.g_Usr_Id
198124 , TRUNC(SYSDATE)
198125 , TRUNC(SYSDATE)
198126 , xla_environment_pkg.g_Usr_Id
198127 , xla_environment_pkg.g_Login_Id
198128 , TRUNC(SYSDATE)
198129 , xla_environment_pkg.g_Prog_Appl_Id
198130 , xla_environment_pkg.g_Prog_Id
198131 , xla_environment_pkg.g_Req_Id
198132 FROM (
198133 SELECT xet.event_id event_id
198134 , l2.line_number line_number
198135 , CASE r
198136 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
198137 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
198138 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
198139 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
198140 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
198141 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
198142 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
198143 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
198144 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
198145
198146 ELSE null
198147 END object_name
198148 , CASE r
198149 WHEN 1 THEN 'LINE'
198150 WHEN 2 THEN 'LINE'
198151 WHEN 3 THEN 'LINE'
198152 WHEN 4 THEN 'LINE'
198153 WHEN 5 THEN 'LINE'
198154 WHEN 6 THEN 'LINE'
198155 WHEN 7 THEN 'LINE'
198156 WHEN 8 THEN 'LINE'
198157 WHEN 9 THEN 'LINE'
198158
198159 ELSE null
198160 END object_type_code
198161 , CASE r
198162 WHEN 1 THEN '707'
198163 WHEN 2 THEN '707'
198164 WHEN 3 THEN '707'
198165 WHEN 4 THEN '707'
198166 WHEN 5 THEN '707'
198167 WHEN 6 THEN '707'
198168 WHEN 7 THEN '707'
198169 WHEN 8 THEN '707'
198170 WHEN 9 THEN '707'
198171
198172 ELSE null
198173 END source_application_id
198174 , 'S' source_type_code
198175 , CASE r
198176 WHEN 1 THEN 'CODE_COMBINATION_ID'
198177 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
198178 WHEN 3 THEN 'CURRENCY_CODE'
198179 WHEN 4 THEN 'ENTERED_AMOUNT'
198180 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
198181 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
198182 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
198183 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
198184 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
198185
198186 ELSE null
198187 END source_code
198188 , CASE r
198189 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
198190 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
198191 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
198192 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
198193 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
198194 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
198195 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
198196 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
198197 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
198198
198199 ELSE null
198200 END source_value
198201 , null source_meaning
198202 FROM xla_events_gt xet
198203 , CST_XLA_INV_LINES_V l2
198204 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
198205 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
198206 AND xet.event_type_code = C_EVENT_TYPE_CODE
198207 AND l2.event_id = xet.event_id
198208
198209 )
198210 ;
198211 --
198212 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198213
198214 trace
198215 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
198216 ,p_level => C_LEVEL_STATEMENT
198217 ,p_module => l_log_module);
198218
198219 END IF;
198220
198221
198222 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198223 trace
198224 (p_msg => 'END of insert_sources_300'
198225 ,p_level => C_LEVEL_PROCEDURE
198226 ,p_module => l_log_module);
198227 END IF;
198228 EXCEPTION
198229 WHEN xla_exceptions_pkg.application_exception THEN
198230 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
198231 trace
198232 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
198233 ,p_level => C_LEVEL_EXCEPTION
198234 ,p_module => l_log_module);
198235 END IF;
198236 RAISE;
198237 WHEN OTHERS THEN
198238 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
198239 trace
198240 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
198241 ,p_level => C_LEVEL_EXCEPTION
198242 ,p_module => l_log_module);
198243 END IF;
198244 xla_exceptions_pkg.raise_message
198245 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_300');
198246 END insert_sources_300;
198247 --
198248
198249 ---------------------------------------
198250 --
198251 -- PRIVATE FUNCTION
198252 -- EventType_300
198253 --
198254 ----------------------------------------
198255 --
198256 FUNCTION EventType_300
198257 (p_application_id IN NUMBER
198258 ,p_base_ledger_id IN NUMBER
198259 ,p_target_ledger_id IN NUMBER
198260 ,p_language IN VARCHAR2
198261 ,p_currency_code IN VARCHAR2
198262 ,p_sla_ledger_id IN NUMBER
198263 ,p_pad_start_date IN DATE
198264 ,p_pad_end_date IN DATE
198265 ,p_primary_ledger_id IN NUMBER)
198266 RETURN BOOLEAN IS
198267 --
198268 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UIPV_TXFR';
198269 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
198270
198271 l_calculate_acctd_flag VARCHAR2(1) :='Y';
198272 l_calculate_g_l_flag VARCHAR2(1) :='Y';
198273 --
198274 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198275 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198276 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198277 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198278 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198279 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198280 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198281 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198282 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198283 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198284 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198285 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198286 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198287 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
198288 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198289 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198290 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198291 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
198292 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198293 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198294 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198295 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
198296 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
198297 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
198298 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
198299 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
198300
198301 l_event_id NUMBER;
198302 l_previous_event_id NUMBER;
198303 l_first_event_id NUMBER;
198304 l_last_event_id NUMBER;
198305
198306 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
198307 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
198308 --
198309 --
198310 l_result BOOLEAN := TRUE;
198311 l_rows NUMBER := 1000;
198312 l_event_type_name VARCHAR2(80) := 'User-defined Invoice Price Variance Transfer';
198313 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
198314 l_description VARCHAR2(4000);
198315 l_transaction_reversal NUMBER;
198316 l_ae_header_id NUMBER;
198317 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
198318 l_log_module VARCHAR2(240);
198319 --
198320 l_acct_reversal_source VARCHAR2(30);
198321 l_trx_reversal_source VARCHAR2(30);
198322
198323 l_continue_with_lines BOOLEAN := TRUE;
198324 --
198325 l_acc_rev_gl_date_source DATE; -- 4262811
198326 --
198327 type t_array_event_id is table of number index by binary_integer;
198328
198329 l_rec_array_event t_rec_array_event;
198330 l_null_rec_array_event t_rec_array_event;
198331 l_array_ae_header_id xla_number_array_type;
198332 l_actual_flag VARCHAR2(1) := NULL;
198333 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
198334 l_balance_type_code VARCHAR2(1) :=NULL;
198335 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
198336
198337 --
198338 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
198339 --
198340
198341 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
198342 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
198343
198344 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
198345 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
198346 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
198347 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
198348 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
198349 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
198350 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
198351 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
198352 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
198353
198354 l_array_source_12 t_array_source_12;
198355 l_array_source_12_meaning t_array_lookup_meaning;
198356 l_array_source_38 t_array_source_38;
198357 l_array_source_38_meaning t_array_lookup_meaning;
198358
198359 l_array_source_4 t_array_source_4;
198360 l_array_source_11 t_array_source_11;
198361 l_array_source_15 t_array_source_15;
198362 l_array_source_18 t_array_source_18;
198363 l_array_source_19 t_array_source_19;
198364 l_array_source_20 t_array_source_20;
198365 l_array_source_21 t_array_source_21;
198366 l_array_source_22 t_array_source_22;
198367 l_array_source_24 t_array_source_24;
198368
198369 --
198370 CURSOR header_cur
198371 IS
198372 SELECT /*+ leading(xet) cardinality(xet,1) */
198373 -- Event Type Code: UIPV_TXFR
198374 -- Event Class Code: USER_DEFINE
198375 xet.entity_id
198376 , xet.legal_entity_id
198377 , xet.entity_code
198378 , xet.transaction_number
198379 , xet.event_id
198380 , xet.event_class_code
198381 , xet.event_type_code
198382 , xet.event_number
198383 , xet.event_date
198384 , xet.transaction_date
198385 , xet.reference_num_1
198386 , xet.reference_num_2
198387 , xet.reference_num_3
198388 , xet.reference_num_4
198389 , xet.reference_char_1
198390 , xet.reference_char_2
198391 , xet.reference_char_3
198392 , xet.reference_char_4
198393 , xet.reference_date_1
198394 , xet.reference_date_2
198395 , xet.reference_date_3
198396 , xet.reference_date_4
198397 , xet.event_created_by
198398 , xet.budgetary_control_flag
198399 , h1.DISTRIBUTION_TYPE source_12
198400 , fvl12.meaning source_12_meaning
198401 , h1.TRANSFER_TO_GL_INDICATOR source_38
198402 , fvl38.meaning source_38_meaning
198403 FROM xla_events_gt xet
198404 , CST_XLA_INV_HEADERS_V h1
198405 , fnd_lookup_values fvl12
198406 , fnd_lookup_values fvl38
198407 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
198408 and xet.event_type_code = C_EVENT_TYPE_CODE
198409 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
198410 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
198411 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
198412 AND fvl12.view_application_id(+) = 700
198413 AND fvl12.language(+) = USERENV('LANG')
198414 AND fvl38.lookup_type(+) = 'YES_NO'
198415 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
198416 AND fvl38.view_application_id(+) = 0
198417 AND fvl38.language(+) = USERENV('LANG')
198418
198419 ORDER BY event_id
198420 ;
198421
198422
198423 --
198424 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
198425 IS
198426 SELECT /*+ leading(xet) cardinality(xet,1) */
198427 -- Event Type Code: UIPV_TXFR
198428 -- Event Class Code: USER_DEFINE
198429 xet.entity_id
198430 ,xet.legal_entity_id
198431 ,xet.entity_code
198432 ,xet.transaction_number
198433 ,xet.event_id
198434 ,xet.event_class_code
198435 ,xet.event_type_code
198436 ,xet.event_number
198437 ,xet.event_date
198438 ,xet.transaction_date
198439 ,xet.reference_num_1
198440 ,xet.reference_num_2
198441 ,xet.reference_num_3
198442 ,xet.reference_num_4
198443 ,xet.reference_char_1
198444 ,xet.reference_char_2
198445 ,xet.reference_char_3
198446 ,xet.reference_char_4
198447 ,xet.reference_date_1
198448 ,xet.reference_date_2
198449 ,xet.reference_date_3
198450 ,xet.reference_date_4
198451 ,xet.event_created_by
198452 ,xet.budgetary_control_flag , l2.LINE_NUMBER
198453 , l2.CODE_COMBINATION_ID source_4
198454 , l2.DISTRIBUTION_IDENTIFIER source_11
198455 , l2.CURRENCY_CODE source_15
198456 , l2.ENTERED_AMOUNT source_18
198457 , l2.CURRENCY_CONVERSION_DATE source_19
198458 , l2.CURRENCY_CONVERSION_RATE source_20
198459 , l2.CURRENCY_CONVERSION_TYPE source_21
198460 , l2.ACCOUNTED_AMOUNT source_22
198461 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
198462 FROM xla_events_gt xet
198463 , CST_XLA_INV_LINES_V l2
198464 WHERE xet.event_id between x_first_event_id and x_last_event_id
198465 and xet.event_date between p_pad_start_date and p_pad_end_date
198466 and xet.event_type_code = C_EVENT_TYPE_CODE
198467 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
198468 ;
198469
198470 --
198471 BEGIN
198472 IF g_log_enabled THEN
198473 l_log_module := C_DEFAULT_MODULE||'.EventType_300';
198474 END IF;
198475 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
198476 trace
198477 (p_msg => 'BEGIN of EventType_300'
198478 ,p_level => C_LEVEL_PROCEDURE
198479 ,p_module => l_log_module);
198480 END IF;
198481
198482 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198483 trace
198484 (p_msg => 'p_application_id = '||p_application_id||
198485 ' - p_base_ledger_id = '||p_base_ledger_id||
198486 ' - p_target_ledger_id = '||p_target_ledger_id||
198487 ' - p_language = '||p_language||
198488 ' - p_currency_code = '||p_currency_code||
198489 ' - p_sla_ledger_id = '||p_sla_ledger_id
198490 ,p_level => C_LEVEL_STATEMENT
198491 ,p_module => l_log_module);
198492 END IF;
198493 --
198494 -- initialze arrays
198495 --
198496 g_array_event.DELETE;
198497 l_rec_array_event := l_null_rec_array_event;
198498 --
198499 --------------------------------------
198500 -- 4262811 Initialze MPA Line Number
198501 --------------------------------------
198502 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
198503
198504 --
198505
198506 --
198507 OPEN header_cur;
198508 --
198509 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198510 trace
198511 (p_msg => 'SQL - FETCH header_cur'
198512 ,p_level => C_LEVEL_STATEMENT
198513 ,p_module => l_log_module);
198514 END IF;
198515 --
198516 LOOP
198517 FETCH header_cur BULK COLLECT INTO
198518 l_array_entity_id
198519 , l_array_legal_entity_id
198520 , l_array_entity_code
198521 , l_array_transaction_num
198522 , l_array_event_id
198523 , l_array_class_code
198524 , l_array_event_type
198525 , l_array_event_number
198526 , l_array_event_date
198527 , l_array_transaction_date
198528 , l_array_reference_num_1
198529 , l_array_reference_num_2
198530 , l_array_reference_num_3
198531 , l_array_reference_num_4
198532 , l_array_reference_char_1
198533 , l_array_reference_char_2
198534 , l_array_reference_char_3
198535 , l_array_reference_char_4
198536 , l_array_reference_date_1
198537 , l_array_reference_date_2
198538 , l_array_reference_date_3
198539 , l_array_reference_date_4
198540 , l_array_event_created_by
198541 , l_array_budgetary_control_flag
198542 , l_array_source_12
198543 , l_array_source_12_meaning
198544 , l_array_source_38
198545 , l_array_source_38_meaning
198546 LIMIT l_rows;
198547 --
198548 IF (C_LEVEL_EVENT >= g_log_level) THEN
198549 trace
198550 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
198551 ,p_level => C_LEVEL_EVENT
198552 ,p_module => l_log_module);
198553 END IF;
198554 --
198555 EXIT WHEN l_array_entity_id.COUNT = 0;
198556
198557 -- initialize arrays
198558 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
198559 XLA_AE_LINES_PKG.g_rec_lines := NULL;
198560
198561 --
198562 -- Bug 4458708
198563 --
198564 XLA_AE_LINES_PKG.g_LineNumber := 0;
198565
198566
198567 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
198568 g_last_hdr_idx := l_array_event_id.LAST;
198569 --
198570 -- loop for the headers. Each iteration is for each header extract row
198571 -- fetched in header cursor
198572 --
198573 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
198574
198575 --
198576 -- set event info as cache for other routines to refer event attributes
198577 --
198578 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
198579 (p_application_id => p_application_id
198580 ,p_primary_ledger_id => p_primary_ledger_id
198581 ,p_base_ledger_id => p_base_ledger_id
198582 ,p_target_ledger_id => p_target_ledger_id
198583 ,p_entity_id => l_array_entity_id(hdr_idx)
198584 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
198585 ,p_entity_code => l_array_entity_code(hdr_idx)
198586 ,p_transaction_num => l_array_transaction_num(hdr_idx)
198587 ,p_event_id => l_array_event_id(hdr_idx)
198588 ,p_event_class_code => l_array_class_code(hdr_idx)
198589 ,p_event_type_code => l_array_event_type(hdr_idx)
198590 ,p_event_number => l_array_event_number(hdr_idx)
198591 ,p_event_date => l_array_event_date(hdr_idx)
198592 ,p_transaction_date => l_array_transaction_date(hdr_idx)
198593 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
198594 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
198595 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
198596 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
198597 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
198598 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
198599 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
198600 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
198601 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
198602 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
198603 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
198604 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
198605 ,p_event_created_by => l_array_event_created_by(hdr_idx)
198606 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
198607
198608 --
198609 -- set the status of entry to C_VALID (0)
198610 --
198611 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
198612
198613 --
198614 -- initialize a row for ae header
198615 --
198616 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
198617
198618 l_event_id := l_array_event_id(hdr_idx);
198619
198620 --
198621 -- storing the hdr_idx for event. May be used by line cursor.
198622 --
198623 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
198624
198625 --
198626 -- store sources from header extract. This can be improved to
198627 -- store only those sources from header extract that may be used in lines
198628 --
198629
198630 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
198631 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
198632 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
198633 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
198634
198635 --
198636 -- initilaize the status of ae headers for diffrent balance types
198637 -- the status is initialised to C_NOT_CREATED (2)
198638 --
198639 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198640 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198641 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
198642
198643 --
198644 -- call api to validate and store accounting attributes for header
198645 --
198646
198647 ------------------------------------------------------------
198648 -- Accrual Reversal : to get date for Standard Source (NONE)
198649 ------------------------------------------------------------
198650 l_acc_rev_gl_date_source := NULL;
198651
198652 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
198653 l_rec_acct_attrs.array_date_value(1) :=
198654 xla_ae_sources_pkg.GetSystemSourceDate(
198655 p_source_code => 'XLA_REFERENCE_DATE_1'
198656 , p_source_type_code => 'Y'
198657 , p_source_application_id => 602
198658 );
198659 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
198660 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
198661
198662
198663 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
198664
198665 XLA_AE_HEADER_PKG.SetJeCategoryName;
198666
198667 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
198668 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
198669 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
198670 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
198671 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
198672
198673
198674 -- No header level analytical criteria
198675
198676 --
198677 --accounting attribute enhancement, bug 3612931
198678 --
198679 l_trx_reversal_source := SUBSTR(NULL, 1,30);
198680
198681 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
198682 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
198683
198684 xla_accounting_err_pkg.build_message
198685 (p_appli_s_name => 'XLA'
198686 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
198687 ,p_token_1 => 'ACCT_ATTR_NAME'
198688 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
198689 ,p_token_2 => 'PRODUCT_NAME'
198690 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
198691 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
198692 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
198693 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
198694
198695 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
198696 --
198697 -- following sets the accounting attributes needed to reverse
198698 -- accounting for a distributeion
198699 --
198700 xla_ae_lines_pkg.SetTrxReversalAttrs
198701 (p_event_id => l_event_id
198702 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
198703 ,p_trx_reversal_source => l_trx_reversal_source);
198704
198705 END IF;
198706
198707
198708 ----------------------------------------------------------------
198709 -- 4262811 - update the header statuses to invalid in need be
198710 ----------------------------------------------------------------
198711 --
198712 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
198713
198714
198715 -----------------------------------------------
198716 -- No accrual reversal for the event class/type
198717 -----------------------------------------------
198718 ----------------------------------------------------------------
198719
198720 --
198721 -- this ends the header loop iteration for one bulk fetch
198722 --
198723 END LOOP;
198724
198725 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
198726 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
198727
198728 --
198729 -- insert dummy rows into lines gt table that were created due to
198730 -- transaction reversals
198731 --
198732 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
198733 l_result := XLA_AE_LINES_PKG.InsertLines;
198734 END IF;
198735
198736 --
198737 -- reset the temp_line_num for each set of events fetched from header
198738 -- cursor rather than doing it for each new event in line cursor
198739 -- Bug 3939231
198740 --
198741 xla_ae_lines_pkg.g_temp_line_num := 0;
198742
198743
198744
198745 --
198746 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
198747 --
198748 --
198749 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198750
198751 trace
198752 (p_msg => 'SQL - FETCH line_cur'
198753 ,p_level => C_LEVEL_STATEMENT
198754 ,p_module => l_log_module);
198755
198756 END IF;
198757 --
198758 --
198759 LOOP
198760 --
198761 FETCH line_cur BULK COLLECT INTO
198762 l_array_entity_id
198763 , l_array_legal_entity_id
198764 , l_array_entity_code
198765 , l_array_transaction_num
198766 , l_array_event_id
198767 , l_array_class_code
198768 , l_array_event_type
198769 , l_array_event_number
198770 , l_array_event_date
198771 , l_array_transaction_date
198772 , l_array_reference_num_1
198773 , l_array_reference_num_2
198774 , l_array_reference_num_3
198775 , l_array_reference_num_4
198776 , l_array_reference_char_1
198777 , l_array_reference_char_2
198778 , l_array_reference_char_3
198779 , l_array_reference_char_4
198780 , l_array_reference_date_1
198781 , l_array_reference_date_2
198782 , l_array_reference_date_3
198783 , l_array_reference_date_4
198784 , l_array_event_created_by
198785 , l_array_budgetary_control_flag
198786 , l_array_extract_line_num
198787 , l_array_source_4
198788 , l_array_source_11
198789 , l_array_source_15
198790 , l_array_source_18
198791 , l_array_source_19
198792 , l_array_source_20
198793 , l_array_source_21
198794 , l_array_source_22
198795 , l_array_source_24
198796 LIMIT l_rows;
198797
198798 --
198799 IF (C_LEVEL_EVENT >= g_log_level) THEN
198800 trace
198801 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
198802 ,p_level => C_LEVEL_EVENT
198803 ,p_module => l_log_module);
198804 END IF;
198805 --
198806 EXIT WHEN l_array_entity_id.count = 0;
198807
198808 XLA_AE_LINES_PKG.g_rec_lines := null;
198809
198810 --
198811 -- Bug 4458708
198812 --
198813 XLA_AE_LINES_PKG.g_LineNumber := 0;
198814 --
198815 --
198816
198817 FOR Idx IN 1..l_array_event_id.count LOOP
198818 --
198819 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
198820 --
198821 l_event_id := l_array_event_id(idx); -- 5648433
198822
198823 --
198824 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
198825 --
198826
198827 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
198828 (g_array_event(l_event_id).array_value_num('header_index'))
198829 ,'N'
198830 ) <> 'Y'
198831 THEN
198832 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
198833 trace
198834 (p_msg => 'Trancaction revesal option is not Y '
198835 ,p_level => C_LEVEL_STATEMENT
198836 ,p_module => l_log_module);
198837 END IF;
198838
198839 --
198840 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
198841 --
198842 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
198843 --
198844 -- set event info as cache for other routines to refer event attributes
198845 --
198846
198847 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
198848 l_previous_event_id := l_event_id;
198849
198850 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
198851 (p_application_id => p_application_id
198852 ,p_primary_ledger_id => p_primary_ledger_id
198853 ,p_base_ledger_id => p_base_ledger_id
198854 ,p_target_ledger_id => p_target_ledger_id
198855 ,p_entity_id => l_array_entity_id(Idx)
198856 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
198857 ,p_entity_code => l_array_entity_code(Idx)
198858 ,p_transaction_num => l_array_transaction_num(Idx)
198859 ,p_event_id => l_array_event_id(Idx)
198860 ,p_event_class_code => l_array_class_code(Idx)
198861 ,p_event_type_code => l_array_event_type(Idx)
198862 ,p_event_number => l_array_event_number(Idx)
198863 ,p_event_date => l_array_event_date(Idx)
198864 ,p_transaction_date => l_array_transaction_date(Idx)
198865 ,p_reference_num_1 => l_array_reference_num_1(Idx)
198866 ,p_reference_num_2 => l_array_reference_num_2(Idx)
198867 ,p_reference_num_3 => l_array_reference_num_3(Idx)
198868 ,p_reference_num_4 => l_array_reference_num_4(Idx)
198869 ,p_reference_char_1 => l_array_reference_char_1(Idx)
198870 ,p_reference_char_2 => l_array_reference_char_2(Idx)
198871 ,p_reference_char_3 => l_array_reference_char_3(Idx)
198872 ,p_reference_char_4 => l_array_reference_char_4(Idx)
198873 ,p_reference_date_1 => l_array_reference_date_1(Idx)
198874 ,p_reference_date_2 => l_array_reference_date_2(Idx)
198875 ,p_reference_date_3 => l_array_reference_date_3(Idx)
198876 ,p_reference_date_4 => l_array_reference_date_4(Idx)
198877 ,p_event_created_by => l_array_event_created_by(Idx)
198878 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
198879 --
198880 END IF;
198881
198882
198883
198884 --
198885 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
198886
198887 l_acct_reversal_source := SUBSTR(NULL, 1,30);
198888
198889 IF l_continue_with_lines THEN
198890 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
198891 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
198892
198893 xla_accounting_err_pkg.build_message
198894 (p_appli_s_name => 'XLA'
198895 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
198896 ,p_token_1 => 'LINE_NUMBER'
198897 ,p_value_1 => l_array_extract_line_num(Idx)
198898 ,p_token_2 => 'PRODUCT_NAME'
198899 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
198900 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
198901 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
198902 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
198903
198904 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
198905 --
198906 -- following sets the accounting attributes needed to reverse
198907 -- accounting for a distributeion
198908 --
198909
198910 --
198911 -- 5217187
198912 --
198913 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
198914 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
198915 g_array_event(l_event_id).array_value_num('header_index'));
198916 --
198917 --
198918
198919 -- No reversal code generated
198920
198921 xla_ae_lines_pkg.SetAcctReversalAttrs
198922 (p_event_id => l_event_id
198923 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
198924 ,p_calculate_acctd_flag => l_calculate_acctd_flag
198925 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
198926 END IF;
198927
198928 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
198929 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
198930
198931 --
198932 AcctLineType_23 (
198933 p_application_id => p_application_id
198934 ,p_event_id => l_event_id
198935 ,p_calculate_acctd_flag => l_calculate_acctd_flag
198936 ,p_calculate_g_l_flag => l_calculate_g_l_flag
198937 ,p_actual_flag => l_actual_flag
198938 ,p_balance_type_code => l_balance_type_code
198939 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198940
198941 , p_source_4 => l_array_source_4(Idx)
198942 , p_source_11 => l_array_source_11(Idx)
198943 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198944 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198945 , p_source_15 => l_array_source_15(Idx)
198946 , p_source_18 => l_array_source_18(Idx)
198947 , p_source_19 => l_array_source_19(Idx)
198948 , p_source_20 => l_array_source_20(Idx)
198949 , p_source_21 => l_array_source_21(Idx)
198950 , p_source_22 => l_array_source_22(Idx)
198951 , p_source_24 => l_array_source_24(Idx)
198952 );
198953 If(l_balance_type_code = 'A') THEN
198954 l_actual_gain_loss_ref := l_gain_or_loss_ref;
198955 END IF;
198956
198957 --
198958
198959
198960 --
198961 AcctLineType_43 (
198962 p_application_id => p_application_id
198963 ,p_event_id => l_event_id
198964 ,p_calculate_acctd_flag => l_calculate_acctd_flag
198965 ,p_calculate_g_l_flag => l_calculate_g_l_flag
198966 ,p_actual_flag => l_actual_flag
198967 ,p_balance_type_code => l_balance_type_code
198968 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198969
198970 , p_source_4 => l_array_source_4(Idx)
198971 , p_source_11 => l_array_source_11(Idx)
198972 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
198973 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
198974 , p_source_15 => l_array_source_15(Idx)
198975 , p_source_18 => l_array_source_18(Idx)
198976 , p_source_19 => l_array_source_19(Idx)
198977 , p_source_20 => l_array_source_20(Idx)
198978 , p_source_21 => l_array_source_21(Idx)
198979 , p_source_22 => l_array_source_22(Idx)
198980 , p_source_24 => l_array_source_24(Idx)
198981 );
198982 If(l_balance_type_code = 'A') THEN
198983 l_actual_gain_loss_ref := l_gain_or_loss_ref;
198984 END IF;
198985
198986 --
198987
198988
198989 --
198990 AcctLineType_127 (
198991 p_application_id => p_application_id
198992 ,p_event_id => l_event_id
198993 ,p_calculate_acctd_flag => l_calculate_acctd_flag
198994 ,p_calculate_g_l_flag => l_calculate_g_l_flag
198995 ,p_actual_flag => l_actual_flag
198996 ,p_balance_type_code => l_balance_type_code
198997 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
198998
198999 , p_source_4 => l_array_source_4(Idx)
199000 , p_source_11 => l_array_source_11(Idx)
199001 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
199002 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
199003 , p_source_15 => l_array_source_15(Idx)
199004 , p_source_18 => l_array_source_18(Idx)
199005 , p_source_19 => l_array_source_19(Idx)
199006 , p_source_20 => l_array_source_20(Idx)
199007 , p_source_21 => l_array_source_21(Idx)
199008 , p_source_22 => l_array_source_22(Idx)
199009 , p_source_24 => l_array_source_24(Idx)
199010 );
199011 If(l_balance_type_code = 'A') THEN
199012 l_actual_gain_loss_ref := l_gain_or_loss_ref;
199013 END IF;
199014
199015 --
199016
199017
199018 --
199019 AcctLineType_139 (
199020 p_application_id => p_application_id
199021 ,p_event_id => l_event_id
199022 ,p_calculate_acctd_flag => l_calculate_acctd_flag
199023 ,p_calculate_g_l_flag => l_calculate_g_l_flag
199024 ,p_actual_flag => l_actual_flag
199025 ,p_balance_type_code => l_balance_type_code
199026 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
199027
199028 , p_source_4 => l_array_source_4(Idx)
199029 , p_source_11 => l_array_source_11(Idx)
199030 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
199031 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
199032 , p_source_15 => l_array_source_15(Idx)
199033 , p_source_18 => l_array_source_18(Idx)
199034 , p_source_19 => l_array_source_19(Idx)
199035 , p_source_20 => l_array_source_20(Idx)
199036 , p_source_21 => l_array_source_21(Idx)
199037 , p_source_22 => l_array_source_22(Idx)
199038 , p_source_24 => l_array_source_24(Idx)
199039 );
199040 If(l_balance_type_code = 'A') THEN
199041 l_actual_gain_loss_ref := l_gain_or_loss_ref;
199042 END IF;
199043
199044 --
199045
199046 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
199047 -- or secondary ledger that has different currency with primary
199048 -- or alc that is calculated by sla
199049 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
199050 (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'))
199051
199052 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
199053 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
199054 AND (l_actual_flag = 'A')) THEN
199055 XLA_AE_LINES_PKG.CreateGainOrLossLines(
199056 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
199057 ,p_application_id => p_application_id
199058 ,p_amb_context_code => 'DEFAULT'
199059 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
199060 ,p_event_class_code => C_EVENT_CLASS_CODE
199061 ,p_event_type_code => C_EVENT_TYPE_CODE
199062
199063 ,p_gain_ccid => -1
199064 ,p_loss_ccid => -1
199065
199066 ,p_actual_flag => l_actual_flag
199067 ,p_enc_flag => null
199068 ,p_actual_g_l_ref => l_actual_gain_loss_ref
199069 ,p_enc_g_l_ref => null
199070 );
199071 END IF;
199072 END IF;
199073 END IF;
199074
199075 ELSE
199076 --
199077 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
199078 --
199079 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199080 trace
199081 (p_msg => 'Trancaction revesal option is Y'
199082 ,p_level => C_LEVEL_STATEMENT
199083 ,p_module => l_log_module);
199084 END IF;
199085 END IF;
199086
199087 END LOOP;
199088 l_result := XLA_AE_LINES_PKG.InsertLines ;
199089 end loop;
199090 close line_cur;
199091
199092
199093 --
199094 -- insert headers into xla_ae_headers_gt table
199095 --
199096 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
199097
199098 -- insert into errors table here.
199099
199100 END LOOP;
199101
199102 --
199103 -- 4865292
199104 --
199105 -- Compare g_hdr_extract_count with event count in
199106 -- CreateHeadersAndLines.
199107 --
199108 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
199109
199110 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199111 trace (p_msg => '# rows extracted from header extract objects '
199112 || ' (running total): '
199113 || g_hdr_extract_count
199114 ,p_level => C_LEVEL_STATEMENT
199115 ,p_module => l_log_module);
199116 END IF;
199117
199118 CLOSE header_cur;
199119 --
199120
199121 --
199122 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199123 trace
199124 (p_msg => 'END of EventType_300'
199125 ,p_level => C_LEVEL_PROCEDURE
199126 ,p_module => l_log_module);
199127 END IF;
199128 --
199129 RETURN l_result;
199130 EXCEPTION
199131 WHEN xla_exceptions_pkg.application_exception THEN
199132
199133 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
199134
199135
199136 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
199137
199138 RAISE;
199139
199140 WHEN NO_DATA_FOUND THEN
199141
199142 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
199143 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
199144
199145 FOR header_record IN header_cur
199146 LOOP
199147 l_array_header_events(header_record.event_id) := header_record.event_id;
199148 END LOOP;
199149
199150 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
199151 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
199152
199153 fnd_file.put_line(fnd_file.LOG, ' ');
199154 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
199155 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
199156 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
199157
199158 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
199159 LOOP
199160 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
199161 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
199162 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
199163 END IF;
199164 END LOOP;
199165
199166 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
199167 fnd_file.put_line(fnd_file.LOG, ' ');
199168
199169
199170 xla_exceptions_pkg.raise_message
199171 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_300');
199172
199173
199174 WHEN OTHERS THEN
199175 xla_exceptions_pkg.raise_message
199176 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_300');
199177 END EventType_300;
199178 --
199179
199180 ---------------------------------------
199181 --
199182 -- PRIVATE PROCEDURE
199183 -- insert_sources_301
199184 --
199185 ----------------------------------------
199186 --
199187 PROCEDURE insert_sources_301(
199188 p_target_ledger_id IN NUMBER
199189 , p_language IN VARCHAR2
199190 , p_sla_ledger_id IN NUMBER
199191 , p_pad_start_date IN DATE
199192 , p_pad_end_date IN DATE
199193 )
199194 IS
199195
199196 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UMISC_ISSUE';
199197 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
199198 p_apps_owner VARCHAR2(30);
199199 l_log_module VARCHAR2(240);
199200 BEGIN
199201 IF g_log_enabled THEN
199202 l_log_module := C_DEFAULT_MODULE||'.insert_sources_301';
199203 END IF;
199204 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199205
199206 trace
199207 (p_msg => 'BEGIN of insert_sources_301'
199208 ,p_level => C_LEVEL_PROCEDURE
199209 ,p_module => l_log_module);
199210
199211 END IF;
199212
199213 -- select APPS owner
199214 SELECT oracle_username
199215 INTO p_apps_owner
199216 FROM fnd_oracle_userid
199217 WHERE read_only_flag = 'U'
199218 ;
199219
199220 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199221 trace
199222 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
199223 ' - p_language = '||p_language||
199224 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
199225 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
199226 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
199227 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
199228 ,p_level => C_LEVEL_STATEMENT
199229 ,p_module => l_log_module);
199230 END IF;
199231
199232
199233 --
199234 INSERT INTO xla_diag_sources --hdr1
199235 (
199236 event_id
199237 , ledger_id
199238 , sla_ledger_id
199239 , description_language
199240 , object_name
199241 , object_type_code
199242 , line_number
199243 , source_application_id
199244 , source_type_code
199245 , source_code
199246 , source_value
199247 , source_meaning
199248 , created_by
199249 , creation_date
199250 , last_update_date
199251 , last_updated_by
199252 , last_update_login
199253 , program_update_date
199254 , program_application_id
199255 , program_id
199256 , request_id
199257 )
199258 SELECT
199259 event_id
199260 , p_target_ledger_id
199261 , p_sla_ledger_id
199262 , p_language
199263 , object_name
199264 , object_type_code
199265 , line_number
199266 , source_application_id
199267 , source_type_code
199268 , source_code
199269 , SUBSTR(source_value ,1,1996)
199270 , SUBSTR(source_meaning,1,200)
199271 , xla_environment_pkg.g_Usr_Id
199272 , TRUNC(SYSDATE)
199273 , TRUNC(SYSDATE)
199274 , xla_environment_pkg.g_Usr_Id
199275 , xla_environment_pkg.g_Login_Id
199276 , TRUNC(SYSDATE)
199277 , xla_environment_pkg.g_Prog_Appl_Id
199278 , xla_environment_pkg.g_Prog_Id
199279 , xla_environment_pkg.g_Req_Id
199280 FROM (
199281 SELECT xet.event_id event_id
199282 , 0 line_number
199283 , CASE r
199284 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
199285 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
199286
199287 ELSE null
199288 END object_name
199289 , CASE r
199290 WHEN 1 THEN 'HEADER'
199291 WHEN 2 THEN 'HEADER'
199292
199293 ELSE null
199294 END object_type_code
199295 , CASE r
199296 WHEN 1 THEN '707'
199297 WHEN 2 THEN '707'
199298
199299 ELSE null
199300 END source_application_id
199301 , 'S' source_type_code
199302 , CASE r
199303 WHEN 1 THEN 'DISTRIBUTION_TYPE'
199304 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
199305
199306 ELSE null
199307 END source_code
199308 , CASE r
199309 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
199310 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
199311
199312 ELSE null
199313 END source_value
199314 , CASE r
199315 WHEN 1 THEN fvl12.meaning
199316 WHEN 2 THEN fvl38.meaning
199317
199318 ELSE null
199319 END source_meaning
199320 FROM xla_events_gt xet
199321 , CST_XLA_INV_HEADERS_V h1
199322 , fnd_lookup_values fvl12
199323 , fnd_lookup_values fvl38
199324 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
199325 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
199326 AND xet.event_type_code = C_EVENT_TYPE_CODE
199327 AND h1.event_id = xet.event_id
199328 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
199329 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
199330 AND fvl12.view_application_id(+) = 700
199331 AND fvl12.language(+) = USERENV('LANG')
199332 AND fvl38.lookup_type(+) = 'YES_NO'
199333 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
199334 AND fvl38.view_application_id(+) = 0
199335 AND fvl38.language(+) = USERENV('LANG')
199336
199337 )
199338 ;
199339 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199340
199341 trace
199342 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
199343 ,p_level => C_LEVEL_STATEMENT
199344 ,p_module => l_log_module);
199345
199346 END IF;
199347 --
199348
199349
199350
199351 --
199352 INSERT INTO xla_diag_sources --line1
199353 (
199354 event_id
199355 , ledger_id
199356 , sla_ledger_id
199357 , description_language
199358 , object_name
199359 , object_type_code
199360 , line_number
199361 , source_application_id
199362 , source_type_code
199363 , source_code
199364 , source_value
199365 , source_meaning
199366 , created_by
199367 , creation_date
199368 , last_update_date
199369 , last_updated_by
199370 , last_update_login
199371 , program_update_date
199372 , program_application_id
199373 , program_id
199374 , request_id
199375 )
199376 SELECT event_id
199377 , p_target_ledger_id
199378 , p_sla_ledger_id
199379 , p_language
199380 , object_name
199381 , object_type_code
199382 , line_number
199383 , source_application_id
199384 , source_type_code
199385 , source_code
199386 , SUBSTR(source_value,1,1996)
199387 , SUBSTR(source_meaning,1,200)
199388 , xla_environment_pkg.g_Usr_Id
199389 , TRUNC(SYSDATE)
199390 , TRUNC(SYSDATE)
199391 , xla_environment_pkg.g_Usr_Id
199392 , xla_environment_pkg.g_Login_Id
199393 , TRUNC(SYSDATE)
199394 , xla_environment_pkg.g_Prog_Appl_Id
199395 , xla_environment_pkg.g_Prog_Id
199396 , xla_environment_pkg.g_Req_Id
199397 FROM (
199398 SELECT xet.event_id event_id
199399 , l2.line_number line_number
199400 , CASE r
199401 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
199402 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
199403 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
199404 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
199405 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
199406 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
199407 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
199408 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
199409 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
199410
199411 ELSE null
199412 END object_name
199413 , CASE r
199414 WHEN 1 THEN 'LINE'
199415 WHEN 2 THEN 'LINE'
199416 WHEN 3 THEN 'LINE'
199417 WHEN 4 THEN 'LINE'
199418 WHEN 5 THEN 'LINE'
199419 WHEN 6 THEN 'LINE'
199420 WHEN 7 THEN 'LINE'
199421 WHEN 8 THEN 'LINE'
199422 WHEN 9 THEN 'LINE'
199423
199424 ELSE null
199425 END object_type_code
199426 , CASE r
199427 WHEN 1 THEN '707'
199428 WHEN 2 THEN '707'
199429 WHEN 3 THEN '707'
199430 WHEN 4 THEN '707'
199431 WHEN 5 THEN '707'
199432 WHEN 6 THEN '707'
199433 WHEN 7 THEN '707'
199434 WHEN 8 THEN '707'
199435 WHEN 9 THEN '707'
199436
199437 ELSE null
199438 END source_application_id
199439 , 'S' source_type_code
199440 , CASE r
199441 WHEN 1 THEN 'CODE_COMBINATION_ID'
199442 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
199443 WHEN 3 THEN 'CURRENCY_CODE'
199444 WHEN 4 THEN 'ENTERED_AMOUNT'
199445 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
199446 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
199447 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
199448 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
199449 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
199450
199451 ELSE null
199452 END source_code
199453 , CASE r
199454 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
199455 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
199456 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
199457 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
199458 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
199459 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
199460 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
199461 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
199462 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
199463
199464 ELSE null
199465 END source_value
199466 , null source_meaning
199467 FROM xla_events_gt xet
199468 , CST_XLA_INV_LINES_V l2
199469 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
199470 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
199471 AND xet.event_type_code = C_EVENT_TYPE_CODE
199472 AND l2.event_id = xet.event_id
199473
199474 )
199475 ;
199476 --
199477 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199478
199479 trace
199480 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
199481 ,p_level => C_LEVEL_STATEMENT
199482 ,p_module => l_log_module);
199483
199484 END IF;
199485
199486
199487 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199488 trace
199489 (p_msg => 'END of insert_sources_301'
199490 ,p_level => C_LEVEL_PROCEDURE
199491 ,p_module => l_log_module);
199492 END IF;
199493 EXCEPTION
199494 WHEN xla_exceptions_pkg.application_exception THEN
199495 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
199496 trace
199497 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
199498 ,p_level => C_LEVEL_EXCEPTION
199499 ,p_module => l_log_module);
199500 END IF;
199501 RAISE;
199502 WHEN OTHERS THEN
199503 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
199504 trace
199505 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
199506 ,p_level => C_LEVEL_EXCEPTION
199507 ,p_module => l_log_module);
199508 END IF;
199509 xla_exceptions_pkg.raise_message
199510 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_301');
199511 END insert_sources_301;
199512 --
199513
199514 ---------------------------------------
199515 --
199516 -- PRIVATE FUNCTION
199517 -- EventType_301
199518 --
199519 ----------------------------------------
199520 --
199521 FUNCTION EventType_301
199522 (p_application_id IN NUMBER
199523 ,p_base_ledger_id IN NUMBER
199524 ,p_target_ledger_id IN NUMBER
199525 ,p_language IN VARCHAR2
199526 ,p_currency_code IN VARCHAR2
199527 ,p_sla_ledger_id IN NUMBER
199528 ,p_pad_start_date IN DATE
199529 ,p_pad_end_date IN DATE
199530 ,p_primary_ledger_id IN NUMBER)
199531 RETURN BOOLEAN IS
199532 --
199533 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UMISC_ISSUE';
199534 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
199535
199536 l_calculate_acctd_flag VARCHAR2(1) :='Y';
199537 l_calculate_g_l_flag VARCHAR2(1) :='Y';
199538 --
199539 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199540 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199541 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
199542 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
199543 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199544 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
199545 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
199546 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199547 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199548 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199549 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199550 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199551 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199552 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
199553 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
199554 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
199555 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
199556 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
199557 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199558 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199559 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199560 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
199561 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
199562 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
199563 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
199564 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
199565
199566 l_event_id NUMBER;
199567 l_previous_event_id NUMBER;
199568 l_first_event_id NUMBER;
199569 l_last_event_id NUMBER;
199570
199571 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
199572 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
199573 --
199574 --
199575 l_result BOOLEAN := TRUE;
199576 l_rows NUMBER := 1000;
199577 l_event_type_name VARCHAR2(80) := 'User-defined Issue';
199578 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
199579 l_description VARCHAR2(4000);
199580 l_transaction_reversal NUMBER;
199581 l_ae_header_id NUMBER;
199582 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
199583 l_log_module VARCHAR2(240);
199584 --
199585 l_acct_reversal_source VARCHAR2(30);
199586 l_trx_reversal_source VARCHAR2(30);
199587
199588 l_continue_with_lines BOOLEAN := TRUE;
199589 --
199590 l_acc_rev_gl_date_source DATE; -- 4262811
199591 --
199592 type t_array_event_id is table of number index by binary_integer;
199593
199594 l_rec_array_event t_rec_array_event;
199595 l_null_rec_array_event t_rec_array_event;
199596 l_array_ae_header_id xla_number_array_type;
199597 l_actual_flag VARCHAR2(1) := NULL;
199598 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
199599 l_balance_type_code VARCHAR2(1) :=NULL;
199600 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
199601
199602 --
199603 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
199604 --
199605
199606 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
199607 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
199608
199609 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
199610 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
199611 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
199612 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
199613 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
199614 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
199615 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
199616 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
199617 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
199618
199619 l_array_source_12 t_array_source_12;
199620 l_array_source_12_meaning t_array_lookup_meaning;
199621 l_array_source_38 t_array_source_38;
199622 l_array_source_38_meaning t_array_lookup_meaning;
199623
199624 l_array_source_4 t_array_source_4;
199625 l_array_source_11 t_array_source_11;
199626 l_array_source_15 t_array_source_15;
199627 l_array_source_18 t_array_source_18;
199628 l_array_source_19 t_array_source_19;
199629 l_array_source_20 t_array_source_20;
199630 l_array_source_21 t_array_source_21;
199631 l_array_source_22 t_array_source_22;
199632 l_array_source_24 t_array_source_24;
199633
199634 --
199635 CURSOR header_cur
199636 IS
199637 SELECT /*+ leading(xet) cardinality(xet,1) */
199638 -- Event Type Code: UMISC_ISSUE
199639 -- Event Class Code: USER_DEFINE
199640 xet.entity_id
199641 , xet.legal_entity_id
199642 , xet.entity_code
199643 , xet.transaction_number
199644 , xet.event_id
199645 , xet.event_class_code
199646 , xet.event_type_code
199647 , xet.event_number
199648 , xet.event_date
199649 , xet.transaction_date
199650 , xet.reference_num_1
199651 , xet.reference_num_2
199652 , xet.reference_num_3
199653 , xet.reference_num_4
199654 , xet.reference_char_1
199655 , xet.reference_char_2
199656 , xet.reference_char_3
199657 , xet.reference_char_4
199658 , xet.reference_date_1
199659 , xet.reference_date_2
199660 , xet.reference_date_3
199661 , xet.reference_date_4
199662 , xet.event_created_by
199663 , xet.budgetary_control_flag
199664 , h1.DISTRIBUTION_TYPE source_12
199665 , fvl12.meaning source_12_meaning
199666 , h1.TRANSFER_TO_GL_INDICATOR source_38
199667 , fvl38.meaning source_38_meaning
199668 FROM xla_events_gt xet
199669 , CST_XLA_INV_HEADERS_V h1
199670 , fnd_lookup_values fvl12
199671 , fnd_lookup_values fvl38
199672 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
199673 and xet.event_type_code = C_EVENT_TYPE_CODE
199674 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
199675 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
199676 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
199677 AND fvl12.view_application_id(+) = 700
199678 AND fvl12.language(+) = USERENV('LANG')
199679 AND fvl38.lookup_type(+) = 'YES_NO'
199680 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
199681 AND fvl38.view_application_id(+) = 0
199682 AND fvl38.language(+) = USERENV('LANG')
199683
199684 ORDER BY event_id
199685 ;
199686
199687
199688 --
199689 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
199690 IS
199691 SELECT /*+ leading(xet) cardinality(xet,1) */
199692 -- Event Type Code: UMISC_ISSUE
199693 -- Event Class Code: USER_DEFINE
199694 xet.entity_id
199695 ,xet.legal_entity_id
199696 ,xet.entity_code
199697 ,xet.transaction_number
199698 ,xet.event_id
199699 ,xet.event_class_code
199700 ,xet.event_type_code
199701 ,xet.event_number
199702 ,xet.event_date
199703 ,xet.transaction_date
199704 ,xet.reference_num_1
199705 ,xet.reference_num_2
199706 ,xet.reference_num_3
199707 ,xet.reference_num_4
199708 ,xet.reference_char_1
199709 ,xet.reference_char_2
199710 ,xet.reference_char_3
199711 ,xet.reference_char_4
199712 ,xet.reference_date_1
199713 ,xet.reference_date_2
199714 ,xet.reference_date_3
199715 ,xet.reference_date_4
199716 ,xet.event_created_by
199717 ,xet.budgetary_control_flag , l2.LINE_NUMBER
199718 , l2.CODE_COMBINATION_ID source_4
199719 , l2.DISTRIBUTION_IDENTIFIER source_11
199720 , l2.CURRENCY_CODE source_15
199721 , l2.ENTERED_AMOUNT source_18
199722 , l2.CURRENCY_CONVERSION_DATE source_19
199723 , l2.CURRENCY_CONVERSION_RATE source_20
199724 , l2.CURRENCY_CONVERSION_TYPE source_21
199725 , l2.ACCOUNTED_AMOUNT source_22
199726 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
199727 FROM xla_events_gt xet
199728 , CST_XLA_INV_LINES_V l2
199729 WHERE xet.event_id between x_first_event_id and x_last_event_id
199730 and xet.event_date between p_pad_start_date and p_pad_end_date
199731 and xet.event_type_code = C_EVENT_TYPE_CODE
199732 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
199733 ;
199734
199735 --
199736 BEGIN
199737 IF g_log_enabled THEN
199738 l_log_module := C_DEFAULT_MODULE||'.EventType_301';
199739 END IF;
199740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
199741 trace
199742 (p_msg => 'BEGIN of EventType_301'
199743 ,p_level => C_LEVEL_PROCEDURE
199744 ,p_module => l_log_module);
199745 END IF;
199746
199747 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199748 trace
199749 (p_msg => 'p_application_id = '||p_application_id||
199750 ' - p_base_ledger_id = '||p_base_ledger_id||
199751 ' - p_target_ledger_id = '||p_target_ledger_id||
199752 ' - p_language = '||p_language||
199753 ' - p_currency_code = '||p_currency_code||
199754 ' - p_sla_ledger_id = '||p_sla_ledger_id
199755 ,p_level => C_LEVEL_STATEMENT
199756 ,p_module => l_log_module);
199757 END IF;
199758 --
199759 -- initialze arrays
199760 --
199761 g_array_event.DELETE;
199762 l_rec_array_event := l_null_rec_array_event;
199763 --
199764 --------------------------------------
199765 -- 4262811 Initialze MPA Line Number
199766 --------------------------------------
199767 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
199768
199769 --
199770
199771 --
199772 OPEN header_cur;
199773 --
199774 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
199775 trace
199776 (p_msg => 'SQL - FETCH header_cur'
199777 ,p_level => C_LEVEL_STATEMENT
199778 ,p_module => l_log_module);
199779 END IF;
199780 --
199781 LOOP
199782 FETCH header_cur BULK COLLECT INTO
199783 l_array_entity_id
199784 , l_array_legal_entity_id
199785 , l_array_entity_code
199786 , l_array_transaction_num
199787 , l_array_event_id
199788 , l_array_class_code
199789 , l_array_event_type
199790 , l_array_event_number
199791 , l_array_event_date
199792 , l_array_transaction_date
199793 , l_array_reference_num_1
199794 , l_array_reference_num_2
199795 , l_array_reference_num_3
199796 , l_array_reference_num_4
199797 , l_array_reference_char_1
199798 , l_array_reference_char_2
199799 , l_array_reference_char_3
199800 , l_array_reference_char_4
199801 , l_array_reference_date_1
199802 , l_array_reference_date_2
199803 , l_array_reference_date_3
199804 , l_array_reference_date_4
199805 , l_array_event_created_by
199806 , l_array_budgetary_control_flag
199807 , l_array_source_12
199808 , l_array_source_12_meaning
199809 , l_array_source_38
199810 , l_array_source_38_meaning
199811 LIMIT l_rows;
199812 --
199813 IF (C_LEVEL_EVENT >= g_log_level) THEN
199814 trace
199815 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
199816 ,p_level => C_LEVEL_EVENT
199817 ,p_module => l_log_module);
199818 END IF;
199819 --
199820 EXIT WHEN l_array_entity_id.COUNT = 0;
199821
199822 -- initialize arrays
199823 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
199824 XLA_AE_LINES_PKG.g_rec_lines := NULL;
199825
199826 --
199827 -- Bug 4458708
199828 --
199829 XLA_AE_LINES_PKG.g_LineNumber := 0;
199830
199831
199832 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
199833 g_last_hdr_idx := l_array_event_id.LAST;
199834 --
199835 -- loop for the headers. Each iteration is for each header extract row
199836 -- fetched in header cursor
199837 --
199838 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
199839
199840 --
199841 -- set event info as cache for other routines to refer event attributes
199842 --
199843 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
199844 (p_application_id => p_application_id
199845 ,p_primary_ledger_id => p_primary_ledger_id
199846 ,p_base_ledger_id => p_base_ledger_id
199847 ,p_target_ledger_id => p_target_ledger_id
199848 ,p_entity_id => l_array_entity_id(hdr_idx)
199849 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
199850 ,p_entity_code => l_array_entity_code(hdr_idx)
199851 ,p_transaction_num => l_array_transaction_num(hdr_idx)
199852 ,p_event_id => l_array_event_id(hdr_idx)
199853 ,p_event_class_code => l_array_class_code(hdr_idx)
199854 ,p_event_type_code => l_array_event_type(hdr_idx)
199855 ,p_event_number => l_array_event_number(hdr_idx)
199856 ,p_event_date => l_array_event_date(hdr_idx)
199857 ,p_transaction_date => l_array_transaction_date(hdr_idx)
199858 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
199859 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
199860 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
199861 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
199862 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
199863 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
199864 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
199865 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
199866 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
199867 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
199868 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
199869 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
199870 ,p_event_created_by => l_array_event_created_by(hdr_idx)
199871 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
199872
199873 --
199874 -- set the status of entry to C_VALID (0)
199875 --
199876 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
199877
199878 --
199879 -- initialize a row for ae header
199880 --
199881 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
199882
199883 l_event_id := l_array_event_id(hdr_idx);
199884
199885 --
199886 -- storing the hdr_idx for event. May be used by line cursor.
199887 --
199888 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
199889
199890 --
199891 -- store sources from header extract. This can be improved to
199892 -- store only those sources from header extract that may be used in lines
199893 --
199894
199895 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
199896 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
199897 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
199898 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
199899
199900 --
199901 -- initilaize the status of ae headers for diffrent balance types
199902 -- the status is initialised to C_NOT_CREATED (2)
199903 --
199904 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
199905 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
199906 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
199907
199908 --
199909 -- call api to validate and store accounting attributes for header
199910 --
199911
199912 ------------------------------------------------------------
199913 -- Accrual Reversal : to get date for Standard Source (NONE)
199914 ------------------------------------------------------------
199915 l_acc_rev_gl_date_source := NULL;
199916
199917 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
199918 l_rec_acct_attrs.array_date_value(1) :=
199919 xla_ae_sources_pkg.GetSystemSourceDate(
199920 p_source_code => 'XLA_REFERENCE_DATE_1'
199921 , p_source_type_code => 'Y'
199922 , p_source_application_id => 602
199923 );
199924 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
199925 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
199926
199927
199928 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
199929
199930 XLA_AE_HEADER_PKG.SetJeCategoryName;
199931
199932 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
199933 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
199934 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
199935 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
199936 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
199937
199938
199939 -- No header level analytical criteria
199940
199941 --
199942 --accounting attribute enhancement, bug 3612931
199943 --
199944 l_trx_reversal_source := SUBSTR(NULL, 1,30);
199945
199946 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
199947 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
199948
199949 xla_accounting_err_pkg.build_message
199950 (p_appli_s_name => 'XLA'
199951 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
199952 ,p_token_1 => 'ACCT_ATTR_NAME'
199953 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
199954 ,p_token_2 => 'PRODUCT_NAME'
199955 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
199956 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
199957 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
199958 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
199959
199960 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
199961 --
199962 -- following sets the accounting attributes needed to reverse
199963 -- accounting for a distributeion
199964 --
199965 xla_ae_lines_pkg.SetTrxReversalAttrs
199966 (p_event_id => l_event_id
199967 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
199968 ,p_trx_reversal_source => l_trx_reversal_source);
199969
199970 END IF;
199971
199972
199973 ----------------------------------------------------------------
199974 -- 4262811 - update the header statuses to invalid in need be
199975 ----------------------------------------------------------------
199976 --
199977 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
199978
199979
199980 -----------------------------------------------
199981 -- No accrual reversal for the event class/type
199982 -----------------------------------------------
199983 ----------------------------------------------------------------
199984
199985 --
199986 -- this ends the header loop iteration for one bulk fetch
199987 --
199988 END LOOP;
199989
199990 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
199991 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
199992
199993 --
199994 -- insert dummy rows into lines gt table that were created due to
199995 -- transaction reversals
199996 --
199997 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
199998 l_result := XLA_AE_LINES_PKG.InsertLines;
199999 END IF;
200000
200001 --
200002 -- reset the temp_line_num for each set of events fetched from header
200003 -- cursor rather than doing it for each new event in line cursor
200004 -- Bug 3939231
200005 --
200006 xla_ae_lines_pkg.g_temp_line_num := 0;
200007
200008
200009
200010 --
200011 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
200012 --
200013 --
200014 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200015
200016 trace
200017 (p_msg => 'SQL - FETCH line_cur'
200018 ,p_level => C_LEVEL_STATEMENT
200019 ,p_module => l_log_module);
200020
200021 END IF;
200022 --
200023 --
200024 LOOP
200025 --
200026 FETCH line_cur BULK COLLECT INTO
200027 l_array_entity_id
200028 , l_array_legal_entity_id
200029 , l_array_entity_code
200030 , l_array_transaction_num
200031 , l_array_event_id
200032 , l_array_class_code
200033 , l_array_event_type
200034 , l_array_event_number
200035 , l_array_event_date
200036 , l_array_transaction_date
200037 , l_array_reference_num_1
200038 , l_array_reference_num_2
200039 , l_array_reference_num_3
200040 , l_array_reference_num_4
200041 , l_array_reference_char_1
200042 , l_array_reference_char_2
200043 , l_array_reference_char_3
200044 , l_array_reference_char_4
200045 , l_array_reference_date_1
200046 , l_array_reference_date_2
200047 , l_array_reference_date_3
200048 , l_array_reference_date_4
200049 , l_array_event_created_by
200050 , l_array_budgetary_control_flag
200051 , l_array_extract_line_num
200052 , l_array_source_4
200053 , l_array_source_11
200054 , l_array_source_15
200055 , l_array_source_18
200056 , l_array_source_19
200057 , l_array_source_20
200058 , l_array_source_21
200059 , l_array_source_22
200060 , l_array_source_24
200061 LIMIT l_rows;
200062
200063 --
200064 IF (C_LEVEL_EVENT >= g_log_level) THEN
200065 trace
200066 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
200067 ,p_level => C_LEVEL_EVENT
200068 ,p_module => l_log_module);
200069 END IF;
200070 --
200071 EXIT WHEN l_array_entity_id.count = 0;
200072
200073 XLA_AE_LINES_PKG.g_rec_lines := null;
200074
200075 --
200076 -- Bug 4458708
200077 --
200078 XLA_AE_LINES_PKG.g_LineNumber := 0;
200079 --
200080 --
200081
200082 FOR Idx IN 1..l_array_event_id.count LOOP
200083 --
200084 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
200085 --
200086 l_event_id := l_array_event_id(idx); -- 5648433
200087
200088 --
200089 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
200090 --
200091
200092 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
200093 (g_array_event(l_event_id).array_value_num('header_index'))
200094 ,'N'
200095 ) <> 'Y'
200096 THEN
200097 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200098 trace
200099 (p_msg => 'Trancaction revesal option is not Y '
200100 ,p_level => C_LEVEL_STATEMENT
200101 ,p_module => l_log_module);
200102 END IF;
200103
200104 --
200105 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
200106 --
200107 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
200108 --
200109 -- set event info as cache for other routines to refer event attributes
200110 --
200111
200112 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
200113 l_previous_event_id := l_event_id;
200114
200115 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
200116 (p_application_id => p_application_id
200117 ,p_primary_ledger_id => p_primary_ledger_id
200118 ,p_base_ledger_id => p_base_ledger_id
200119 ,p_target_ledger_id => p_target_ledger_id
200120 ,p_entity_id => l_array_entity_id(Idx)
200121 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
200122 ,p_entity_code => l_array_entity_code(Idx)
200123 ,p_transaction_num => l_array_transaction_num(Idx)
200124 ,p_event_id => l_array_event_id(Idx)
200125 ,p_event_class_code => l_array_class_code(Idx)
200126 ,p_event_type_code => l_array_event_type(Idx)
200127 ,p_event_number => l_array_event_number(Idx)
200128 ,p_event_date => l_array_event_date(Idx)
200129 ,p_transaction_date => l_array_transaction_date(Idx)
200130 ,p_reference_num_1 => l_array_reference_num_1(Idx)
200131 ,p_reference_num_2 => l_array_reference_num_2(Idx)
200132 ,p_reference_num_3 => l_array_reference_num_3(Idx)
200133 ,p_reference_num_4 => l_array_reference_num_4(Idx)
200134 ,p_reference_char_1 => l_array_reference_char_1(Idx)
200135 ,p_reference_char_2 => l_array_reference_char_2(Idx)
200136 ,p_reference_char_3 => l_array_reference_char_3(Idx)
200137 ,p_reference_char_4 => l_array_reference_char_4(Idx)
200138 ,p_reference_date_1 => l_array_reference_date_1(Idx)
200139 ,p_reference_date_2 => l_array_reference_date_2(Idx)
200140 ,p_reference_date_3 => l_array_reference_date_3(Idx)
200141 ,p_reference_date_4 => l_array_reference_date_4(Idx)
200142 ,p_event_created_by => l_array_event_created_by(Idx)
200143 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
200144 --
200145 END IF;
200146
200147
200148
200149 --
200150 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
200151
200152 l_acct_reversal_source := SUBSTR(NULL, 1,30);
200153
200154 IF l_continue_with_lines THEN
200155 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
200156 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
200157
200158 xla_accounting_err_pkg.build_message
200159 (p_appli_s_name => 'XLA'
200160 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
200161 ,p_token_1 => 'LINE_NUMBER'
200162 ,p_value_1 => l_array_extract_line_num(Idx)
200163 ,p_token_2 => 'PRODUCT_NAME'
200164 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
200165 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
200166 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
200167 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
200168
200169 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
200170 --
200171 -- following sets the accounting attributes needed to reverse
200172 -- accounting for a distributeion
200173 --
200174
200175 --
200176 -- 5217187
200177 --
200178 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
200179 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
200180 g_array_event(l_event_id).array_value_num('header_index'));
200181 --
200182 --
200183
200184 -- No reversal code generated
200185
200186 xla_ae_lines_pkg.SetAcctReversalAttrs
200187 (p_event_id => l_event_id
200188 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
200189 ,p_calculate_acctd_flag => l_calculate_acctd_flag
200190 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
200191 END IF;
200192
200193 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
200194 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
200195
200196 --
200197 AcctLineType_28 (
200198 p_application_id => p_application_id
200199 ,p_event_id => l_event_id
200200 ,p_calculate_acctd_flag => l_calculate_acctd_flag
200201 ,p_calculate_g_l_flag => l_calculate_g_l_flag
200202 ,p_actual_flag => l_actual_flag
200203 ,p_balance_type_code => l_balance_type_code
200204 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
200205
200206 , p_source_4 => l_array_source_4(Idx)
200207 , p_source_11 => l_array_source_11(Idx)
200208 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
200209 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
200210 , p_source_15 => l_array_source_15(Idx)
200211 , p_source_18 => l_array_source_18(Idx)
200212 , p_source_19 => l_array_source_19(Idx)
200213 , p_source_20 => l_array_source_20(Idx)
200214 , p_source_21 => l_array_source_21(Idx)
200215 , p_source_22 => l_array_source_22(Idx)
200216 , p_source_24 => l_array_source_24(Idx)
200217 );
200218 If(l_balance_type_code = 'A') THEN
200219 l_actual_gain_loss_ref := l_gain_or_loss_ref;
200220 END IF;
200221
200222 --
200223
200224
200225 --
200226 AcctLineType_146 (
200227 p_application_id => p_application_id
200228 ,p_event_id => l_event_id
200229 ,p_calculate_acctd_flag => l_calculate_acctd_flag
200230 ,p_calculate_g_l_flag => l_calculate_g_l_flag
200231 ,p_actual_flag => l_actual_flag
200232 ,p_balance_type_code => l_balance_type_code
200233 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
200234
200235 , p_source_4 => l_array_source_4(Idx)
200236 , p_source_11 => l_array_source_11(Idx)
200237 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
200238 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
200239 , p_source_15 => l_array_source_15(Idx)
200240 , p_source_18 => l_array_source_18(Idx)
200241 , p_source_19 => l_array_source_19(Idx)
200242 , p_source_20 => l_array_source_20(Idx)
200243 , p_source_21 => l_array_source_21(Idx)
200244 , p_source_22 => l_array_source_22(Idx)
200245 , p_source_24 => l_array_source_24(Idx)
200246 );
200247 If(l_balance_type_code = 'A') THEN
200248 l_actual_gain_loss_ref := l_gain_or_loss_ref;
200249 END IF;
200250
200251 --
200252
200253
200254 --
200255 AcctLineType_180 (
200256 p_application_id => p_application_id
200257 ,p_event_id => l_event_id
200258 ,p_calculate_acctd_flag => l_calculate_acctd_flag
200259 ,p_calculate_g_l_flag => l_calculate_g_l_flag
200260 ,p_actual_flag => l_actual_flag
200261 ,p_balance_type_code => l_balance_type_code
200262 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
200263
200264 , p_source_4 => l_array_source_4(Idx)
200265 , p_source_11 => l_array_source_11(Idx)
200266 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
200267 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
200268 , p_source_15 => l_array_source_15(Idx)
200269 , p_source_18 => l_array_source_18(Idx)
200270 , p_source_19 => l_array_source_19(Idx)
200271 , p_source_20 => l_array_source_20(Idx)
200272 , p_source_21 => l_array_source_21(Idx)
200273 , p_source_22 => l_array_source_22(Idx)
200274 , p_source_24 => l_array_source_24(Idx)
200275 );
200276 If(l_balance_type_code = 'A') THEN
200277 l_actual_gain_loss_ref := l_gain_or_loss_ref;
200278 END IF;
200279
200280 --
200281
200282 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
200283 -- or secondary ledger that has different currency with primary
200284 -- or alc that is calculated by sla
200285 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
200286 (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'))
200287
200288 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
200289 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
200290 AND (l_actual_flag = 'A')) THEN
200291 XLA_AE_LINES_PKG.CreateGainOrLossLines(
200292 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
200293 ,p_application_id => p_application_id
200294 ,p_amb_context_code => 'DEFAULT'
200295 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
200296 ,p_event_class_code => C_EVENT_CLASS_CODE
200297 ,p_event_type_code => C_EVENT_TYPE_CODE
200298
200299 ,p_gain_ccid => -1
200300 ,p_loss_ccid => -1
200301
200302 ,p_actual_flag => l_actual_flag
200303 ,p_enc_flag => null
200304 ,p_actual_g_l_ref => l_actual_gain_loss_ref
200305 ,p_enc_g_l_ref => null
200306 );
200307 END IF;
200308 END IF;
200309 END IF;
200310
200311 ELSE
200312 --
200313 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
200314 --
200315 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200316 trace
200317 (p_msg => 'Trancaction revesal option is Y'
200318 ,p_level => C_LEVEL_STATEMENT
200319 ,p_module => l_log_module);
200320 END IF;
200321 END IF;
200322
200323 END LOOP;
200324 l_result := XLA_AE_LINES_PKG.InsertLines ;
200325 end loop;
200326 close line_cur;
200327
200328
200329 --
200330 -- insert headers into xla_ae_headers_gt table
200331 --
200332 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
200333
200334 -- insert into errors table here.
200335
200336 END LOOP;
200337
200338 --
200339 -- 4865292
200340 --
200341 -- Compare g_hdr_extract_count with event count in
200342 -- CreateHeadersAndLines.
200343 --
200344 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
200345
200346 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200347 trace (p_msg => '# rows extracted from header extract objects '
200348 || ' (running total): '
200349 || g_hdr_extract_count
200350 ,p_level => C_LEVEL_STATEMENT
200351 ,p_module => l_log_module);
200352 END IF;
200353
200354 CLOSE header_cur;
200355 --
200356
200357 --
200358 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200359 trace
200360 (p_msg => 'END of EventType_301'
200361 ,p_level => C_LEVEL_PROCEDURE
200362 ,p_module => l_log_module);
200363 END IF;
200364 --
200365 RETURN l_result;
200366 EXCEPTION
200367 WHEN xla_exceptions_pkg.application_exception THEN
200368
200369 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
200370
200371
200372 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
200373
200374 RAISE;
200375
200376 WHEN NO_DATA_FOUND THEN
200377
200378 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
200379 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
200380
200381 FOR header_record IN header_cur
200382 LOOP
200383 l_array_header_events(header_record.event_id) := header_record.event_id;
200384 END LOOP;
200385
200386 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
200387 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
200388
200389 fnd_file.put_line(fnd_file.LOG, ' ');
200390 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
200391 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
200392 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
200393
200394 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
200395 LOOP
200396 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
200397 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
200398 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
200399 END IF;
200400 END LOOP;
200401
200402 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
200403 fnd_file.put_line(fnd_file.LOG, ' ');
200404
200405
200406 xla_exceptions_pkg.raise_message
200407 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_301');
200408
200409
200410 WHEN OTHERS THEN
200411 xla_exceptions_pkg.raise_message
200412 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_301');
200413 END EventType_301;
200414 --
200415
200416 ---------------------------------------
200417 --
200418 -- PRIVATE PROCEDURE
200419 -- insert_sources_302
200420 --
200421 ----------------------------------------
200422 --
200423 PROCEDURE insert_sources_302(
200424 p_target_ledger_id IN NUMBER
200425 , p_language IN VARCHAR2
200426 , p_sla_ledger_id IN NUMBER
200427 , p_pad_start_date IN DATE
200428 , p_pad_end_date IN DATE
200429 )
200430 IS
200431
200432 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UMISC_RCPT';
200433 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
200434 p_apps_owner VARCHAR2(30);
200435 l_log_module VARCHAR2(240);
200436 BEGIN
200437 IF g_log_enabled THEN
200438 l_log_module := C_DEFAULT_MODULE||'.insert_sources_302';
200439 END IF;
200440 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200441
200442 trace
200443 (p_msg => 'BEGIN of insert_sources_302'
200444 ,p_level => C_LEVEL_PROCEDURE
200445 ,p_module => l_log_module);
200446
200447 END IF;
200448
200449 -- select APPS owner
200450 SELECT oracle_username
200451 INTO p_apps_owner
200452 FROM fnd_oracle_userid
200453 WHERE read_only_flag = 'U'
200454 ;
200455
200456 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200457 trace
200458 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
200459 ' - p_language = '||p_language||
200460 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
200461 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
200462 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
200463 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
200464 ,p_level => C_LEVEL_STATEMENT
200465 ,p_module => l_log_module);
200466 END IF;
200467
200468
200469 --
200470 INSERT INTO xla_diag_sources --hdr1
200471 (
200472 event_id
200473 , ledger_id
200474 , sla_ledger_id
200475 , description_language
200476 , object_name
200477 , object_type_code
200478 , line_number
200479 , source_application_id
200480 , source_type_code
200481 , source_code
200482 , source_value
200483 , source_meaning
200484 , created_by
200485 , creation_date
200486 , last_update_date
200487 , last_updated_by
200488 , last_update_login
200489 , program_update_date
200490 , program_application_id
200491 , program_id
200492 , request_id
200493 )
200494 SELECT
200495 event_id
200496 , p_target_ledger_id
200497 , p_sla_ledger_id
200498 , p_language
200499 , object_name
200500 , object_type_code
200501 , line_number
200502 , source_application_id
200503 , source_type_code
200504 , source_code
200505 , SUBSTR(source_value ,1,1996)
200506 , SUBSTR(source_meaning,1,200)
200507 , xla_environment_pkg.g_Usr_Id
200508 , TRUNC(SYSDATE)
200509 , TRUNC(SYSDATE)
200510 , xla_environment_pkg.g_Usr_Id
200511 , xla_environment_pkg.g_Login_Id
200512 , TRUNC(SYSDATE)
200513 , xla_environment_pkg.g_Prog_Appl_Id
200514 , xla_environment_pkg.g_Prog_Id
200515 , xla_environment_pkg.g_Req_Id
200516 FROM (
200517 SELECT xet.event_id event_id
200518 , 0 line_number
200519 , CASE r
200520 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
200521 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
200522
200523 ELSE null
200524 END object_name
200525 , CASE r
200526 WHEN 1 THEN 'HEADER'
200527 WHEN 2 THEN 'HEADER'
200528
200529 ELSE null
200530 END object_type_code
200531 , CASE r
200532 WHEN 1 THEN '707'
200533 WHEN 2 THEN '707'
200534
200535 ELSE null
200536 END source_application_id
200537 , 'S' source_type_code
200538 , CASE r
200539 WHEN 1 THEN 'DISTRIBUTION_TYPE'
200540 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
200541
200542 ELSE null
200543 END source_code
200544 , CASE r
200545 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
200546 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
200547
200548 ELSE null
200549 END source_value
200550 , CASE r
200551 WHEN 1 THEN fvl12.meaning
200552 WHEN 2 THEN fvl38.meaning
200553
200554 ELSE null
200555 END source_meaning
200556 FROM xla_events_gt xet
200557 , CST_XLA_INV_HEADERS_V h1
200558 , fnd_lookup_values fvl12
200559 , fnd_lookup_values fvl38
200560 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
200561 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
200562 AND xet.event_type_code = C_EVENT_TYPE_CODE
200563 AND h1.event_id = xet.event_id
200564 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
200565 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
200566 AND fvl12.view_application_id(+) = 700
200567 AND fvl12.language(+) = USERENV('LANG')
200568 AND fvl38.lookup_type(+) = 'YES_NO'
200569 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
200570 AND fvl38.view_application_id(+) = 0
200571 AND fvl38.language(+) = USERENV('LANG')
200572
200573 )
200574 ;
200575 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200576
200577 trace
200578 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
200579 ,p_level => C_LEVEL_STATEMENT
200580 ,p_module => l_log_module);
200581
200582 END IF;
200583 --
200584
200585
200586
200587 --
200588 INSERT INTO xla_diag_sources --line1
200589 (
200590 event_id
200591 , ledger_id
200592 , sla_ledger_id
200593 , description_language
200594 , object_name
200595 , object_type_code
200596 , line_number
200597 , source_application_id
200598 , source_type_code
200599 , source_code
200600 , source_value
200601 , source_meaning
200602 , created_by
200603 , creation_date
200604 , last_update_date
200605 , last_updated_by
200606 , last_update_login
200607 , program_update_date
200608 , program_application_id
200609 , program_id
200610 , request_id
200611 )
200612 SELECT event_id
200613 , p_target_ledger_id
200614 , p_sla_ledger_id
200615 , p_language
200616 , object_name
200617 , object_type_code
200618 , line_number
200619 , source_application_id
200620 , source_type_code
200621 , source_code
200622 , SUBSTR(source_value,1,1996)
200623 , SUBSTR(source_meaning,1,200)
200624 , xla_environment_pkg.g_Usr_Id
200625 , TRUNC(SYSDATE)
200626 , TRUNC(SYSDATE)
200627 , xla_environment_pkg.g_Usr_Id
200628 , xla_environment_pkg.g_Login_Id
200629 , TRUNC(SYSDATE)
200630 , xla_environment_pkg.g_Prog_Appl_Id
200631 , xla_environment_pkg.g_Prog_Id
200632 , xla_environment_pkg.g_Req_Id
200633 FROM (
200634 SELECT xet.event_id event_id
200635 , l2.line_number line_number
200636 , CASE r
200637 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
200638 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
200639 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
200640 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
200641 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
200642 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
200643 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
200644 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
200645 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
200646
200647 ELSE null
200648 END object_name
200649 , CASE r
200650 WHEN 1 THEN 'LINE'
200651 WHEN 2 THEN 'LINE'
200652 WHEN 3 THEN 'LINE'
200653 WHEN 4 THEN 'LINE'
200654 WHEN 5 THEN 'LINE'
200655 WHEN 6 THEN 'LINE'
200656 WHEN 7 THEN 'LINE'
200657 WHEN 8 THEN 'LINE'
200658 WHEN 9 THEN 'LINE'
200659
200660 ELSE null
200661 END object_type_code
200662 , CASE r
200663 WHEN 1 THEN '707'
200664 WHEN 2 THEN '707'
200665 WHEN 3 THEN '707'
200666 WHEN 4 THEN '707'
200667 WHEN 5 THEN '707'
200668 WHEN 6 THEN '707'
200669 WHEN 7 THEN '707'
200670 WHEN 8 THEN '707'
200671 WHEN 9 THEN '707'
200672
200673 ELSE null
200674 END source_application_id
200675 , 'S' source_type_code
200676 , CASE r
200677 WHEN 1 THEN 'CODE_COMBINATION_ID'
200678 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
200679 WHEN 3 THEN 'CURRENCY_CODE'
200680 WHEN 4 THEN 'ENTERED_AMOUNT'
200681 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
200682 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
200683 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
200684 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
200685 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
200686
200687 ELSE null
200688 END source_code
200689 , CASE r
200690 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
200691 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
200692 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
200693 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
200694 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
200695 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
200696 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
200697 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
200698 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
200699
200700 ELSE null
200701 END source_value
200702 , null source_meaning
200703 FROM xla_events_gt xet
200704 , CST_XLA_INV_LINES_V l2
200705 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
200706 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
200707 AND xet.event_type_code = C_EVENT_TYPE_CODE
200708 AND l2.event_id = xet.event_id
200709
200710 )
200711 ;
200712 --
200713 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200714
200715 trace
200716 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
200717 ,p_level => C_LEVEL_STATEMENT
200718 ,p_module => l_log_module);
200719
200720 END IF;
200721
200722
200723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200724 trace
200725 (p_msg => 'END of insert_sources_302'
200726 ,p_level => C_LEVEL_PROCEDURE
200727 ,p_module => l_log_module);
200728 END IF;
200729 EXCEPTION
200730 WHEN xla_exceptions_pkg.application_exception THEN
200731 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
200732 trace
200733 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
200734 ,p_level => C_LEVEL_EXCEPTION
200735 ,p_module => l_log_module);
200736 END IF;
200737 RAISE;
200738 WHEN OTHERS THEN
200739 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
200740 trace
200741 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
200742 ,p_level => C_LEVEL_EXCEPTION
200743 ,p_module => l_log_module);
200744 END IF;
200745 xla_exceptions_pkg.raise_message
200746 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_302');
200747 END insert_sources_302;
200748 --
200749
200750 ---------------------------------------
200751 --
200752 -- PRIVATE FUNCTION
200753 -- EventType_302
200754 --
200755 ----------------------------------------
200756 --
200757 FUNCTION EventType_302
200758 (p_application_id IN NUMBER
200759 ,p_base_ledger_id IN NUMBER
200760 ,p_target_ledger_id IN NUMBER
200761 ,p_language IN VARCHAR2
200762 ,p_currency_code IN VARCHAR2
200763 ,p_sla_ledger_id IN NUMBER
200764 ,p_pad_start_date IN DATE
200765 ,p_pad_end_date IN DATE
200766 ,p_primary_ledger_id IN NUMBER)
200767 RETURN BOOLEAN IS
200768 --
200769 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'UMISC_RCPT';
200770 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
200771
200772 l_calculate_acctd_flag VARCHAR2(1) :='Y';
200773 l_calculate_g_l_flag VARCHAR2(1) :='Y';
200774 --
200775 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200776 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200777 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
200778 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
200779 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200780 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
200781 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
200782 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200783 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200784 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200785 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200786 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200787 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200788 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
200789 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
200790 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
200791 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
200792 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
200793 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200794 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200795 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200796 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
200797 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
200798 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
200799 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
200800 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
200801
200802 l_event_id NUMBER;
200803 l_previous_event_id NUMBER;
200804 l_first_event_id NUMBER;
200805 l_last_event_id NUMBER;
200806
200807 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
200808 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
200809 --
200810 --
200811 l_result BOOLEAN := TRUE;
200812 l_rows NUMBER := 1000;
200813 l_event_type_name VARCHAR2(80) := 'User-defined Receipt';
200814 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
200815 l_description VARCHAR2(4000);
200816 l_transaction_reversal NUMBER;
200817 l_ae_header_id NUMBER;
200818 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
200819 l_log_module VARCHAR2(240);
200820 --
200821 l_acct_reversal_source VARCHAR2(30);
200822 l_trx_reversal_source VARCHAR2(30);
200823
200824 l_continue_with_lines BOOLEAN := TRUE;
200825 --
200826 l_acc_rev_gl_date_source DATE; -- 4262811
200827 --
200828 type t_array_event_id is table of number index by binary_integer;
200829
200830 l_rec_array_event t_rec_array_event;
200831 l_null_rec_array_event t_rec_array_event;
200832 l_array_ae_header_id xla_number_array_type;
200833 l_actual_flag VARCHAR2(1) := NULL;
200834 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
200835 l_balance_type_code VARCHAR2(1) :=NULL;
200836 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
200837
200838 --
200839 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
200840 --
200841
200842 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
200843 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
200844
200845 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
200846 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
200847 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
200848 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
200849 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
200850 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
200851 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
200852 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
200853 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
200854
200855 l_array_source_12 t_array_source_12;
200856 l_array_source_12_meaning t_array_lookup_meaning;
200857 l_array_source_38 t_array_source_38;
200858 l_array_source_38_meaning t_array_lookup_meaning;
200859
200860 l_array_source_4 t_array_source_4;
200861 l_array_source_11 t_array_source_11;
200862 l_array_source_15 t_array_source_15;
200863 l_array_source_18 t_array_source_18;
200864 l_array_source_19 t_array_source_19;
200865 l_array_source_20 t_array_source_20;
200866 l_array_source_21 t_array_source_21;
200867 l_array_source_22 t_array_source_22;
200868 l_array_source_24 t_array_source_24;
200869
200870 --
200871 CURSOR header_cur
200872 IS
200873 SELECT /*+ leading(xet) cardinality(xet,1) */
200874 -- Event Type Code: UMISC_RCPT
200875 -- Event Class Code: USER_DEFINE
200876 xet.entity_id
200877 , xet.legal_entity_id
200878 , xet.entity_code
200879 , xet.transaction_number
200880 , xet.event_id
200881 , xet.event_class_code
200882 , xet.event_type_code
200883 , xet.event_number
200884 , xet.event_date
200885 , xet.transaction_date
200886 , xet.reference_num_1
200887 , xet.reference_num_2
200888 , xet.reference_num_3
200889 , xet.reference_num_4
200890 , xet.reference_char_1
200891 , xet.reference_char_2
200892 , xet.reference_char_3
200893 , xet.reference_char_4
200894 , xet.reference_date_1
200895 , xet.reference_date_2
200896 , xet.reference_date_3
200897 , xet.reference_date_4
200898 , xet.event_created_by
200899 , xet.budgetary_control_flag
200900 , h1.DISTRIBUTION_TYPE source_12
200901 , fvl12.meaning source_12_meaning
200902 , h1.TRANSFER_TO_GL_INDICATOR source_38
200903 , fvl38.meaning source_38_meaning
200904 FROM xla_events_gt xet
200905 , CST_XLA_INV_HEADERS_V h1
200906 , fnd_lookup_values fvl12
200907 , fnd_lookup_values fvl38
200908 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
200909 and xet.event_type_code = C_EVENT_TYPE_CODE
200910 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
200911 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
200912 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
200913 AND fvl12.view_application_id(+) = 700
200914 AND fvl12.language(+) = USERENV('LANG')
200915 AND fvl38.lookup_type(+) = 'YES_NO'
200916 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
200917 AND fvl38.view_application_id(+) = 0
200918 AND fvl38.language(+) = USERENV('LANG')
200919
200920 ORDER BY event_id
200921 ;
200922
200923
200924 --
200925 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
200926 IS
200927 SELECT /*+ leading(xet) cardinality(xet,1) */
200928 -- Event Type Code: UMISC_RCPT
200929 -- Event Class Code: USER_DEFINE
200930 xet.entity_id
200931 ,xet.legal_entity_id
200932 ,xet.entity_code
200933 ,xet.transaction_number
200934 ,xet.event_id
200935 ,xet.event_class_code
200936 ,xet.event_type_code
200937 ,xet.event_number
200938 ,xet.event_date
200939 ,xet.transaction_date
200940 ,xet.reference_num_1
200941 ,xet.reference_num_2
200942 ,xet.reference_num_3
200943 ,xet.reference_num_4
200944 ,xet.reference_char_1
200945 ,xet.reference_char_2
200946 ,xet.reference_char_3
200947 ,xet.reference_char_4
200948 ,xet.reference_date_1
200949 ,xet.reference_date_2
200950 ,xet.reference_date_3
200951 ,xet.reference_date_4
200952 ,xet.event_created_by
200953 ,xet.budgetary_control_flag , l2.LINE_NUMBER
200954 , l2.CODE_COMBINATION_ID source_4
200955 , l2.DISTRIBUTION_IDENTIFIER source_11
200956 , l2.CURRENCY_CODE source_15
200957 , l2.ENTERED_AMOUNT source_18
200958 , l2.CURRENCY_CONVERSION_DATE source_19
200959 , l2.CURRENCY_CONVERSION_RATE source_20
200960 , l2.CURRENCY_CONVERSION_TYPE source_21
200961 , l2.ACCOUNTED_AMOUNT source_22
200962 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
200963 FROM xla_events_gt xet
200964 , CST_XLA_INV_LINES_V l2
200965 WHERE xet.event_id between x_first_event_id and x_last_event_id
200966 and xet.event_date between p_pad_start_date and p_pad_end_date
200967 and xet.event_type_code = C_EVENT_TYPE_CODE
200968 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
200969 ;
200970
200971 --
200972 BEGIN
200973 IF g_log_enabled THEN
200974 l_log_module := C_DEFAULT_MODULE||'.EventType_302';
200975 END IF;
200976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
200977 trace
200978 (p_msg => 'BEGIN of EventType_302'
200979 ,p_level => C_LEVEL_PROCEDURE
200980 ,p_module => l_log_module);
200981 END IF;
200982
200983 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
200984 trace
200985 (p_msg => 'p_application_id = '||p_application_id||
200986 ' - p_base_ledger_id = '||p_base_ledger_id||
200987 ' - p_target_ledger_id = '||p_target_ledger_id||
200988 ' - p_language = '||p_language||
200989 ' - p_currency_code = '||p_currency_code||
200990 ' - p_sla_ledger_id = '||p_sla_ledger_id
200991 ,p_level => C_LEVEL_STATEMENT
200992 ,p_module => l_log_module);
200993 END IF;
200994 --
200995 -- initialze arrays
200996 --
200997 g_array_event.DELETE;
200998 l_rec_array_event := l_null_rec_array_event;
200999 --
201000 --------------------------------------
201001 -- 4262811 Initialze MPA Line Number
201002 --------------------------------------
201003 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
201004
201005 --
201006
201007 --
201008 OPEN header_cur;
201009 --
201010 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201011 trace
201012 (p_msg => 'SQL - FETCH header_cur'
201013 ,p_level => C_LEVEL_STATEMENT
201014 ,p_module => l_log_module);
201015 END IF;
201016 --
201017 LOOP
201018 FETCH header_cur BULK COLLECT INTO
201019 l_array_entity_id
201020 , l_array_legal_entity_id
201021 , l_array_entity_code
201022 , l_array_transaction_num
201023 , l_array_event_id
201024 , l_array_class_code
201025 , l_array_event_type
201026 , l_array_event_number
201027 , l_array_event_date
201028 , l_array_transaction_date
201029 , l_array_reference_num_1
201030 , l_array_reference_num_2
201031 , l_array_reference_num_3
201032 , l_array_reference_num_4
201033 , l_array_reference_char_1
201034 , l_array_reference_char_2
201035 , l_array_reference_char_3
201036 , l_array_reference_char_4
201037 , l_array_reference_date_1
201038 , l_array_reference_date_2
201039 , l_array_reference_date_3
201040 , l_array_reference_date_4
201041 , l_array_event_created_by
201042 , l_array_budgetary_control_flag
201043 , l_array_source_12
201044 , l_array_source_12_meaning
201045 , l_array_source_38
201046 , l_array_source_38_meaning
201047 LIMIT l_rows;
201048 --
201049 IF (C_LEVEL_EVENT >= g_log_level) THEN
201050 trace
201051 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
201052 ,p_level => C_LEVEL_EVENT
201053 ,p_module => l_log_module);
201054 END IF;
201055 --
201056 EXIT WHEN l_array_entity_id.COUNT = 0;
201057
201058 -- initialize arrays
201059 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
201060 XLA_AE_LINES_PKG.g_rec_lines := NULL;
201061
201062 --
201063 -- Bug 4458708
201064 --
201065 XLA_AE_LINES_PKG.g_LineNumber := 0;
201066
201067
201068 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
201069 g_last_hdr_idx := l_array_event_id.LAST;
201070 --
201071 -- loop for the headers. Each iteration is for each header extract row
201072 -- fetched in header cursor
201073 --
201074 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
201075
201076 --
201077 -- set event info as cache for other routines to refer event attributes
201078 --
201079 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
201080 (p_application_id => p_application_id
201081 ,p_primary_ledger_id => p_primary_ledger_id
201082 ,p_base_ledger_id => p_base_ledger_id
201083 ,p_target_ledger_id => p_target_ledger_id
201084 ,p_entity_id => l_array_entity_id(hdr_idx)
201085 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
201086 ,p_entity_code => l_array_entity_code(hdr_idx)
201087 ,p_transaction_num => l_array_transaction_num(hdr_idx)
201088 ,p_event_id => l_array_event_id(hdr_idx)
201089 ,p_event_class_code => l_array_class_code(hdr_idx)
201090 ,p_event_type_code => l_array_event_type(hdr_idx)
201091 ,p_event_number => l_array_event_number(hdr_idx)
201092 ,p_event_date => l_array_event_date(hdr_idx)
201093 ,p_transaction_date => l_array_transaction_date(hdr_idx)
201094 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
201095 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
201096 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
201097 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
201098 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
201099 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
201100 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
201101 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
201102 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
201103 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
201104 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
201105 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
201106 ,p_event_created_by => l_array_event_created_by(hdr_idx)
201107 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
201108
201109 --
201110 -- set the status of entry to C_VALID (0)
201111 --
201112 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
201113
201114 --
201115 -- initialize a row for ae header
201116 --
201117 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
201118
201119 l_event_id := l_array_event_id(hdr_idx);
201120
201121 --
201122 -- storing the hdr_idx for event. May be used by line cursor.
201123 --
201124 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
201125
201126 --
201127 -- store sources from header extract. This can be improved to
201128 -- store only those sources from header extract that may be used in lines
201129 --
201130
201131 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
201132 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
201133 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
201134 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
201135
201136 --
201137 -- initilaize the status of ae headers for diffrent balance types
201138 -- the status is initialised to C_NOT_CREATED (2)
201139 --
201140 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
201141 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
201142 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
201143
201144 --
201145 -- call api to validate and store accounting attributes for header
201146 --
201147
201148 ------------------------------------------------------------
201149 -- Accrual Reversal : to get date for Standard Source (NONE)
201150 ------------------------------------------------------------
201151 l_acc_rev_gl_date_source := NULL;
201152
201153 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
201154 l_rec_acct_attrs.array_date_value(1) :=
201155 xla_ae_sources_pkg.GetSystemSourceDate(
201156 p_source_code => 'XLA_REFERENCE_DATE_1'
201157 , p_source_type_code => 'Y'
201158 , p_source_application_id => 602
201159 );
201160 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
201161 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
201162
201163
201164 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
201165
201166 XLA_AE_HEADER_PKG.SetJeCategoryName;
201167
201168 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
201169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
201170 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
201171 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
201172 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
201173
201174
201175 -- No header level analytical criteria
201176
201177 --
201178 --accounting attribute enhancement, bug 3612931
201179 --
201180 l_trx_reversal_source := SUBSTR(NULL, 1,30);
201181
201182 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
201183 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
201184
201185 xla_accounting_err_pkg.build_message
201186 (p_appli_s_name => 'XLA'
201187 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
201188 ,p_token_1 => 'ACCT_ATTR_NAME'
201189 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
201190 ,p_token_2 => 'PRODUCT_NAME'
201191 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
201192 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
201193 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
201194 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
201195
201196 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
201197 --
201198 -- following sets the accounting attributes needed to reverse
201199 -- accounting for a distributeion
201200 --
201201 xla_ae_lines_pkg.SetTrxReversalAttrs
201202 (p_event_id => l_event_id
201203 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
201204 ,p_trx_reversal_source => l_trx_reversal_source);
201205
201206 END IF;
201207
201208
201209 ----------------------------------------------------------------
201210 -- 4262811 - update the header statuses to invalid in need be
201211 ----------------------------------------------------------------
201212 --
201213 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
201214
201215
201216 -----------------------------------------------
201217 -- No accrual reversal for the event class/type
201218 -----------------------------------------------
201219 ----------------------------------------------------------------
201220
201221 --
201222 -- this ends the header loop iteration for one bulk fetch
201223 --
201224 END LOOP;
201225
201226 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
201227 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
201228
201229 --
201230 -- insert dummy rows into lines gt table that were created due to
201231 -- transaction reversals
201232 --
201233 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
201234 l_result := XLA_AE_LINES_PKG.InsertLines;
201235 END IF;
201236
201237 --
201238 -- reset the temp_line_num for each set of events fetched from header
201239 -- cursor rather than doing it for each new event in line cursor
201240 -- Bug 3939231
201241 --
201242 xla_ae_lines_pkg.g_temp_line_num := 0;
201243
201244
201245
201246 --
201247 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
201248 --
201249 --
201250 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201251
201252 trace
201253 (p_msg => 'SQL - FETCH line_cur'
201254 ,p_level => C_LEVEL_STATEMENT
201255 ,p_module => l_log_module);
201256
201257 END IF;
201258 --
201259 --
201260 LOOP
201261 --
201262 FETCH line_cur BULK COLLECT INTO
201263 l_array_entity_id
201264 , l_array_legal_entity_id
201265 , l_array_entity_code
201266 , l_array_transaction_num
201267 , l_array_event_id
201268 , l_array_class_code
201269 , l_array_event_type
201270 , l_array_event_number
201271 , l_array_event_date
201272 , l_array_transaction_date
201273 , l_array_reference_num_1
201274 , l_array_reference_num_2
201275 , l_array_reference_num_3
201276 , l_array_reference_num_4
201277 , l_array_reference_char_1
201278 , l_array_reference_char_2
201279 , l_array_reference_char_3
201280 , l_array_reference_char_4
201281 , l_array_reference_date_1
201282 , l_array_reference_date_2
201283 , l_array_reference_date_3
201284 , l_array_reference_date_4
201285 , l_array_event_created_by
201286 , l_array_budgetary_control_flag
201287 , l_array_extract_line_num
201288 , l_array_source_4
201289 , l_array_source_11
201290 , l_array_source_15
201291 , l_array_source_18
201292 , l_array_source_19
201293 , l_array_source_20
201294 , l_array_source_21
201295 , l_array_source_22
201296 , l_array_source_24
201297 LIMIT l_rows;
201298
201299 --
201300 IF (C_LEVEL_EVENT >= g_log_level) THEN
201301 trace
201302 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
201303 ,p_level => C_LEVEL_EVENT
201304 ,p_module => l_log_module);
201305 END IF;
201306 --
201307 EXIT WHEN l_array_entity_id.count = 0;
201308
201309 XLA_AE_LINES_PKG.g_rec_lines := null;
201310
201311 --
201312 -- Bug 4458708
201313 --
201314 XLA_AE_LINES_PKG.g_LineNumber := 0;
201315 --
201316 --
201317
201318 FOR Idx IN 1..l_array_event_id.count LOOP
201319 --
201320 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
201321 --
201322 l_event_id := l_array_event_id(idx); -- 5648433
201323
201324 --
201325 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
201326 --
201327
201328 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
201329 (g_array_event(l_event_id).array_value_num('header_index'))
201330 ,'N'
201331 ) <> 'Y'
201332 THEN
201333 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201334 trace
201335 (p_msg => 'Trancaction revesal option is not Y '
201336 ,p_level => C_LEVEL_STATEMENT
201337 ,p_module => l_log_module);
201338 END IF;
201339
201340 --
201341 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
201342 --
201343 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
201344 --
201345 -- set event info as cache for other routines to refer event attributes
201346 --
201347
201348 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
201349 l_previous_event_id := l_event_id;
201350
201351 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
201352 (p_application_id => p_application_id
201353 ,p_primary_ledger_id => p_primary_ledger_id
201354 ,p_base_ledger_id => p_base_ledger_id
201355 ,p_target_ledger_id => p_target_ledger_id
201356 ,p_entity_id => l_array_entity_id(Idx)
201357 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
201358 ,p_entity_code => l_array_entity_code(Idx)
201359 ,p_transaction_num => l_array_transaction_num(Idx)
201360 ,p_event_id => l_array_event_id(Idx)
201361 ,p_event_class_code => l_array_class_code(Idx)
201362 ,p_event_type_code => l_array_event_type(Idx)
201363 ,p_event_number => l_array_event_number(Idx)
201364 ,p_event_date => l_array_event_date(Idx)
201365 ,p_transaction_date => l_array_transaction_date(Idx)
201366 ,p_reference_num_1 => l_array_reference_num_1(Idx)
201367 ,p_reference_num_2 => l_array_reference_num_2(Idx)
201368 ,p_reference_num_3 => l_array_reference_num_3(Idx)
201369 ,p_reference_num_4 => l_array_reference_num_4(Idx)
201370 ,p_reference_char_1 => l_array_reference_char_1(Idx)
201371 ,p_reference_char_2 => l_array_reference_char_2(Idx)
201372 ,p_reference_char_3 => l_array_reference_char_3(Idx)
201373 ,p_reference_char_4 => l_array_reference_char_4(Idx)
201374 ,p_reference_date_1 => l_array_reference_date_1(Idx)
201375 ,p_reference_date_2 => l_array_reference_date_2(Idx)
201376 ,p_reference_date_3 => l_array_reference_date_3(Idx)
201377 ,p_reference_date_4 => l_array_reference_date_4(Idx)
201378 ,p_event_created_by => l_array_event_created_by(Idx)
201379 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
201380 --
201381 END IF;
201382
201383
201384
201385 --
201386 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
201387
201388 l_acct_reversal_source := SUBSTR(NULL, 1,30);
201389
201390 IF l_continue_with_lines THEN
201391 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
201392 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
201393
201394 xla_accounting_err_pkg.build_message
201395 (p_appli_s_name => 'XLA'
201396 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
201397 ,p_token_1 => 'LINE_NUMBER'
201398 ,p_value_1 => l_array_extract_line_num(Idx)
201399 ,p_token_2 => 'PRODUCT_NAME'
201400 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
201401 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
201402 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
201403 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
201404
201405 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
201406 --
201407 -- following sets the accounting attributes needed to reverse
201408 -- accounting for a distributeion
201409 --
201410
201411 --
201412 -- 5217187
201413 --
201414 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
201415 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
201416 g_array_event(l_event_id).array_value_num('header_index'));
201417 --
201418 --
201419
201420 -- No reversal code generated
201421
201422 xla_ae_lines_pkg.SetAcctReversalAttrs
201423 (p_event_id => l_event_id
201424 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
201425 ,p_calculate_acctd_flag => l_calculate_acctd_flag
201426 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
201427 END IF;
201428
201429 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
201430 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
201431
201432 --
201433 AcctLineType_46 (
201434 p_application_id => p_application_id
201435 ,p_event_id => l_event_id
201436 ,p_calculate_acctd_flag => l_calculate_acctd_flag
201437 ,p_calculate_g_l_flag => l_calculate_g_l_flag
201438 ,p_actual_flag => l_actual_flag
201439 ,p_balance_type_code => l_balance_type_code
201440 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
201441
201442 , p_source_4 => l_array_source_4(Idx)
201443 , p_source_11 => l_array_source_11(Idx)
201444 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
201445 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
201446 , p_source_15 => l_array_source_15(Idx)
201447 , p_source_18 => l_array_source_18(Idx)
201448 , p_source_19 => l_array_source_19(Idx)
201449 , p_source_20 => l_array_source_20(Idx)
201450 , p_source_21 => l_array_source_21(Idx)
201451 , p_source_22 => l_array_source_22(Idx)
201452 , p_source_24 => l_array_source_24(Idx)
201453 );
201454 If(l_balance_type_code = 'A') THEN
201455 l_actual_gain_loss_ref := l_gain_or_loss_ref;
201456 END IF;
201457
201458 --
201459
201460
201461 --
201462 AcctLineType_132 (
201463 p_application_id => p_application_id
201464 ,p_event_id => l_event_id
201465 ,p_calculate_acctd_flag => l_calculate_acctd_flag
201466 ,p_calculate_g_l_flag => l_calculate_g_l_flag
201467 ,p_actual_flag => l_actual_flag
201468 ,p_balance_type_code => l_balance_type_code
201469 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
201470
201471 , p_source_4 => l_array_source_4(Idx)
201472 , p_source_11 => l_array_source_11(Idx)
201473 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
201474 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
201475 , p_source_15 => l_array_source_15(Idx)
201476 , p_source_18 => l_array_source_18(Idx)
201477 , p_source_19 => l_array_source_19(Idx)
201478 , p_source_20 => l_array_source_20(Idx)
201479 , p_source_21 => l_array_source_21(Idx)
201480 , p_source_22 => l_array_source_22(Idx)
201481 , p_source_24 => l_array_source_24(Idx)
201482 );
201483 If(l_balance_type_code = 'A') THEN
201484 l_actual_gain_loss_ref := l_gain_or_loss_ref;
201485 END IF;
201486
201487 --
201488
201489
201490 --
201491 AcctLineType_202 (
201492 p_application_id => p_application_id
201493 ,p_event_id => l_event_id
201494 ,p_calculate_acctd_flag => l_calculate_acctd_flag
201495 ,p_calculate_g_l_flag => l_calculate_g_l_flag
201496 ,p_actual_flag => l_actual_flag
201497 ,p_balance_type_code => l_balance_type_code
201498 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
201499
201500 , p_source_4 => l_array_source_4(Idx)
201501 , p_source_11 => l_array_source_11(Idx)
201502 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
201503 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
201504 , p_source_15 => l_array_source_15(Idx)
201505 , p_source_18 => l_array_source_18(Idx)
201506 , p_source_19 => l_array_source_19(Idx)
201507 , p_source_20 => l_array_source_20(Idx)
201508 , p_source_21 => l_array_source_21(Idx)
201509 , p_source_22 => l_array_source_22(Idx)
201510 , p_source_24 => l_array_source_24(Idx)
201511 );
201512 If(l_balance_type_code = 'A') THEN
201513 l_actual_gain_loss_ref := l_gain_or_loss_ref;
201514 END IF;
201515
201516 --
201517
201518 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
201519 -- or secondary ledger that has different currency with primary
201520 -- or alc that is calculated by sla
201521 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
201522 (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'))
201523
201524 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
201525 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
201526 AND (l_actual_flag = 'A')) THEN
201527 XLA_AE_LINES_PKG.CreateGainOrLossLines(
201528 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
201529 ,p_application_id => p_application_id
201530 ,p_amb_context_code => 'DEFAULT'
201531 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
201532 ,p_event_class_code => C_EVENT_CLASS_CODE
201533 ,p_event_type_code => C_EVENT_TYPE_CODE
201534
201535 ,p_gain_ccid => -1
201536 ,p_loss_ccid => -1
201537
201538 ,p_actual_flag => l_actual_flag
201539 ,p_enc_flag => null
201540 ,p_actual_g_l_ref => l_actual_gain_loss_ref
201541 ,p_enc_g_l_ref => null
201542 );
201543 END IF;
201544 END IF;
201545 END IF;
201546
201547 ELSE
201548 --
201549 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
201550 --
201551 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201552 trace
201553 (p_msg => 'Trancaction revesal option is Y'
201554 ,p_level => C_LEVEL_STATEMENT
201555 ,p_module => l_log_module);
201556 END IF;
201557 END IF;
201558
201559 END LOOP;
201560 l_result := XLA_AE_LINES_PKG.InsertLines ;
201561 end loop;
201562 close line_cur;
201563
201564
201565 --
201566 -- insert headers into xla_ae_headers_gt table
201567 --
201568 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
201569
201570 -- insert into errors table here.
201571
201572 END LOOP;
201573
201574 --
201575 -- 4865292
201576 --
201577 -- Compare g_hdr_extract_count with event count in
201578 -- CreateHeadersAndLines.
201579 --
201580 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
201581
201582 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201583 trace (p_msg => '# rows extracted from header extract objects '
201584 || ' (running total): '
201585 || g_hdr_extract_count
201586 ,p_level => C_LEVEL_STATEMENT
201587 ,p_module => l_log_module);
201588 END IF;
201589
201590 CLOSE header_cur;
201591 --
201592
201593 --
201594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
201595 trace
201596 (p_msg => 'END of EventType_302'
201597 ,p_level => C_LEVEL_PROCEDURE
201598 ,p_module => l_log_module);
201599 END IF;
201600 --
201601 RETURN l_result;
201602 EXCEPTION
201603 WHEN xla_exceptions_pkg.application_exception THEN
201604
201605 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
201606
201607
201608 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
201609
201610 RAISE;
201611
201612 WHEN NO_DATA_FOUND THEN
201613
201614 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
201615 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
201616
201617 FOR header_record IN header_cur
201618 LOOP
201619 l_array_header_events(header_record.event_id) := header_record.event_id;
201620 END LOOP;
201621
201622 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
201623 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
201624
201625 fnd_file.put_line(fnd_file.LOG, ' ');
201626 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
201627 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
201628 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
201629
201630 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
201631 LOOP
201632 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
201633 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
201634 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
201635 END IF;
201636 END LOOP;
201637
201638 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
201639 fnd_file.put_line(fnd_file.LOG, ' ');
201640
201641
201642 xla_exceptions_pkg.raise_message
201643 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_302');
201644
201645
201646 WHEN OTHERS THEN
201647 xla_exceptions_pkg.raise_message
201648 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_302');
201649 END EventType_302;
201650 --
201651
201652 ---------------------------------------
201653 --
201654 -- PRIVATE PROCEDURE
201655 -- insert_sources_303
201656 --
201657 ----------------------------------------
201658 --
201659 PROCEDURE insert_sources_303(
201660 p_target_ledger_id IN NUMBER
201661 , p_language IN VARCHAR2
201662 , p_sla_ledger_id IN NUMBER
201663 , p_pad_start_date IN DATE
201664 , p_pad_end_date IN DATE
201665 )
201666 IS
201667
201668 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'USUB_TXFR';
201669 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
201670 p_apps_owner VARCHAR2(30);
201671 l_log_module VARCHAR2(240);
201672 BEGIN
201673 IF g_log_enabled THEN
201674 l_log_module := C_DEFAULT_MODULE||'.insert_sources_303';
201675 END IF;
201676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
201677
201678 trace
201679 (p_msg => 'BEGIN of insert_sources_303'
201680 ,p_level => C_LEVEL_PROCEDURE
201681 ,p_module => l_log_module);
201682
201683 END IF;
201684
201685 -- select APPS owner
201686 SELECT oracle_username
201687 INTO p_apps_owner
201688 FROM fnd_oracle_userid
201689 WHERE read_only_flag = 'U'
201690 ;
201691
201692 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201693 trace
201694 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
201695 ' - p_language = '||p_language||
201696 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
201697 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
201698 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
201699 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
201700 ,p_level => C_LEVEL_STATEMENT
201701 ,p_module => l_log_module);
201702 END IF;
201703
201704
201705 --
201706 INSERT INTO xla_diag_sources --hdr1
201707 (
201708 event_id
201709 , ledger_id
201710 , sla_ledger_id
201711 , description_language
201712 , object_name
201713 , object_type_code
201714 , line_number
201715 , source_application_id
201716 , source_type_code
201717 , source_code
201718 , source_value
201719 , source_meaning
201720 , created_by
201721 , creation_date
201722 , last_update_date
201723 , last_updated_by
201724 , last_update_login
201725 , program_update_date
201726 , program_application_id
201727 , program_id
201728 , request_id
201729 )
201730 SELECT
201731 event_id
201732 , p_target_ledger_id
201733 , p_sla_ledger_id
201734 , p_language
201735 , object_name
201736 , object_type_code
201737 , line_number
201738 , source_application_id
201739 , source_type_code
201740 , source_code
201741 , SUBSTR(source_value ,1,1996)
201742 , SUBSTR(source_meaning,1,200)
201743 , xla_environment_pkg.g_Usr_Id
201744 , TRUNC(SYSDATE)
201745 , TRUNC(SYSDATE)
201746 , xla_environment_pkg.g_Usr_Id
201747 , xla_environment_pkg.g_Login_Id
201748 , TRUNC(SYSDATE)
201749 , xla_environment_pkg.g_Prog_Appl_Id
201750 , xla_environment_pkg.g_Prog_Id
201751 , xla_environment_pkg.g_Req_Id
201752 FROM (
201753 SELECT xet.event_id event_id
201754 , 0 line_number
201755 , CASE r
201756 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
201757 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
201758
201759 ELSE null
201760 END object_name
201761 , CASE r
201762 WHEN 1 THEN 'HEADER'
201763 WHEN 2 THEN 'HEADER'
201764
201765 ELSE null
201766 END object_type_code
201767 , CASE r
201768 WHEN 1 THEN '707'
201769 WHEN 2 THEN '707'
201770
201771 ELSE null
201772 END source_application_id
201773 , 'S' source_type_code
201774 , CASE r
201775 WHEN 1 THEN 'DISTRIBUTION_TYPE'
201776 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
201777
201778 ELSE null
201779 END source_code
201780 , CASE r
201781 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
201782 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
201783
201784 ELSE null
201785 END source_value
201786 , CASE r
201787 WHEN 1 THEN fvl12.meaning
201788 WHEN 2 THEN fvl38.meaning
201789
201790 ELSE null
201791 END source_meaning
201792 FROM xla_events_gt xet
201793 , CST_XLA_INV_HEADERS_V h1
201794 , fnd_lookup_values fvl12
201795 , fnd_lookup_values fvl38
201796 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
201797 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
201798 AND xet.event_type_code = C_EVENT_TYPE_CODE
201799 AND h1.event_id = xet.event_id
201800 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
201801 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
201802 AND fvl12.view_application_id(+) = 700
201803 AND fvl12.language(+) = USERENV('LANG')
201804 AND fvl38.lookup_type(+) = 'YES_NO'
201805 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
201806 AND fvl38.view_application_id(+) = 0
201807 AND fvl38.language(+) = USERENV('LANG')
201808
201809 )
201810 ;
201811 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201812
201813 trace
201814 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
201815 ,p_level => C_LEVEL_STATEMENT
201816 ,p_module => l_log_module);
201817
201818 END IF;
201819 --
201820
201821
201822
201823 --
201824 INSERT INTO xla_diag_sources --line1
201825 (
201826 event_id
201827 , ledger_id
201828 , sla_ledger_id
201829 , description_language
201830 , object_name
201831 , object_type_code
201832 , line_number
201833 , source_application_id
201834 , source_type_code
201835 , source_code
201836 , source_value
201837 , source_meaning
201838 , created_by
201839 , creation_date
201840 , last_update_date
201841 , last_updated_by
201842 , last_update_login
201843 , program_update_date
201844 , program_application_id
201845 , program_id
201846 , request_id
201847 )
201848 SELECT event_id
201849 , p_target_ledger_id
201850 , p_sla_ledger_id
201851 , p_language
201852 , object_name
201853 , object_type_code
201854 , line_number
201855 , source_application_id
201856 , source_type_code
201857 , source_code
201858 , SUBSTR(source_value,1,1996)
201859 , SUBSTR(source_meaning,1,200)
201860 , xla_environment_pkg.g_Usr_Id
201861 , TRUNC(SYSDATE)
201862 , TRUNC(SYSDATE)
201863 , xla_environment_pkg.g_Usr_Id
201864 , xla_environment_pkg.g_Login_Id
201865 , TRUNC(SYSDATE)
201866 , xla_environment_pkg.g_Prog_Appl_Id
201867 , xla_environment_pkg.g_Prog_Id
201868 , xla_environment_pkg.g_Req_Id
201869 FROM (
201870 SELECT xet.event_id event_id
201871 , l2.line_number line_number
201872 , CASE r
201873 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
201874 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
201875 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
201876 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
201877 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
201878 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
201879 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
201880 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
201881 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
201882
201883 ELSE null
201884 END object_name
201885 , CASE r
201886 WHEN 1 THEN 'LINE'
201887 WHEN 2 THEN 'LINE'
201888 WHEN 3 THEN 'LINE'
201889 WHEN 4 THEN 'LINE'
201890 WHEN 5 THEN 'LINE'
201891 WHEN 6 THEN 'LINE'
201892 WHEN 7 THEN 'LINE'
201893 WHEN 8 THEN 'LINE'
201894 WHEN 9 THEN 'LINE'
201895
201896 ELSE null
201897 END object_type_code
201898 , CASE r
201899 WHEN 1 THEN '707'
201900 WHEN 2 THEN '707'
201901 WHEN 3 THEN '707'
201902 WHEN 4 THEN '707'
201903 WHEN 5 THEN '707'
201904 WHEN 6 THEN '707'
201905 WHEN 7 THEN '707'
201906 WHEN 8 THEN '707'
201907 WHEN 9 THEN '707'
201908
201909 ELSE null
201910 END source_application_id
201911 , 'S' source_type_code
201912 , CASE r
201913 WHEN 1 THEN 'CODE_COMBINATION_ID'
201914 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
201915 WHEN 3 THEN 'CURRENCY_CODE'
201916 WHEN 4 THEN 'ENTERED_AMOUNT'
201917 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
201918 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
201919 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
201920 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
201921 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
201922
201923 ELSE null
201924 END source_code
201925 , CASE r
201926 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
201927 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
201928 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
201929 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
201930 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
201931 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
201932 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
201933 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
201934 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
201935
201936 ELSE null
201937 END source_value
201938 , null source_meaning
201939 FROM xla_events_gt xet
201940 , CST_XLA_INV_LINES_V l2
201941 ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
201942 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
201943 AND xet.event_type_code = C_EVENT_TYPE_CODE
201944 AND l2.event_id = xet.event_id
201945
201946 )
201947 ;
201948 --
201949 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
201950
201951 trace
201952 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
201953 ,p_level => C_LEVEL_STATEMENT
201954 ,p_module => l_log_module);
201955
201956 END IF;
201957
201958
201959 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
201960 trace
201961 (p_msg => 'END of insert_sources_303'
201962 ,p_level => C_LEVEL_PROCEDURE
201963 ,p_module => l_log_module);
201964 END IF;
201965 EXCEPTION
201966 WHEN xla_exceptions_pkg.application_exception THEN
201967 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
201968 trace
201969 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
201970 ,p_level => C_LEVEL_EXCEPTION
201971 ,p_module => l_log_module);
201972 END IF;
201973 RAISE;
201974 WHEN OTHERS THEN
201975 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
201976 trace
201977 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
201978 ,p_level => C_LEVEL_EXCEPTION
201979 ,p_module => l_log_module);
201980 END IF;
201981 xla_exceptions_pkg.raise_message
201982 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_303');
201983 END insert_sources_303;
201984 --
201985
201986 ---------------------------------------
201987 --
201988 -- PRIVATE FUNCTION
201989 -- EventType_303
201990 --
201991 ----------------------------------------
201992 --
201993 FUNCTION EventType_303
201994 (p_application_id IN NUMBER
201995 ,p_base_ledger_id IN NUMBER
201996 ,p_target_ledger_id IN NUMBER
201997 ,p_language IN VARCHAR2
201998 ,p_currency_code IN VARCHAR2
201999 ,p_sla_ledger_id IN NUMBER
202000 ,p_pad_start_date IN DATE
202001 ,p_pad_end_date IN DATE
202002 ,p_primary_ledger_id IN NUMBER)
202003 RETURN BOOLEAN IS
202004 --
202005 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'USUB_TXFR';
202006 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'USER_DEFINE';
202007
202008 l_calculate_acctd_flag VARCHAR2(1) :='Y';
202009 l_calculate_g_l_flag VARCHAR2(1) :='Y';
202010 --
202011 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202012 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202013 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
202014 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
202015 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202016 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
202017 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
202018 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202019 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202020 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202021 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202022 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202023 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202024 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
202025 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
202026 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
202027 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
202028 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
202029 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202030 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202031 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202032 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
202033 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
202034 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
202035 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
202036 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
202037
202038 l_event_id NUMBER;
202039 l_previous_event_id NUMBER;
202040 l_first_event_id NUMBER;
202041 l_last_event_id NUMBER;
202042
202043 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
202044 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
202045 --
202046 --
202047 l_result BOOLEAN := TRUE;
202048 l_rows NUMBER := 1000;
202049 l_event_type_name VARCHAR2(80) := 'User-defined Subinventory Transfer';
202050 l_event_class_name VARCHAR2(80) := 'User Defined Inventory Transaction Class';
202051 l_description VARCHAR2(4000);
202052 l_transaction_reversal NUMBER;
202053 l_ae_header_id NUMBER;
202054 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
202055 l_log_module VARCHAR2(240);
202056 --
202057 l_acct_reversal_source VARCHAR2(30);
202058 l_trx_reversal_source VARCHAR2(30);
202059
202060 l_continue_with_lines BOOLEAN := TRUE;
202061 --
202062 l_acc_rev_gl_date_source DATE; -- 4262811
202063 --
202064 type t_array_event_id is table of number index by binary_integer;
202065
202066 l_rec_array_event t_rec_array_event;
202067 l_null_rec_array_event t_rec_array_event;
202068 l_array_ae_header_id xla_number_array_type;
202069 l_actual_flag VARCHAR2(1) := NULL;
202070 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
202071 l_balance_type_code VARCHAR2(1) :=NULL;
202072 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
202073
202074 --
202075 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
202076 --
202077
202078 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
202079 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
202080
202081 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
202082 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
202083 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
202084 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
202085 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
202086 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
202087 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
202088 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
202089 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
202090
202091 l_array_source_12 t_array_source_12;
202092 l_array_source_12_meaning t_array_lookup_meaning;
202093 l_array_source_38 t_array_source_38;
202094 l_array_source_38_meaning t_array_lookup_meaning;
202095
202096 l_array_source_4 t_array_source_4;
202097 l_array_source_11 t_array_source_11;
202098 l_array_source_15 t_array_source_15;
202099 l_array_source_18 t_array_source_18;
202100 l_array_source_19 t_array_source_19;
202101 l_array_source_20 t_array_source_20;
202102 l_array_source_21 t_array_source_21;
202103 l_array_source_22 t_array_source_22;
202104 l_array_source_24 t_array_source_24;
202105
202106 --
202107 CURSOR header_cur
202108 IS
202109 SELECT /*+ leading(xet) cardinality(xet,1) */
202110 -- Event Type Code: USUB_TXFR
202111 -- Event Class Code: USER_DEFINE
202112 xet.entity_id
202113 , xet.legal_entity_id
202114 , xet.entity_code
202115 , xet.transaction_number
202116 , xet.event_id
202117 , xet.event_class_code
202118 , xet.event_type_code
202119 , xet.event_number
202120 , xet.event_date
202121 , xet.transaction_date
202122 , xet.reference_num_1
202123 , xet.reference_num_2
202124 , xet.reference_num_3
202125 , xet.reference_num_4
202126 , xet.reference_char_1
202127 , xet.reference_char_2
202128 , xet.reference_char_3
202129 , xet.reference_char_4
202130 , xet.reference_date_1
202131 , xet.reference_date_2
202132 , xet.reference_date_3
202133 , xet.reference_date_4
202134 , xet.event_created_by
202135 , xet.budgetary_control_flag
202136 , h1.DISTRIBUTION_TYPE source_12
202137 , fvl12.meaning source_12_meaning
202138 , h1.TRANSFER_TO_GL_INDICATOR source_38
202139 , fvl38.meaning source_38_meaning
202140 FROM xla_events_gt xet
202141 , CST_XLA_INV_HEADERS_V h1
202142 , fnd_lookup_values fvl12
202143 , fnd_lookup_values fvl38
202144 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
202145 and xet.event_type_code = C_EVENT_TYPE_CODE
202146 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
202147 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
202148 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
202149 AND fvl12.view_application_id(+) = 700
202150 AND fvl12.language(+) = USERENV('LANG')
202151 AND fvl38.lookup_type(+) = 'YES_NO'
202152 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
202153 AND fvl38.view_application_id(+) = 0
202154 AND fvl38.language(+) = USERENV('LANG')
202155
202156 ORDER BY event_id
202157 ;
202158
202159
202160 --
202161 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
202162 IS
202163 SELECT /*+ leading(xet) cardinality(xet,1) */
202164 -- Event Type Code: USUB_TXFR
202165 -- Event Class Code: USER_DEFINE
202166 xet.entity_id
202167 ,xet.legal_entity_id
202168 ,xet.entity_code
202169 ,xet.transaction_number
202170 ,xet.event_id
202171 ,xet.event_class_code
202172 ,xet.event_type_code
202173 ,xet.event_number
202174 ,xet.event_date
202175 ,xet.transaction_date
202176 ,xet.reference_num_1
202177 ,xet.reference_num_2
202178 ,xet.reference_num_3
202179 ,xet.reference_num_4
202180 ,xet.reference_char_1
202181 ,xet.reference_char_2
202182 ,xet.reference_char_3
202183 ,xet.reference_char_4
202184 ,xet.reference_date_1
202185 ,xet.reference_date_2
202186 ,xet.reference_date_3
202187 ,xet.reference_date_4
202188 ,xet.event_created_by
202189 ,xet.budgetary_control_flag , l2.LINE_NUMBER
202190 , l2.CODE_COMBINATION_ID source_4
202191 , l2.DISTRIBUTION_IDENTIFIER source_11
202192 , l2.CURRENCY_CODE source_15
202193 , l2.ENTERED_AMOUNT source_18
202194 , l2.CURRENCY_CONVERSION_DATE source_19
202195 , l2.CURRENCY_CONVERSION_RATE source_20
202196 , l2.CURRENCY_CONVERSION_TYPE source_21
202197 , l2.ACCOUNTED_AMOUNT source_22
202198 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
202199 FROM xla_events_gt xet
202200 , CST_XLA_INV_LINES_V l2
202201 WHERE xet.event_id between x_first_event_id and x_last_event_id
202202 and xet.event_date between p_pad_start_date and p_pad_end_date
202203 and xet.event_type_code = C_EVENT_TYPE_CODE
202204 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
202205 ;
202206
202207 --
202208 BEGIN
202209 IF g_log_enabled THEN
202210 l_log_module := C_DEFAULT_MODULE||'.EventType_303';
202211 END IF;
202212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202213 trace
202214 (p_msg => 'BEGIN of EventType_303'
202215 ,p_level => C_LEVEL_PROCEDURE
202216 ,p_module => l_log_module);
202217 END IF;
202218
202219 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202220 trace
202221 (p_msg => 'p_application_id = '||p_application_id||
202222 ' - p_base_ledger_id = '||p_base_ledger_id||
202223 ' - p_target_ledger_id = '||p_target_ledger_id||
202224 ' - p_language = '||p_language||
202225 ' - p_currency_code = '||p_currency_code||
202226 ' - p_sla_ledger_id = '||p_sla_ledger_id
202227 ,p_level => C_LEVEL_STATEMENT
202228 ,p_module => l_log_module);
202229 END IF;
202230 --
202231 -- initialze arrays
202232 --
202233 g_array_event.DELETE;
202234 l_rec_array_event := l_null_rec_array_event;
202235 --
202236 --------------------------------------
202237 -- 4262811 Initialze MPA Line Number
202238 --------------------------------------
202239 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
202240
202241 --
202242
202243 --
202244 OPEN header_cur;
202245 --
202246 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202247 trace
202248 (p_msg => 'SQL - FETCH header_cur'
202249 ,p_level => C_LEVEL_STATEMENT
202250 ,p_module => l_log_module);
202251 END IF;
202252 --
202253 LOOP
202254 FETCH header_cur BULK COLLECT INTO
202255 l_array_entity_id
202256 , l_array_legal_entity_id
202257 , l_array_entity_code
202258 , l_array_transaction_num
202259 , l_array_event_id
202260 , l_array_class_code
202261 , l_array_event_type
202262 , l_array_event_number
202263 , l_array_event_date
202264 , l_array_transaction_date
202265 , l_array_reference_num_1
202266 , l_array_reference_num_2
202267 , l_array_reference_num_3
202268 , l_array_reference_num_4
202269 , l_array_reference_char_1
202270 , l_array_reference_char_2
202271 , l_array_reference_char_3
202272 , l_array_reference_char_4
202273 , l_array_reference_date_1
202274 , l_array_reference_date_2
202275 , l_array_reference_date_3
202276 , l_array_reference_date_4
202277 , l_array_event_created_by
202278 , l_array_budgetary_control_flag
202279 , l_array_source_12
202280 , l_array_source_12_meaning
202281 , l_array_source_38
202282 , l_array_source_38_meaning
202283 LIMIT l_rows;
202284 --
202285 IF (C_LEVEL_EVENT >= g_log_level) THEN
202286 trace
202287 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
202288 ,p_level => C_LEVEL_EVENT
202289 ,p_module => l_log_module);
202290 END IF;
202291 --
202292 EXIT WHEN l_array_entity_id.COUNT = 0;
202293
202294 -- initialize arrays
202295 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
202296 XLA_AE_LINES_PKG.g_rec_lines := NULL;
202297
202298 --
202299 -- Bug 4458708
202300 --
202301 XLA_AE_LINES_PKG.g_LineNumber := 0;
202302
202303
202304 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
202305 g_last_hdr_idx := l_array_event_id.LAST;
202306 --
202307 -- loop for the headers. Each iteration is for each header extract row
202308 -- fetched in header cursor
202309 --
202310 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
202311
202312 --
202313 -- set event info as cache for other routines to refer event attributes
202314 --
202315 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
202316 (p_application_id => p_application_id
202317 ,p_primary_ledger_id => p_primary_ledger_id
202318 ,p_base_ledger_id => p_base_ledger_id
202319 ,p_target_ledger_id => p_target_ledger_id
202320 ,p_entity_id => l_array_entity_id(hdr_idx)
202321 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
202322 ,p_entity_code => l_array_entity_code(hdr_idx)
202323 ,p_transaction_num => l_array_transaction_num(hdr_idx)
202324 ,p_event_id => l_array_event_id(hdr_idx)
202325 ,p_event_class_code => l_array_class_code(hdr_idx)
202326 ,p_event_type_code => l_array_event_type(hdr_idx)
202327 ,p_event_number => l_array_event_number(hdr_idx)
202328 ,p_event_date => l_array_event_date(hdr_idx)
202329 ,p_transaction_date => l_array_transaction_date(hdr_idx)
202330 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
202331 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
202332 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
202333 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
202334 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
202335 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
202336 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
202337 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
202338 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
202339 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
202340 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
202341 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
202342 ,p_event_created_by => l_array_event_created_by(hdr_idx)
202343 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
202344
202345 --
202346 -- set the status of entry to C_VALID (0)
202347 --
202348 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
202349
202350 --
202351 -- initialize a row for ae header
202352 --
202353 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
202354
202355 l_event_id := l_array_event_id(hdr_idx);
202356
202357 --
202358 -- storing the hdr_idx for event. May be used by line cursor.
202359 --
202360 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
202361
202362 --
202363 -- store sources from header extract. This can be improved to
202364 -- store only those sources from header extract that may be used in lines
202365 --
202366
202367 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
202368 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
202369 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
202370 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
202371
202372 --
202373 -- initilaize the status of ae headers for diffrent balance types
202374 -- the status is initialised to C_NOT_CREATED (2)
202375 --
202376 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
202377 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
202378 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
202379
202380 --
202381 -- call api to validate and store accounting attributes for header
202382 --
202383
202384 ------------------------------------------------------------
202385 -- Accrual Reversal : to get date for Standard Source (NONE)
202386 ------------------------------------------------------------
202387 l_acc_rev_gl_date_source := NULL;
202388
202389 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
202390 l_rec_acct_attrs.array_date_value(1) :=
202391 xla_ae_sources_pkg.GetSystemSourceDate(
202392 p_source_code => 'XLA_REFERENCE_DATE_1'
202393 , p_source_type_code => 'Y'
202394 , p_source_application_id => 602
202395 );
202396 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
202397 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
202398
202399
202400 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
202401
202402 XLA_AE_HEADER_PKG.SetJeCategoryName;
202403
202404 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
202405 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
202406 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
202407 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
202408 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
202409
202410
202411 -- No header level analytical criteria
202412
202413 --
202414 --accounting attribute enhancement, bug 3612931
202415 --
202416 l_trx_reversal_source := SUBSTR(NULL, 1,30);
202417
202418 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
202419 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
202420
202421 xla_accounting_err_pkg.build_message
202422 (p_appli_s_name => 'XLA'
202423 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
202424 ,p_token_1 => 'ACCT_ATTR_NAME'
202425 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
202426 ,p_token_2 => 'PRODUCT_NAME'
202427 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
202428 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
202429 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
202430 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
202431
202432 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
202433 --
202434 -- following sets the accounting attributes needed to reverse
202435 -- accounting for a distributeion
202436 --
202437 xla_ae_lines_pkg.SetTrxReversalAttrs
202438 (p_event_id => l_event_id
202439 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
202440 ,p_trx_reversal_source => l_trx_reversal_source);
202441
202442 END IF;
202443
202444
202445 ----------------------------------------------------------------
202446 -- 4262811 - update the header statuses to invalid in need be
202447 ----------------------------------------------------------------
202448 --
202449 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
202450
202451
202452 -----------------------------------------------
202453 -- No accrual reversal for the event class/type
202454 -----------------------------------------------
202455 ----------------------------------------------------------------
202456
202457 --
202458 -- this ends the header loop iteration for one bulk fetch
202459 --
202460 END LOOP;
202461
202462 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
202463 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
202464
202465 --
202466 -- insert dummy rows into lines gt table that were created due to
202467 -- transaction reversals
202468 --
202469 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
202470 l_result := XLA_AE_LINES_PKG.InsertLines;
202471 END IF;
202472
202473 --
202474 -- reset the temp_line_num for each set of events fetched from header
202475 -- cursor rather than doing it for each new event in line cursor
202476 -- Bug 3939231
202477 --
202478 xla_ae_lines_pkg.g_temp_line_num := 0;
202479
202480
202481
202482 --
202483 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
202484 --
202485 --
202486 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202487
202488 trace
202489 (p_msg => 'SQL - FETCH line_cur'
202490 ,p_level => C_LEVEL_STATEMENT
202491 ,p_module => l_log_module);
202492
202493 END IF;
202494 --
202495 --
202496 LOOP
202497 --
202498 FETCH line_cur BULK COLLECT INTO
202499 l_array_entity_id
202500 , l_array_legal_entity_id
202501 , l_array_entity_code
202502 , l_array_transaction_num
202503 , l_array_event_id
202504 , l_array_class_code
202505 , l_array_event_type
202506 , l_array_event_number
202507 , l_array_event_date
202508 , l_array_transaction_date
202509 , l_array_reference_num_1
202510 , l_array_reference_num_2
202511 , l_array_reference_num_3
202512 , l_array_reference_num_4
202513 , l_array_reference_char_1
202514 , l_array_reference_char_2
202515 , l_array_reference_char_3
202516 , l_array_reference_char_4
202517 , l_array_reference_date_1
202518 , l_array_reference_date_2
202519 , l_array_reference_date_3
202520 , l_array_reference_date_4
202521 , l_array_event_created_by
202522 , l_array_budgetary_control_flag
202523 , l_array_extract_line_num
202524 , l_array_source_4
202525 , l_array_source_11
202526 , l_array_source_15
202527 , l_array_source_18
202528 , l_array_source_19
202529 , l_array_source_20
202530 , l_array_source_21
202531 , l_array_source_22
202532 , l_array_source_24
202533 LIMIT l_rows;
202534
202535 --
202536 IF (C_LEVEL_EVENT >= g_log_level) THEN
202537 trace
202538 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
202539 ,p_level => C_LEVEL_EVENT
202540 ,p_module => l_log_module);
202541 END IF;
202542 --
202543 EXIT WHEN l_array_entity_id.count = 0;
202544
202545 XLA_AE_LINES_PKG.g_rec_lines := null;
202546
202547 --
202548 -- Bug 4458708
202549 --
202550 XLA_AE_LINES_PKG.g_LineNumber := 0;
202551 --
202552 --
202553
202554 FOR Idx IN 1..l_array_event_id.count LOOP
202555 --
202556 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
202557 --
202558 l_event_id := l_array_event_id(idx); -- 5648433
202559
202560 --
202561 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
202562 --
202563
202564 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
202565 (g_array_event(l_event_id).array_value_num('header_index'))
202566 ,'N'
202567 ) <> 'Y'
202568 THEN
202569 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202570 trace
202571 (p_msg => 'Trancaction revesal option is not Y '
202572 ,p_level => C_LEVEL_STATEMENT
202573 ,p_module => l_log_module);
202574 END IF;
202575
202576 --
202577 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
202578 --
202579 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
202580 --
202581 -- set event info as cache for other routines to refer event attributes
202582 --
202583
202584 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
202585 l_previous_event_id := l_event_id;
202586
202587 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
202588 (p_application_id => p_application_id
202589 ,p_primary_ledger_id => p_primary_ledger_id
202590 ,p_base_ledger_id => p_base_ledger_id
202591 ,p_target_ledger_id => p_target_ledger_id
202592 ,p_entity_id => l_array_entity_id(Idx)
202593 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
202594 ,p_entity_code => l_array_entity_code(Idx)
202595 ,p_transaction_num => l_array_transaction_num(Idx)
202596 ,p_event_id => l_array_event_id(Idx)
202597 ,p_event_class_code => l_array_class_code(Idx)
202598 ,p_event_type_code => l_array_event_type(Idx)
202599 ,p_event_number => l_array_event_number(Idx)
202600 ,p_event_date => l_array_event_date(Idx)
202601 ,p_transaction_date => l_array_transaction_date(Idx)
202602 ,p_reference_num_1 => l_array_reference_num_1(Idx)
202603 ,p_reference_num_2 => l_array_reference_num_2(Idx)
202604 ,p_reference_num_3 => l_array_reference_num_3(Idx)
202605 ,p_reference_num_4 => l_array_reference_num_4(Idx)
202606 ,p_reference_char_1 => l_array_reference_char_1(Idx)
202607 ,p_reference_char_2 => l_array_reference_char_2(Idx)
202608 ,p_reference_char_3 => l_array_reference_char_3(Idx)
202609 ,p_reference_char_4 => l_array_reference_char_4(Idx)
202610 ,p_reference_date_1 => l_array_reference_date_1(Idx)
202611 ,p_reference_date_2 => l_array_reference_date_2(Idx)
202612 ,p_reference_date_3 => l_array_reference_date_3(Idx)
202613 ,p_reference_date_4 => l_array_reference_date_4(Idx)
202614 ,p_event_created_by => l_array_event_created_by(Idx)
202615 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
202616 --
202617 END IF;
202618
202619
202620
202621 --
202622 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
202623
202624 l_acct_reversal_source := SUBSTR(NULL, 1,30);
202625
202626 IF l_continue_with_lines THEN
202627 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
202628 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
202629
202630 xla_accounting_err_pkg.build_message
202631 (p_appli_s_name => 'XLA'
202632 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
202633 ,p_token_1 => 'LINE_NUMBER'
202634 ,p_value_1 => l_array_extract_line_num(Idx)
202635 ,p_token_2 => 'PRODUCT_NAME'
202636 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
202637 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
202638 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
202639 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
202640
202641 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
202642 --
202643 -- following sets the accounting attributes needed to reverse
202644 -- accounting for a distributeion
202645 --
202646
202647 --
202648 -- 5217187
202649 --
202650 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
202651 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
202652 g_array_event(l_event_id).array_value_num('header_index'));
202653 --
202654 --
202655
202656 -- No reversal code generated
202657
202658 xla_ae_lines_pkg.SetAcctReversalAttrs
202659 (p_event_id => l_event_id
202660 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
202661 ,p_calculate_acctd_flag => l_calculate_acctd_flag
202662 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
202663 END IF;
202664
202665 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
202666 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
202667
202668 --
202669 AcctLineType_37 (
202670 p_application_id => p_application_id
202671 ,p_event_id => l_event_id
202672 ,p_calculate_acctd_flag => l_calculate_acctd_flag
202673 ,p_calculate_g_l_flag => l_calculate_g_l_flag
202674 ,p_actual_flag => l_actual_flag
202675 ,p_balance_type_code => l_balance_type_code
202676 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
202677
202678 , p_source_4 => l_array_source_4(Idx)
202679 , p_source_11 => l_array_source_11(Idx)
202680 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
202681 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
202682 , p_source_15 => l_array_source_15(Idx)
202683 , p_source_18 => l_array_source_18(Idx)
202684 , p_source_19 => l_array_source_19(Idx)
202685 , p_source_20 => l_array_source_20(Idx)
202686 , p_source_21 => l_array_source_21(Idx)
202687 , p_source_22 => l_array_source_22(Idx)
202688 , p_source_24 => l_array_source_24(Idx)
202689 );
202690 If(l_balance_type_code = 'A') THEN
202691 l_actual_gain_loss_ref := l_gain_or_loss_ref;
202692 END IF;
202693
202694 --
202695
202696
202697 --
202698 AcctLineType_140 (
202699 p_application_id => p_application_id
202700 ,p_event_id => l_event_id
202701 ,p_calculate_acctd_flag => l_calculate_acctd_flag
202702 ,p_calculate_g_l_flag => l_calculate_g_l_flag
202703 ,p_actual_flag => l_actual_flag
202704 ,p_balance_type_code => l_balance_type_code
202705 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
202706
202707 , p_source_4 => l_array_source_4(Idx)
202708 , p_source_11 => l_array_source_11(Idx)
202709 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
202710 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
202711 , p_source_15 => l_array_source_15(Idx)
202712 , p_source_18 => l_array_source_18(Idx)
202713 , p_source_19 => l_array_source_19(Idx)
202714 , p_source_20 => l_array_source_20(Idx)
202715 , p_source_21 => l_array_source_21(Idx)
202716 , p_source_22 => l_array_source_22(Idx)
202717 , p_source_24 => l_array_source_24(Idx)
202718 );
202719 If(l_balance_type_code = 'A') THEN
202720 l_actual_gain_loss_ref := l_gain_or_loss_ref;
202721 END IF;
202722
202723 --
202724
202725
202726 --
202727 AcctLineType_182 (
202728 p_application_id => p_application_id
202729 ,p_event_id => l_event_id
202730 ,p_calculate_acctd_flag => l_calculate_acctd_flag
202731 ,p_calculate_g_l_flag => l_calculate_g_l_flag
202732 ,p_actual_flag => l_actual_flag
202733 ,p_balance_type_code => l_balance_type_code
202734 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
202735
202736 , p_source_4 => l_array_source_4(Idx)
202737 , p_source_11 => l_array_source_11(Idx)
202738 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
202739 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
202740 , p_source_15 => l_array_source_15(Idx)
202741 , p_source_18 => l_array_source_18(Idx)
202742 , p_source_19 => l_array_source_19(Idx)
202743 , p_source_20 => l_array_source_20(Idx)
202744 , p_source_21 => l_array_source_21(Idx)
202745 , p_source_22 => l_array_source_22(Idx)
202746 , p_source_24 => l_array_source_24(Idx)
202747 );
202748 If(l_balance_type_code = 'A') THEN
202749 l_actual_gain_loss_ref := l_gain_or_loss_ref;
202750 END IF;
202751
202752 --
202753
202754 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
202755 -- or secondary ledger that has different currency with primary
202756 -- or alc that is calculated by sla
202757 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
202758 (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'))
202759
202760 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
202761 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
202762 AND (l_actual_flag = 'A')) THEN
202763 XLA_AE_LINES_PKG.CreateGainOrLossLines(
202764 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
202765 ,p_application_id => p_application_id
202766 ,p_amb_context_code => 'DEFAULT'
202767 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
202768 ,p_event_class_code => C_EVENT_CLASS_CODE
202769 ,p_event_type_code => C_EVENT_TYPE_CODE
202770
202771 ,p_gain_ccid => -1
202772 ,p_loss_ccid => -1
202773
202774 ,p_actual_flag => l_actual_flag
202775 ,p_enc_flag => null
202776 ,p_actual_g_l_ref => l_actual_gain_loss_ref
202777 ,p_enc_g_l_ref => null
202778 );
202779 END IF;
202780 END IF;
202781 END IF;
202782
202783 ELSE
202784 --
202785 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
202786 --
202787 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202788 trace
202789 (p_msg => 'Trancaction revesal option is Y'
202790 ,p_level => C_LEVEL_STATEMENT
202791 ,p_module => l_log_module);
202792 END IF;
202793 END IF;
202794
202795 END LOOP;
202796 l_result := XLA_AE_LINES_PKG.InsertLines ;
202797 end loop;
202798 close line_cur;
202799
202800
202801 --
202802 -- insert headers into xla_ae_headers_gt table
202803 --
202804 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
202805
202806 -- insert into errors table here.
202807
202808 END LOOP;
202809
202810 --
202811 -- 4865292
202812 --
202813 -- Compare g_hdr_extract_count with event count in
202814 -- CreateHeadersAndLines.
202815 --
202816 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
202817
202818 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202819 trace (p_msg => '# rows extracted from header extract objects '
202820 || ' (running total): '
202821 || g_hdr_extract_count
202822 ,p_level => C_LEVEL_STATEMENT
202823 ,p_module => l_log_module);
202824 END IF;
202825
202826 CLOSE header_cur;
202827 --
202828
202829 --
202830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202831 trace
202832 (p_msg => 'END of EventType_303'
202833 ,p_level => C_LEVEL_PROCEDURE
202834 ,p_module => l_log_module);
202835 END IF;
202836 --
202837 RETURN l_result;
202838 EXCEPTION
202839 WHEN xla_exceptions_pkg.application_exception THEN
202840
202841 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
202842
202843
202844 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
202845
202846 RAISE;
202847
202848 WHEN NO_DATA_FOUND THEN
202849
202850 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
202851 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
202852
202853 FOR header_record IN header_cur
202854 LOOP
202855 l_array_header_events(header_record.event_id) := header_record.event_id;
202856 END LOOP;
202857
202858 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
202859 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
202860
202861 fnd_file.put_line(fnd_file.LOG, ' ');
202862 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
202863 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
202864 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
202865
202866 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
202867 LOOP
202868 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
202869 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
202870 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
202871 END IF;
202872 END LOOP;
202873
202874 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
202875 fnd_file.put_line(fnd_file.LOG, ' ');
202876
202877
202878 xla_exceptions_pkg.raise_message
202879 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_303');
202880
202881
202882 WHEN OTHERS THEN
202883 xla_exceptions_pkg.raise_message
202884 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventType_303');
202885 END EventType_303;
202886 --
202887
202888 ---------------------------------------
202889 --
202890 -- PRIVATE PROCEDURE
202891 -- insert_sources_304
202892 --
202893 ----------------------------------------
202894 --
202895 PROCEDURE insert_sources_304(
202896 p_target_ledger_id IN NUMBER
202897 , p_language IN VARCHAR2
202898 , p_sla_ledger_id IN NUMBER
202899 , p_pad_start_date IN DATE
202900 , p_pad_end_date IN DATE
202901 )
202902 IS
202903
202904 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'VARIANCE_ALL';
202905 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'VARIANCE';
202906 p_apps_owner VARCHAR2(30);
202907 l_log_module VARCHAR2(240);
202908 BEGIN
202909 IF g_log_enabled THEN
202910 l_log_module := C_DEFAULT_MODULE||'.insert_sources_304';
202911 END IF;
202912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
202913
202914 trace
202915 (p_msg => 'BEGIN of insert_sources_304'
202916 ,p_level => C_LEVEL_PROCEDURE
202917 ,p_module => l_log_module);
202918
202919 END IF;
202920
202921 -- select APPS owner
202922 SELECT oracle_username
202923 INTO p_apps_owner
202924 FROM fnd_oracle_userid
202925 WHERE read_only_flag = 'U'
202926 ;
202927
202928 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
202929 trace
202930 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
202931 ' - p_language = '||p_language||
202932 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
202933 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
202934 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
202935 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
202936 ,p_level => C_LEVEL_STATEMENT
202937 ,p_module => l_log_module);
202938 END IF;
202939
202940
202941 --
202942 INSERT INTO xla_diag_sources --hdr2
202943 (
202944 event_id
202945 , ledger_id
202946 , sla_ledger_id
202947 , description_language
202948 , object_name
202949 , object_type_code
202950 , line_number
202951 , source_application_id
202952 , source_type_code
202953 , source_code
202954 , source_value
202955 , source_meaning
202956 , created_by
202957 , creation_date
202958 , last_update_date
202959 , last_updated_by
202960 , last_update_login
202961 , program_update_date
202962 , program_application_id
202963 , program_id
202964 , request_id
202965 )
202966 SELECT
202967 event_id
202968 , p_target_ledger_id
202969 , p_sla_ledger_id
202970 , p_language
202971 , object_name
202972 , object_type_code
202973 , line_number
202974 , source_application_id
202975 , source_type_code
202976 , source_code
202977 , SUBSTR(source_value ,1,1996)
202978 , SUBSTR(source_meaning ,1,200)
202979 , xla_environment_pkg.g_Usr_Id
202980 , TRUNC(SYSDATE)
202981 , TRUNC(SYSDATE)
202982 , xla_environment_pkg.g_Usr_Id
202983 , xla_environment_pkg.g_Login_Id
202984 , TRUNC(SYSDATE)
202985 , xla_environment_pkg.g_Prog_Appl_Id
202986 , xla_environment_pkg.g_Prog_Id
202987 , xla_environment_pkg.g_Req_Id
202988 FROM (
202989 SELECT xet.event_id event_id
202990 , 0 line_number
202991 , CASE r
202992 WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V'
202993 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V'
202994 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V'
202995 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V'
202996 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V'
202997 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V'
202998
202999 ELSE null
203000 END object_name
203001 , CASE r
203002 WHEN 1 THEN 'HEADER'
203003 WHEN 2 THEN 'HEADER'
203004 WHEN 3 THEN 'HEADER'
203005 WHEN 4 THEN 'HEADER'
203006 WHEN 5 THEN 'HEADER'
203007 WHEN 6 THEN 'HEADER'
203008
203009 ELSE null
203010 END object_type_code
203011 , CASE r
203012 WHEN 1 THEN '707'
203013 WHEN 2 THEN '707'
203014 WHEN 3 THEN '707'
203015 WHEN 4 THEN '707'
203016 WHEN 5 THEN '707'
203017 WHEN 6 THEN '707'
203018
203019 ELSE null
203020 END source_application_id
203021 , 'S' source_type_code
203022 , CASE r
203023 WHEN 1 THEN 'DISTRIBUTION_TYPE'
203024 WHEN 2 THEN 'CURRENCY_CODE'
203025 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
203026 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
203027 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
203028 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
203029
203030 ELSE null
203031 END source_code
203032 , CASE r
203033 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
203034 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
203035 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
203036 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
203037 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
203038 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
203039
203040 ELSE null
203041 END source_value
203042 , CASE r
203043 WHEN 1 THEN fvl12.meaning
203044 WHEN 6 THEN fvl38.meaning
203045
203046 ELSE null
203047 END source_meaning
203048 FROM xla_events_gt xet
203049 , CST_XLA_WIP_HEADERS_V h1
203050 , fnd_lookup_values fvl12
203051 , fnd_lookup_values fvl38
203052 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
203053 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
203054 AND xet.event_class_code = C_EVENT_CLASS_CODE
203055 AND h1.event_id = xet.event_id
203056 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
203057 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
203058 AND fvl12.view_application_id(+) = 700
203059 AND fvl12.language(+) = USERENV('LANG')
203060 AND fvl38.lookup_type(+) = 'YES_NO'
203061 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
203062 AND fvl38.view_application_id(+) = 0
203063 AND fvl38.language(+) = USERENV('LANG')
203064
203065 )
203066 ;
203067 --
203068 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203069
203070 trace
203071 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
203072 ,p_level => C_LEVEL_STATEMENT
203073 ,p_module => l_log_module);
203074
203075 END IF;
203076 --
203077
203078
203079
203080 --
203081 INSERT INTO xla_diag_sources --line2
203082 (
203083 event_id
203084 , ledger_id
203085 , sla_ledger_id
203086 , description_language
203087 , object_name
203088 , object_type_code
203089 , line_number
203090 , source_application_id
203091 , source_type_code
203092 , source_code
203093 , source_value
203094 , source_meaning
203095 , created_by
203096 , creation_date
203097 , last_update_date
203098 , last_updated_by
203099 , last_update_login
203100 , program_update_date
203101 , program_application_id
203102 , program_id
203103 , request_id
203104 )
203105 SELECT event_id
203106 , p_target_ledger_id
203107 , p_sla_ledger_id
203108 , p_language
203109 , object_name
203110 , object_type_code
203111 , line_number
203112 , source_application_id
203113 , source_type_code
203114 , source_code
203115 , SUBSTR(source_value,1,1996)
203116 , SUBSTR(source_meaning ,1,200)
203117 , xla_environment_pkg.g_Usr_Id
203118 , TRUNC(SYSDATE)
203119 , TRUNC(SYSDATE)
203120 , xla_environment_pkg.g_Usr_Id
203121 , xla_environment_pkg.g_Login_Id
203122 , TRUNC(SYSDATE)
203123 , xla_environment_pkg.g_Prog_Appl_Id
203124 , xla_environment_pkg.g_Prog_Id
203125 , xla_environment_pkg.g_Req_Id
203126 FROM (
203127 SELECT xet.event_id event_id
203128 , l2.line_number line_number
203129 , CASE r
203130 WHEN 1 THEN 'CST_XLA_WIP_LINES_V'
203131 WHEN 2 THEN 'CST_XLA_WIP_LINES_V'
203132 WHEN 3 THEN 'CST_XLA_WIP_LINES_V'
203133 WHEN 4 THEN 'CST_XLA_WIP_LINES_V'
203134 WHEN 5 THEN 'CST_XLA_WIP_LINES_V'
203135
203136 ELSE null
203137 END object_name
203138 , CASE r
203139 WHEN 1 THEN 'LINE'
203140 WHEN 2 THEN 'LINE'
203141 WHEN 3 THEN 'LINE'
203142 WHEN 4 THEN 'LINE'
203143 WHEN 5 THEN 'LINE'
203144
203145 ELSE null
203146 END object_type_code
203147 , CASE r
203148 WHEN 1 THEN '707'
203149 WHEN 2 THEN '707'
203150 WHEN 3 THEN '707'
203151 WHEN 4 THEN '707'
203152 WHEN 5 THEN '707'
203153
203154 ELSE null
203155 END source_application_id
203156 , 'S' source_type_code
203157 , CASE r
203158 WHEN 1 THEN 'CODE_COMBINATION_ID'
203159 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
203160 WHEN 3 THEN 'ENTERED_AMOUNT'
203161 WHEN 4 THEN 'ACCOUNTED_AMOUNT'
203162 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE'
203163
203164 ELSE null
203165 END source_code
203166 , CASE r
203167 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
203168 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
203169 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
203170 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
203171 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
203172
203173 ELSE null
203174 END source_value
203175 , null source_meaning
203176 FROM xla_events_gt xet
203177 , CST_XLA_WIP_LINES_V l2
203178 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
203179 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
203180 AND xet.event_class_code = C_EVENT_CLASS_CODE
203181 AND l2.event_id = xet.event_id
203182
203183 )
203184 ;
203185 --
203186 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203187
203188 trace
203189 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
203190 ,p_level => C_LEVEL_STATEMENT
203191 ,p_module => l_log_module);
203192
203193 END IF;
203194
203195
203196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
203197 trace
203198 (p_msg => 'END of insert_sources_304'
203199 ,p_level => C_LEVEL_PROCEDURE
203200 ,p_module => l_log_module);
203201 END IF;
203202 EXCEPTION
203203 WHEN xla_exceptions_pkg.application_exception THEN
203204 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
203205 trace
203206 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
203207 ,p_level => C_LEVEL_EXCEPTION
203208 ,p_module => l_log_module);
203209 END IF;
203210 RAISE;
203211 WHEN OTHERS THEN
203212 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
203213 trace
203214 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
203215 ,p_level => C_LEVEL_EXCEPTION
203216 ,p_module => l_log_module);
203217 END IF;
203218 xla_exceptions_pkg.raise_message
203219 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_304');
203220 END insert_sources_304;
203221 --
203222
203223 ---------------------------------------
203224 --
203225 -- PRIVATE FUNCTION
203226 -- EventClass_304
203227 --
203228 ----------------------------------------
203229 --
203230 FUNCTION EventClass_304
203231 (p_application_id IN NUMBER
203232 ,p_base_ledger_id IN NUMBER
203233 ,p_target_ledger_id IN NUMBER
203234 ,p_language IN VARCHAR2
203235 ,p_currency_code IN VARCHAR2
203236 ,p_sla_ledger_id IN NUMBER
203237 ,p_pad_start_date IN DATE
203238 ,p_pad_end_date IN DATE
203239 ,p_primary_ledger_id IN NUMBER)
203240 RETURN BOOLEAN IS
203241 --
203242 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'VARIANCE_ALL';
203243 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'VARIANCE';
203244
203245 l_calculate_acctd_flag VARCHAR2(1) :='N';
203246 l_calculate_g_l_flag VARCHAR2(1) :='N';
203247 --
203248 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203249 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203250 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
203251 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
203252 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203253 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
203254 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
203255 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203256 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203257 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203258 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203259 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203260 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203261 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
203262 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
203263 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
203264 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
203265 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
203266 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203267 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203268 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203269 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
203270 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
203271 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
203272 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
203273 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
203274
203275 l_event_id NUMBER;
203276 l_previous_event_id NUMBER;
203277 l_first_event_id NUMBER;
203278 l_last_event_id NUMBER;
203279
203280 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
203281 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
203282 --
203283 --
203284 l_result BOOLEAN := TRUE;
203285 l_rows NUMBER := 1000;
203286 l_event_type_name VARCHAR2(80) := 'All';
203287 l_event_class_name VARCHAR2(80) := 'WIP Variance';
203288 l_description VARCHAR2(4000);
203289 l_transaction_reversal NUMBER;
203290 l_ae_header_id NUMBER;
203291 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
203292 l_log_module VARCHAR2(240);
203293 --
203294 l_acct_reversal_source VARCHAR2(30);
203295 l_trx_reversal_source VARCHAR2(30);
203296
203297 l_continue_with_lines BOOLEAN := TRUE;
203298 --
203299 l_acc_rev_gl_date_source DATE; -- 4262811
203300 --
203301 type t_array_event_id is table of number index by binary_integer;
203302
203303 l_rec_array_event t_rec_array_event;
203304 l_null_rec_array_event t_rec_array_event;
203305 l_array_ae_header_id xla_number_array_type;
203306 l_actual_flag VARCHAR2(1) := NULL;
203307 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
203308 l_balance_type_code VARCHAR2(1) :=NULL;
203309 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
203310
203311 --
203312 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
203313 --
203314
203315 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
203316 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
203317 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
203318 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
203319 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
203320 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
203321
203322 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
203323 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
203324 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
203325 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
203326 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
203327
203328 l_array_source_12 t_array_source_12;
203329 l_array_source_12_meaning t_array_lookup_meaning;
203330 l_array_source_15 t_array_source_15;
203331 l_array_source_19 t_array_source_19;
203332 l_array_source_20 t_array_source_20;
203333 l_array_source_21 t_array_source_21;
203334 l_array_source_38 t_array_source_38;
203335 l_array_source_38_meaning t_array_lookup_meaning;
203336
203337 l_array_source_4 t_array_source_4;
203338 l_array_source_11 t_array_source_11;
203339 l_array_source_18 t_array_source_18;
203340 l_array_source_22 t_array_source_22;
203341 l_array_source_24 t_array_source_24;
203342
203343 --
203344 CURSOR header_cur
203345 IS
203346 SELECT /*+ leading(xet) cardinality(xet,1) */
203347 -- Event Class Code: VARIANCE
203348 xet.entity_id
203349 ,xet.legal_entity_id
203350 ,xet.entity_code
203351 ,xet.transaction_number
203352 ,xet.event_id
203353 ,xet.event_class_code
203354 ,xet.event_type_code
203355 ,xet.event_number
203356 ,xet.event_date
203357 ,xet.transaction_date
203358 ,xet.reference_num_1
203359 ,xet.reference_num_2
203360 ,xet.reference_num_3
203361 ,xet.reference_num_4
203362 ,xet.reference_char_1
203363 ,xet.reference_char_2
203364 ,xet.reference_char_3
203365 ,xet.reference_char_4
203366 ,xet.reference_date_1
203367 ,xet.reference_date_2
203368 ,xet.reference_date_3
203369 ,xet.reference_date_4
203370 ,xet.event_created_by
203371 ,xet.budgetary_control_flag
203372 , h1.DISTRIBUTION_TYPE source_12
203373 , fvl12.meaning source_12_meaning
203374 , h1.CURRENCY_CODE source_15
203375 , h1.CURRENCY_CONVERSION_DATE source_19
203376 , h1.CURRENCY_CONVERSION_RATE source_20
203377 , h1.CURRENCY_CONVERSION_TYPE source_21
203378 , h1.TRANSFER_TO_GL_INDICATOR source_38
203379 , fvl38.meaning source_38_meaning
203380 FROM xla_events_gt xet
203381 , CST_XLA_WIP_HEADERS_V h1
203382 , fnd_lookup_values fvl12
203383 , fnd_lookup_values fvl38
203384 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
203385 and xet.event_class_code = C_EVENT_CLASS_CODE
203386 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
203387 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
203388 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
203389 AND fvl12.view_application_id(+) = 700
203390 AND fvl12.language(+) = USERENV('LANG')
203391 AND fvl38.lookup_type(+) = 'YES_NO'
203392 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
203393 AND fvl38.view_application_id(+) = 0
203394 AND fvl38.language(+) = USERENV('LANG')
203395
203396 ORDER BY event_id
203397 ;
203398
203399
203400 --
203401 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
203402 IS
203403 SELECT /*+ leading(xet) cardinality(xet,1) */
203404 -- Event Class Code: VARIANCE
203405 xet.entity_id
203406 ,xet.legal_entity_id
203407 ,xet.entity_code
203408 ,xet.transaction_number
203409 ,xet.event_id
203410 ,xet.event_class_code
203411 ,xet.event_type_code
203412 ,xet.event_number
203413 ,xet.event_date
203414 ,xet.transaction_date
203415 ,xet.reference_num_1
203416 ,xet.reference_num_2
203417 ,xet.reference_num_3
203418 ,xet.reference_num_4
203419 ,xet.reference_char_1
203420 ,xet.reference_char_2
203421 ,xet.reference_char_3
203422 ,xet.reference_char_4
203423 ,xet.reference_date_1
203424 ,xet.reference_date_2
203425 ,xet.reference_date_3
203426 ,xet.reference_date_4
203427 ,xet.event_created_by
203428 ,xet.budgetary_control_flag
203429 , l2.LINE_NUMBER
203430 , l2.CODE_COMBINATION_ID source_4
203431 , l2.DISTRIBUTION_IDENTIFIER source_11
203432 , l2.ENTERED_AMOUNT source_18
203433 , l2.ACCOUNTED_AMOUNT source_22
203434 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
203435 FROM xla_events_gt xet
203436 , CST_XLA_WIP_LINES_V l2
203437 WHERE xet.event_id between x_first_event_id and x_last_event_id
203438 and xet.event_date between p_pad_start_date and p_pad_end_date
203439 and xet.event_class_code = C_EVENT_CLASS_CODE
203440 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
203441 ;
203442
203443 --
203444 BEGIN
203445 IF g_log_enabled THEN
203446 l_log_module := C_DEFAULT_MODULE||'.EventClass_304';
203447 END IF;
203448 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
203449 trace
203450 (p_msg => 'BEGIN of EventClass_304'
203451 ,p_level => C_LEVEL_PROCEDURE
203452 ,p_module => l_log_module);
203453 END IF;
203454
203455 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203456 trace
203457 (p_msg => 'p_application_id = '||p_application_id||
203458 ' - p_base_ledger_id = '||p_base_ledger_id||
203459 ' - p_target_ledger_id = '||p_target_ledger_id||
203460 ' - p_language = '||p_language||
203461 ' - p_currency_code = '||p_currency_code||
203462 ' - p_sla_ledger_id = '||p_sla_ledger_id
203463 ,p_level => C_LEVEL_STATEMENT
203464 ,p_module => l_log_module);
203465 END IF;
203466 --
203467 -- initialze arrays
203468 --
203469 g_array_event.DELETE;
203470 l_rec_array_event := l_null_rec_array_event;
203471 --
203472 --------------------------------------
203473 -- 4262811 Initialze MPA Line Number
203474 --------------------------------------
203475 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
203476
203477 --
203478
203479 --
203480 OPEN header_cur;
203481 --
203482 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203483 trace
203484 (p_msg => 'SQL - FETCH header_cur'
203485 ,p_level => C_LEVEL_STATEMENT
203486 ,p_module => l_log_module);
203487 END IF;
203488 --
203489 LOOP
203490 FETCH header_cur BULK COLLECT INTO
203491 l_array_entity_id
203492 , l_array_legal_entity_id
203493 , l_array_entity_code
203494 , l_array_transaction_num
203495 , l_array_event_id
203496 , l_array_class_code
203497 , l_array_event_type
203498 , l_array_event_number
203499 , l_array_event_date
203500 , l_array_transaction_date
203501 , l_array_reference_num_1
203502 , l_array_reference_num_2
203503 , l_array_reference_num_3
203504 , l_array_reference_num_4
203505 , l_array_reference_char_1
203506 , l_array_reference_char_2
203507 , l_array_reference_char_3
203508 , l_array_reference_char_4
203509 , l_array_reference_date_1
203510 , l_array_reference_date_2
203511 , l_array_reference_date_3
203512 , l_array_reference_date_4
203513 , l_array_event_created_by
203514 , l_array_budgetary_control_flag
203515 , l_array_source_12
203516 , l_array_source_12_meaning
203517 , l_array_source_15
203518 , l_array_source_19
203519 , l_array_source_20
203520 , l_array_source_21
203521 , l_array_source_38
203522 , l_array_source_38_meaning
203523 LIMIT l_rows;
203524 --
203525 IF (C_LEVEL_EVENT >= g_log_level) THEN
203526 trace
203527 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
203528 ,p_level => C_LEVEL_EVENT
203529 ,p_module => l_log_module);
203530 END IF;
203531 --
203532 EXIT WHEN l_array_entity_id.COUNT = 0;
203533
203534 -- initialize arrays
203535 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
203536 XLA_AE_LINES_PKG.g_rec_lines := NULL;
203537
203538 --
203539 -- Bug 4458708
203540 --
203541 XLA_AE_LINES_PKG.g_LineNumber := 0;
203542
203543
203544 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
203545 g_last_hdr_idx := l_array_event_id.LAST;
203546 --
203547 -- loop for the headers. Each iteration is for each header extract row
203548 -- fetched in header cursor
203549 --
203550 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
203551
203552 --
203553 -- set event info as cache for other routines to refer event attributes
203554 --
203555 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
203556 (p_application_id => p_application_id
203557 ,p_primary_ledger_id => p_primary_ledger_id
203558 ,p_base_ledger_id => p_base_ledger_id
203559 ,p_target_ledger_id => p_target_ledger_id
203560 ,p_entity_id => l_array_entity_id(hdr_idx)
203561 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
203562 ,p_entity_code => l_array_entity_code(hdr_idx)
203563 ,p_transaction_num => l_array_transaction_num(hdr_idx)
203564 ,p_event_id => l_array_event_id(hdr_idx)
203565 ,p_event_class_code => l_array_class_code(hdr_idx)
203566 ,p_event_type_code => l_array_event_type(hdr_idx)
203567 ,p_event_number => l_array_event_number(hdr_idx)
203568 ,p_event_date => l_array_event_date(hdr_idx)
203569 ,p_transaction_date => l_array_transaction_date(hdr_idx)
203570 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
203571 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
203572 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
203573 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
203574 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
203575 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
203576 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
203577 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
203578 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
203579 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
203580 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
203581 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
203582 ,p_event_created_by => l_array_event_created_by(hdr_idx)
203583 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
203584
203585 --
203586 -- set the status of entry to C_VALID (0)
203587 --
203588 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
203589
203590 --
203591 -- initialize a row for ae header
203592 --
203593 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
203594
203595 l_event_id := l_array_event_id(hdr_idx);
203596
203597 --
203598 -- storing the hdr_idx for event. May be used by line cursor.
203599 --
203600 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
203601
203602 --
203603 -- store sources from header extract. This can be improved to
203604 -- store only those sources from header extract that may be used in lines
203605 --
203606
203607 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
203608 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
203609 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
203610 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
203611 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
203612 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
203613 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
203614 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
203615
203616 --
203617 -- initilaize the status of ae headers for diffrent balance types
203618 -- the status is initialised to C_NOT_CREATED (2)
203619 --
203620 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
203621 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
203622 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
203623
203624 --
203625 -- call api to validate and store accounting attributes for header
203626 --
203627
203628 ------------------------------------------------------------
203629 -- Accrual Reversal : to get date for Standard Source (NONE)
203630 ------------------------------------------------------------
203631 l_acc_rev_gl_date_source := NULL;
203632
203633 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
203634 l_rec_acct_attrs.array_date_value(1) :=
203635 xla_ae_sources_pkg.GetSystemSourceDate(
203636 p_source_code => 'XLA_REFERENCE_DATE_1'
203637 , p_source_type_code => 'Y'
203638 , p_source_application_id => 602
203639 );
203640 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
203641 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
203642
203643
203644 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
203645
203646 XLA_AE_HEADER_PKG.SetJeCategoryName;
203647
203648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
203649 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
203650 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
203651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
203652 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
203653
203654
203655 -- No header level analytical criteria
203656
203657 --
203658 --accounting attribute enhancement, bug 3612931
203659 --
203660 l_trx_reversal_source := SUBSTR(NULL, 1,30);
203661
203662 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
203663 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
203664
203665 xla_accounting_err_pkg.build_message
203666 (p_appli_s_name => 'XLA'
203667 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
203668 ,p_token_1 => 'ACCT_ATTR_NAME'
203669 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
203670 ,p_token_2 => 'PRODUCT_NAME'
203671 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
203672 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
203673 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
203674 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
203675
203676 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
203677 --
203678 -- following sets the accounting attributes needed to reverse
203679 -- accounting for a distributeion
203680 --
203681 xla_ae_lines_pkg.SetTrxReversalAttrs
203682 (p_event_id => l_event_id
203683 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
203684 ,p_trx_reversal_source => l_trx_reversal_source);
203685
203686 END IF;
203687
203688
203689 ----------------------------------------------------------------
203690 -- 4262811 - update the header statuses to invalid in need be
203691 ----------------------------------------------------------------
203692 --
203693 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
203694
203695
203696 -----------------------------------------------
203697 -- No accrual reversal for the event class/type
203698 -----------------------------------------------
203699 ----------------------------------------------------------------
203700
203701 --
203702 -- this ends the header loop iteration for one bulk fetch
203703 --
203704 END LOOP;
203705
203706 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
203707 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
203708
203709 --
203710 -- insert dummy rows into lines gt table that were created due to
203711 -- transaction reversals
203712 --
203713 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
203714 l_result := XLA_AE_LINES_PKG.InsertLines;
203715 END IF;
203716
203717 --
203718 -- reset the temp_line_num for each set of events fetched from header
203719 -- cursor rather than doing it for each new event in line cursor
203720 -- Bug 3939231
203721 --
203722 xla_ae_lines_pkg.g_temp_line_num := 0;
203723
203724
203725
203726 --
203727 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
203728 --
203729 --
203730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203731
203732 trace
203733 (p_msg => 'SQL - FETCH line_cur'
203734 ,p_level => C_LEVEL_STATEMENT
203735 ,p_module => l_log_module);
203736
203737 END IF;
203738 --
203739 --
203740 LOOP
203741 --
203742 FETCH line_cur BULK COLLECT INTO
203743 l_array_entity_id
203744 , l_array_legal_entity_id
203745 , l_array_entity_code
203746 , l_array_transaction_num
203747 , l_array_event_id
203748 , l_array_class_code
203749 , l_array_event_type
203750 , l_array_event_number
203751 , l_array_event_date
203752 , l_array_transaction_date
203753 , l_array_reference_num_1
203754 , l_array_reference_num_2
203755 , l_array_reference_num_3
203756 , l_array_reference_num_4
203757 , l_array_reference_char_1
203758 , l_array_reference_char_2
203759 , l_array_reference_char_3
203760 , l_array_reference_char_4
203761 , l_array_reference_date_1
203762 , l_array_reference_date_2
203763 , l_array_reference_date_3
203764 , l_array_reference_date_4
203765 , l_array_event_created_by
203766 , l_array_budgetary_control_flag
203767 , l_array_extract_line_num
203768 , l_array_source_4
203769 , l_array_source_11
203770 , l_array_source_18
203771 , l_array_source_22
203772 , l_array_source_24
203773 LIMIT l_rows;
203774
203775 --
203776 IF (C_LEVEL_EVENT >= g_log_level) THEN
203777 trace
203778 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
203779 ,p_level => C_LEVEL_EVENT
203780 ,p_module => l_log_module);
203781 END IF;
203782 --
203783 EXIT WHEN l_array_entity_id.count = 0;
203784
203785 XLA_AE_LINES_PKG.g_rec_lines := null;
203786
203787 --
203788 -- Bug 4458708
203789 --
203790 XLA_AE_LINES_PKG.g_LineNumber := 0;
203791 --
203792 --
203793
203794 FOR Idx IN 1..l_array_event_id.count LOOP
203795 --
203796 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
203797 --
203798 l_event_id := l_array_event_id(idx); -- 5648433
203799
203800 --
203801 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
203802 --
203803
203804 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
203805 (g_array_event(l_event_id).array_value_num('header_index'))
203806 ,'N'
203807 ) <> 'Y'
203808 THEN
203809 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203810 trace
203811 (p_msg => 'Trancaction revesal option is not Y '
203812 ,p_level => C_LEVEL_STATEMENT
203813 ,p_module => l_log_module);
203814 END IF;
203815
203816 --
203817 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
203818 --
203819 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
203820 --
203821 -- set event info as cache for other routines to refer event attributes
203822 --
203823
203824 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
203825 l_previous_event_id := l_event_id;
203826
203827 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
203828 (p_application_id => p_application_id
203829 ,p_primary_ledger_id => p_primary_ledger_id
203830 ,p_base_ledger_id => p_base_ledger_id
203831 ,p_target_ledger_id => p_target_ledger_id
203832 ,p_entity_id => l_array_entity_id(Idx)
203833 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
203834 ,p_entity_code => l_array_entity_code(Idx)
203835 ,p_transaction_num => l_array_transaction_num(Idx)
203836 ,p_event_id => l_array_event_id(Idx)
203837 ,p_event_class_code => l_array_class_code(Idx)
203838 ,p_event_type_code => l_array_event_type(Idx)
203839 ,p_event_number => l_array_event_number(Idx)
203840 ,p_event_date => l_array_event_date(Idx)
203841 ,p_transaction_date => l_array_transaction_date(Idx)
203842 ,p_reference_num_1 => l_array_reference_num_1(Idx)
203843 ,p_reference_num_2 => l_array_reference_num_2(Idx)
203844 ,p_reference_num_3 => l_array_reference_num_3(Idx)
203845 ,p_reference_num_4 => l_array_reference_num_4(Idx)
203846 ,p_reference_char_1 => l_array_reference_char_1(Idx)
203847 ,p_reference_char_2 => l_array_reference_char_2(Idx)
203848 ,p_reference_char_3 => l_array_reference_char_3(Idx)
203849 ,p_reference_char_4 => l_array_reference_char_4(Idx)
203850 ,p_reference_date_1 => l_array_reference_date_1(Idx)
203851 ,p_reference_date_2 => l_array_reference_date_2(Idx)
203852 ,p_reference_date_3 => l_array_reference_date_3(Idx)
203853 ,p_reference_date_4 => l_array_reference_date_4(Idx)
203854 ,p_event_created_by => l_array_event_created_by(Idx)
203855 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
203856 --
203857 END IF;
203858
203859
203860
203861 --
203862 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
203863
203864 l_acct_reversal_source := SUBSTR(NULL, 1,30);
203865
203866 IF l_continue_with_lines THEN
203867 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
203868 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
203869
203870 xla_accounting_err_pkg.build_message
203871 (p_appli_s_name => 'XLA'
203872 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
203873 ,p_token_1 => 'LINE_NUMBER'
203874 ,p_value_1 => l_array_extract_line_num(Idx)
203875 ,p_token_2 => 'PRODUCT_NAME'
203876 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
203877 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
203878 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
203879 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
203880
203881 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
203882 --
203883 -- following sets the accounting attributes needed to reverse
203884 -- accounting for a distributeion
203885 --
203886
203887 --
203888 -- 5217187
203889 --
203890 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
203891 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
203892 g_array_event(l_event_id).array_value_num('header_index'));
203893 --
203894 --
203895
203896 -- No reversal code generated
203897
203898 xla_ae_lines_pkg.SetAcctReversalAttrs
203899 (p_event_id => l_event_id
203900 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
203901 ,p_calculate_acctd_flag => l_calculate_acctd_flag
203902 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
203903 END IF;
203904
203905 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
203906 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
203907
203908 --
203909 AcctLineType_250 (
203910 p_application_id => p_application_id
203911 ,p_event_id => l_event_id
203912 ,p_calculate_acctd_flag => l_calculate_acctd_flag
203913 ,p_calculate_g_l_flag => l_calculate_g_l_flag
203914 ,p_actual_flag => l_actual_flag
203915 ,p_balance_type_code => l_balance_type_code
203916 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
203917
203918 , p_source_4 => l_array_source_4(Idx)
203919 , p_source_11 => l_array_source_11(Idx)
203920 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
203921 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
203922 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
203923 , p_source_18 => l_array_source_18(Idx)
203924 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
203925 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
203926 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
203927 , p_source_22 => l_array_source_22(Idx)
203928 , p_source_24 => l_array_source_24(Idx)
203929 );
203930 If(l_balance_type_code = 'A') THEN
203931 l_actual_gain_loss_ref := l_gain_or_loss_ref;
203932 END IF;
203933
203934 --
203935
203936
203937 --
203938 AcctLineType_256 (
203939 p_application_id => p_application_id
203940 ,p_event_id => l_event_id
203941 ,p_calculate_acctd_flag => l_calculate_acctd_flag
203942 ,p_calculate_g_l_flag => l_calculate_g_l_flag
203943 ,p_actual_flag => l_actual_flag
203944 ,p_balance_type_code => l_balance_type_code
203945 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
203946
203947 , p_source_4 => l_array_source_4(Idx)
203948 , p_source_11 => l_array_source_11(Idx)
203949 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
203950 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
203951 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
203952 , p_source_18 => l_array_source_18(Idx)
203953 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
203954 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
203955 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
203956 , p_source_22 => l_array_source_22(Idx)
203957 , p_source_24 => l_array_source_24(Idx)
203958 );
203959 If(l_balance_type_code = 'A') THEN
203960 l_actual_gain_loss_ref := l_gain_or_loss_ref;
203961 END IF;
203962
203963 --
203964
203965 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
203966 -- or secondary ledger that has different currency with primary
203967 -- or alc that is calculated by sla
203968 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
203969 (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'))
203970
203971 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
203972 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
203973 AND (l_actual_flag = 'A')) THEN
203974 XLA_AE_LINES_PKG.CreateGainOrLossLines(
203975 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
203976 ,p_application_id => p_application_id
203977 ,p_amb_context_code => 'DEFAULT'
203978 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
203979 ,p_event_class_code => C_EVENT_CLASS_CODE
203980 ,p_event_type_code => C_EVENT_TYPE_CODE
203981
203982 ,p_gain_ccid => -1
203983 ,p_loss_ccid => -1
203984
203985 ,p_actual_flag => l_actual_flag
203986 ,p_enc_flag => null
203987 ,p_actual_g_l_ref => l_actual_gain_loss_ref
203988 ,p_enc_g_l_ref => null
203989 );
203990 END IF;
203991 END IF;
203992 END IF;
203993
203994 ELSE
203995 --
203996 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
203997 --
203998 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
203999 trace
204000 (p_msg => 'Trancaction revesal option is Y'
204001 ,p_level => C_LEVEL_STATEMENT
204002 ,p_module => l_log_module);
204003 END IF;
204004 END IF;
204005
204006 END LOOP;
204007 l_result := XLA_AE_LINES_PKG.InsertLines ;
204008 end loop;
204009 close line_cur;
204010
204011
204012 --
204013 -- insert headers into xla_ae_headers_gt table
204014 --
204015 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
204016
204017 -- insert into errors table here.
204018
204019 END LOOP;
204020
204021 --
204022 -- 4865292
204023 --
204024 -- Compare g_hdr_extract_count with event count in
204025 -- CreateHeadersAndLines.
204026 --
204027 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
204028
204029 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204030 trace (p_msg => '# rows extracted from header extract objects '
204031 || ' (running total): '
204032 || g_hdr_extract_count
204033 ,p_level => C_LEVEL_STATEMENT
204034 ,p_module => l_log_module);
204035 END IF;
204036
204037 CLOSE header_cur;
204038 --
204039
204040 --
204041 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204042 trace
204043 (p_msg => 'END of EventClass_304'
204044 ,p_level => C_LEVEL_PROCEDURE
204045 ,p_module => l_log_module);
204046 END IF;
204047 --
204048 RETURN l_result;
204049 EXCEPTION
204050 WHEN xla_exceptions_pkg.application_exception THEN
204051
204052 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
204053
204054
204055 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
204056
204057 RAISE;
204058
204059 WHEN NO_DATA_FOUND THEN
204060
204061 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
204062 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
204063
204064 FOR header_record IN header_cur
204065 LOOP
204066 l_array_header_events(header_record.event_id) := header_record.event_id;
204067 END LOOP;
204068
204069 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
204070 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
204071
204072 fnd_file.put_line(fnd_file.LOG, ' ');
204073 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
204074 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
204075 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
204076
204077 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
204078 LOOP
204079 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
204080 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
204081 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
204082 END IF;
204083 END LOOP;
204084
204085 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
204086 fnd_file.put_line(fnd_file.LOG, ' ');
204087
204088
204089 xla_exceptions_pkg.raise_message
204090 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_304');
204091
204092
204093 WHEN OTHERS THEN
204094 xla_exceptions_pkg.raise_message
204095 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_304');
204096 END EventClass_304;
204097 --
204098
204099 ---------------------------------------
204100 --
204101 -- PRIVATE PROCEDURE
204102 -- insert_sources_305
204103 --
204104 ----------------------------------------
204105 --
204106 PROCEDURE insert_sources_305(
204107 p_target_ledger_id IN NUMBER
204108 , p_language IN VARCHAR2
204109 , p_sla_ledger_id IN NUMBER
204110 , p_pad_start_date IN DATE
204111 , p_pad_end_date IN DATE
204112 )
204113 IS
204114
204115 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_COST_UPD_ALL';
204116 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_COST_UPD';
204117 p_apps_owner VARCHAR2(30);
204118 l_log_module VARCHAR2(240);
204119 BEGIN
204120 IF g_log_enabled THEN
204121 l_log_module := C_DEFAULT_MODULE||'.insert_sources_305';
204122 END IF;
204123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204124
204125 trace
204126 (p_msg => 'BEGIN of insert_sources_305'
204127 ,p_level => C_LEVEL_PROCEDURE
204128 ,p_module => l_log_module);
204129
204130 END IF;
204131
204132 -- select APPS owner
204133 SELECT oracle_username
204134 INTO p_apps_owner
204135 FROM fnd_oracle_userid
204136 WHERE read_only_flag = 'U'
204137 ;
204138
204139 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204140 trace
204141 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
204142 ' - p_language = '||p_language||
204143 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
204144 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
204145 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
204146 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
204147 ,p_level => C_LEVEL_STATEMENT
204148 ,p_module => l_log_module);
204149 END IF;
204150
204151
204152 --
204153 INSERT INTO xla_diag_sources --hdr2
204154 (
204155 event_id
204156 , ledger_id
204157 , sla_ledger_id
204158 , description_language
204159 , object_name
204160 , object_type_code
204161 , line_number
204162 , source_application_id
204163 , source_type_code
204164 , source_code
204165 , source_value
204166 , source_meaning
204167 , created_by
204168 , creation_date
204169 , last_update_date
204170 , last_updated_by
204171 , last_update_login
204172 , program_update_date
204173 , program_application_id
204174 , program_id
204175 , request_id
204176 )
204177 SELECT
204178 event_id
204179 , p_target_ledger_id
204180 , p_sla_ledger_id
204181 , p_language
204182 , object_name
204183 , object_type_code
204184 , line_number
204185 , source_application_id
204186 , source_type_code
204187 , source_code
204188 , SUBSTR(source_value ,1,1996)
204189 , SUBSTR(source_meaning ,1,200)
204190 , xla_environment_pkg.g_Usr_Id
204191 , TRUNC(SYSDATE)
204192 , TRUNC(SYSDATE)
204193 , xla_environment_pkg.g_Usr_Id
204194 , xla_environment_pkg.g_Login_Id
204195 , TRUNC(SYSDATE)
204196 , xla_environment_pkg.g_Prog_Appl_Id
204197 , xla_environment_pkg.g_Prog_Id
204198 , xla_environment_pkg.g_Req_Id
204199 FROM (
204200 SELECT xet.event_id event_id
204201 , 0 line_number
204202 , CASE r
204203 WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V'
204204 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V'
204205 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V'
204206 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V'
204207 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V'
204208 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V'
204209
204210 ELSE null
204211 END object_name
204212 , CASE r
204213 WHEN 1 THEN 'HEADER'
204214 WHEN 2 THEN 'HEADER'
204215 WHEN 3 THEN 'HEADER'
204216 WHEN 4 THEN 'HEADER'
204217 WHEN 5 THEN 'HEADER'
204218 WHEN 6 THEN 'HEADER'
204219
204220 ELSE null
204221 END object_type_code
204222 , CASE r
204223 WHEN 1 THEN '707'
204224 WHEN 2 THEN '707'
204225 WHEN 3 THEN '707'
204226 WHEN 4 THEN '707'
204227 WHEN 5 THEN '707'
204228 WHEN 6 THEN '707'
204229
204230 ELSE null
204231 END source_application_id
204232 , 'S' source_type_code
204233 , CASE r
204234 WHEN 1 THEN 'DISTRIBUTION_TYPE'
204235 WHEN 2 THEN 'CURRENCY_CODE'
204236 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
204237 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
204238 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
204239 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
204240
204241 ELSE null
204242 END source_code
204243 , CASE r
204244 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
204245 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
204246 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
204247 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
204248 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
204249 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
204250
204251 ELSE null
204252 END source_value
204253 , CASE r
204254 WHEN 1 THEN fvl12.meaning
204255 WHEN 6 THEN fvl38.meaning
204256
204257 ELSE null
204258 END source_meaning
204259 FROM xla_events_gt xet
204260 , CST_XLA_WIP_HEADERS_V h1
204261 , fnd_lookup_values fvl12
204262 , fnd_lookup_values fvl38
204263 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
204264 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
204265 AND xet.event_class_code = C_EVENT_CLASS_CODE
204266 AND h1.event_id = xet.event_id
204267 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
204268 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
204269 AND fvl12.view_application_id(+) = 700
204270 AND fvl12.language(+) = USERENV('LANG')
204271 AND fvl38.lookup_type(+) = 'YES_NO'
204272 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
204273 AND fvl38.view_application_id(+) = 0
204274 AND fvl38.language(+) = USERENV('LANG')
204275
204276 )
204277 ;
204278 --
204279 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204280
204281 trace
204282 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
204283 ,p_level => C_LEVEL_STATEMENT
204284 ,p_module => l_log_module);
204285
204286 END IF;
204287 --
204288
204289
204290
204291 --
204292 INSERT INTO xla_diag_sources --line2
204293 (
204294 event_id
204295 , ledger_id
204296 , sla_ledger_id
204297 , description_language
204298 , object_name
204299 , object_type_code
204300 , line_number
204301 , source_application_id
204302 , source_type_code
204303 , source_code
204304 , source_value
204305 , source_meaning
204306 , created_by
204307 , creation_date
204308 , last_update_date
204309 , last_updated_by
204310 , last_update_login
204311 , program_update_date
204312 , program_application_id
204313 , program_id
204314 , request_id
204315 )
204316 SELECT event_id
204317 , p_target_ledger_id
204318 , p_sla_ledger_id
204319 , p_language
204320 , object_name
204321 , object_type_code
204322 , line_number
204323 , source_application_id
204324 , source_type_code
204325 , source_code
204326 , SUBSTR(source_value,1,1996)
204327 , SUBSTR(source_meaning ,1,200)
204328 , xla_environment_pkg.g_Usr_Id
204329 , TRUNC(SYSDATE)
204330 , TRUNC(SYSDATE)
204331 , xla_environment_pkg.g_Usr_Id
204332 , xla_environment_pkg.g_Login_Id
204333 , TRUNC(SYSDATE)
204334 , xla_environment_pkg.g_Prog_Appl_Id
204335 , xla_environment_pkg.g_Prog_Id
204336 , xla_environment_pkg.g_Req_Id
204337 FROM (
204338 SELECT xet.event_id event_id
204339 , l2.line_number line_number
204340 , CASE r
204341 WHEN 1 THEN 'CST_XLA_WIP_LINES_V'
204342 WHEN 2 THEN 'CST_XLA_WIP_LINES_V'
204343 WHEN 3 THEN 'CST_XLA_WIP_LINES_V'
204344 WHEN 4 THEN 'CST_XLA_WIP_LINES_V'
204345 WHEN 5 THEN 'CST_XLA_WIP_LINES_V'
204346
204347 ELSE null
204348 END object_name
204349 , CASE r
204350 WHEN 1 THEN 'LINE'
204351 WHEN 2 THEN 'LINE'
204352 WHEN 3 THEN 'LINE'
204353 WHEN 4 THEN 'LINE'
204354 WHEN 5 THEN 'LINE'
204355
204356 ELSE null
204357 END object_type_code
204358 , CASE r
204359 WHEN 1 THEN '707'
204360 WHEN 2 THEN '707'
204361 WHEN 3 THEN '707'
204362 WHEN 4 THEN '707'
204363 WHEN 5 THEN '707'
204364
204365 ELSE null
204366 END source_application_id
204367 , 'S' source_type_code
204368 , CASE r
204369 WHEN 1 THEN 'CODE_COMBINATION_ID'
204370 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
204371 WHEN 3 THEN 'ENTERED_AMOUNT'
204372 WHEN 4 THEN 'ACCOUNTED_AMOUNT'
204373 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE'
204374
204375 ELSE null
204376 END source_code
204377 , CASE r
204378 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
204379 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
204380 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
204381 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
204382 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
204383
204384 ELSE null
204385 END source_value
204386 , null source_meaning
204387 FROM xla_events_gt xet
204388 , CST_XLA_WIP_LINES_V l2
204389 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
204390 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
204391 AND xet.event_class_code = C_EVENT_CLASS_CODE
204392 AND l2.event_id = xet.event_id
204393
204394 )
204395 ;
204396 --
204397 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204398
204399 trace
204400 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
204401 ,p_level => C_LEVEL_STATEMENT
204402 ,p_module => l_log_module);
204403
204404 END IF;
204405
204406
204407 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204408 trace
204409 (p_msg => 'END of insert_sources_305'
204410 ,p_level => C_LEVEL_PROCEDURE
204411 ,p_module => l_log_module);
204412 END IF;
204413 EXCEPTION
204414 WHEN xla_exceptions_pkg.application_exception THEN
204415 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
204416 trace
204417 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
204418 ,p_level => C_LEVEL_EXCEPTION
204419 ,p_module => l_log_module);
204420 END IF;
204421 RAISE;
204422 WHEN OTHERS THEN
204423 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
204424 trace
204425 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
204426 ,p_level => C_LEVEL_EXCEPTION
204427 ,p_module => l_log_module);
204428 END IF;
204429 xla_exceptions_pkg.raise_message
204430 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_305');
204431 END insert_sources_305;
204432 --
204433
204434 ---------------------------------------
204435 --
204436 -- PRIVATE FUNCTION
204437 -- EventClass_305
204438 --
204439 ----------------------------------------
204440 --
204441 FUNCTION EventClass_305
204442 (p_application_id IN NUMBER
204443 ,p_base_ledger_id IN NUMBER
204444 ,p_target_ledger_id IN NUMBER
204445 ,p_language IN VARCHAR2
204446 ,p_currency_code IN VARCHAR2
204447 ,p_sla_ledger_id IN NUMBER
204448 ,p_pad_start_date IN DATE
204449 ,p_pad_end_date IN DATE
204450 ,p_primary_ledger_id IN NUMBER)
204451 RETURN BOOLEAN IS
204452 --
204453 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_COST_UPD_ALL';
204454 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_COST_UPD';
204455
204456 l_calculate_acctd_flag VARCHAR2(1) :='N';
204457 l_calculate_g_l_flag VARCHAR2(1) :='N';
204458 --
204459 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204460 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204461 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
204462 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
204463 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204464 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
204465 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
204466 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204467 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204468 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204469 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204470 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204471 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204472 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
204473 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
204474 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
204475 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
204476 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
204477 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204478 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204479 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204480 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
204481 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
204482 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
204483 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
204484 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
204485
204486 l_event_id NUMBER;
204487 l_previous_event_id NUMBER;
204488 l_first_event_id NUMBER;
204489 l_last_event_id NUMBER;
204490
204491 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
204492 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
204493 --
204494 --
204495 l_result BOOLEAN := TRUE;
204496 l_rows NUMBER := 1000;
204497 l_event_type_name VARCHAR2(80) := 'All';
204498 l_event_class_name VARCHAR2(80) := 'WIP Cost Update';
204499 l_description VARCHAR2(4000);
204500 l_transaction_reversal NUMBER;
204501 l_ae_header_id NUMBER;
204502 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
204503 l_log_module VARCHAR2(240);
204504 --
204505 l_acct_reversal_source VARCHAR2(30);
204506 l_trx_reversal_source VARCHAR2(30);
204507
204508 l_continue_with_lines BOOLEAN := TRUE;
204509 --
204510 l_acc_rev_gl_date_source DATE; -- 4262811
204511 --
204512 type t_array_event_id is table of number index by binary_integer;
204513
204514 l_rec_array_event t_rec_array_event;
204515 l_null_rec_array_event t_rec_array_event;
204516 l_array_ae_header_id xla_number_array_type;
204517 l_actual_flag VARCHAR2(1) := NULL;
204518 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
204519 l_balance_type_code VARCHAR2(1) :=NULL;
204520 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
204521
204522 --
204523 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
204524 --
204525
204526 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
204527 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
204528 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
204529 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
204530 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
204531 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
204532
204533 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
204534 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
204535 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
204536 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
204537 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
204538
204539 l_array_source_12 t_array_source_12;
204540 l_array_source_12_meaning t_array_lookup_meaning;
204541 l_array_source_15 t_array_source_15;
204542 l_array_source_19 t_array_source_19;
204543 l_array_source_20 t_array_source_20;
204544 l_array_source_21 t_array_source_21;
204545 l_array_source_38 t_array_source_38;
204546 l_array_source_38_meaning t_array_lookup_meaning;
204547
204548 l_array_source_4 t_array_source_4;
204549 l_array_source_11 t_array_source_11;
204550 l_array_source_18 t_array_source_18;
204551 l_array_source_22 t_array_source_22;
204552 l_array_source_24 t_array_source_24;
204553
204554 --
204555 CURSOR header_cur
204556 IS
204557 SELECT /*+ leading(xet) cardinality(xet,1) */
204558 -- Event Class Code: WIP_COST_UPD
204559 xet.entity_id
204560 ,xet.legal_entity_id
204561 ,xet.entity_code
204562 ,xet.transaction_number
204563 ,xet.event_id
204564 ,xet.event_class_code
204565 ,xet.event_type_code
204566 ,xet.event_number
204567 ,xet.event_date
204568 ,xet.transaction_date
204569 ,xet.reference_num_1
204570 ,xet.reference_num_2
204571 ,xet.reference_num_3
204572 ,xet.reference_num_4
204573 ,xet.reference_char_1
204574 ,xet.reference_char_2
204575 ,xet.reference_char_3
204576 ,xet.reference_char_4
204577 ,xet.reference_date_1
204578 ,xet.reference_date_2
204579 ,xet.reference_date_3
204580 ,xet.reference_date_4
204581 ,xet.event_created_by
204582 ,xet.budgetary_control_flag
204583 , h1.DISTRIBUTION_TYPE source_12
204584 , fvl12.meaning source_12_meaning
204585 , h1.CURRENCY_CODE source_15
204586 , h1.CURRENCY_CONVERSION_DATE source_19
204587 , h1.CURRENCY_CONVERSION_RATE source_20
204588 , h1.CURRENCY_CONVERSION_TYPE source_21
204589 , h1.TRANSFER_TO_GL_INDICATOR source_38
204590 , fvl38.meaning source_38_meaning
204591 FROM xla_events_gt xet
204592 , CST_XLA_WIP_HEADERS_V h1
204593 , fnd_lookup_values fvl12
204594 , fnd_lookup_values fvl38
204595 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
204596 and xet.event_class_code = C_EVENT_CLASS_CODE
204597 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
204598 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
204599 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
204600 AND fvl12.view_application_id(+) = 700
204601 AND fvl12.language(+) = USERENV('LANG')
204602 AND fvl38.lookup_type(+) = 'YES_NO'
204603 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
204604 AND fvl38.view_application_id(+) = 0
204605 AND fvl38.language(+) = USERENV('LANG')
204606
204607 ORDER BY event_id
204608 ;
204609
204610
204611 --
204612 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
204613 IS
204614 SELECT /*+ leading(xet) cardinality(xet,1) */
204615 -- Event Class Code: WIP_COST_UPD
204616 xet.entity_id
204617 ,xet.legal_entity_id
204618 ,xet.entity_code
204619 ,xet.transaction_number
204620 ,xet.event_id
204621 ,xet.event_class_code
204622 ,xet.event_type_code
204623 ,xet.event_number
204624 ,xet.event_date
204625 ,xet.transaction_date
204626 ,xet.reference_num_1
204627 ,xet.reference_num_2
204628 ,xet.reference_num_3
204629 ,xet.reference_num_4
204630 ,xet.reference_char_1
204631 ,xet.reference_char_2
204632 ,xet.reference_char_3
204633 ,xet.reference_char_4
204634 ,xet.reference_date_1
204635 ,xet.reference_date_2
204636 ,xet.reference_date_3
204637 ,xet.reference_date_4
204638 ,xet.event_created_by
204639 ,xet.budgetary_control_flag
204640 , l2.LINE_NUMBER
204641 , l2.CODE_COMBINATION_ID source_4
204642 , l2.DISTRIBUTION_IDENTIFIER source_11
204643 , l2.ENTERED_AMOUNT source_18
204644 , l2.ACCOUNTED_AMOUNT source_22
204645 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
204646 FROM xla_events_gt xet
204647 , CST_XLA_WIP_LINES_V l2
204648 WHERE xet.event_id between x_first_event_id and x_last_event_id
204649 and xet.event_date between p_pad_start_date and p_pad_end_date
204650 and xet.event_class_code = C_EVENT_CLASS_CODE
204651 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
204652 ;
204653
204654 --
204655 BEGIN
204656 IF g_log_enabled THEN
204657 l_log_module := C_DEFAULT_MODULE||'.EventClass_305';
204658 END IF;
204659 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
204660 trace
204661 (p_msg => 'BEGIN of EventClass_305'
204662 ,p_level => C_LEVEL_PROCEDURE
204663 ,p_module => l_log_module);
204664 END IF;
204665
204666 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204667 trace
204668 (p_msg => 'p_application_id = '||p_application_id||
204669 ' - p_base_ledger_id = '||p_base_ledger_id||
204670 ' - p_target_ledger_id = '||p_target_ledger_id||
204671 ' - p_language = '||p_language||
204672 ' - p_currency_code = '||p_currency_code||
204673 ' - p_sla_ledger_id = '||p_sla_ledger_id
204674 ,p_level => C_LEVEL_STATEMENT
204675 ,p_module => l_log_module);
204676 END IF;
204677 --
204678 -- initialze arrays
204679 --
204680 g_array_event.DELETE;
204681 l_rec_array_event := l_null_rec_array_event;
204682 --
204683 --------------------------------------
204684 -- 4262811 Initialze MPA Line Number
204685 --------------------------------------
204686 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
204687
204688 --
204689
204690 --
204691 OPEN header_cur;
204692 --
204693 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204694 trace
204695 (p_msg => 'SQL - FETCH header_cur'
204696 ,p_level => C_LEVEL_STATEMENT
204697 ,p_module => l_log_module);
204698 END IF;
204699 --
204700 LOOP
204701 FETCH header_cur BULK COLLECT INTO
204702 l_array_entity_id
204703 , l_array_legal_entity_id
204704 , l_array_entity_code
204705 , l_array_transaction_num
204706 , l_array_event_id
204707 , l_array_class_code
204708 , l_array_event_type
204709 , l_array_event_number
204710 , l_array_event_date
204711 , l_array_transaction_date
204712 , l_array_reference_num_1
204713 , l_array_reference_num_2
204714 , l_array_reference_num_3
204715 , l_array_reference_num_4
204716 , l_array_reference_char_1
204717 , l_array_reference_char_2
204718 , l_array_reference_char_3
204719 , l_array_reference_char_4
204720 , l_array_reference_date_1
204721 , l_array_reference_date_2
204722 , l_array_reference_date_3
204723 , l_array_reference_date_4
204724 , l_array_event_created_by
204725 , l_array_budgetary_control_flag
204726 , l_array_source_12
204727 , l_array_source_12_meaning
204728 , l_array_source_15
204729 , l_array_source_19
204730 , l_array_source_20
204731 , l_array_source_21
204732 , l_array_source_38
204733 , l_array_source_38_meaning
204734 LIMIT l_rows;
204735 --
204736 IF (C_LEVEL_EVENT >= g_log_level) THEN
204737 trace
204738 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
204739 ,p_level => C_LEVEL_EVENT
204740 ,p_module => l_log_module);
204741 END IF;
204742 --
204743 EXIT WHEN l_array_entity_id.COUNT = 0;
204744
204745 -- initialize arrays
204746 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
204747 XLA_AE_LINES_PKG.g_rec_lines := NULL;
204748
204749 --
204750 -- Bug 4458708
204751 --
204752 XLA_AE_LINES_PKG.g_LineNumber := 0;
204753
204754
204755 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
204756 g_last_hdr_idx := l_array_event_id.LAST;
204757 --
204758 -- loop for the headers. Each iteration is for each header extract row
204759 -- fetched in header cursor
204760 --
204761 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
204762
204763 --
204764 -- set event info as cache for other routines to refer event attributes
204765 --
204766 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
204767 (p_application_id => p_application_id
204768 ,p_primary_ledger_id => p_primary_ledger_id
204769 ,p_base_ledger_id => p_base_ledger_id
204770 ,p_target_ledger_id => p_target_ledger_id
204771 ,p_entity_id => l_array_entity_id(hdr_idx)
204772 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
204773 ,p_entity_code => l_array_entity_code(hdr_idx)
204774 ,p_transaction_num => l_array_transaction_num(hdr_idx)
204775 ,p_event_id => l_array_event_id(hdr_idx)
204776 ,p_event_class_code => l_array_class_code(hdr_idx)
204777 ,p_event_type_code => l_array_event_type(hdr_idx)
204778 ,p_event_number => l_array_event_number(hdr_idx)
204779 ,p_event_date => l_array_event_date(hdr_idx)
204780 ,p_transaction_date => l_array_transaction_date(hdr_idx)
204781 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
204782 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
204783 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
204784 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
204785 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
204786 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
204787 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
204788 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
204789 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
204790 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
204791 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
204792 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
204793 ,p_event_created_by => l_array_event_created_by(hdr_idx)
204794 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
204795
204796 --
204797 -- set the status of entry to C_VALID (0)
204798 --
204799 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
204800
204801 --
204802 -- initialize a row for ae header
204803 --
204804 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
204805
204806 l_event_id := l_array_event_id(hdr_idx);
204807
204808 --
204809 -- storing the hdr_idx for event. May be used by line cursor.
204810 --
204811 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
204812
204813 --
204814 -- store sources from header extract. This can be improved to
204815 -- store only those sources from header extract that may be used in lines
204816 --
204817
204818 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
204819 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
204820 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
204821 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
204822 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
204823 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
204824 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
204825 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
204826
204827 --
204828 -- initilaize the status of ae headers for diffrent balance types
204829 -- the status is initialised to C_NOT_CREATED (2)
204830 --
204831 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
204832 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
204833 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
204834
204835 --
204836 -- call api to validate and store accounting attributes for header
204837 --
204838
204839 ------------------------------------------------------------
204840 -- Accrual Reversal : to get date for Standard Source (NONE)
204841 ------------------------------------------------------------
204842 l_acc_rev_gl_date_source := NULL;
204843
204844 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
204845 l_rec_acct_attrs.array_date_value(1) :=
204846 xla_ae_sources_pkg.GetSystemSourceDate(
204847 p_source_code => 'XLA_REFERENCE_DATE_1'
204848 , p_source_type_code => 'Y'
204849 , p_source_application_id => 602
204850 );
204851 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
204852 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
204853
204854
204855 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
204856
204857 XLA_AE_HEADER_PKG.SetJeCategoryName;
204858
204859 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
204860 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
204861 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
204862 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
204863 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
204864
204865
204866 -- No header level analytical criteria
204867
204868 --
204869 --accounting attribute enhancement, bug 3612931
204870 --
204871 l_trx_reversal_source := SUBSTR(NULL, 1,30);
204872
204873 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
204874 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
204875
204876 xla_accounting_err_pkg.build_message
204877 (p_appli_s_name => 'XLA'
204878 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
204879 ,p_token_1 => 'ACCT_ATTR_NAME'
204880 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
204881 ,p_token_2 => 'PRODUCT_NAME'
204882 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
204883 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
204884 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
204885 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
204886
204887 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
204888 --
204889 -- following sets the accounting attributes needed to reverse
204890 -- accounting for a distributeion
204891 --
204892 xla_ae_lines_pkg.SetTrxReversalAttrs
204893 (p_event_id => l_event_id
204894 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
204895 ,p_trx_reversal_source => l_trx_reversal_source);
204896
204897 END IF;
204898
204899
204900 ----------------------------------------------------------------
204901 -- 4262811 - update the header statuses to invalid in need be
204902 ----------------------------------------------------------------
204903 --
204904 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
204905
204906
204907 -----------------------------------------------
204908 -- No accrual reversal for the event class/type
204909 -----------------------------------------------
204910 ----------------------------------------------------------------
204911
204912 --
204913 -- this ends the header loop iteration for one bulk fetch
204914 --
204915 END LOOP;
204916
204917 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
204918 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
204919
204920 --
204921 -- insert dummy rows into lines gt table that were created due to
204922 -- transaction reversals
204923 --
204924 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
204925 l_result := XLA_AE_LINES_PKG.InsertLines;
204926 END IF;
204927
204928 --
204929 -- reset the temp_line_num for each set of events fetched from header
204930 -- cursor rather than doing it for each new event in line cursor
204931 -- Bug 3939231
204932 --
204933 xla_ae_lines_pkg.g_temp_line_num := 0;
204934
204935
204936
204937 --
204938 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
204939 --
204940 --
204941 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
204942
204943 trace
204944 (p_msg => 'SQL - FETCH line_cur'
204945 ,p_level => C_LEVEL_STATEMENT
204946 ,p_module => l_log_module);
204947
204948 END IF;
204949 --
204950 --
204951 LOOP
204952 --
204953 FETCH line_cur BULK COLLECT INTO
204954 l_array_entity_id
204955 , l_array_legal_entity_id
204956 , l_array_entity_code
204957 , l_array_transaction_num
204958 , l_array_event_id
204959 , l_array_class_code
204960 , l_array_event_type
204961 , l_array_event_number
204962 , l_array_event_date
204963 , l_array_transaction_date
204964 , l_array_reference_num_1
204965 , l_array_reference_num_2
204966 , l_array_reference_num_3
204967 , l_array_reference_num_4
204968 , l_array_reference_char_1
204969 , l_array_reference_char_2
204970 , l_array_reference_char_3
204971 , l_array_reference_char_4
204972 , l_array_reference_date_1
204973 , l_array_reference_date_2
204974 , l_array_reference_date_3
204975 , l_array_reference_date_4
204976 , l_array_event_created_by
204977 , l_array_budgetary_control_flag
204978 , l_array_extract_line_num
204979 , l_array_source_4
204980 , l_array_source_11
204981 , l_array_source_18
204982 , l_array_source_22
204983 , l_array_source_24
204984 LIMIT l_rows;
204985
204986 --
204987 IF (C_LEVEL_EVENT >= g_log_level) THEN
204988 trace
204989 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
204990 ,p_level => C_LEVEL_EVENT
204991 ,p_module => l_log_module);
204992 END IF;
204993 --
204994 EXIT WHEN l_array_entity_id.count = 0;
204995
204996 XLA_AE_LINES_PKG.g_rec_lines := null;
204997
204998 --
204999 -- Bug 4458708
205000 --
205001 XLA_AE_LINES_PKG.g_LineNumber := 0;
205002 --
205003 --
205004
205005 FOR Idx IN 1..l_array_event_id.count LOOP
205006 --
205007 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
205008 --
205009 l_event_id := l_array_event_id(idx); -- 5648433
205010
205011 --
205012 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
205013 --
205014
205015 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
205016 (g_array_event(l_event_id).array_value_num('header_index'))
205017 ,'N'
205018 ) <> 'Y'
205019 THEN
205020 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205021 trace
205022 (p_msg => 'Trancaction revesal option is not Y '
205023 ,p_level => C_LEVEL_STATEMENT
205024 ,p_module => l_log_module);
205025 END IF;
205026
205027 --
205028 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
205029 --
205030 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
205031 --
205032 -- set event info as cache for other routines to refer event attributes
205033 --
205034
205035 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
205036 l_previous_event_id := l_event_id;
205037
205038 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
205039 (p_application_id => p_application_id
205040 ,p_primary_ledger_id => p_primary_ledger_id
205041 ,p_base_ledger_id => p_base_ledger_id
205042 ,p_target_ledger_id => p_target_ledger_id
205043 ,p_entity_id => l_array_entity_id(Idx)
205044 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
205045 ,p_entity_code => l_array_entity_code(Idx)
205046 ,p_transaction_num => l_array_transaction_num(Idx)
205047 ,p_event_id => l_array_event_id(Idx)
205048 ,p_event_class_code => l_array_class_code(Idx)
205049 ,p_event_type_code => l_array_event_type(Idx)
205050 ,p_event_number => l_array_event_number(Idx)
205051 ,p_event_date => l_array_event_date(Idx)
205052 ,p_transaction_date => l_array_transaction_date(Idx)
205053 ,p_reference_num_1 => l_array_reference_num_1(Idx)
205054 ,p_reference_num_2 => l_array_reference_num_2(Idx)
205055 ,p_reference_num_3 => l_array_reference_num_3(Idx)
205056 ,p_reference_num_4 => l_array_reference_num_4(Idx)
205057 ,p_reference_char_1 => l_array_reference_char_1(Idx)
205058 ,p_reference_char_2 => l_array_reference_char_2(Idx)
205059 ,p_reference_char_3 => l_array_reference_char_3(Idx)
205060 ,p_reference_char_4 => l_array_reference_char_4(Idx)
205061 ,p_reference_date_1 => l_array_reference_date_1(Idx)
205062 ,p_reference_date_2 => l_array_reference_date_2(Idx)
205063 ,p_reference_date_3 => l_array_reference_date_3(Idx)
205064 ,p_reference_date_4 => l_array_reference_date_4(Idx)
205065 ,p_event_created_by => l_array_event_created_by(Idx)
205066 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
205067 --
205068 END IF;
205069
205070
205071
205072 --
205073 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
205074
205075 l_acct_reversal_source := SUBSTR(NULL, 1,30);
205076
205077 IF l_continue_with_lines THEN
205078 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
205079 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
205080
205081 xla_accounting_err_pkg.build_message
205082 (p_appli_s_name => 'XLA'
205083 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
205084 ,p_token_1 => 'LINE_NUMBER'
205085 ,p_value_1 => l_array_extract_line_num(Idx)
205086 ,p_token_2 => 'PRODUCT_NAME'
205087 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
205088 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
205089 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
205090 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
205091
205092 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
205093 --
205094 -- following sets the accounting attributes needed to reverse
205095 -- accounting for a distributeion
205096 --
205097
205098 --
205099 -- 5217187
205100 --
205101 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
205102 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
205103 g_array_event(l_event_id).array_value_num('header_index'));
205104 --
205105 --
205106
205107 -- No reversal code generated
205108
205109 xla_ae_lines_pkg.SetAcctReversalAttrs
205110 (p_event_id => l_event_id
205111 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
205112 ,p_calculate_acctd_flag => l_calculate_acctd_flag
205113 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
205114 END IF;
205115
205116 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
205117 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
205118
205119 --
205120 AcctLineType_22 (
205121 p_application_id => p_application_id
205122 ,p_event_id => l_event_id
205123 ,p_calculate_acctd_flag => l_calculate_acctd_flag
205124 ,p_calculate_g_l_flag => l_calculate_g_l_flag
205125 ,p_actual_flag => l_actual_flag
205126 ,p_balance_type_code => l_balance_type_code
205127 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
205128
205129 , p_source_4 => l_array_source_4(Idx)
205130 , p_source_11 => l_array_source_11(Idx)
205131 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
205132 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
205133 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
205134 , p_source_18 => l_array_source_18(Idx)
205135 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
205136 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
205137 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
205138 , p_source_22 => l_array_source_22(Idx)
205139 , p_source_24 => l_array_source_24(Idx)
205140 );
205141 If(l_balance_type_code = 'A') THEN
205142 l_actual_gain_loss_ref := l_gain_or_loss_ref;
205143 END IF;
205144
205145 --
205146
205147
205148 --
205149 AcctLineType_251 (
205150 p_application_id => p_application_id
205151 ,p_event_id => l_event_id
205152 ,p_calculate_acctd_flag => l_calculate_acctd_flag
205153 ,p_calculate_g_l_flag => l_calculate_g_l_flag
205154 ,p_actual_flag => l_actual_flag
205155 ,p_balance_type_code => l_balance_type_code
205156 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
205157
205158 , p_source_4 => l_array_source_4(Idx)
205159 , p_source_11 => l_array_source_11(Idx)
205160 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
205161 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
205162 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
205163 , p_source_18 => l_array_source_18(Idx)
205164 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
205165 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
205166 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
205167 , p_source_22 => l_array_source_22(Idx)
205168 , p_source_24 => l_array_source_24(Idx)
205169 );
205170 If(l_balance_type_code = 'A') THEN
205171 l_actual_gain_loss_ref := l_gain_or_loss_ref;
205172 END IF;
205173
205174 --
205175
205176 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
205177 -- or secondary ledger that has different currency with primary
205178 -- or alc that is calculated by sla
205179 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
205180 (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'))
205181
205182 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
205183 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
205184 AND (l_actual_flag = 'A')) THEN
205185 XLA_AE_LINES_PKG.CreateGainOrLossLines(
205186 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
205187 ,p_application_id => p_application_id
205188 ,p_amb_context_code => 'DEFAULT'
205189 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
205190 ,p_event_class_code => C_EVENT_CLASS_CODE
205191 ,p_event_type_code => C_EVENT_TYPE_CODE
205192
205193 ,p_gain_ccid => -1
205194 ,p_loss_ccid => -1
205195
205196 ,p_actual_flag => l_actual_flag
205197 ,p_enc_flag => null
205198 ,p_actual_g_l_ref => l_actual_gain_loss_ref
205199 ,p_enc_g_l_ref => null
205200 );
205201 END IF;
205202 END IF;
205203 END IF;
205204
205205 ELSE
205206 --
205207 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
205208 --
205209 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205210 trace
205211 (p_msg => 'Trancaction revesal option is Y'
205212 ,p_level => C_LEVEL_STATEMENT
205213 ,p_module => l_log_module);
205214 END IF;
205215 END IF;
205216
205217 END LOOP;
205218 l_result := XLA_AE_LINES_PKG.InsertLines ;
205219 end loop;
205220 close line_cur;
205221
205222
205223 --
205224 -- insert headers into xla_ae_headers_gt table
205225 --
205226 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
205227
205228 -- insert into errors table here.
205229
205230 END LOOP;
205231
205232 --
205233 -- 4865292
205234 --
205235 -- Compare g_hdr_extract_count with event count in
205236 -- CreateHeadersAndLines.
205237 --
205238 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
205239
205240 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205241 trace (p_msg => '# rows extracted from header extract objects '
205242 || ' (running total): '
205243 || g_hdr_extract_count
205244 ,p_level => C_LEVEL_STATEMENT
205245 ,p_module => l_log_module);
205246 END IF;
205247
205248 CLOSE header_cur;
205249 --
205250
205251 --
205252 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205253 trace
205254 (p_msg => 'END of EventClass_305'
205255 ,p_level => C_LEVEL_PROCEDURE
205256 ,p_module => l_log_module);
205257 END IF;
205258 --
205259 RETURN l_result;
205260 EXCEPTION
205261 WHEN xla_exceptions_pkg.application_exception THEN
205262
205263 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
205264
205265
205266 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
205267
205268 RAISE;
205269
205270 WHEN NO_DATA_FOUND THEN
205271
205272 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
205273 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
205274
205275 FOR header_record IN header_cur
205276 LOOP
205277 l_array_header_events(header_record.event_id) := header_record.event_id;
205278 END LOOP;
205279
205280 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
205281 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
205282
205283 fnd_file.put_line(fnd_file.LOG, ' ');
205284 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
205285 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
205286 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
205287
205288 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
205289 LOOP
205290 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
205291 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
205292 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
205293 END IF;
205294 END LOOP;
205295
205296 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
205297 fnd_file.put_line(fnd_file.LOG, ' ');
205298
205299
205300 xla_exceptions_pkg.raise_message
205301 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_305');
205302
205303
205304 WHEN OTHERS THEN
205305 xla_exceptions_pkg.raise_message
205306 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_305');
205307 END EventClass_305;
205308 --
205309
205310 ---------------------------------------
205311 --
205312 -- PRIVATE PROCEDURE
205313 -- insert_sources_306
205314 --
205315 ----------------------------------------
205316 --
205317 PROCEDURE insert_sources_306(
205318 p_target_ledger_id IN NUMBER
205319 , p_language IN VARCHAR2
205320 , p_sla_ledger_id IN NUMBER
205321 , p_pad_start_date IN DATE
205322 , p_pad_end_date IN DATE
205323 )
205324 IS
205325
205326 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_LOT_ALL';
205327 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_LOT';
205328 p_apps_owner VARCHAR2(30);
205329 l_log_module VARCHAR2(240);
205330 BEGIN
205331 IF g_log_enabled THEN
205332 l_log_module := C_DEFAULT_MODULE||'.insert_sources_306';
205333 END IF;
205334 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205335
205336 trace
205337 (p_msg => 'BEGIN of insert_sources_306'
205338 ,p_level => C_LEVEL_PROCEDURE
205339 ,p_module => l_log_module);
205340
205341 END IF;
205342
205343 -- select APPS owner
205344 SELECT oracle_username
205345 INTO p_apps_owner
205346 FROM fnd_oracle_userid
205347 WHERE read_only_flag = 'U'
205348 ;
205349
205350 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205351 trace
205352 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
205353 ' - p_language = '||p_language||
205354 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
205355 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
205356 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
205357 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
205358 ,p_level => C_LEVEL_STATEMENT
205359 ,p_module => l_log_module);
205360 END IF;
205361
205362
205363 --
205364 INSERT INTO xla_diag_sources --hdr2
205365 (
205366 event_id
205367 , ledger_id
205368 , sla_ledger_id
205369 , description_language
205370 , object_name
205371 , object_type_code
205372 , line_number
205373 , source_application_id
205374 , source_type_code
205375 , source_code
205376 , source_value
205377 , source_meaning
205378 , created_by
205379 , creation_date
205380 , last_update_date
205381 , last_updated_by
205382 , last_update_login
205383 , program_update_date
205384 , program_application_id
205385 , program_id
205386 , request_id
205387 )
205388 SELECT
205389 event_id
205390 , p_target_ledger_id
205391 , p_sla_ledger_id
205392 , p_language
205393 , object_name
205394 , object_type_code
205395 , line_number
205396 , source_application_id
205397 , source_type_code
205398 , source_code
205399 , SUBSTR(source_value ,1,1996)
205400 , SUBSTR(source_meaning ,1,200)
205401 , xla_environment_pkg.g_Usr_Id
205402 , TRUNC(SYSDATE)
205403 , TRUNC(SYSDATE)
205404 , xla_environment_pkg.g_Usr_Id
205405 , xla_environment_pkg.g_Login_Id
205406 , TRUNC(SYSDATE)
205407 , xla_environment_pkg.g_Prog_Appl_Id
205408 , xla_environment_pkg.g_Prog_Id
205409 , xla_environment_pkg.g_Req_Id
205410 FROM (
205411 SELECT xet.event_id event_id
205412 , 0 line_number
205413 , CASE r
205414 WHEN 1 THEN 'CST_XLA_WIP_HEADERS_V'
205415 WHEN 2 THEN 'CST_XLA_WIP_HEADERS_V'
205416 WHEN 3 THEN 'CST_XLA_WIP_HEADERS_V'
205417 WHEN 4 THEN 'CST_XLA_WIP_HEADERS_V'
205418 WHEN 5 THEN 'CST_XLA_WIP_HEADERS_V'
205419 WHEN 6 THEN 'CST_XLA_WIP_HEADERS_V'
205420
205421 ELSE null
205422 END object_name
205423 , CASE r
205424 WHEN 1 THEN 'HEADER'
205425 WHEN 2 THEN 'HEADER'
205426 WHEN 3 THEN 'HEADER'
205427 WHEN 4 THEN 'HEADER'
205428 WHEN 5 THEN 'HEADER'
205429 WHEN 6 THEN 'HEADER'
205430
205431 ELSE null
205432 END object_type_code
205433 , CASE r
205434 WHEN 1 THEN '707'
205435 WHEN 2 THEN '707'
205436 WHEN 3 THEN '707'
205437 WHEN 4 THEN '707'
205438 WHEN 5 THEN '707'
205439 WHEN 6 THEN '707'
205440
205441 ELSE null
205442 END source_application_id
205443 , 'S' source_type_code
205444 , CASE r
205445 WHEN 1 THEN 'DISTRIBUTION_TYPE'
205446 WHEN 2 THEN 'CURRENCY_CODE'
205447 WHEN 3 THEN 'CURRENCY_CONVERSION_DATE'
205448 WHEN 4 THEN 'CURRENCY_CONVERSION_RATE'
205449 WHEN 5 THEN 'CURRENCY_CONVERSION_TYPE'
205450 WHEN 6 THEN 'TRANSFER_TO_GL_INDICATOR'
205451
205452 ELSE null
205453 END source_code
205454 , CASE r
205455 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
205456 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
205457 WHEN 3 THEN TO_CHAR(h1.CURRENCY_CONVERSION_DATE)
205458 WHEN 4 THEN TO_CHAR(h1.CURRENCY_CONVERSION_RATE)
205459 WHEN 5 THEN TO_CHAR(h1.CURRENCY_CONVERSION_TYPE)
205460 WHEN 6 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
205461
205462 ELSE null
205463 END source_value
205464 , CASE r
205465 WHEN 1 THEN fvl12.meaning
205466 WHEN 6 THEN fvl38.meaning
205467
205468 ELSE null
205469 END source_meaning
205470 FROM xla_events_gt xet
205471 , CST_XLA_WIP_HEADERS_V h1
205472 , fnd_lookup_values fvl12
205473 , fnd_lookup_values fvl38
205474 ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
205475 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
205476 AND xet.event_class_code = C_EVENT_CLASS_CODE
205477 AND h1.event_id = xet.event_id
205478 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
205479 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
205480 AND fvl12.view_application_id(+) = 700
205481 AND fvl12.language(+) = USERENV('LANG')
205482 AND fvl38.lookup_type(+) = 'YES_NO'
205483 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
205484 AND fvl38.view_application_id(+) = 0
205485 AND fvl38.language(+) = USERENV('LANG')
205486
205487 )
205488 ;
205489 --
205490 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205491
205492 trace
205493 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
205494 ,p_level => C_LEVEL_STATEMENT
205495 ,p_module => l_log_module);
205496
205497 END IF;
205498 --
205499
205500
205501
205502 --
205503 INSERT INTO xla_diag_sources --line2
205504 (
205505 event_id
205506 , ledger_id
205507 , sla_ledger_id
205508 , description_language
205509 , object_name
205510 , object_type_code
205511 , line_number
205512 , source_application_id
205513 , source_type_code
205514 , source_code
205515 , source_value
205516 , source_meaning
205517 , created_by
205518 , creation_date
205519 , last_update_date
205520 , last_updated_by
205521 , last_update_login
205522 , program_update_date
205523 , program_application_id
205524 , program_id
205525 , request_id
205526 )
205527 SELECT event_id
205528 , p_target_ledger_id
205529 , p_sla_ledger_id
205530 , p_language
205531 , object_name
205532 , object_type_code
205533 , line_number
205534 , source_application_id
205535 , source_type_code
205536 , source_code
205537 , SUBSTR(source_value,1,1996)
205538 , SUBSTR(source_meaning ,1,200)
205539 , xla_environment_pkg.g_Usr_Id
205540 , TRUNC(SYSDATE)
205541 , TRUNC(SYSDATE)
205542 , xla_environment_pkg.g_Usr_Id
205543 , xla_environment_pkg.g_Login_Id
205544 , TRUNC(SYSDATE)
205545 , xla_environment_pkg.g_Prog_Appl_Id
205546 , xla_environment_pkg.g_Prog_Id
205547 , xla_environment_pkg.g_Req_Id
205548 FROM (
205549 SELECT xet.event_id event_id
205550 , l2.line_number line_number
205551 , CASE r
205552 WHEN 1 THEN 'CST_XLA_WIP_LINES_V'
205553 WHEN 2 THEN 'CST_XLA_WIP_LINES_V'
205554 WHEN 3 THEN 'CST_XLA_WIP_LINES_V'
205555 WHEN 4 THEN 'CST_XLA_WIP_LINES_V'
205556 WHEN 5 THEN 'CST_XLA_WIP_LINES_V'
205557
205558 ELSE null
205559 END object_name
205560 , CASE r
205561 WHEN 1 THEN 'LINE'
205562 WHEN 2 THEN 'LINE'
205563 WHEN 3 THEN 'LINE'
205564 WHEN 4 THEN 'LINE'
205565 WHEN 5 THEN 'LINE'
205566
205567 ELSE null
205568 END object_type_code
205569 , CASE r
205570 WHEN 1 THEN '707'
205571 WHEN 2 THEN '707'
205572 WHEN 3 THEN '707'
205573 WHEN 4 THEN '707'
205574 WHEN 5 THEN '707'
205575
205576 ELSE null
205577 END source_application_id
205578 , 'S' source_type_code
205579 , CASE r
205580 WHEN 1 THEN 'CODE_COMBINATION_ID'
205581 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
205582 WHEN 3 THEN 'ENTERED_AMOUNT'
205583 WHEN 4 THEN 'ACCOUNTED_AMOUNT'
205584 WHEN 5 THEN 'ACCOUNTING_LINE_TYPE_CODE'
205585
205586 ELSE null
205587 END source_code
205588 , CASE r
205589 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
205590 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
205591 WHEN 3 THEN TO_CHAR(l2.ENTERED_AMOUNT)
205592 WHEN 4 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
205593 WHEN 5 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
205594
205595 ELSE null
205596 END source_value
205597 , null source_meaning
205598 FROM xla_events_gt xet
205599 , CST_XLA_WIP_LINES_V l2
205600 , (select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
205601 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
205602 AND xet.event_class_code = C_EVENT_CLASS_CODE
205603 AND l2.event_id = xet.event_id
205604
205605 )
205606 ;
205607 --
205608 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205609
205610 trace
205611 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
205612 ,p_level => C_LEVEL_STATEMENT
205613 ,p_module => l_log_module);
205614
205615 END IF;
205616
205617
205618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205619 trace
205620 (p_msg => 'END of insert_sources_306'
205621 ,p_level => C_LEVEL_PROCEDURE
205622 ,p_module => l_log_module);
205623 END IF;
205624 EXCEPTION
205625 WHEN xla_exceptions_pkg.application_exception THEN
205626 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
205627 trace
205628 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
205629 ,p_level => C_LEVEL_EXCEPTION
205630 ,p_module => l_log_module);
205631 END IF;
205632 RAISE;
205633 WHEN OTHERS THEN
205634 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
205635 trace
205636 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
205637 ,p_level => C_LEVEL_EXCEPTION
205638 ,p_module => l_log_module);
205639 END IF;
205640 xla_exceptions_pkg.raise_message
205641 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_306');
205642 END insert_sources_306;
205643 --
205644
205645 ---------------------------------------
205646 --
205647 -- PRIVATE FUNCTION
205648 -- EventClass_306
205649 --
205650 ----------------------------------------
205651 --
205652 FUNCTION EventClass_306
205653 (p_application_id IN NUMBER
205654 ,p_base_ledger_id IN NUMBER
205655 ,p_target_ledger_id IN NUMBER
205656 ,p_language IN VARCHAR2
205657 ,p_currency_code IN VARCHAR2
205658 ,p_sla_ledger_id IN NUMBER
205659 ,p_pad_start_date IN DATE
205660 ,p_pad_end_date IN DATE
205661 ,p_primary_ledger_id IN NUMBER)
205662 RETURN BOOLEAN IS
205663 --
205664 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_LOT_ALL';
205665 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_LOT';
205666
205667 l_calculate_acctd_flag VARCHAR2(1) :='N';
205668 l_calculate_g_l_flag VARCHAR2(1) :='N';
205669 --
205670 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205671 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205672 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
205673 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
205674 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205675 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
205676 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
205677 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205678 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205679 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205680 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205681 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205682 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205683 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
205684 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
205685 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
205686 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
205687 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
205688 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205689 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205690 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205691 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
205692 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
205693 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
205694 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
205695 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
205696
205697 l_event_id NUMBER;
205698 l_previous_event_id NUMBER;
205699 l_first_event_id NUMBER;
205700 l_last_event_id NUMBER;
205701
205702 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
205703 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
205704 --
205705 --
205706 l_result BOOLEAN := TRUE;
205707 l_rows NUMBER := 1000;
205708 l_event_type_name VARCHAR2(80) := 'All';
205709 l_event_class_name VARCHAR2(80) := 'WIP Lot';
205710 l_description VARCHAR2(4000);
205711 l_transaction_reversal NUMBER;
205712 l_ae_header_id NUMBER;
205713 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
205714 l_log_module VARCHAR2(240);
205715 --
205716 l_acct_reversal_source VARCHAR2(30);
205717 l_trx_reversal_source VARCHAR2(30);
205718
205719 l_continue_with_lines BOOLEAN := TRUE;
205720 --
205721 l_acc_rev_gl_date_source DATE; -- 4262811
205722 --
205723 type t_array_event_id is table of number index by binary_integer;
205724
205725 l_rec_array_event t_rec_array_event;
205726 l_null_rec_array_event t_rec_array_event;
205727 l_array_ae_header_id xla_number_array_type;
205728 l_actual_flag VARCHAR2(1) := NULL;
205729 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
205730 l_balance_type_code VARCHAR2(1) :=NULL;
205731 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
205732
205733 --
205734 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
205735 --
205736
205737 TYPE t_array_source_12 IS TABLE OF CST_XLA_WIP_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
205738 TYPE t_array_source_15 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
205739 TYPE t_array_source_19 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
205740 TYPE t_array_source_20 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
205741 TYPE t_array_source_21 IS TABLE OF CST_XLA_WIP_HEADERS_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
205742 TYPE t_array_source_38 IS TABLE OF CST_XLA_WIP_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
205743
205744 TYPE t_array_source_4 IS TABLE OF CST_XLA_WIP_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
205745 TYPE t_array_source_11 IS TABLE OF CST_XLA_WIP_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
205746 TYPE t_array_source_18 IS TABLE OF CST_XLA_WIP_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
205747 TYPE t_array_source_22 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
205748 TYPE t_array_source_24 IS TABLE OF CST_XLA_WIP_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
205749
205750 l_array_source_12 t_array_source_12;
205751 l_array_source_12_meaning t_array_lookup_meaning;
205752 l_array_source_15 t_array_source_15;
205753 l_array_source_19 t_array_source_19;
205754 l_array_source_20 t_array_source_20;
205755 l_array_source_21 t_array_source_21;
205756 l_array_source_38 t_array_source_38;
205757 l_array_source_38_meaning t_array_lookup_meaning;
205758
205759 l_array_source_4 t_array_source_4;
205760 l_array_source_11 t_array_source_11;
205761 l_array_source_18 t_array_source_18;
205762 l_array_source_22 t_array_source_22;
205763 l_array_source_24 t_array_source_24;
205764
205765 --
205766 CURSOR header_cur
205767 IS
205768 SELECT /*+ leading(xet) cardinality(xet,1) */
205769 -- Event Class Code: WIP_LOT
205770 xet.entity_id
205771 ,xet.legal_entity_id
205772 ,xet.entity_code
205773 ,xet.transaction_number
205774 ,xet.event_id
205775 ,xet.event_class_code
205776 ,xet.event_type_code
205777 ,xet.event_number
205778 ,xet.event_date
205779 ,xet.transaction_date
205780 ,xet.reference_num_1
205781 ,xet.reference_num_2
205782 ,xet.reference_num_3
205783 ,xet.reference_num_4
205784 ,xet.reference_char_1
205785 ,xet.reference_char_2
205786 ,xet.reference_char_3
205787 ,xet.reference_char_4
205788 ,xet.reference_date_1
205789 ,xet.reference_date_2
205790 ,xet.reference_date_3
205791 ,xet.reference_date_4
205792 ,xet.event_created_by
205793 ,xet.budgetary_control_flag
205794 , h1.DISTRIBUTION_TYPE source_12
205795 , fvl12.meaning source_12_meaning
205796 , h1.CURRENCY_CODE source_15
205797 , h1.CURRENCY_CONVERSION_DATE source_19
205798 , h1.CURRENCY_CONVERSION_RATE source_20
205799 , h1.CURRENCY_CONVERSION_TYPE source_21
205800 , h1.TRANSFER_TO_GL_INDICATOR source_38
205801 , fvl38.meaning source_38_meaning
205802 FROM xla_events_gt xet
205803 , CST_XLA_WIP_HEADERS_V h1
205804 , fnd_lookup_values fvl12
205805 , fnd_lookup_values fvl38
205806 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
205807 and xet.event_class_code = C_EVENT_CLASS_CODE
205808 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
205809 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
205810 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
205811 AND fvl12.view_application_id(+) = 700
205812 AND fvl12.language(+) = USERENV('LANG')
205813 AND fvl38.lookup_type(+) = 'YES_NO'
205814 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
205815 AND fvl38.view_application_id(+) = 0
205816 AND fvl38.language(+) = USERENV('LANG')
205817
205818 ORDER BY event_id
205819 ;
205820
205821
205822 --
205823 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
205824 IS
205825 SELECT /*+ leading(xet) cardinality(xet,1) */
205826 -- Event Class Code: WIP_LOT
205827 xet.entity_id
205828 ,xet.legal_entity_id
205829 ,xet.entity_code
205830 ,xet.transaction_number
205831 ,xet.event_id
205832 ,xet.event_class_code
205833 ,xet.event_type_code
205834 ,xet.event_number
205835 ,xet.event_date
205836 ,xet.transaction_date
205837 ,xet.reference_num_1
205838 ,xet.reference_num_2
205839 ,xet.reference_num_3
205840 ,xet.reference_num_4
205841 ,xet.reference_char_1
205842 ,xet.reference_char_2
205843 ,xet.reference_char_3
205844 ,xet.reference_char_4
205845 ,xet.reference_date_1
205846 ,xet.reference_date_2
205847 ,xet.reference_date_3
205848 ,xet.reference_date_4
205849 ,xet.event_created_by
205850 ,xet.budgetary_control_flag
205851 , l2.LINE_NUMBER
205852 , l2.CODE_COMBINATION_ID source_4
205853 , l2.DISTRIBUTION_IDENTIFIER source_11
205854 , l2.ENTERED_AMOUNT source_18
205855 , l2.ACCOUNTED_AMOUNT source_22
205856 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
205857 FROM xla_events_gt xet
205858 , CST_XLA_WIP_LINES_V l2
205859 WHERE xet.event_id between x_first_event_id and x_last_event_id
205860 and xet.event_date between p_pad_start_date and p_pad_end_date
205861 and xet.event_class_code = C_EVENT_CLASS_CODE
205862 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
205863 ;
205864
205865 --
205866 BEGIN
205867 IF g_log_enabled THEN
205868 l_log_module := C_DEFAULT_MODULE||'.EventClass_306';
205869 END IF;
205870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
205871 trace
205872 (p_msg => 'BEGIN of EventClass_306'
205873 ,p_level => C_LEVEL_PROCEDURE
205874 ,p_module => l_log_module);
205875 END IF;
205876
205877 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205878 trace
205879 (p_msg => 'p_application_id = '||p_application_id||
205880 ' - p_base_ledger_id = '||p_base_ledger_id||
205881 ' - p_target_ledger_id = '||p_target_ledger_id||
205882 ' - p_language = '||p_language||
205883 ' - p_currency_code = '||p_currency_code||
205884 ' - p_sla_ledger_id = '||p_sla_ledger_id
205885 ,p_level => C_LEVEL_STATEMENT
205886 ,p_module => l_log_module);
205887 END IF;
205888 --
205889 -- initialze arrays
205890 --
205891 g_array_event.DELETE;
205892 l_rec_array_event := l_null_rec_array_event;
205893 --
205894 --------------------------------------
205895 -- 4262811 Initialze MPA Line Number
205896 --------------------------------------
205897 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
205898
205899 --
205900
205901 --
205902 OPEN header_cur;
205903 --
205904 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
205905 trace
205906 (p_msg => 'SQL - FETCH header_cur'
205907 ,p_level => C_LEVEL_STATEMENT
205908 ,p_module => l_log_module);
205909 END IF;
205910 --
205911 LOOP
205912 FETCH header_cur BULK COLLECT INTO
205913 l_array_entity_id
205914 , l_array_legal_entity_id
205915 , l_array_entity_code
205916 , l_array_transaction_num
205917 , l_array_event_id
205918 , l_array_class_code
205919 , l_array_event_type
205920 , l_array_event_number
205921 , l_array_event_date
205922 , l_array_transaction_date
205923 , l_array_reference_num_1
205924 , l_array_reference_num_2
205925 , l_array_reference_num_3
205926 , l_array_reference_num_4
205927 , l_array_reference_char_1
205928 , l_array_reference_char_2
205929 , l_array_reference_char_3
205930 , l_array_reference_char_4
205931 , l_array_reference_date_1
205932 , l_array_reference_date_2
205933 , l_array_reference_date_3
205934 , l_array_reference_date_4
205935 , l_array_event_created_by
205936 , l_array_budgetary_control_flag
205937 , l_array_source_12
205938 , l_array_source_12_meaning
205939 , l_array_source_15
205940 , l_array_source_19
205941 , l_array_source_20
205942 , l_array_source_21
205943 , l_array_source_38
205944 , l_array_source_38_meaning
205945 LIMIT l_rows;
205946 --
205947 IF (C_LEVEL_EVENT >= g_log_level) THEN
205948 trace
205949 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
205950 ,p_level => C_LEVEL_EVENT
205951 ,p_module => l_log_module);
205952 END IF;
205953 --
205954 EXIT WHEN l_array_entity_id.COUNT = 0;
205955
205956 -- initialize arrays
205957 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
205958 XLA_AE_LINES_PKG.g_rec_lines := NULL;
205959
205960 --
205961 -- Bug 4458708
205962 --
205963 XLA_AE_LINES_PKG.g_LineNumber := 0;
205964
205965
205966 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
205967 g_last_hdr_idx := l_array_event_id.LAST;
205968 --
205969 -- loop for the headers. Each iteration is for each header extract row
205970 -- fetched in header cursor
205971 --
205972 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
205973
205974 --
205975 -- set event info as cache for other routines to refer event attributes
205976 --
205977 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
205978 (p_application_id => p_application_id
205979 ,p_primary_ledger_id => p_primary_ledger_id
205980 ,p_base_ledger_id => p_base_ledger_id
205981 ,p_target_ledger_id => p_target_ledger_id
205982 ,p_entity_id => l_array_entity_id(hdr_idx)
205983 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
205984 ,p_entity_code => l_array_entity_code(hdr_idx)
205985 ,p_transaction_num => l_array_transaction_num(hdr_idx)
205986 ,p_event_id => l_array_event_id(hdr_idx)
205987 ,p_event_class_code => l_array_class_code(hdr_idx)
205988 ,p_event_type_code => l_array_event_type(hdr_idx)
205989 ,p_event_number => l_array_event_number(hdr_idx)
205990 ,p_event_date => l_array_event_date(hdr_idx)
205991 ,p_transaction_date => l_array_transaction_date(hdr_idx)
205992 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
205993 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
205994 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
205995 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
205996 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
205997 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
205998 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
205999 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
206000 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
206001 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
206002 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
206003 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
206004 ,p_event_created_by => l_array_event_created_by(hdr_idx)
206005 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
206006
206007 --
206008 -- set the status of entry to C_VALID (0)
206009 --
206010 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
206011
206012 --
206013 -- initialize a row for ae header
206014 --
206015 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
206016
206017 l_event_id := l_array_event_id(hdr_idx);
206018
206019 --
206020 -- storing the hdr_idx for event. May be used by line cursor.
206021 --
206022 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
206023
206024 --
206025 -- store sources from header extract. This can be improved to
206026 -- store only those sources from header extract that may be used in lines
206027 --
206028
206029 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
206030 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
206031 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
206032 g_array_event(l_event_id).array_value_date('source_19') := l_array_source_19(hdr_idx);
206033 g_array_event(l_event_id).array_value_num('source_20') := l_array_source_20(hdr_idx);
206034 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
206035 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
206036 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
206037
206038 --
206039 -- initilaize the status of ae headers for diffrent balance types
206040 -- the status is initialised to C_NOT_CREATED (2)
206041 --
206042 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
206043 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
206044 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
206045
206046 --
206047 -- call api to validate and store accounting attributes for header
206048 --
206049
206050 ------------------------------------------------------------
206051 -- Accrual Reversal : to get date for Standard Source (NONE)
206052 ------------------------------------------------------------
206053 l_acc_rev_gl_date_source := NULL;
206054
206055 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
206056 l_rec_acct_attrs.array_date_value(1) :=
206057 xla_ae_sources_pkg.GetSystemSourceDate(
206058 p_source_code => 'XLA_REFERENCE_DATE_1'
206059 , p_source_type_code => 'Y'
206060 , p_source_application_id => 602
206061 );
206062 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
206063 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
206064
206065
206066 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
206067
206068 XLA_AE_HEADER_PKG.SetJeCategoryName;
206069
206070 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
206071 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
206072 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
206073 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
206074 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
206075
206076
206077 -- No header level analytical criteria
206078
206079 --
206080 --accounting attribute enhancement, bug 3612931
206081 --
206082 l_trx_reversal_source := SUBSTR(NULL, 1,30);
206083
206084 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
206085 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
206086
206087 xla_accounting_err_pkg.build_message
206088 (p_appli_s_name => 'XLA'
206089 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
206090 ,p_token_1 => 'ACCT_ATTR_NAME'
206091 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
206092 ,p_token_2 => 'PRODUCT_NAME'
206093 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
206094 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
206095 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
206096 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
206097
206098 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
206099 --
206100 -- following sets the accounting attributes needed to reverse
206101 -- accounting for a distributeion
206102 --
206103 xla_ae_lines_pkg.SetTrxReversalAttrs
206104 (p_event_id => l_event_id
206105 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
206106 ,p_trx_reversal_source => l_trx_reversal_source);
206107
206108 END IF;
206109
206110
206111 ----------------------------------------------------------------
206112 -- 4262811 - update the header statuses to invalid in need be
206113 ----------------------------------------------------------------
206114 --
206115 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
206116
206117
206118 -----------------------------------------------
206119 -- No accrual reversal for the event class/type
206120 -----------------------------------------------
206121 ----------------------------------------------------------------
206122
206123 --
206124 -- this ends the header loop iteration for one bulk fetch
206125 --
206126 END LOOP;
206127
206128 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
206129 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
206130
206131 --
206132 -- insert dummy rows into lines gt table that were created due to
206133 -- transaction reversals
206134 --
206135 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
206136 l_result := XLA_AE_LINES_PKG.InsertLines;
206137 END IF;
206138
206139 --
206140 -- reset the temp_line_num for each set of events fetched from header
206141 -- cursor rather than doing it for each new event in line cursor
206142 -- Bug 3939231
206143 --
206144 xla_ae_lines_pkg.g_temp_line_num := 0;
206145
206146
206147
206148 --
206149 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
206150 --
206151 --
206152 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206153
206154 trace
206155 (p_msg => 'SQL - FETCH line_cur'
206156 ,p_level => C_LEVEL_STATEMENT
206157 ,p_module => l_log_module);
206158
206159 END IF;
206160 --
206161 --
206162 LOOP
206163 --
206164 FETCH line_cur BULK COLLECT INTO
206165 l_array_entity_id
206166 , l_array_legal_entity_id
206167 , l_array_entity_code
206168 , l_array_transaction_num
206169 , l_array_event_id
206170 , l_array_class_code
206171 , l_array_event_type
206172 , l_array_event_number
206173 , l_array_event_date
206174 , l_array_transaction_date
206175 , l_array_reference_num_1
206176 , l_array_reference_num_2
206177 , l_array_reference_num_3
206178 , l_array_reference_num_4
206179 , l_array_reference_char_1
206180 , l_array_reference_char_2
206181 , l_array_reference_char_3
206182 , l_array_reference_char_4
206183 , l_array_reference_date_1
206184 , l_array_reference_date_2
206185 , l_array_reference_date_3
206186 , l_array_reference_date_4
206187 , l_array_event_created_by
206188 , l_array_budgetary_control_flag
206189 , l_array_extract_line_num
206190 , l_array_source_4
206191 , l_array_source_11
206192 , l_array_source_18
206193 , l_array_source_22
206194 , l_array_source_24
206195 LIMIT l_rows;
206196
206197 --
206198 IF (C_LEVEL_EVENT >= g_log_level) THEN
206199 trace
206200 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
206201 ,p_level => C_LEVEL_EVENT
206202 ,p_module => l_log_module);
206203 END IF;
206204 --
206205 EXIT WHEN l_array_entity_id.count = 0;
206206
206207 XLA_AE_LINES_PKG.g_rec_lines := null;
206208
206209 --
206210 -- Bug 4458708
206211 --
206212 XLA_AE_LINES_PKG.g_LineNumber := 0;
206213 --
206214 --
206215
206216 FOR Idx IN 1..l_array_event_id.count LOOP
206217 --
206218 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
206219 --
206220 l_event_id := l_array_event_id(idx); -- 5648433
206221
206222 --
206223 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
206224 --
206225
206226 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
206227 (g_array_event(l_event_id).array_value_num('header_index'))
206228 ,'N'
206229 ) <> 'Y'
206230 THEN
206231 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206232 trace
206233 (p_msg => 'Trancaction revesal option is not Y '
206234 ,p_level => C_LEVEL_STATEMENT
206235 ,p_module => l_log_module);
206236 END IF;
206237
206238 --
206239 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
206240 --
206241 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
206242 --
206243 -- set event info as cache for other routines to refer event attributes
206244 --
206245
206246 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
206247 l_previous_event_id := l_event_id;
206248
206249 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
206250 (p_application_id => p_application_id
206251 ,p_primary_ledger_id => p_primary_ledger_id
206252 ,p_base_ledger_id => p_base_ledger_id
206253 ,p_target_ledger_id => p_target_ledger_id
206254 ,p_entity_id => l_array_entity_id(Idx)
206255 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
206256 ,p_entity_code => l_array_entity_code(Idx)
206257 ,p_transaction_num => l_array_transaction_num(Idx)
206258 ,p_event_id => l_array_event_id(Idx)
206259 ,p_event_class_code => l_array_class_code(Idx)
206260 ,p_event_type_code => l_array_event_type(Idx)
206261 ,p_event_number => l_array_event_number(Idx)
206262 ,p_event_date => l_array_event_date(Idx)
206263 ,p_transaction_date => l_array_transaction_date(Idx)
206264 ,p_reference_num_1 => l_array_reference_num_1(Idx)
206265 ,p_reference_num_2 => l_array_reference_num_2(Idx)
206266 ,p_reference_num_3 => l_array_reference_num_3(Idx)
206267 ,p_reference_num_4 => l_array_reference_num_4(Idx)
206268 ,p_reference_char_1 => l_array_reference_char_1(Idx)
206269 ,p_reference_char_2 => l_array_reference_char_2(Idx)
206270 ,p_reference_char_3 => l_array_reference_char_3(Idx)
206271 ,p_reference_char_4 => l_array_reference_char_4(Idx)
206272 ,p_reference_date_1 => l_array_reference_date_1(Idx)
206273 ,p_reference_date_2 => l_array_reference_date_2(Idx)
206274 ,p_reference_date_3 => l_array_reference_date_3(Idx)
206275 ,p_reference_date_4 => l_array_reference_date_4(Idx)
206276 ,p_event_created_by => l_array_event_created_by(Idx)
206277 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
206278 --
206279 END IF;
206280
206281
206282
206283 --
206284 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
206285
206286 l_acct_reversal_source := SUBSTR(NULL, 1,30);
206287
206288 IF l_continue_with_lines THEN
206289 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
206290 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
206291
206292 xla_accounting_err_pkg.build_message
206293 (p_appli_s_name => 'XLA'
206294 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
206295 ,p_token_1 => 'LINE_NUMBER'
206296 ,p_value_1 => l_array_extract_line_num(Idx)
206297 ,p_token_2 => 'PRODUCT_NAME'
206298 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
206299 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
206300 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
206301 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
206302
206303 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
206304 --
206305 -- following sets the accounting attributes needed to reverse
206306 -- accounting for a distributeion
206307 --
206308
206309 --
206310 -- 5217187
206311 --
206312 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
206313 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
206314 g_array_event(l_event_id).array_value_num('header_index'));
206315 --
206316 --
206317
206318 -- No reversal code generated
206319
206320 xla_ae_lines_pkg.SetAcctReversalAttrs
206321 (p_event_id => l_event_id
206322 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
206323 ,p_calculate_acctd_flag => l_calculate_acctd_flag
206324 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
206325 END IF;
206326
206327 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
206328 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
206329
206330 --
206331 AcctLineType_183 (
206332 p_application_id => p_application_id
206333 ,p_event_id => l_event_id
206334 ,p_calculate_acctd_flag => l_calculate_acctd_flag
206335 ,p_calculate_g_l_flag => l_calculate_g_l_flag
206336 ,p_actual_flag => l_actual_flag
206337 ,p_balance_type_code => l_balance_type_code
206338 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
206339
206340 , p_source_4 => l_array_source_4(Idx)
206341 , p_source_11 => l_array_source_11(Idx)
206342 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
206343 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
206344 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
206345 , p_source_18 => l_array_source_18(Idx)
206346 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
206347 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
206348 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
206349 , p_source_22 => l_array_source_22(Idx)
206350 , p_source_24 => l_array_source_24(Idx)
206351 );
206352 If(l_balance_type_code = 'A') THEN
206353 l_actual_gain_loss_ref := l_gain_or_loss_ref;
206354 END IF;
206355
206356 --
206357
206358
206359 --
206360 AcctLineType_255 (
206361 p_application_id => p_application_id
206362 ,p_event_id => l_event_id
206363 ,p_calculate_acctd_flag => l_calculate_acctd_flag
206364 ,p_calculate_g_l_flag => l_calculate_g_l_flag
206365 ,p_actual_flag => l_actual_flag
206366 ,p_balance_type_code => l_balance_type_code
206367 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
206368
206369 , p_source_4 => l_array_source_4(Idx)
206370 , p_source_11 => l_array_source_11(Idx)
206371 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
206372 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
206373 , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
206374 , p_source_18 => l_array_source_18(Idx)
206375 , p_source_19 => g_array_event(l_event_id).array_value_date('source_19')
206376 , p_source_20 => g_array_event(l_event_id).array_value_num('source_20')
206377 , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
206378 , p_source_22 => l_array_source_22(Idx)
206379 , p_source_24 => l_array_source_24(Idx)
206380 );
206381 If(l_balance_type_code = 'A') THEN
206382 l_actual_gain_loss_ref := l_gain_or_loss_ref;
206383 END IF;
206384
206385 --
206386
206387 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
206388 -- or secondary ledger that has different currency with primary
206389 -- or alc that is calculated by sla
206390 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
206391 (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'))
206392
206393 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
206394 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
206395 AND (l_actual_flag = 'A')) THEN
206396 XLA_AE_LINES_PKG.CreateGainOrLossLines(
206397 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
206398 ,p_application_id => p_application_id
206399 ,p_amb_context_code => 'DEFAULT'
206400 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
206401 ,p_event_class_code => C_EVENT_CLASS_CODE
206402 ,p_event_type_code => C_EVENT_TYPE_CODE
206403
206404 ,p_gain_ccid => -1
206405 ,p_loss_ccid => -1
206406
206407 ,p_actual_flag => l_actual_flag
206408 ,p_enc_flag => null
206409 ,p_actual_g_l_ref => l_actual_gain_loss_ref
206410 ,p_enc_g_l_ref => null
206411 );
206412 END IF;
206413 END IF;
206414 END IF;
206415
206416 ELSE
206417 --
206418 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
206419 --
206420 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206421 trace
206422 (p_msg => 'Trancaction revesal option is Y'
206423 ,p_level => C_LEVEL_STATEMENT
206424 ,p_module => l_log_module);
206425 END IF;
206426 END IF;
206427
206428 END LOOP;
206429 l_result := XLA_AE_LINES_PKG.InsertLines ;
206430 end loop;
206431 close line_cur;
206432
206433
206434 --
206435 -- insert headers into xla_ae_headers_gt table
206436 --
206437 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
206438
206439 -- insert into errors table here.
206440
206441 END LOOP;
206442
206443 --
206444 -- 4865292
206445 --
206446 -- Compare g_hdr_extract_count with event count in
206447 -- CreateHeadersAndLines.
206448 --
206449 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
206450
206451 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206452 trace (p_msg => '# rows extracted from header extract objects '
206453 || ' (running total): '
206454 || g_hdr_extract_count
206455 ,p_level => C_LEVEL_STATEMENT
206456 ,p_module => l_log_module);
206457 END IF;
206458
206459 CLOSE header_cur;
206460 --
206461
206462 --
206463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
206464 trace
206465 (p_msg => 'END of EventClass_306'
206466 ,p_level => C_LEVEL_PROCEDURE
206467 ,p_module => l_log_module);
206468 END IF;
206469 --
206470 RETURN l_result;
206471 EXCEPTION
206472 WHEN xla_exceptions_pkg.application_exception THEN
206473
206474 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
206475
206476
206477 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
206478
206479 RAISE;
206480
206481 WHEN NO_DATA_FOUND THEN
206482
206483 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
206484 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
206485
206486 FOR header_record IN header_cur
206487 LOOP
206488 l_array_header_events(header_record.event_id) := header_record.event_id;
206489 END LOOP;
206490
206491 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
206492 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
206493
206494 fnd_file.put_line(fnd_file.LOG, ' ');
206495 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
206496 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
206497 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
206498
206499 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
206500 LOOP
206501 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
206502 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
206503 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
206504 END IF;
206505 END LOOP;
206506
206507 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
206508 fnd_file.put_line(fnd_file.LOG, ' ');
206509
206510
206511 xla_exceptions_pkg.raise_message
206512 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_306');
206513
206514
206515 WHEN OTHERS THEN
206516 xla_exceptions_pkg.raise_message
206517 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_306');
206518 END EventClass_306;
206519 --
206520
206521 ---------------------------------------
206522 --
206523 -- PRIVATE PROCEDURE
206524 -- insert_sources_307
206525 --
206526 ----------------------------------------
206527 --
206528 PROCEDURE insert_sources_307(
206529 p_target_ledger_id IN NUMBER
206530 , p_language IN VARCHAR2
206531 , p_sla_ledger_id IN NUMBER
206532 , p_pad_start_date IN DATE
206533 , p_pad_end_date IN DATE
206534 )
206535 IS
206536
206537 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_MTL_ALL';
206538 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_MTL';
206539 p_apps_owner VARCHAR2(30);
206540 l_log_module VARCHAR2(240);
206541 BEGIN
206542 IF g_log_enabled THEN
206543 l_log_module := C_DEFAULT_MODULE||'.insert_sources_307';
206544 END IF;
206545 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
206546
206547 trace
206548 (p_msg => 'BEGIN of insert_sources_307'
206549 ,p_level => C_LEVEL_PROCEDURE
206550 ,p_module => l_log_module);
206551
206552 END IF;
206553
206554 -- select APPS owner
206555 SELECT oracle_username
206556 INTO p_apps_owner
206557 FROM fnd_oracle_userid
206558 WHERE read_only_flag = 'U'
206559 ;
206560
206561 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206562 trace
206563 (p_msg => 'p_target_ledger_id = '||p_target_ledger_id||
206564 ' - p_language = '||p_language||
206565 ' - p_sla_ledger_id = '||p_sla_ledger_id ||
206566 ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
206567 ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
206568 ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
206569 ,p_level => C_LEVEL_STATEMENT
206570 ,p_module => l_log_module);
206571 END IF;
206572
206573
206574 --
206575 INSERT INTO xla_diag_sources --hdr2
206576 (
206577 event_id
206578 , ledger_id
206579 , sla_ledger_id
206580 , description_language
206581 , object_name
206582 , object_type_code
206583 , line_number
206584 , source_application_id
206585 , source_type_code
206586 , source_code
206587 , source_value
206588 , source_meaning
206589 , created_by
206590 , creation_date
206591 , last_update_date
206592 , last_updated_by
206593 , last_update_login
206594 , program_update_date
206595 , program_application_id
206596 , program_id
206597 , request_id
206598 )
206599 SELECT
206600 event_id
206601 , p_target_ledger_id
206602 , p_sla_ledger_id
206603 , p_language
206604 , object_name
206605 , object_type_code
206606 , line_number
206607 , source_application_id
206608 , source_type_code
206609 , source_code
206610 , SUBSTR(source_value ,1,1996)
206611 , SUBSTR(source_meaning ,1,200)
206612 , xla_environment_pkg.g_Usr_Id
206613 , TRUNC(SYSDATE)
206614 , TRUNC(SYSDATE)
206615 , xla_environment_pkg.g_Usr_Id
206616 , xla_environment_pkg.g_Login_Id
206617 , TRUNC(SYSDATE)
206618 , xla_environment_pkg.g_Prog_Appl_Id
206619 , xla_environment_pkg.g_Prog_Id
206620 , xla_environment_pkg.g_Req_Id
206621 FROM (
206622 SELECT xet.event_id event_id
206623 , 0 line_number
206624 , CASE r
206625 WHEN 1 THEN 'CST_XLA_INV_HEADERS_V'
206626 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V'
206627
206628 ELSE null
206629 END object_name
206630 , CASE r
206631 WHEN 1 THEN 'HEADER'
206632 WHEN 2 THEN 'HEADER'
206633
206634 ELSE null
206635 END object_type_code
206636 , CASE r
206637 WHEN 1 THEN '707'
206638 WHEN 2 THEN '707'
206639
206640 ELSE null
206641 END source_application_id
206642 , 'S' source_type_code
206643 , CASE r
206644 WHEN 1 THEN 'DISTRIBUTION_TYPE'
206645 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR'
206646
206647 ELSE null
206648 END source_code
206649 , CASE r
206650 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
206651 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
206652
206653 ELSE null
206654 END source_value
206655 , CASE r
206656 WHEN 1 THEN fvl12.meaning
206657 WHEN 2 THEN fvl38.meaning
206658
206659 ELSE null
206660 END source_meaning
206661 FROM xla_events_gt xet
206662 , CST_XLA_INV_HEADERS_V h1
206663 , fnd_lookup_values fvl12
206664 , fnd_lookup_values fvl38
206665 ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
206666 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
206667 AND xet.event_class_code = C_EVENT_CLASS_CODE
206668 AND h1.event_id = xet.event_id
206669 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
206670 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
206671 AND fvl12.view_application_id(+) = 700
206672 AND fvl12.language(+) = USERENV('LANG')
206673 AND fvl38.lookup_type(+) = 'YES_NO'
206674 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
206675 AND fvl38.view_application_id(+) = 0
206676 AND fvl38.language(+) = USERENV('LANG')
206677
206678 )
206679 ;
206680 --
206681 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206682
206683 trace
206684 (p_msg => 'number of header sources inserted = '||SQL%ROWCOUNT
206685 ,p_level => C_LEVEL_STATEMENT
206686 ,p_module => l_log_module);
206687
206688 END IF;
206689 --
206690
206691
206692
206693 --
206694 INSERT INTO xla_diag_sources --line2
206695 (
206696 event_id
206697 , ledger_id
206698 , sla_ledger_id
206699 , description_language
206700 , object_name
206701 , object_type_code
206702 , line_number
206703 , source_application_id
206704 , source_type_code
206705 , source_code
206706 , source_value
206707 , source_meaning
206708 , created_by
206709 , creation_date
206710 , last_update_date
206711 , last_updated_by
206712 , last_update_login
206713 , program_update_date
206714 , program_application_id
206715 , program_id
206716 , request_id
206717 )
206718 SELECT event_id
206719 , p_target_ledger_id
206720 , p_sla_ledger_id
206721 , p_language
206722 , object_name
206723 , object_type_code
206724 , line_number
206725 , source_application_id
206726 , source_type_code
206727 , source_code
206728 , SUBSTR(source_value,1,1996)
206729 , SUBSTR(source_meaning ,1,200)
206730 , xla_environment_pkg.g_Usr_Id
206731 , TRUNC(SYSDATE)
206732 , TRUNC(SYSDATE)
206733 , xla_environment_pkg.g_Usr_Id
206734 , xla_environment_pkg.g_Login_Id
206735 , TRUNC(SYSDATE)
206736 , xla_environment_pkg.g_Prog_Appl_Id
206737 , xla_environment_pkg.g_Prog_Id
206738 , xla_environment_pkg.g_Req_Id
206739 FROM (
206740 SELECT xet.event_id event_id
206741 , l2.line_number line_number
206742 , CASE r
206743 WHEN 1 THEN 'CST_XLA_INV_LINES_V'
206744 WHEN 2 THEN 'CST_XLA_INV_LINES_V'
206745 WHEN 3 THEN 'CST_XLA_INV_LINES_V'
206746 WHEN 4 THEN 'CST_XLA_INV_LINES_V'
206747 WHEN 5 THEN 'CST_XLA_INV_LINES_V'
206748 WHEN 6 THEN 'CST_XLA_INV_LINES_V'
206749 WHEN 7 THEN 'CST_XLA_INV_LINES_V'
206750 WHEN 8 THEN 'CST_XLA_INV_LINES_V'
206751 WHEN 9 THEN 'CST_XLA_INV_LINES_V'
206752
206753 ELSE null
206754 END object_name
206755 , CASE r
206756 WHEN 1 THEN 'LINE'
206757 WHEN 2 THEN 'LINE'
206758 WHEN 3 THEN 'LINE'
206759 WHEN 4 THEN 'LINE'
206760 WHEN 5 THEN 'LINE'
206761 WHEN 6 THEN 'LINE'
206762 WHEN 7 THEN 'LINE'
206763 WHEN 8 THEN 'LINE'
206764 WHEN 9 THEN 'LINE'
206765
206766 ELSE null
206767 END object_type_code
206768 , CASE r
206769 WHEN 1 THEN '707'
206770 WHEN 2 THEN '707'
206771 WHEN 3 THEN '707'
206772 WHEN 4 THEN '707'
206773 WHEN 5 THEN '707'
206774 WHEN 6 THEN '707'
206775 WHEN 7 THEN '707'
206776 WHEN 8 THEN '707'
206777 WHEN 9 THEN '707'
206778
206779 ELSE null
206780 END source_application_id
206781 , 'S' source_type_code
206782 , CASE r
206783 WHEN 1 THEN 'CODE_COMBINATION_ID'
206784 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER'
206785 WHEN 3 THEN 'CURRENCY_CODE'
206786 WHEN 4 THEN 'ENTERED_AMOUNT'
206787 WHEN 5 THEN 'CURRENCY_CONVERSION_DATE'
206788 WHEN 6 THEN 'CURRENCY_CONVERSION_RATE'
206789 WHEN 7 THEN 'CURRENCY_CONVERSION_TYPE'
206790 WHEN 8 THEN 'ACCOUNTED_AMOUNT'
206791 WHEN 9 THEN 'ACCOUNTING_LINE_TYPE_CODE'
206792
206793 ELSE null
206794 END source_code
206795 , CASE r
206796 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
206797 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
206798 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
206799 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
206800 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
206801 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
206802 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
206803 WHEN 8 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
206804 WHEN 9 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
206805
206806 ELSE null
206807 END source_value
206808 , null source_meaning
206809 FROM xla_events_gt xet
206810 , CST_XLA_INV_LINES_V l2
206811 , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
206812 WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
206813 AND xet.event_class_code = C_EVENT_CLASS_CODE
206814 AND l2.event_id = xet.event_id
206815
206816 )
206817 ;
206818 --
206819 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
206820
206821 trace
206822 (p_msg => 'number of line sources inserted = '||SQL%ROWCOUNT
206823 ,p_level => C_LEVEL_STATEMENT
206824 ,p_module => l_log_module);
206825
206826 END IF;
206827
206828
206829 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
206830 trace
206831 (p_msg => 'END of insert_sources_307'
206832 ,p_level => C_LEVEL_PROCEDURE
206833 ,p_module => l_log_module);
206834 END IF;
206835 EXCEPTION
206836 WHEN xla_exceptions_pkg.application_exception THEN
206837 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
206838 trace
206839 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
206840 ,p_level => C_LEVEL_EXCEPTION
206841 ,p_module => l_log_module);
206842 END IF;
206843 RAISE;
206844 WHEN OTHERS THEN
206845 IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
206846 trace
206847 (p_msg => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
206848 ,p_level => C_LEVEL_EXCEPTION
206849 ,p_module => l_log_module);
206850 END IF;
206851 xla_exceptions_pkg.raise_message
206852 (p_location => 'XLA_00707_AAD_S_000005_PKG.insert_sources_307');
206853 END insert_sources_307;
206854 --
206855
206856 ---------------------------------------
206857 --
206858 -- PRIVATE FUNCTION
206859 -- EventClass_307
206860 --
206861 ----------------------------------------
206862 --
206863 FUNCTION EventClass_307
206864 (p_application_id IN NUMBER
206865 ,p_base_ledger_id IN NUMBER
206866 ,p_target_ledger_id IN NUMBER
206867 ,p_language IN VARCHAR2
206868 ,p_currency_code IN VARCHAR2
206869 ,p_sla_ledger_id IN NUMBER
206870 ,p_pad_start_date IN DATE
206871 ,p_pad_end_date IN DATE
206872 ,p_primary_ledger_id IN NUMBER)
206873 RETURN BOOLEAN IS
206874 --
206875 C_EVENT_TYPE_CODE CONSTANT VARCHAR2(30) := 'WIP_MTL_ALL';
206876 C_EVENT_CLASS_CODE CONSTANT VARCHAR2(30) := 'WIP_MTL';
206877
206878 l_calculate_acctd_flag VARCHAR2(1) :='N';
206879 l_calculate_g_l_flag VARCHAR2(1) :='N';
206880 --
206881 l_array_legal_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206882 l_array_entity_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206883 l_array_entity_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
206884 l_array_transaction_num XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
206885 l_array_event_id XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206886 l_array_class_code XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
206887 l_array_event_type XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
206888 l_array_event_number XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206889 l_array_event_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206890 l_array_transaction_date XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206891 l_array_reference_num_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206892 l_array_reference_num_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206893 l_array_reference_num_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206894 l_array_reference_num_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
206895 l_array_reference_char_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
206896 l_array_reference_char_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
206897 l_array_reference_char_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
206898 l_array_reference_char_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
206899 l_array_reference_date_1 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206900 l_array_reference_date_2 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206901 l_array_reference_date_3 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206902 l_array_reference_date_4 XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
206903 l_array_event_created_by XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
206904 l_array_budgetary_control_flag XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
206905 l_array_header_events XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
206906 l_array_duplicate_checker XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num; --added
206907
206908 l_event_id NUMBER;
206909 l_previous_event_id NUMBER;
206910 l_first_event_id NUMBER;
206911 l_last_event_id NUMBER;
206912
206913 l_rec_acct_attrs XLA_AE_HEADER_PKG.t_rec_acct_attrs;
206914 l_rec_rev_acct_attrs XLA_AE_LINES_PKG.t_rec_acct_attrs;
206915 --
206916 --
206917 l_result BOOLEAN := TRUE;
206918 l_rows NUMBER := 1000;
206919 l_event_type_name VARCHAR2(80) := 'All';
206920 l_event_class_name VARCHAR2(80) := 'WIP Material';
206921 l_description VARCHAR2(4000);
206922 l_transaction_reversal NUMBER;
206923 l_ae_header_id NUMBER;
206924 l_array_extract_line_num xla_ae_journal_entry_pkg.t_array_Num;
206925 l_log_module VARCHAR2(240);
206926 --
206927 l_acct_reversal_source VARCHAR2(30);
206928 l_trx_reversal_source VARCHAR2(30);
206929
206930 l_continue_with_lines BOOLEAN := TRUE;
206931 --
206932 l_acc_rev_gl_date_source DATE; -- 4262811
206933 --
206934 type t_array_event_id is table of number index by binary_integer;
206935
206936 l_rec_array_event t_rec_array_event;
206937 l_null_rec_array_event t_rec_array_event;
206938 l_array_ae_header_id xla_number_array_type;
206939 l_actual_flag VARCHAR2(1) := NULL;
206940 l_actual_gain_loss_ref VARCHAR2(30) := '#####';
206941 l_balance_type_code VARCHAR2(1) :=NULL;
206942 l_gain_or_loss_ref VARCHAR2(30) :=NULL;
206943
206944 --
206945 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
206946 --
206947
206948 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
206949 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
206950
206951 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
206952 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
206953 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
206954 TYPE t_array_source_18 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
206955 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
206956 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
206957 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
206958 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
206959 TYPE t_array_source_24 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
206960
206961 l_array_source_12 t_array_source_12;
206962 l_array_source_12_meaning t_array_lookup_meaning;
206963 l_array_source_38 t_array_source_38;
206964 l_array_source_38_meaning t_array_lookup_meaning;
206965
206966 l_array_source_4 t_array_source_4;
206967 l_array_source_11 t_array_source_11;
206968 l_array_source_15 t_array_source_15;
206969 l_array_source_18 t_array_source_18;
206970 l_array_source_19 t_array_source_19;
206971 l_array_source_20 t_array_source_20;
206972 l_array_source_21 t_array_source_21;
206973 l_array_source_22 t_array_source_22;
206974 l_array_source_24 t_array_source_24;
206975
206976 --
206977 CURSOR header_cur
206978 IS
206979 SELECT /*+ leading(xet) cardinality(xet,1) */
206980 -- Event Class Code: WIP_MTL
206981 xet.entity_id
206982 ,xet.legal_entity_id
206983 ,xet.entity_code
206984 ,xet.transaction_number
206985 ,xet.event_id
206986 ,xet.event_class_code
206987 ,xet.event_type_code
206988 ,xet.event_number
206989 ,xet.event_date
206990 ,xet.transaction_date
206991 ,xet.reference_num_1
206992 ,xet.reference_num_2
206993 ,xet.reference_num_3
206994 ,xet.reference_num_4
206995 ,xet.reference_char_1
206996 ,xet.reference_char_2
206997 ,xet.reference_char_3
206998 ,xet.reference_char_4
206999 ,xet.reference_date_1
207000 ,xet.reference_date_2
207001 ,xet.reference_date_3
207002 ,xet.reference_date_4
207003 ,xet.event_created_by
207004 ,xet.budgetary_control_flag
207005 , h1.DISTRIBUTION_TYPE source_12
207006 , fvl12.meaning source_12_meaning
207007 , h1.TRANSFER_TO_GL_INDICATOR source_38
207008 , fvl38.meaning source_38_meaning
207009 FROM xla_events_gt xet
207010 , CST_XLA_INV_HEADERS_V h1
207011 , fnd_lookup_values fvl12
207012 , fnd_lookup_values fvl38
207013 WHERE xet.event_date between p_pad_start_date and p_pad_end_date
207014 and xet.event_class_code = C_EVENT_CLASS_CODE
207015 and xet.event_status_code <> 'N' AND h1.event_id = xet.event_id
207016 AND fvl12.lookup_type(+) = 'CST_DISTRIBUTION_TYPE'
207017 AND fvl12.lookup_code(+) = h1.DISTRIBUTION_TYPE
207018 AND fvl12.view_application_id(+) = 700
207019 AND fvl12.language(+) = USERENV('LANG')
207020 AND fvl38.lookup_type(+) = 'YES_NO'
207021 AND fvl38.lookup_code(+) = h1.TRANSFER_TO_GL_INDICATOR
207022 AND fvl38.view_application_id(+) = 0
207023 AND fvl38.language(+) = USERENV('LANG')
207024
207025 ORDER BY event_id
207026 ;
207027
207028
207029 --
207030 CURSOR line_cur (x_first_event_id in number, x_last_event_id in number)
207031 IS
207032 SELECT /*+ leading(xet) cardinality(xet,1) */
207033 -- Event Class Code: WIP_MTL
207034 xet.entity_id
207035 ,xet.legal_entity_id
207036 ,xet.entity_code
207037 ,xet.transaction_number
207038 ,xet.event_id
207039 ,xet.event_class_code
207040 ,xet.event_type_code
207041 ,xet.event_number
207042 ,xet.event_date
207043 ,xet.transaction_date
207044 ,xet.reference_num_1
207045 ,xet.reference_num_2
207046 ,xet.reference_num_3
207047 ,xet.reference_num_4
207048 ,xet.reference_char_1
207049 ,xet.reference_char_2
207050 ,xet.reference_char_3
207051 ,xet.reference_char_4
207052 ,xet.reference_date_1
207053 ,xet.reference_date_2
207054 ,xet.reference_date_3
207055 ,xet.reference_date_4
207056 ,xet.event_created_by
207057 ,xet.budgetary_control_flag
207058 , l2.LINE_NUMBER
207059 , l2.CODE_COMBINATION_ID source_4
207060 , l2.DISTRIBUTION_IDENTIFIER source_11
207061 , l2.CURRENCY_CODE source_15
207062 , l2.ENTERED_AMOUNT source_18
207063 , l2.CURRENCY_CONVERSION_DATE source_19
207064 , l2.CURRENCY_CONVERSION_RATE source_20
207065 , l2.CURRENCY_CONVERSION_TYPE source_21
207066 , l2.ACCOUNTED_AMOUNT source_22
207067 , l2.ACCOUNTING_LINE_TYPE_CODE source_24
207068 FROM xla_events_gt xet
207069 , CST_XLA_INV_LINES_V l2
207070 WHERE xet.event_id between x_first_event_id and x_last_event_id
207071 and xet.event_date between p_pad_start_date and p_pad_end_date
207072 and xet.event_class_code = C_EVENT_CLASS_CODE
207073 and xet.event_status_code <> 'N' AND l2.event_id = xet.event_id
207074 ;
207075
207076 --
207077 BEGIN
207078 IF g_log_enabled THEN
207079 l_log_module := C_DEFAULT_MODULE||'.EventClass_307';
207080 END IF;
207081 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
207082 trace
207083 (p_msg => 'BEGIN of EventClass_307'
207084 ,p_level => C_LEVEL_PROCEDURE
207085 ,p_module => l_log_module);
207086 END IF;
207087
207088 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207089 trace
207090 (p_msg => 'p_application_id = '||p_application_id||
207091 ' - p_base_ledger_id = '||p_base_ledger_id||
207092 ' - p_target_ledger_id = '||p_target_ledger_id||
207093 ' - p_language = '||p_language||
207094 ' - p_currency_code = '||p_currency_code||
207095 ' - p_sla_ledger_id = '||p_sla_ledger_id
207096 ,p_level => C_LEVEL_STATEMENT
207097 ,p_module => l_log_module);
207098 END IF;
207099 --
207100 -- initialze arrays
207101 --
207102 g_array_event.DELETE;
207103 l_rec_array_event := l_null_rec_array_event;
207104 --
207105 --------------------------------------
207106 -- 4262811 Initialze MPA Line Number
207107 --------------------------------------
207108 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
207109
207110 --
207111
207112 --
207113 OPEN header_cur;
207114 --
207115 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207116 trace
207117 (p_msg => 'SQL - FETCH header_cur'
207118 ,p_level => C_LEVEL_STATEMENT
207119 ,p_module => l_log_module);
207120 END IF;
207121 --
207122 LOOP
207123 FETCH header_cur BULK COLLECT INTO
207124 l_array_entity_id
207125 , l_array_legal_entity_id
207126 , l_array_entity_code
207127 , l_array_transaction_num
207128 , l_array_event_id
207129 , l_array_class_code
207130 , l_array_event_type
207131 , l_array_event_number
207132 , l_array_event_date
207133 , l_array_transaction_date
207134 , l_array_reference_num_1
207135 , l_array_reference_num_2
207136 , l_array_reference_num_3
207137 , l_array_reference_num_4
207138 , l_array_reference_char_1
207139 , l_array_reference_char_2
207140 , l_array_reference_char_3
207141 , l_array_reference_char_4
207142 , l_array_reference_date_1
207143 , l_array_reference_date_2
207144 , l_array_reference_date_3
207145 , l_array_reference_date_4
207146 , l_array_event_created_by
207147 , l_array_budgetary_control_flag
207148 , l_array_source_12
207149 , l_array_source_12_meaning
207150 , l_array_source_38
207151 , l_array_source_38_meaning
207152 LIMIT l_rows;
207153 --
207154 IF (C_LEVEL_EVENT >= g_log_level) THEN
207155 trace
207156 (p_msg => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
207157 ,p_level => C_LEVEL_EVENT
207158 ,p_module => l_log_module);
207159 END IF;
207160 --
207161 EXIT WHEN l_array_entity_id.COUNT = 0;
207162
207163 -- initialize arrays
207164 XLA_AE_HEADER_PKG.g_rec_header_new := NULL;
207165 XLA_AE_LINES_PKG.g_rec_lines := NULL;
207166
207167 --
207168 -- Bug 4458708
207169 --
207170 XLA_AE_LINES_PKG.g_LineNumber := 0;
207171
207172
207173 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
207174 g_last_hdr_idx := l_array_event_id.LAST;
207175 --
207176 -- loop for the headers. Each iteration is for each header extract row
207177 -- fetched in header cursor
207178 --
207179 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
207180
207181 --
207182 -- set event info as cache for other routines to refer event attributes
207183 --
207184 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
207185 (p_application_id => p_application_id
207186 ,p_primary_ledger_id => p_primary_ledger_id
207187 ,p_base_ledger_id => p_base_ledger_id
207188 ,p_target_ledger_id => p_target_ledger_id
207189 ,p_entity_id => l_array_entity_id(hdr_idx)
207190 ,p_legal_entity_id => l_array_legal_entity_id(hdr_idx)
207191 ,p_entity_code => l_array_entity_code(hdr_idx)
207192 ,p_transaction_num => l_array_transaction_num(hdr_idx)
207193 ,p_event_id => l_array_event_id(hdr_idx)
207194 ,p_event_class_code => l_array_class_code(hdr_idx)
207195 ,p_event_type_code => l_array_event_type(hdr_idx)
207196 ,p_event_number => l_array_event_number(hdr_idx)
207197 ,p_event_date => l_array_event_date(hdr_idx)
207198 ,p_transaction_date => l_array_transaction_date(hdr_idx)
207199 ,p_reference_num_1 => l_array_reference_num_1(hdr_idx)
207200 ,p_reference_num_2 => l_array_reference_num_2(hdr_idx)
207201 ,p_reference_num_3 => l_array_reference_num_3(hdr_idx)
207202 ,p_reference_num_4 => l_array_reference_num_4(hdr_idx)
207203 ,p_reference_char_1 => l_array_reference_char_1(hdr_idx)
207204 ,p_reference_char_2 => l_array_reference_char_2(hdr_idx)
207205 ,p_reference_char_3 => l_array_reference_char_3(hdr_idx)
207206 ,p_reference_char_4 => l_array_reference_char_4(hdr_idx)
207207 ,p_reference_date_1 => l_array_reference_date_1(hdr_idx)
207208 ,p_reference_date_2 => l_array_reference_date_2(hdr_idx)
207209 ,p_reference_date_3 => l_array_reference_date_3(hdr_idx)
207210 ,p_reference_date_4 => l_array_reference_date_4(hdr_idx)
207211 ,p_event_created_by => l_array_event_created_by(hdr_idx)
207212 ,p_budgetary_control_flag => l_array_budgetary_control_flag(hdr_idx));
207213
207214 --
207215 -- set the status of entry to C_VALID (0)
207216 --
207217 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
207218
207219 --
207220 -- initialize a row for ae header
207221 --
207222 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
207223
207224 l_event_id := l_array_event_id(hdr_idx);
207225
207226 --
207227 -- storing the hdr_idx for event. May be used by line cursor.
207228 --
207229 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
207230
207231 --
207232 -- store sources from header extract. This can be improved to
207233 -- store only those sources from header extract that may be used in lines
207234 --
207235
207236 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
207237 g_array_event(l_event_id).array_value_char('source_12_meaning') := l_array_source_12_meaning(hdr_idx);
207238 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
207239 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
207240
207241 --
207242 -- initilaize the status of ae headers for diffrent balance types
207243 -- the status is initialised to C_NOT_CREATED (2)
207244 --
207245 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
207246 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
207247 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
207248
207249 --
207250 -- call api to validate and store accounting attributes for header
207251 --
207252
207253 ------------------------------------------------------------
207254 -- Accrual Reversal : to get date for Standard Source (NONE)
207255 ------------------------------------------------------------
207256 l_acc_rev_gl_date_source := NULL;
207257
207258 l_rec_acct_attrs.array_acct_attr_code(1) := 'GL_DATE';
207259 l_rec_acct_attrs.array_date_value(1) :=
207260 xla_ae_sources_pkg.GetSystemSourceDate(
207261 p_source_code => 'XLA_REFERENCE_DATE_1'
207262 , p_source_type_code => 'Y'
207263 , p_source_application_id => 602
207264 );
207265 l_rec_acct_attrs.array_acct_attr_code(2) := 'GL_TRANSFER_FLAG';
207266 l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_38');
207267
207268
207269 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
207270
207271 XLA_AE_HEADER_PKG.SetJeCategoryName;
207272
207273 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx) := l_array_event_type(hdr_idx);
207274 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx) := l_array_event_id(hdr_idx);
207275 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx) := l_array_entity_id(hdr_idx);
207276 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx) := l_array_event_number(hdr_idx);
207277 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
207278
207279
207280 -- No header level analytical criteria
207281
207282 --
207283 --accounting attribute enhancement, bug 3612931
207284 --
207285 l_trx_reversal_source := SUBSTR(NULL, 1,30);
207286
207287 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
207288 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
207289
207290 xla_accounting_err_pkg.build_message
207291 (p_appli_s_name => 'XLA'
207292 ,p_msg_name => 'XLA_AP_INVALID_HDR_ATTR'
207293 ,p_token_1 => 'ACCT_ATTR_NAME'
207294 ,p_value_1 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
207295 ,p_token_2 => 'PRODUCT_NAME'
207296 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
207297 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
207298 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
207299 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
207300
207301 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
207302 --
207303 -- following sets the accounting attributes needed to reverse
207304 -- accounting for a distributeion
207305 --
207306 xla_ae_lines_pkg.SetTrxReversalAttrs
207307 (p_event_id => l_event_id
207308 ,p_gl_date => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
207309 ,p_trx_reversal_source => l_trx_reversal_source);
207310
207311 END IF;
207312
207313
207314 ----------------------------------------------------------------
207315 -- 4262811 - update the header statuses to invalid in need be
207316 ----------------------------------------------------------------
207317 --
207318 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
207319
207320
207321 -----------------------------------------------
207322 -- No accrual reversal for the event class/type
207323 -----------------------------------------------
207324 ----------------------------------------------------------------
207325
207326 --
207327 -- this ends the header loop iteration for one bulk fetch
207328 --
207329 END LOOP;
207330
207331 l_first_event_id := l_array_event_id(l_array_event_id.FIRST);
207332 l_last_event_id := l_array_event_id(l_array_event_id.LAST);
207333
207334 --
207335 -- insert dummy rows into lines gt table that were created due to
207336 -- transaction reversals
207337 --
207338 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
207339 l_result := XLA_AE_LINES_PKG.InsertLines;
207340 END IF;
207341
207342 --
207343 -- reset the temp_line_num for each set of events fetched from header
207344 -- cursor rather than doing it for each new event in line cursor
207345 -- Bug 3939231
207346 --
207347 xla_ae_lines_pkg.g_temp_line_num := 0;
207348
207349
207350
207351 --
207352 OPEN line_cur(x_first_event_id => l_first_event_id, x_last_event_id => l_last_event_id);
207353 --
207354 --
207355 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207356
207357 trace
207358 (p_msg => 'SQL - FETCH line_cur'
207359 ,p_level => C_LEVEL_STATEMENT
207360 ,p_module => l_log_module);
207361
207362 END IF;
207363 --
207364 --
207365 LOOP
207366 --
207367 FETCH line_cur BULK COLLECT INTO
207368 l_array_entity_id
207369 , l_array_legal_entity_id
207370 , l_array_entity_code
207371 , l_array_transaction_num
207372 , l_array_event_id
207373 , l_array_class_code
207374 , l_array_event_type
207375 , l_array_event_number
207376 , l_array_event_date
207377 , l_array_transaction_date
207378 , l_array_reference_num_1
207379 , l_array_reference_num_2
207380 , l_array_reference_num_3
207381 , l_array_reference_num_4
207382 , l_array_reference_char_1
207383 , l_array_reference_char_2
207384 , l_array_reference_char_3
207385 , l_array_reference_char_4
207386 , l_array_reference_date_1
207387 , l_array_reference_date_2
207388 , l_array_reference_date_3
207389 , l_array_reference_date_4
207390 , l_array_event_created_by
207391 , l_array_budgetary_control_flag
207392 , l_array_extract_line_num
207393 , l_array_source_4
207394 , l_array_source_11
207395 , l_array_source_15
207396 , l_array_source_18
207397 , l_array_source_19
207398 , l_array_source_20
207399 , l_array_source_21
207400 , l_array_source_22
207401 , l_array_source_24
207402 LIMIT l_rows;
207403
207404 --
207405 IF (C_LEVEL_EVENT >= g_log_level) THEN
207406 trace
207407 (p_msg => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
207408 ,p_level => C_LEVEL_EVENT
207409 ,p_module => l_log_module);
207410 END IF;
207411 --
207412 EXIT WHEN l_array_entity_id.count = 0;
207413
207414 XLA_AE_LINES_PKG.g_rec_lines := null;
207415
207416 --
207417 -- Bug 4458708
207418 --
207419 XLA_AE_LINES_PKG.g_LineNumber := 0;
207420 --
207421 --
207422
207423 FOR Idx IN 1..l_array_event_id.count LOOP
207424 --
207425 -- 5648433 (move l_event_id out of IF statement) set l_event_id to be used inside IF condition
207426 --
207427 l_event_id := l_array_event_id(idx); -- 5648433
207428
207429 --
207430 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
207431 --
207432
207433 IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
207434 (g_array_event(l_event_id).array_value_num('header_index'))
207435 ,'N'
207436 ) <> 'Y'
207437 THEN
207438 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207439 trace
207440 (p_msg => 'Trancaction revesal option is not Y '
207441 ,p_level => C_LEVEL_STATEMENT
207442 ,p_module => l_log_module);
207443 END IF;
207444
207445 --
207446 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
207447 --
207448 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
207449 --
207450 -- set event info as cache for other routines to refer event attributes
207451 --
207452
207453 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
207454 l_previous_event_id := l_event_id;
207455
207456 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
207457 (p_application_id => p_application_id
207458 ,p_primary_ledger_id => p_primary_ledger_id
207459 ,p_base_ledger_id => p_base_ledger_id
207460 ,p_target_ledger_id => p_target_ledger_id
207461 ,p_entity_id => l_array_entity_id(Idx)
207462 ,p_legal_entity_id => l_array_legal_entity_id(Idx)
207463 ,p_entity_code => l_array_entity_code(Idx)
207464 ,p_transaction_num => l_array_transaction_num(Idx)
207465 ,p_event_id => l_array_event_id(Idx)
207466 ,p_event_class_code => l_array_class_code(Idx)
207467 ,p_event_type_code => l_array_event_type(Idx)
207468 ,p_event_number => l_array_event_number(Idx)
207469 ,p_event_date => l_array_event_date(Idx)
207470 ,p_transaction_date => l_array_transaction_date(Idx)
207471 ,p_reference_num_1 => l_array_reference_num_1(Idx)
207472 ,p_reference_num_2 => l_array_reference_num_2(Idx)
207473 ,p_reference_num_3 => l_array_reference_num_3(Idx)
207474 ,p_reference_num_4 => l_array_reference_num_4(Idx)
207475 ,p_reference_char_1 => l_array_reference_char_1(Idx)
207476 ,p_reference_char_2 => l_array_reference_char_2(Idx)
207477 ,p_reference_char_3 => l_array_reference_char_3(Idx)
207478 ,p_reference_char_4 => l_array_reference_char_4(Idx)
207479 ,p_reference_date_1 => l_array_reference_date_1(Idx)
207480 ,p_reference_date_2 => l_array_reference_date_2(Idx)
207481 ,p_reference_date_3 => l_array_reference_date_3(Idx)
207482 ,p_reference_date_4 => l_array_reference_date_4(Idx)
207483 ,p_event_created_by => l_array_event_created_by(Idx)
207484 ,p_budgetary_control_flag => l_array_budgetary_control_flag(Idx));
207485 --
207486 END IF;
207487
207488
207489
207490 --
207491 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
207492
207493 l_acct_reversal_source := SUBSTR(NULL, 1,30);
207494
207495 IF l_continue_with_lines THEN
207496 IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
207497 xla_ae_journal_entry_pkg.g_global_status := xla_ae_journal_entry_pkg.C_INVALID;
207498
207499 xla_accounting_err_pkg.build_message
207500 (p_appli_s_name => 'XLA'
207501 ,p_msg_name => 'XLA_AP_INVALID_REVERSAL_OPTION'
207502 ,p_token_1 => 'LINE_NUMBER'
207503 ,p_value_1 => l_array_extract_line_num(Idx)
207504 ,p_token_2 => 'PRODUCT_NAME'
207505 ,p_value_2 => xla_ae_journal_entry_pkg.g_cache_event.application_name
207506 ,p_entity_id => xla_ae_journal_entry_pkg.g_cache_event.entity_id
207507 ,p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
207508 ,p_ledger_id => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
207509
207510 ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
207511 --
207512 -- following sets the accounting attributes needed to reverse
207513 -- accounting for a distributeion
207514 --
207515
207516 --
207517 -- 5217187
207518 --
207519 l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
207520 l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
207521 g_array_event(l_event_id).array_value_num('header_index'));
207522 --
207523 --
207524
207525 -- No reversal code generated
207526
207527 xla_ae_lines_pkg.SetAcctReversalAttrs
207528 (p_event_id => l_event_id
207529 ,p_rec_acct_attrs => l_rec_rev_acct_attrs
207530 ,p_calculate_acctd_flag => l_calculate_acctd_flag
207531 ,p_calculate_g_l_flag => l_calculate_g_l_flag);
207532 END IF;
207533
207534 IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
207535 l_actual_flag := NULL; l_actual_gain_loss_ref := '#####';
207536
207537 --
207538 AcctLineType_42 (
207539 p_application_id => p_application_id
207540 ,p_event_id => l_event_id
207541 ,p_calculate_acctd_flag => l_calculate_acctd_flag
207542 ,p_calculate_g_l_flag => l_calculate_g_l_flag
207543 ,p_actual_flag => l_actual_flag
207544 ,p_balance_type_code => l_balance_type_code
207545 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
207546
207547 , p_source_4 => l_array_source_4(Idx)
207548 , p_source_11 => l_array_source_11(Idx)
207549 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
207550 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
207551 , p_source_15 => l_array_source_15(Idx)
207552 , p_source_18 => l_array_source_18(Idx)
207553 , p_source_19 => l_array_source_19(Idx)
207554 , p_source_20 => l_array_source_20(Idx)
207555 , p_source_21 => l_array_source_21(Idx)
207556 , p_source_22 => l_array_source_22(Idx)
207557 , p_source_24 => l_array_source_24(Idx)
207558 );
207559 If(l_balance_type_code = 'A') THEN
207560 l_actual_gain_loss_ref := l_gain_or_loss_ref;
207561 END IF;
207562
207563 --
207564
207565
207566 --
207567 AcctLineType_135 (
207568 p_application_id => p_application_id
207569 ,p_event_id => l_event_id
207570 ,p_calculate_acctd_flag => l_calculate_acctd_flag
207571 ,p_calculate_g_l_flag => l_calculate_g_l_flag
207572 ,p_actual_flag => l_actual_flag
207573 ,p_balance_type_code => l_balance_type_code
207574 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
207575
207576 , p_source_4 => l_array_source_4(Idx)
207577 , p_source_11 => l_array_source_11(Idx)
207578 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
207579 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
207580 , p_source_15 => l_array_source_15(Idx)
207581 , p_source_18 => l_array_source_18(Idx)
207582 , p_source_19 => l_array_source_19(Idx)
207583 , p_source_20 => l_array_source_20(Idx)
207584 , p_source_21 => l_array_source_21(Idx)
207585 , p_source_22 => l_array_source_22(Idx)
207586 , p_source_24 => l_array_source_24(Idx)
207587 );
207588 If(l_balance_type_code = 'A') THEN
207589 l_actual_gain_loss_ref := l_gain_or_loss_ref;
207590 END IF;
207591
207592 --
207593
207594
207595 --
207596 AcctLineType_169 (
207597 p_application_id => p_application_id
207598 ,p_event_id => l_event_id
207599 ,p_calculate_acctd_flag => l_calculate_acctd_flag
207600 ,p_calculate_g_l_flag => l_calculate_g_l_flag
207601 ,p_actual_flag => l_actual_flag
207602 ,p_balance_type_code => l_balance_type_code
207603 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
207604
207605 , p_source_4 => l_array_source_4(Idx)
207606 , p_source_11 => l_array_source_11(Idx)
207607 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
207608 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
207609 , p_source_15 => l_array_source_15(Idx)
207610 , p_source_18 => l_array_source_18(Idx)
207611 , p_source_19 => l_array_source_19(Idx)
207612 , p_source_20 => l_array_source_20(Idx)
207613 , p_source_21 => l_array_source_21(Idx)
207614 , p_source_22 => l_array_source_22(Idx)
207615 , p_source_24 => l_array_source_24(Idx)
207616 );
207617 If(l_balance_type_code = 'A') THEN
207618 l_actual_gain_loss_ref := l_gain_or_loss_ref;
207619 END IF;
207620
207621 --
207622
207623
207624 --
207625 AcctLineType_208 (
207626 p_application_id => p_application_id
207627 ,p_event_id => l_event_id
207628 ,p_calculate_acctd_flag => l_calculate_acctd_flag
207629 ,p_calculate_g_l_flag => l_calculate_g_l_flag
207630 ,p_actual_flag => l_actual_flag
207631 ,p_balance_type_code => l_balance_type_code
207632 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
207633
207634 , p_source_4 => l_array_source_4(Idx)
207635 , p_source_11 => l_array_source_11(Idx)
207636 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
207637 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
207638 , p_source_15 => l_array_source_15(Idx)
207639 , p_source_18 => l_array_source_18(Idx)
207640 , p_source_19 => l_array_source_19(Idx)
207641 , p_source_20 => l_array_source_20(Idx)
207642 , p_source_21 => l_array_source_21(Idx)
207643 , p_source_22 => l_array_source_22(Idx)
207644 , p_source_24 => l_array_source_24(Idx)
207645 );
207646 If(l_balance_type_code = 'A') THEN
207647 l_actual_gain_loss_ref := l_gain_or_loss_ref;
207648 END IF;
207649
207650 --
207651
207652
207653 --
207654 AcctLineType_253 (
207655 p_application_id => p_application_id
207656 ,p_event_id => l_event_id
207657 ,p_calculate_acctd_flag => l_calculate_acctd_flag
207658 ,p_calculate_g_l_flag => l_calculate_g_l_flag
207659 ,p_actual_flag => l_actual_flag
207660 ,p_balance_type_code => l_balance_type_code
207661 ,p_gain_or_loss_ref=> l_gain_or_loss_ref
207662
207663 , p_source_4 => l_array_source_4(Idx)
207664 , p_source_11 => l_array_source_11(Idx)
207665 , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
207666 , p_source_12_meaning => g_array_event(l_event_id).array_value_char('source_12_meaning')
207667 , p_source_15 => l_array_source_15(Idx)
207668 , p_source_18 => l_array_source_18(Idx)
207669 , p_source_19 => l_array_source_19(Idx)
207670 , p_source_20 => l_array_source_20(Idx)
207671 , p_source_21 => l_array_source_21(Idx)
207672 , p_source_22 => l_array_source_22(Idx)
207673 , p_source_24 => l_array_source_24(Idx)
207674 );
207675 If(l_balance_type_code = 'A') THEN
207676 l_actual_gain_loss_ref := l_gain_or_loss_ref;
207677 END IF;
207678
207679 --
207680
207681 -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
207682 -- or secondary ledger that has different currency with primary
207683 -- or alc that is calculated by sla
207684 IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
207685 (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'))
207686
207687 -- IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
207688 -- XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
207689 AND (l_actual_flag = 'A')) THEN
207690 XLA_AE_LINES_PKG.CreateGainOrLossLines(
207691 p_event_id => xla_ae_journal_entry_pkg.g_cache_event.event_id
207692 ,p_application_id => p_application_id
207693 ,p_amb_context_code => 'DEFAULT'
207694 ,p_entity_code => xla_ae_journal_entry_pkg.g_cache_event.entity_code
207695 ,p_event_class_code => C_EVENT_CLASS_CODE
207696 ,p_event_type_code => C_EVENT_TYPE_CODE
207697
207698 ,p_gain_ccid => -1
207699 ,p_loss_ccid => -1
207700
207701 ,p_actual_flag => l_actual_flag
207702 ,p_enc_flag => null
207703 ,p_actual_g_l_ref => l_actual_gain_loss_ref
207704 ,p_enc_g_l_ref => null
207705 );
207706 END IF;
207707 END IF;
207708 END IF;
207709
207710 ELSE
207711 --
207712 -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
207713 --
207714 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207715 trace
207716 (p_msg => 'Trancaction revesal option is Y'
207717 ,p_level => C_LEVEL_STATEMENT
207718 ,p_module => l_log_module);
207719 END IF;
207720 END IF;
207721
207722 END LOOP;
207723 l_result := XLA_AE_LINES_PKG.InsertLines ;
207724 end loop;
207725 close line_cur;
207726
207727
207728 --
207729 -- insert headers into xla_ae_headers_gt table
207730 --
207731 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
207732
207733 -- insert into errors table here.
207734
207735 END LOOP;
207736
207737 --
207738 -- 4865292
207739 --
207740 -- Compare g_hdr_extract_count with event count in
207741 -- CreateHeadersAndLines.
207742 --
207743 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
207744
207745 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207746 trace (p_msg => '# rows extracted from header extract objects '
207747 || ' (running total): '
207748 || g_hdr_extract_count
207749 ,p_level => C_LEVEL_STATEMENT
207750 ,p_module => l_log_module);
207751 END IF;
207752
207753 CLOSE header_cur;
207754 --
207755
207756 --
207757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
207758 trace
207759 (p_msg => 'END of EventClass_307'
207760 ,p_level => C_LEVEL_PROCEDURE
207761 ,p_module => l_log_module);
207762 END IF;
207763 --
207764 RETURN l_result;
207765 EXCEPTION
207766 WHEN xla_exceptions_pkg.application_exception THEN
207767
207768 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
207769
207770
207771 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
207772
207773 RAISE;
207774
207775 WHEN NO_DATA_FOUND THEN
207776
207777 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
207778 IF line_cur%ISOPEN THEN CLOSE line_cur; END IF;
207779
207780 FOR header_record IN header_cur
207781 LOOP
207782 l_array_header_events(header_record.event_id) := header_record.event_id;
207783 END LOOP;
207784
207785 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
207786 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
207787
207788 fnd_file.put_line(fnd_file.LOG, ' ');
207789 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
207790 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
207791 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
207792
207793 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
207794 LOOP
207795 IF (NOT l_array_header_events.EXISTS(line_record.event_id)) AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
207796 fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
207797 l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
207798 END IF;
207799 END LOOP;
207800
207801 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
207802 fnd_file.put_line(fnd_file.LOG, ' ');
207803
207804
207805 xla_exceptions_pkg.raise_message
207806 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_307');
207807
207808
207809 WHEN OTHERS THEN
207810 xla_exceptions_pkg.raise_message
207811 (p_location => 'XLA_00707_AAD_S_000005_PKG.EventClass_307');
207812 END EventClass_307;
207813 --
207814
207815 --
207816 --+============================================+
207817 --| |
207818 --| PRIVATE FUNCTION |
207819 --| |
207820 --+============================================+
207821 --
207822 FUNCTION CreateHeadersAndLines
207823 (p_application_id IN NUMBER
207824 ,p_base_ledger_id IN NUMBER
207825 ,p_target_ledger_id IN NUMBER
207826 ,p_pad_start_date IN DATE
207827 ,p_pad_end_date IN DATE
207828 ,p_primary_ledger_id IN NUMBER)
207829 RETURN BOOLEAN IS
207830 l_created BOOLEAN:=FALSE;
207831 l_event_id NUMBER;
207832 l_event_date DATE;
207833 l_language VARCHAR2(30);
207834 l_currency_code VARCHAR2(30);
207835 l_sla_ledger_id NUMBER;
207836 l_log_module VARCHAR2(240);
207837
207838 BEGIN
207839 --
207840 IF g_log_enabled THEN
207841 l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
207842 END IF;
207843 --
207844 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
207845 trace
207846 (p_msg => 'BEGIN of CreateHeadersAndLines'
207847 ,p_level => C_LEVEL_PROCEDURE
207848 ,p_module => l_log_module);
207849 END IF;
207850
207851 l_language := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
207852 l_currency_code := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
207853 l_sla_ledger_id := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
207854
207855 --
207856 -- initialize array of lines with NULL
207857 --
207858 xla_ae_lines_pkg.SetNullLine;
207859
207860 --
207861 -- initialize header extract count -- Bug 4865292
207862 --
207863 g_hdr_extract_count:= 0;
207864
207865
207866 l_created := EventClass_259(
207867 p_application_id => p_application_id
207868 , p_base_ledger_id => p_base_ledger_id
207869 , p_target_ledger_id => p_target_ledger_id
207870 , p_language => l_language
207871 , p_currency_code => l_currency_code
207872 , p_sla_ledger_id => l_sla_ledger_id
207873 , p_pad_start_date => p_pad_start_date
207874 , p_pad_end_date => p_pad_end_date
207875 , p_primary_ledger_id => p_primary_ledger_id
207876 );
207877
207878
207879
207880 IF ( g_diagnostics_mode ='Y' ) THEN
207881
207882 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207883 trace
207884 (p_msg => 'CALL Transaction Objects Diagnostics'
207885 ,p_level => C_LEVEL_STATEMENT
207886 ,p_module => l_log_module);
207887
207888 END IF;
207889
207890 insert_sources_259(
207891 p_target_ledger_id => p_target_ledger_id
207892 , p_language => l_language
207893 , p_sla_ledger_id => l_sla_ledger_id
207894 , p_pad_start_date => p_pad_start_date
207895 , p_pad_end_date => p_pad_end_date
207896 );
207897
207898 END IF;
207899
207900 l_created := EventClass_260(
207901 p_application_id => p_application_id
207902 , p_base_ledger_id => p_base_ledger_id
207903 , p_target_ledger_id => p_target_ledger_id
207904 , p_language => l_language
207905 , p_currency_code => l_currency_code
207906 , p_sla_ledger_id => l_sla_ledger_id
207907 , p_pad_start_date => p_pad_start_date
207908 , p_pad_end_date => p_pad_end_date
207909 , p_primary_ledger_id => p_primary_ledger_id
207910 );
207911
207912
207913
207914 IF ( g_diagnostics_mode ='Y' ) THEN
207915
207916 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207917 trace
207918 (p_msg => 'CALL Transaction Objects Diagnostics'
207919 ,p_level => C_LEVEL_STATEMENT
207920 ,p_module => l_log_module);
207921
207922 END IF;
207923
207924 insert_sources_260(
207925 p_target_ledger_id => p_target_ledger_id
207926 , p_language => l_language
207927 , p_sla_ledger_id => l_sla_ledger_id
207928 , p_pad_start_date => p_pad_start_date
207929 , p_pad_end_date => p_pad_end_date
207930 );
207931
207932 END IF;
207933
207934 l_created := EventClass_261(
207935 p_application_id => p_application_id
207936 , p_base_ledger_id => p_base_ledger_id
207937 , p_target_ledger_id => p_target_ledger_id
207938 , p_language => l_language
207939 , p_currency_code => l_currency_code
207940 , p_sla_ledger_id => l_sla_ledger_id
207941 , p_pad_start_date => p_pad_start_date
207942 , p_pad_end_date => p_pad_end_date
207943 , p_primary_ledger_id => p_primary_ledger_id
207944 );
207945
207946
207947
207948 IF ( g_diagnostics_mode ='Y' ) THEN
207949
207950 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207951 trace
207952 (p_msg => 'CALL Transaction Objects Diagnostics'
207953 ,p_level => C_LEVEL_STATEMENT
207954 ,p_module => l_log_module);
207955
207956 END IF;
207957
207958 insert_sources_261(
207959 p_target_ledger_id => p_target_ledger_id
207960 , p_language => l_language
207961 , p_sla_ledger_id => l_sla_ledger_id
207962 , p_pad_start_date => p_pad_start_date
207963 , p_pad_end_date => p_pad_end_date
207964 );
207965
207966 END IF;
207967
207968 l_created := EventClass_262(
207969 p_application_id => p_application_id
207970 , p_base_ledger_id => p_base_ledger_id
207971 , p_target_ledger_id => p_target_ledger_id
207972 , p_language => l_language
207973 , p_currency_code => l_currency_code
207974 , p_sla_ledger_id => l_sla_ledger_id
207975 , p_pad_start_date => p_pad_start_date
207976 , p_pad_end_date => p_pad_end_date
207977 , p_primary_ledger_id => p_primary_ledger_id
207978 );
207979
207980
207981
207982 IF ( g_diagnostics_mode ='Y' ) THEN
207983
207984 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
207985 trace
207986 (p_msg => 'CALL Transaction Objects Diagnostics'
207987 ,p_level => C_LEVEL_STATEMENT
207988 ,p_module => l_log_module);
207989
207990 END IF;
207991
207992 insert_sources_262(
207993 p_target_ledger_id => p_target_ledger_id
207994 , p_language => l_language
207995 , p_sla_ledger_id => l_sla_ledger_id
207996 , p_pad_start_date => p_pad_start_date
207997 , p_pad_end_date => p_pad_end_date
207998 );
207999
208000 END IF;
208001
208002 l_created := EventClass_263(
208003 p_application_id => p_application_id
208004 , p_base_ledger_id => p_base_ledger_id
208005 , p_target_ledger_id => p_target_ledger_id
208006 , p_language => l_language
208007 , p_currency_code => l_currency_code
208008 , p_sla_ledger_id => l_sla_ledger_id
208009 , p_pad_start_date => p_pad_start_date
208010 , p_pad_end_date => p_pad_end_date
208011 , p_primary_ledger_id => p_primary_ledger_id
208012 );
208013
208014
208015
208016 IF ( g_diagnostics_mode ='Y' ) THEN
208017
208018 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208019 trace
208020 (p_msg => 'CALL Transaction Objects Diagnostics'
208021 ,p_level => C_LEVEL_STATEMENT
208022 ,p_module => l_log_module);
208023
208024 END IF;
208025
208026 insert_sources_263(
208027 p_target_ledger_id => p_target_ledger_id
208028 , p_language => l_language
208029 , p_sla_ledger_id => l_sla_ledger_id
208030 , p_pad_start_date => p_pad_start_date
208031 , p_pad_end_date => p_pad_end_date
208032 );
208033
208034 END IF;
208035
208036 l_created := EventClass_264(
208037 p_application_id => p_application_id
208038 , p_base_ledger_id => p_base_ledger_id
208039 , p_target_ledger_id => p_target_ledger_id
208040 , p_language => l_language
208041 , p_currency_code => l_currency_code
208042 , p_sla_ledger_id => l_sla_ledger_id
208043 , p_pad_start_date => p_pad_start_date
208044 , p_pad_end_date => p_pad_end_date
208045 , p_primary_ledger_id => p_primary_ledger_id
208046 );
208047
208048
208049
208050 IF ( g_diagnostics_mode ='Y' ) THEN
208051
208052 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208053 trace
208054 (p_msg => 'CALL Transaction Objects Diagnostics'
208055 ,p_level => C_LEVEL_STATEMENT
208056 ,p_module => l_log_module);
208057
208058 END IF;
208059
208060 insert_sources_264(
208061 p_target_ledger_id => p_target_ledger_id
208062 , p_language => l_language
208063 , p_sla_ledger_id => l_sla_ledger_id
208064 , p_pad_start_date => p_pad_start_date
208065 , p_pad_end_date => p_pad_end_date
208066 );
208067
208068 END IF;
208069
208070 l_created := EventClass_265(
208071 p_application_id => p_application_id
208072 , p_base_ledger_id => p_base_ledger_id
208073 , p_target_ledger_id => p_target_ledger_id
208074 , p_language => l_language
208075 , p_currency_code => l_currency_code
208076 , p_sla_ledger_id => l_sla_ledger_id
208077 , p_pad_start_date => p_pad_start_date
208078 , p_pad_end_date => p_pad_end_date
208079 , p_primary_ledger_id => p_primary_ledger_id
208080 );
208081
208082
208083
208084 IF ( g_diagnostics_mode ='Y' ) THEN
208085
208086 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208087 trace
208088 (p_msg => 'CALL Transaction Objects Diagnostics'
208089 ,p_level => C_LEVEL_STATEMENT
208090 ,p_module => l_log_module);
208091
208092 END IF;
208093
208094 insert_sources_265(
208095 p_target_ledger_id => p_target_ledger_id
208096 , p_language => l_language
208097 , p_sla_ledger_id => l_sla_ledger_id
208098 , p_pad_start_date => p_pad_start_date
208099 , p_pad_end_date => p_pad_end_date
208100 );
208101
208102 END IF;
208103
208104 l_created := EventClass_266(
208105 p_application_id => p_application_id
208106 , p_base_ledger_id => p_base_ledger_id
208107 , p_target_ledger_id => p_target_ledger_id
208108 , p_language => l_language
208109 , p_currency_code => l_currency_code
208110 , p_sla_ledger_id => l_sla_ledger_id
208111 , p_pad_start_date => p_pad_start_date
208112 , p_pad_end_date => p_pad_end_date
208113 , p_primary_ledger_id => p_primary_ledger_id
208114 );
208115
208116
208117
208118 IF ( g_diagnostics_mode ='Y' ) THEN
208119
208120 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208121 trace
208122 (p_msg => 'CALL Transaction Objects Diagnostics'
208123 ,p_level => C_LEVEL_STATEMENT
208124 ,p_module => l_log_module);
208125
208126 END IF;
208127
208128 insert_sources_266(
208129 p_target_ledger_id => p_target_ledger_id
208130 , p_language => l_language
208131 , p_sla_ledger_id => l_sla_ledger_id
208132 , p_pad_start_date => p_pad_start_date
208133 , p_pad_end_date => p_pad_end_date
208134 );
208135
208136 END IF;
208137
208138 l_created := EventClass_267(
208139 p_application_id => p_application_id
208140 , p_base_ledger_id => p_base_ledger_id
208141 , p_target_ledger_id => p_target_ledger_id
208142 , p_language => l_language
208143 , p_currency_code => l_currency_code
208144 , p_sla_ledger_id => l_sla_ledger_id
208145 , p_pad_start_date => p_pad_start_date
208146 , p_pad_end_date => p_pad_end_date
208147 , p_primary_ledger_id => p_primary_ledger_id
208148 );
208149
208150
208151
208152 IF ( g_diagnostics_mode ='Y' ) THEN
208153
208154 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208155 trace
208156 (p_msg => 'CALL Transaction Objects Diagnostics'
208157 ,p_level => C_LEVEL_STATEMENT
208158 ,p_module => l_log_module);
208159
208160 END IF;
208161
208162 insert_sources_267(
208163 p_target_ledger_id => p_target_ledger_id
208164 , p_language => l_language
208165 , p_sla_ledger_id => l_sla_ledger_id
208166 , p_pad_start_date => p_pad_start_date
208167 , p_pad_end_date => p_pad_end_date
208168 );
208169
208170 END IF;
208171
208172 l_created := EventClass_268(
208173 p_application_id => p_application_id
208174 , p_base_ledger_id => p_base_ledger_id
208175 , p_target_ledger_id => p_target_ledger_id
208176 , p_language => l_language
208177 , p_currency_code => l_currency_code
208178 , p_sla_ledger_id => l_sla_ledger_id
208179 , p_pad_start_date => p_pad_start_date
208180 , p_pad_end_date => p_pad_end_date
208181 , p_primary_ledger_id => p_primary_ledger_id
208182 );
208183
208184
208185
208186 IF ( g_diagnostics_mode ='Y' ) THEN
208187
208188 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208189 trace
208190 (p_msg => 'CALL Transaction Objects Diagnostics'
208191 ,p_level => C_LEVEL_STATEMENT
208192 ,p_module => l_log_module);
208193
208194 END IF;
208195
208196 insert_sources_268(
208197 p_target_ledger_id => p_target_ledger_id
208198 , p_language => l_language
208199 , p_sla_ledger_id => l_sla_ledger_id
208200 , p_pad_start_date => p_pad_start_date
208201 , p_pad_end_date => p_pad_end_date
208202 );
208203
208204 END IF;
208205
208206 l_created := EventClass_269(
208207 p_application_id => p_application_id
208208 , p_base_ledger_id => p_base_ledger_id
208209 , p_target_ledger_id => p_target_ledger_id
208210 , p_language => l_language
208211 , p_currency_code => l_currency_code
208212 , p_sla_ledger_id => l_sla_ledger_id
208213 , p_pad_start_date => p_pad_start_date
208214 , p_pad_end_date => p_pad_end_date
208215 , p_primary_ledger_id => p_primary_ledger_id
208216 );
208217
208218
208219
208220 IF ( g_diagnostics_mode ='Y' ) THEN
208221
208222 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208223 trace
208224 (p_msg => 'CALL Transaction Objects Diagnostics'
208225 ,p_level => C_LEVEL_STATEMENT
208226 ,p_module => l_log_module);
208227
208228 END IF;
208229
208230 insert_sources_269(
208231 p_target_ledger_id => p_target_ledger_id
208232 , p_language => l_language
208233 , p_sla_ledger_id => l_sla_ledger_id
208234 , p_pad_start_date => p_pad_start_date
208235 , p_pad_end_date => p_pad_end_date
208236 );
208237
208238 END IF;
208239
208240 l_created := EventClass_270(
208241 p_application_id => p_application_id
208242 , p_base_ledger_id => p_base_ledger_id
208243 , p_target_ledger_id => p_target_ledger_id
208244 , p_language => l_language
208245 , p_currency_code => l_currency_code
208246 , p_sla_ledger_id => l_sla_ledger_id
208247 , p_pad_start_date => p_pad_start_date
208248 , p_pad_end_date => p_pad_end_date
208249 , p_primary_ledger_id => p_primary_ledger_id
208250 );
208251
208252
208253
208254 IF ( g_diagnostics_mode ='Y' ) THEN
208255
208256 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208257 trace
208258 (p_msg => 'CALL Transaction Objects Diagnostics'
208259 ,p_level => C_LEVEL_STATEMENT
208260 ,p_module => l_log_module);
208261
208262 END IF;
208263
208264 insert_sources_270(
208265 p_target_ledger_id => p_target_ledger_id
208266 , p_language => l_language
208267 , p_sla_ledger_id => l_sla_ledger_id
208268 , p_pad_start_date => p_pad_start_date
208269 , p_pad_end_date => p_pad_end_date
208270 );
208271
208272 END IF;
208273
208274 l_created := EventClass_271(
208275 p_application_id => p_application_id
208276 , p_base_ledger_id => p_base_ledger_id
208277 , p_target_ledger_id => p_target_ledger_id
208278 , p_language => l_language
208279 , p_currency_code => l_currency_code
208280 , p_sla_ledger_id => l_sla_ledger_id
208281 , p_pad_start_date => p_pad_start_date
208282 , p_pad_end_date => p_pad_end_date
208283 , p_primary_ledger_id => p_primary_ledger_id
208284 );
208285
208286
208287
208288 IF ( g_diagnostics_mode ='Y' ) THEN
208289
208290 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208291 trace
208292 (p_msg => 'CALL Transaction Objects Diagnostics'
208293 ,p_level => C_LEVEL_STATEMENT
208294 ,p_module => l_log_module);
208295
208296 END IF;
208297
208298 insert_sources_271(
208299 p_target_ledger_id => p_target_ledger_id
208300 , p_language => l_language
208301 , p_sla_ledger_id => l_sla_ledger_id
208302 , p_pad_start_date => p_pad_start_date
208303 , p_pad_end_date => p_pad_end_date
208304 );
208305
208306 END IF;
208307
208308 l_created := EventClass_272(
208309 p_application_id => p_application_id
208310 , p_base_ledger_id => p_base_ledger_id
208311 , p_target_ledger_id => p_target_ledger_id
208312 , p_language => l_language
208313 , p_currency_code => l_currency_code
208314 , p_sla_ledger_id => l_sla_ledger_id
208315 , p_pad_start_date => p_pad_start_date
208316 , p_pad_end_date => p_pad_end_date
208317 , p_primary_ledger_id => p_primary_ledger_id
208318 );
208319
208320
208321
208322 IF ( g_diagnostics_mode ='Y' ) THEN
208323
208324 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208325 trace
208326 (p_msg => 'CALL Transaction Objects Diagnostics'
208327 ,p_level => C_LEVEL_STATEMENT
208328 ,p_module => l_log_module);
208329
208330 END IF;
208331
208332 insert_sources_272(
208333 p_target_ledger_id => p_target_ledger_id
208334 , p_language => l_language
208335 , p_sla_ledger_id => l_sla_ledger_id
208336 , p_pad_start_date => p_pad_start_date
208337 , p_pad_end_date => p_pad_end_date
208338 );
208339
208340 END IF;
208341
208342 l_created := EventClass_273(
208343 p_application_id => p_application_id
208344 , p_base_ledger_id => p_base_ledger_id
208345 , p_target_ledger_id => p_target_ledger_id
208346 , p_language => l_language
208347 , p_currency_code => l_currency_code
208348 , p_sla_ledger_id => l_sla_ledger_id
208349 , p_pad_start_date => p_pad_start_date
208350 , p_pad_end_date => p_pad_end_date
208351 , p_primary_ledger_id => p_primary_ledger_id
208352 );
208353
208354
208355
208356 IF ( g_diagnostics_mode ='Y' ) THEN
208357
208358 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208359 trace
208360 (p_msg => 'CALL Transaction Objects Diagnostics'
208361 ,p_level => C_LEVEL_STATEMENT
208362 ,p_module => l_log_module);
208363
208364 END IF;
208365
208366 insert_sources_273(
208367 p_target_ledger_id => p_target_ledger_id
208368 , p_language => l_language
208369 , p_sla_ledger_id => l_sla_ledger_id
208370 , p_pad_start_date => p_pad_start_date
208371 , p_pad_end_date => p_pad_end_date
208372 );
208373
208374 END IF;
208375
208376 l_created := EventClass_274(
208377 p_application_id => p_application_id
208378 , p_base_ledger_id => p_base_ledger_id
208379 , p_target_ledger_id => p_target_ledger_id
208380 , p_language => l_language
208381 , p_currency_code => l_currency_code
208382 , p_sla_ledger_id => l_sla_ledger_id
208383 , p_pad_start_date => p_pad_start_date
208384 , p_pad_end_date => p_pad_end_date
208385 , p_primary_ledger_id => p_primary_ledger_id
208386 );
208387
208388
208389
208390 IF ( g_diagnostics_mode ='Y' ) THEN
208391
208392 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208393 trace
208394 (p_msg => 'CALL Transaction Objects Diagnostics'
208395 ,p_level => C_LEVEL_STATEMENT
208396 ,p_module => l_log_module);
208397
208398 END IF;
208399
208400 insert_sources_274(
208401 p_target_ledger_id => p_target_ledger_id
208402 , p_language => l_language
208403 , p_sla_ledger_id => l_sla_ledger_id
208404 , p_pad_start_date => p_pad_start_date
208405 , p_pad_end_date => p_pad_end_date
208406 );
208407
208408 END IF;
208409
208410 l_created := EventClass_275(
208411 p_application_id => p_application_id
208412 , p_base_ledger_id => p_base_ledger_id
208413 , p_target_ledger_id => p_target_ledger_id
208414 , p_language => l_language
208415 , p_currency_code => l_currency_code
208416 , p_sla_ledger_id => l_sla_ledger_id
208417 , p_pad_start_date => p_pad_start_date
208418 , p_pad_end_date => p_pad_end_date
208419 , p_primary_ledger_id => p_primary_ledger_id
208420 );
208421
208422
208423
208424 IF ( g_diagnostics_mode ='Y' ) THEN
208425
208426 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208427 trace
208428 (p_msg => 'CALL Transaction Objects Diagnostics'
208429 ,p_level => C_LEVEL_STATEMENT
208430 ,p_module => l_log_module);
208431
208432 END IF;
208433
208434 insert_sources_275(
208435 p_target_ledger_id => p_target_ledger_id
208436 , p_language => l_language
208437 , p_sla_ledger_id => l_sla_ledger_id
208438 , p_pad_start_date => p_pad_start_date
208439 , p_pad_end_date => p_pad_end_date
208440 );
208441
208442 END IF;
208443
208444 l_created := EventClass_276(
208445 p_application_id => p_application_id
208446 , p_base_ledger_id => p_base_ledger_id
208447 , p_target_ledger_id => p_target_ledger_id
208448 , p_language => l_language
208449 , p_currency_code => l_currency_code
208450 , p_sla_ledger_id => l_sla_ledger_id
208451 , p_pad_start_date => p_pad_start_date
208452 , p_pad_end_date => p_pad_end_date
208453 , p_primary_ledger_id => p_primary_ledger_id
208454 );
208455
208456
208457
208458 IF ( g_diagnostics_mode ='Y' ) THEN
208459
208460 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208461 trace
208462 (p_msg => 'CALL Transaction Objects Diagnostics'
208463 ,p_level => C_LEVEL_STATEMENT
208464 ,p_module => l_log_module);
208465
208466 END IF;
208467
208468 insert_sources_276(
208469 p_target_ledger_id => p_target_ledger_id
208470 , p_language => l_language
208471 , p_sla_ledger_id => l_sla_ledger_id
208472 , p_pad_start_date => p_pad_start_date
208473 , p_pad_end_date => p_pad_end_date
208474 );
208475
208476 END IF;
208477
208478 l_created := EventClass_277(
208479 p_application_id => p_application_id
208480 , p_base_ledger_id => p_base_ledger_id
208481 , p_target_ledger_id => p_target_ledger_id
208482 , p_language => l_language
208483 , p_currency_code => l_currency_code
208484 , p_sla_ledger_id => l_sla_ledger_id
208485 , p_pad_start_date => p_pad_start_date
208486 , p_pad_end_date => p_pad_end_date
208487 , p_primary_ledger_id => p_primary_ledger_id
208488 );
208489
208490
208491
208492 IF ( g_diagnostics_mode ='Y' ) THEN
208493
208494 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208495 trace
208496 (p_msg => 'CALL Transaction Objects Diagnostics'
208497 ,p_level => C_LEVEL_STATEMENT
208498 ,p_module => l_log_module);
208499
208500 END IF;
208501
208502 insert_sources_277(
208503 p_target_ledger_id => p_target_ledger_id
208504 , p_language => l_language
208505 , p_sla_ledger_id => l_sla_ledger_id
208506 , p_pad_start_date => p_pad_start_date
208507 , p_pad_end_date => p_pad_end_date
208508 );
208509
208510 END IF;
208511
208512 l_created := EventClass_278(
208513 p_application_id => p_application_id
208514 , p_base_ledger_id => p_base_ledger_id
208515 , p_target_ledger_id => p_target_ledger_id
208516 , p_language => l_language
208517 , p_currency_code => l_currency_code
208518 , p_sla_ledger_id => l_sla_ledger_id
208519 , p_pad_start_date => p_pad_start_date
208520 , p_pad_end_date => p_pad_end_date
208521 , p_primary_ledger_id => p_primary_ledger_id
208522 );
208523
208524
208525
208526 IF ( g_diagnostics_mode ='Y' ) THEN
208527
208528 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208529 trace
208530 (p_msg => 'CALL Transaction Objects Diagnostics'
208531 ,p_level => C_LEVEL_STATEMENT
208532 ,p_module => l_log_module);
208533
208534 END IF;
208535
208536 insert_sources_278(
208537 p_target_ledger_id => p_target_ledger_id
208538 , p_language => l_language
208539 , p_sla_ledger_id => l_sla_ledger_id
208540 , p_pad_start_date => p_pad_start_date
208541 , p_pad_end_date => p_pad_end_date
208542 );
208543
208544 END IF;
208545
208546 l_created := EventClass_279(
208547 p_application_id => p_application_id
208548 , p_base_ledger_id => p_base_ledger_id
208549 , p_target_ledger_id => p_target_ledger_id
208550 , p_language => l_language
208551 , p_currency_code => l_currency_code
208552 , p_sla_ledger_id => l_sla_ledger_id
208553 , p_pad_start_date => p_pad_start_date
208554 , p_pad_end_date => p_pad_end_date
208555 , p_primary_ledger_id => p_primary_ledger_id
208556 );
208557
208558
208559
208560 IF ( g_diagnostics_mode ='Y' ) THEN
208561
208562 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208563 trace
208564 (p_msg => 'CALL Transaction Objects Diagnostics'
208565 ,p_level => C_LEVEL_STATEMENT
208566 ,p_module => l_log_module);
208567
208568 END IF;
208569
208570 insert_sources_279(
208571 p_target_ledger_id => p_target_ledger_id
208572 , p_language => l_language
208573 , p_sla_ledger_id => l_sla_ledger_id
208574 , p_pad_start_date => p_pad_start_date
208575 , p_pad_end_date => p_pad_end_date
208576 );
208577
208578 END IF;
208579
208580 l_created := EventClass_280(
208581 p_application_id => p_application_id
208582 , p_base_ledger_id => p_base_ledger_id
208583 , p_target_ledger_id => p_target_ledger_id
208584 , p_language => l_language
208585 , p_currency_code => l_currency_code
208586 , p_sla_ledger_id => l_sla_ledger_id
208587 , p_pad_start_date => p_pad_start_date
208588 , p_pad_end_date => p_pad_end_date
208589 , p_primary_ledger_id => p_primary_ledger_id
208590 );
208591
208592
208593
208594 IF ( g_diagnostics_mode ='Y' ) THEN
208595
208596 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208597 trace
208598 (p_msg => 'CALL Transaction Objects Diagnostics'
208599 ,p_level => C_LEVEL_STATEMENT
208600 ,p_module => l_log_module);
208601
208602 END IF;
208603
208604 insert_sources_280(
208605 p_target_ledger_id => p_target_ledger_id
208606 , p_language => l_language
208607 , p_sla_ledger_id => l_sla_ledger_id
208608 , p_pad_start_date => p_pad_start_date
208609 , p_pad_end_date => p_pad_end_date
208610 );
208611
208612 END IF;
208613
208614 l_created := EventClass_281(
208615 p_application_id => p_application_id
208616 , p_base_ledger_id => p_base_ledger_id
208617 , p_target_ledger_id => p_target_ledger_id
208618 , p_language => l_language
208619 , p_currency_code => l_currency_code
208620 , p_sla_ledger_id => l_sla_ledger_id
208621 , p_pad_start_date => p_pad_start_date
208622 , p_pad_end_date => p_pad_end_date
208623 , p_primary_ledger_id => p_primary_ledger_id
208624 );
208625
208626
208627
208628 IF ( g_diagnostics_mode ='Y' ) THEN
208629
208630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208631 trace
208632 (p_msg => 'CALL Transaction Objects Diagnostics'
208633 ,p_level => C_LEVEL_STATEMENT
208634 ,p_module => l_log_module);
208635
208636 END IF;
208637
208638 insert_sources_281(
208639 p_target_ledger_id => p_target_ledger_id
208640 , p_language => l_language
208641 , p_sla_ledger_id => l_sla_ledger_id
208642 , p_pad_start_date => p_pad_start_date
208643 , p_pad_end_date => p_pad_end_date
208644 );
208645
208646 END IF;
208647
208648 l_created := EventClass_282(
208649 p_application_id => p_application_id
208650 , p_base_ledger_id => p_base_ledger_id
208651 , p_target_ledger_id => p_target_ledger_id
208652 , p_language => l_language
208653 , p_currency_code => l_currency_code
208654 , p_sla_ledger_id => l_sla_ledger_id
208655 , p_pad_start_date => p_pad_start_date
208656 , p_pad_end_date => p_pad_end_date
208657 , p_primary_ledger_id => p_primary_ledger_id
208658 );
208659
208660
208661
208662 IF ( g_diagnostics_mode ='Y' ) THEN
208663
208664 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208665 trace
208666 (p_msg => 'CALL Transaction Objects Diagnostics'
208667 ,p_level => C_LEVEL_STATEMENT
208668 ,p_module => l_log_module);
208669
208670 END IF;
208671
208672 insert_sources_282(
208673 p_target_ledger_id => p_target_ledger_id
208674 , p_language => l_language
208675 , p_sla_ledger_id => l_sla_ledger_id
208676 , p_pad_start_date => p_pad_start_date
208677 , p_pad_end_date => p_pad_end_date
208678 );
208679
208680 END IF;
208681
208682 l_created := EventClass_283(
208683 p_application_id => p_application_id
208684 , p_base_ledger_id => p_base_ledger_id
208685 , p_target_ledger_id => p_target_ledger_id
208686 , p_language => l_language
208687 , p_currency_code => l_currency_code
208688 , p_sla_ledger_id => l_sla_ledger_id
208689 , p_pad_start_date => p_pad_start_date
208690 , p_pad_end_date => p_pad_end_date
208691 , p_primary_ledger_id => p_primary_ledger_id
208692 );
208693
208694
208695
208696 IF ( g_diagnostics_mode ='Y' ) THEN
208697
208698 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208699 trace
208700 (p_msg => 'CALL Transaction Objects Diagnostics'
208701 ,p_level => C_LEVEL_STATEMENT
208702 ,p_module => l_log_module);
208703
208704 END IF;
208705
208706 insert_sources_283(
208707 p_target_ledger_id => p_target_ledger_id
208708 , p_language => l_language
208709 , p_sla_ledger_id => l_sla_ledger_id
208710 , p_pad_start_date => p_pad_start_date
208711 , p_pad_end_date => p_pad_end_date
208712 );
208713
208714 END IF;
208715
208716 l_created := EventClass_284(
208717 p_application_id => p_application_id
208718 , p_base_ledger_id => p_base_ledger_id
208719 , p_target_ledger_id => p_target_ledger_id
208720 , p_language => l_language
208721 , p_currency_code => l_currency_code
208722 , p_sla_ledger_id => l_sla_ledger_id
208723 , p_pad_start_date => p_pad_start_date
208724 , p_pad_end_date => p_pad_end_date
208725 , p_primary_ledger_id => p_primary_ledger_id
208726 );
208727
208728
208729
208730 IF ( g_diagnostics_mode ='Y' ) THEN
208731
208732 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208733 trace
208734 (p_msg => 'CALL Transaction Objects Diagnostics'
208735 ,p_level => C_LEVEL_STATEMENT
208736 ,p_module => l_log_module);
208737
208738 END IF;
208739
208740 insert_sources_284(
208741 p_target_ledger_id => p_target_ledger_id
208742 , p_language => l_language
208743 , p_sla_ledger_id => l_sla_ledger_id
208744 , p_pad_start_date => p_pad_start_date
208745 , p_pad_end_date => p_pad_end_date
208746 );
208747
208748 END IF;
208749
208750 l_created := EventClass_285(
208751 p_application_id => p_application_id
208752 , p_base_ledger_id => p_base_ledger_id
208753 , p_target_ledger_id => p_target_ledger_id
208754 , p_language => l_language
208755 , p_currency_code => l_currency_code
208756 , p_sla_ledger_id => l_sla_ledger_id
208757 , p_pad_start_date => p_pad_start_date
208758 , p_pad_end_date => p_pad_end_date
208759 , p_primary_ledger_id => p_primary_ledger_id
208760 );
208761
208762
208763
208764 IF ( g_diagnostics_mode ='Y' ) THEN
208765
208766 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208767 trace
208768 (p_msg => 'CALL Transaction Objects Diagnostics'
208769 ,p_level => C_LEVEL_STATEMENT
208770 ,p_module => l_log_module);
208771
208772 END IF;
208773
208774 insert_sources_285(
208775 p_target_ledger_id => p_target_ledger_id
208776 , p_language => l_language
208777 , p_sla_ledger_id => l_sla_ledger_id
208778 , p_pad_start_date => p_pad_start_date
208779 , p_pad_end_date => p_pad_end_date
208780 );
208781
208782 END IF;
208783
208784 l_created := EventClass_286(
208785 p_application_id => p_application_id
208786 , p_base_ledger_id => p_base_ledger_id
208787 , p_target_ledger_id => p_target_ledger_id
208788 , p_language => l_language
208789 , p_currency_code => l_currency_code
208790 , p_sla_ledger_id => l_sla_ledger_id
208791 , p_pad_start_date => p_pad_start_date
208792 , p_pad_end_date => p_pad_end_date
208793 , p_primary_ledger_id => p_primary_ledger_id
208794 );
208795
208796
208797
208798 IF ( g_diagnostics_mode ='Y' ) THEN
208799
208800 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208801 trace
208802 (p_msg => 'CALL Transaction Objects Diagnostics'
208803 ,p_level => C_LEVEL_STATEMENT
208804 ,p_module => l_log_module);
208805
208806 END IF;
208807
208808 insert_sources_286(
208809 p_target_ledger_id => p_target_ledger_id
208810 , p_language => l_language
208811 , p_sla_ledger_id => l_sla_ledger_id
208812 , p_pad_start_date => p_pad_start_date
208813 , p_pad_end_date => p_pad_end_date
208814 );
208815
208816 END IF;
208817
208818 l_created := EventType_287(
208819 p_application_id => p_application_id
208820 , p_base_ledger_id => p_base_ledger_id
208821 , p_target_ledger_id => p_target_ledger_id
208822 , p_language => l_language
208823 , p_currency_code => l_currency_code
208824 , p_sla_ledger_id => l_sla_ledger_id
208825 , p_pad_start_date => p_pad_start_date
208826 , p_pad_end_date => p_pad_end_date
208827 , p_primary_ledger_id => p_primary_ledger_id
208828 );
208829
208830
208831
208832 IF ( g_diagnostics_mode ='Y' ) THEN
208833
208834 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208835 trace
208836 (p_msg => 'CALL Transaction Objects Diagnostics'
208837 ,p_level => C_LEVEL_STATEMENT
208838 ,p_module => l_log_module);
208839
208840 END IF;
208841
208842 insert_sources_287(
208843 p_target_ledger_id => p_target_ledger_id
208844 , p_language => l_language
208845 , p_sla_ledger_id => l_sla_ledger_id
208846 , p_pad_start_date => p_pad_start_date
208847 , p_pad_end_date => p_pad_end_date
208848 );
208849
208850 END IF;
208851
208852 l_created := EventType_288(
208853 p_application_id => p_application_id
208854 , p_base_ledger_id => p_base_ledger_id
208855 , p_target_ledger_id => p_target_ledger_id
208856 , p_language => l_language
208857 , p_currency_code => l_currency_code
208858 , p_sla_ledger_id => l_sla_ledger_id
208859 , p_pad_start_date => p_pad_start_date
208860 , p_pad_end_date => p_pad_end_date
208861 , p_primary_ledger_id => p_primary_ledger_id
208862 );
208863
208864
208865
208866 IF ( g_diagnostics_mode ='Y' ) THEN
208867
208868 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208869 trace
208870 (p_msg => 'CALL Transaction Objects Diagnostics'
208871 ,p_level => C_LEVEL_STATEMENT
208872 ,p_module => l_log_module);
208873
208874 END IF;
208875
208876 insert_sources_288(
208877 p_target_ledger_id => p_target_ledger_id
208878 , p_language => l_language
208879 , p_sla_ledger_id => l_sla_ledger_id
208880 , p_pad_start_date => p_pad_start_date
208881 , p_pad_end_date => p_pad_end_date
208882 );
208883
208884 END IF;
208885
208886 l_created := EventType_289(
208887 p_application_id => p_application_id
208888 , p_base_ledger_id => p_base_ledger_id
208889 , p_target_ledger_id => p_target_ledger_id
208890 , p_language => l_language
208891 , p_currency_code => l_currency_code
208892 , p_sla_ledger_id => l_sla_ledger_id
208893 , p_pad_start_date => p_pad_start_date
208894 , p_pad_end_date => p_pad_end_date
208895 , p_primary_ledger_id => p_primary_ledger_id
208896 );
208897
208898
208899
208900 IF ( g_diagnostics_mode ='Y' ) THEN
208901
208902 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208903 trace
208904 (p_msg => 'CALL Transaction Objects Diagnostics'
208905 ,p_level => C_LEVEL_STATEMENT
208906 ,p_module => l_log_module);
208907
208908 END IF;
208909
208910 insert_sources_289(
208911 p_target_ledger_id => p_target_ledger_id
208912 , p_language => l_language
208913 , p_sla_ledger_id => l_sla_ledger_id
208914 , p_pad_start_date => p_pad_start_date
208915 , p_pad_end_date => p_pad_end_date
208916 );
208917
208918 END IF;
208919
208920 l_created := EventType_290(
208921 p_application_id => p_application_id
208922 , p_base_ledger_id => p_base_ledger_id
208923 , p_target_ledger_id => p_target_ledger_id
208924 , p_language => l_language
208925 , p_currency_code => l_currency_code
208926 , p_sla_ledger_id => l_sla_ledger_id
208927 , p_pad_start_date => p_pad_start_date
208928 , p_pad_end_date => p_pad_end_date
208929 , p_primary_ledger_id => p_primary_ledger_id
208930 );
208931
208932
208933
208934 IF ( g_diagnostics_mode ='Y' ) THEN
208935
208936 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208937 trace
208938 (p_msg => 'CALL Transaction Objects Diagnostics'
208939 ,p_level => C_LEVEL_STATEMENT
208940 ,p_module => l_log_module);
208941
208942 END IF;
208943
208944 insert_sources_290(
208945 p_target_ledger_id => p_target_ledger_id
208946 , p_language => l_language
208947 , p_sla_ledger_id => l_sla_ledger_id
208948 , p_pad_start_date => p_pad_start_date
208949 , p_pad_end_date => p_pad_end_date
208950 );
208951
208952 END IF;
208953
208954 l_created := EventType_291(
208955 p_application_id => p_application_id
208956 , p_base_ledger_id => p_base_ledger_id
208957 , p_target_ledger_id => p_target_ledger_id
208958 , p_language => l_language
208959 , p_currency_code => l_currency_code
208960 , p_sla_ledger_id => l_sla_ledger_id
208961 , p_pad_start_date => p_pad_start_date
208962 , p_pad_end_date => p_pad_end_date
208963 , p_primary_ledger_id => p_primary_ledger_id
208964 );
208965
208966
208967
208968 IF ( g_diagnostics_mode ='Y' ) THEN
208969
208970 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
208971 trace
208972 (p_msg => 'CALL Transaction Objects Diagnostics'
208973 ,p_level => C_LEVEL_STATEMENT
208974 ,p_module => l_log_module);
208975
208976 END IF;
208977
208978 insert_sources_291(
208979 p_target_ledger_id => p_target_ledger_id
208980 , p_language => l_language
208981 , p_sla_ledger_id => l_sla_ledger_id
208982 , p_pad_start_date => p_pad_start_date
208983 , p_pad_end_date => p_pad_end_date
208984 );
208985
208986 END IF;
208987
208988 l_created := EventType_292(
208989 p_application_id => p_application_id
208990 , p_base_ledger_id => p_base_ledger_id
208991 , p_target_ledger_id => p_target_ledger_id
208992 , p_language => l_language
208993 , p_currency_code => l_currency_code
208994 , p_sla_ledger_id => l_sla_ledger_id
208995 , p_pad_start_date => p_pad_start_date
208996 , p_pad_end_date => p_pad_end_date
208997 , p_primary_ledger_id => p_primary_ledger_id
208998 );
208999
209000
209001
209002 IF ( g_diagnostics_mode ='Y' ) THEN
209003
209004 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209005 trace
209006 (p_msg => 'CALL Transaction Objects Diagnostics'
209007 ,p_level => C_LEVEL_STATEMENT
209008 ,p_module => l_log_module);
209009
209010 END IF;
209011
209012 insert_sources_292(
209013 p_target_ledger_id => p_target_ledger_id
209014 , p_language => l_language
209015 , p_sla_ledger_id => l_sla_ledger_id
209016 , p_pad_start_date => p_pad_start_date
209017 , p_pad_end_date => p_pad_end_date
209018 );
209019
209020 END IF;
209021
209022 l_created := EventType_293(
209023 p_application_id => p_application_id
209024 , p_base_ledger_id => p_base_ledger_id
209025 , p_target_ledger_id => p_target_ledger_id
209026 , p_language => l_language
209027 , p_currency_code => l_currency_code
209028 , p_sla_ledger_id => l_sla_ledger_id
209029 , p_pad_start_date => p_pad_start_date
209030 , p_pad_end_date => p_pad_end_date
209031 , p_primary_ledger_id => p_primary_ledger_id
209032 );
209033
209034
209035
209036 IF ( g_diagnostics_mode ='Y' ) THEN
209037
209038 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209039 trace
209040 (p_msg => 'CALL Transaction Objects Diagnostics'
209041 ,p_level => C_LEVEL_STATEMENT
209042 ,p_module => l_log_module);
209043
209044 END IF;
209045
209046 insert_sources_293(
209047 p_target_ledger_id => p_target_ledger_id
209048 , p_language => l_language
209049 , p_sla_ledger_id => l_sla_ledger_id
209050 , p_pad_start_date => p_pad_start_date
209051 , p_pad_end_date => p_pad_end_date
209052 );
209053
209054 END IF;
209055
209056 l_created := EventType_294(
209057 p_application_id => p_application_id
209058 , p_base_ledger_id => p_base_ledger_id
209059 , p_target_ledger_id => p_target_ledger_id
209060 , p_language => l_language
209061 , p_currency_code => l_currency_code
209062 , p_sla_ledger_id => l_sla_ledger_id
209063 , p_pad_start_date => p_pad_start_date
209064 , p_pad_end_date => p_pad_end_date
209065 , p_primary_ledger_id => p_primary_ledger_id
209066 );
209067
209068
209069
209070 IF ( g_diagnostics_mode ='Y' ) THEN
209071
209072 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209073 trace
209074 (p_msg => 'CALL Transaction Objects Diagnostics'
209075 ,p_level => C_LEVEL_STATEMENT
209076 ,p_module => l_log_module);
209077
209078 END IF;
209079
209080 insert_sources_294(
209081 p_target_ledger_id => p_target_ledger_id
209082 , p_language => l_language
209083 , p_sla_ledger_id => l_sla_ledger_id
209084 , p_pad_start_date => p_pad_start_date
209085 , p_pad_end_date => p_pad_end_date
209086 );
209087
209088 END IF;
209089
209090 l_created := EventType_295(
209091 p_application_id => p_application_id
209092 , p_base_ledger_id => p_base_ledger_id
209093 , p_target_ledger_id => p_target_ledger_id
209094 , p_language => l_language
209095 , p_currency_code => l_currency_code
209096 , p_sla_ledger_id => l_sla_ledger_id
209097 , p_pad_start_date => p_pad_start_date
209098 , p_pad_end_date => p_pad_end_date
209099 , p_primary_ledger_id => p_primary_ledger_id
209100 );
209101
209102
209103
209104 IF ( g_diagnostics_mode ='Y' ) THEN
209105
209106 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209107 trace
209108 (p_msg => 'CALL Transaction Objects Diagnostics'
209109 ,p_level => C_LEVEL_STATEMENT
209110 ,p_module => l_log_module);
209111
209112 END IF;
209113
209114 insert_sources_295(
209115 p_target_ledger_id => p_target_ledger_id
209116 , p_language => l_language
209117 , p_sla_ledger_id => l_sla_ledger_id
209118 , p_pad_start_date => p_pad_start_date
209119 , p_pad_end_date => p_pad_end_date
209120 );
209121
209122 END IF;
209123
209124 l_created := EventType_296(
209125 p_application_id => p_application_id
209126 , p_base_ledger_id => p_base_ledger_id
209127 , p_target_ledger_id => p_target_ledger_id
209128 , p_language => l_language
209129 , p_currency_code => l_currency_code
209130 , p_sla_ledger_id => l_sla_ledger_id
209131 , p_pad_start_date => p_pad_start_date
209132 , p_pad_end_date => p_pad_end_date
209133 , p_primary_ledger_id => p_primary_ledger_id
209134 );
209135
209136
209137
209138 IF ( g_diagnostics_mode ='Y' ) THEN
209139
209140 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209141 trace
209142 (p_msg => 'CALL Transaction Objects Diagnostics'
209143 ,p_level => C_LEVEL_STATEMENT
209144 ,p_module => l_log_module);
209145
209146 END IF;
209147
209148 insert_sources_296(
209149 p_target_ledger_id => p_target_ledger_id
209150 , p_language => l_language
209151 , p_sla_ledger_id => l_sla_ledger_id
209152 , p_pad_start_date => p_pad_start_date
209153 , p_pad_end_date => p_pad_end_date
209154 );
209155
209156 END IF;
209157
209158 l_created := EventType_297(
209159 p_application_id => p_application_id
209160 , p_base_ledger_id => p_base_ledger_id
209161 , p_target_ledger_id => p_target_ledger_id
209162 , p_language => l_language
209163 , p_currency_code => l_currency_code
209164 , p_sla_ledger_id => l_sla_ledger_id
209165 , p_pad_start_date => p_pad_start_date
209166 , p_pad_end_date => p_pad_end_date
209167 , p_primary_ledger_id => p_primary_ledger_id
209168 );
209169
209170
209171
209172 IF ( g_diagnostics_mode ='Y' ) THEN
209173
209174 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209175 trace
209176 (p_msg => 'CALL Transaction Objects Diagnostics'
209177 ,p_level => C_LEVEL_STATEMENT
209178 ,p_module => l_log_module);
209179
209180 END IF;
209181
209182 insert_sources_297(
209183 p_target_ledger_id => p_target_ledger_id
209184 , p_language => l_language
209185 , p_sla_ledger_id => l_sla_ledger_id
209186 , p_pad_start_date => p_pad_start_date
209187 , p_pad_end_date => p_pad_end_date
209188 );
209189
209190 END IF;
209191
209192 l_created := EventType_298(
209193 p_application_id => p_application_id
209194 , p_base_ledger_id => p_base_ledger_id
209195 , p_target_ledger_id => p_target_ledger_id
209196 , p_language => l_language
209197 , p_currency_code => l_currency_code
209198 , p_sla_ledger_id => l_sla_ledger_id
209199 , p_pad_start_date => p_pad_start_date
209200 , p_pad_end_date => p_pad_end_date
209201 , p_primary_ledger_id => p_primary_ledger_id
209202 );
209203
209204
209205
209206 IF ( g_diagnostics_mode ='Y' ) THEN
209207
209208 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209209 trace
209210 (p_msg => 'CALL Transaction Objects Diagnostics'
209211 ,p_level => C_LEVEL_STATEMENT
209212 ,p_module => l_log_module);
209213
209214 END IF;
209215
209216 insert_sources_298(
209217 p_target_ledger_id => p_target_ledger_id
209218 , p_language => l_language
209219 , p_sla_ledger_id => l_sla_ledger_id
209220 , p_pad_start_date => p_pad_start_date
209221 , p_pad_end_date => p_pad_end_date
209222 );
209223
209224 END IF;
209225
209226 l_created := EventType_299(
209227 p_application_id => p_application_id
209228 , p_base_ledger_id => p_base_ledger_id
209229 , p_target_ledger_id => p_target_ledger_id
209230 , p_language => l_language
209231 , p_currency_code => l_currency_code
209232 , p_sla_ledger_id => l_sla_ledger_id
209233 , p_pad_start_date => p_pad_start_date
209234 , p_pad_end_date => p_pad_end_date
209235 , p_primary_ledger_id => p_primary_ledger_id
209236 );
209237
209238
209239
209240 IF ( g_diagnostics_mode ='Y' ) THEN
209241
209242 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209243 trace
209244 (p_msg => 'CALL Transaction Objects Diagnostics'
209245 ,p_level => C_LEVEL_STATEMENT
209246 ,p_module => l_log_module);
209247
209248 END IF;
209249
209250 insert_sources_299(
209251 p_target_ledger_id => p_target_ledger_id
209252 , p_language => l_language
209253 , p_sla_ledger_id => l_sla_ledger_id
209254 , p_pad_start_date => p_pad_start_date
209255 , p_pad_end_date => p_pad_end_date
209256 );
209257
209258 END IF;
209259
209260 l_created := EventType_300(
209261 p_application_id => p_application_id
209262 , p_base_ledger_id => p_base_ledger_id
209263 , p_target_ledger_id => p_target_ledger_id
209264 , p_language => l_language
209265 , p_currency_code => l_currency_code
209266 , p_sla_ledger_id => l_sla_ledger_id
209267 , p_pad_start_date => p_pad_start_date
209268 , p_pad_end_date => p_pad_end_date
209269 , p_primary_ledger_id => p_primary_ledger_id
209270 );
209271
209272
209273
209274 IF ( g_diagnostics_mode ='Y' ) THEN
209275
209276 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209277 trace
209278 (p_msg => 'CALL Transaction Objects Diagnostics'
209279 ,p_level => C_LEVEL_STATEMENT
209280 ,p_module => l_log_module);
209281
209282 END IF;
209283
209284 insert_sources_300(
209285 p_target_ledger_id => p_target_ledger_id
209286 , p_language => l_language
209287 , p_sla_ledger_id => l_sla_ledger_id
209288 , p_pad_start_date => p_pad_start_date
209289 , p_pad_end_date => p_pad_end_date
209290 );
209291
209292 END IF;
209293
209294 l_created := EventType_301(
209295 p_application_id => p_application_id
209296 , p_base_ledger_id => p_base_ledger_id
209297 , p_target_ledger_id => p_target_ledger_id
209298 , p_language => l_language
209299 , p_currency_code => l_currency_code
209300 , p_sla_ledger_id => l_sla_ledger_id
209301 , p_pad_start_date => p_pad_start_date
209302 , p_pad_end_date => p_pad_end_date
209303 , p_primary_ledger_id => p_primary_ledger_id
209304 );
209305
209306
209307
209308 IF ( g_diagnostics_mode ='Y' ) THEN
209309
209310 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209311 trace
209312 (p_msg => 'CALL Transaction Objects Diagnostics'
209313 ,p_level => C_LEVEL_STATEMENT
209314 ,p_module => l_log_module);
209315
209316 END IF;
209317
209318 insert_sources_301(
209319 p_target_ledger_id => p_target_ledger_id
209320 , p_language => l_language
209321 , p_sla_ledger_id => l_sla_ledger_id
209322 , p_pad_start_date => p_pad_start_date
209323 , p_pad_end_date => p_pad_end_date
209324 );
209325
209326 END IF;
209327
209328 l_created := EventType_302(
209329 p_application_id => p_application_id
209330 , p_base_ledger_id => p_base_ledger_id
209331 , p_target_ledger_id => p_target_ledger_id
209332 , p_language => l_language
209333 , p_currency_code => l_currency_code
209334 , p_sla_ledger_id => l_sla_ledger_id
209335 , p_pad_start_date => p_pad_start_date
209336 , p_pad_end_date => p_pad_end_date
209337 , p_primary_ledger_id => p_primary_ledger_id
209338 );
209339
209340
209341
209342 IF ( g_diagnostics_mode ='Y' ) THEN
209343
209344 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209345 trace
209346 (p_msg => 'CALL Transaction Objects Diagnostics'
209347 ,p_level => C_LEVEL_STATEMENT
209348 ,p_module => l_log_module);
209349
209350 END IF;
209351
209352 insert_sources_302(
209353 p_target_ledger_id => p_target_ledger_id
209354 , p_language => l_language
209355 , p_sla_ledger_id => l_sla_ledger_id
209356 , p_pad_start_date => p_pad_start_date
209357 , p_pad_end_date => p_pad_end_date
209358 );
209359
209360 END IF;
209361
209362 l_created := EventType_303(
209363 p_application_id => p_application_id
209364 , p_base_ledger_id => p_base_ledger_id
209365 , p_target_ledger_id => p_target_ledger_id
209366 , p_language => l_language
209367 , p_currency_code => l_currency_code
209368 , p_sla_ledger_id => l_sla_ledger_id
209369 , p_pad_start_date => p_pad_start_date
209370 , p_pad_end_date => p_pad_end_date
209371 , p_primary_ledger_id => p_primary_ledger_id
209372 );
209373
209374
209375
209376 IF ( g_diagnostics_mode ='Y' ) THEN
209377
209378 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209379 trace
209380 (p_msg => 'CALL Transaction Objects Diagnostics'
209381 ,p_level => C_LEVEL_STATEMENT
209382 ,p_module => l_log_module);
209383
209384 END IF;
209385
209386 insert_sources_303(
209387 p_target_ledger_id => p_target_ledger_id
209388 , p_language => l_language
209389 , p_sla_ledger_id => l_sla_ledger_id
209390 , p_pad_start_date => p_pad_start_date
209391 , p_pad_end_date => p_pad_end_date
209392 );
209393
209394 END IF;
209395
209396 l_created := EventClass_304(
209397 p_application_id => p_application_id
209398 , p_base_ledger_id => p_base_ledger_id
209399 , p_target_ledger_id => p_target_ledger_id
209400 , p_language => l_language
209401 , p_currency_code => l_currency_code
209402 , p_sla_ledger_id => l_sla_ledger_id
209403 , p_pad_start_date => p_pad_start_date
209404 , p_pad_end_date => p_pad_end_date
209405 , p_primary_ledger_id => p_primary_ledger_id
209406 );
209407
209408
209409
209410 IF ( g_diagnostics_mode ='Y' ) THEN
209411
209412 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209413 trace
209414 (p_msg => 'CALL Transaction Objects Diagnostics'
209415 ,p_level => C_LEVEL_STATEMENT
209416 ,p_module => l_log_module);
209417
209418 END IF;
209419
209420 insert_sources_304(
209421 p_target_ledger_id => p_target_ledger_id
209422 , p_language => l_language
209423 , p_sla_ledger_id => l_sla_ledger_id
209424 , p_pad_start_date => p_pad_start_date
209425 , p_pad_end_date => p_pad_end_date
209426 );
209427
209428 END IF;
209429
209430 l_created := EventClass_305(
209431 p_application_id => p_application_id
209432 , p_base_ledger_id => p_base_ledger_id
209433 , p_target_ledger_id => p_target_ledger_id
209434 , p_language => l_language
209435 , p_currency_code => l_currency_code
209436 , p_sla_ledger_id => l_sla_ledger_id
209437 , p_pad_start_date => p_pad_start_date
209438 , p_pad_end_date => p_pad_end_date
209439 , p_primary_ledger_id => p_primary_ledger_id
209440 );
209441
209442
209443
209444 IF ( g_diagnostics_mode ='Y' ) THEN
209445
209446 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209447 trace
209448 (p_msg => 'CALL Transaction Objects Diagnostics'
209449 ,p_level => C_LEVEL_STATEMENT
209450 ,p_module => l_log_module);
209451
209452 END IF;
209453
209454 insert_sources_305(
209455 p_target_ledger_id => p_target_ledger_id
209456 , p_language => l_language
209457 , p_sla_ledger_id => l_sla_ledger_id
209458 , p_pad_start_date => p_pad_start_date
209459 , p_pad_end_date => p_pad_end_date
209460 );
209461
209462 END IF;
209463
209464 l_created := EventClass_306(
209465 p_application_id => p_application_id
209466 , p_base_ledger_id => p_base_ledger_id
209467 , p_target_ledger_id => p_target_ledger_id
209468 , p_language => l_language
209469 , p_currency_code => l_currency_code
209470 , p_sla_ledger_id => l_sla_ledger_id
209471 , p_pad_start_date => p_pad_start_date
209472 , p_pad_end_date => p_pad_end_date
209473 , p_primary_ledger_id => p_primary_ledger_id
209474 );
209475
209476
209477
209478 IF ( g_diagnostics_mode ='Y' ) THEN
209479
209480 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209481 trace
209482 (p_msg => 'CALL Transaction Objects Diagnostics'
209483 ,p_level => C_LEVEL_STATEMENT
209484 ,p_module => l_log_module);
209485
209486 END IF;
209487
209488 insert_sources_306(
209489 p_target_ledger_id => p_target_ledger_id
209490 , p_language => l_language
209491 , p_sla_ledger_id => l_sla_ledger_id
209492 , p_pad_start_date => p_pad_start_date
209493 , p_pad_end_date => p_pad_end_date
209494 );
209495
209496 END IF;
209497
209498 l_created := EventClass_307(
209499 p_application_id => p_application_id
209500 , p_base_ledger_id => p_base_ledger_id
209501 , p_target_ledger_id => p_target_ledger_id
209502 , p_language => l_language
209503 , p_currency_code => l_currency_code
209504 , p_sla_ledger_id => l_sla_ledger_id
209505 , p_pad_start_date => p_pad_start_date
209506 , p_pad_end_date => p_pad_end_date
209507 , p_primary_ledger_id => p_primary_ledger_id
209508 );
209509
209510
209511
209512 IF ( g_diagnostics_mode ='Y' ) THEN
209513
209514 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209515 trace
209516 (p_msg => 'CALL Transaction Objects Diagnostics'
209517 ,p_level => C_LEVEL_STATEMENT
209518 ,p_module => l_log_module);
209519
209520 END IF;
209521
209522 insert_sources_307(
209523 p_target_ledger_id => p_target_ledger_id
209524 , p_language => l_language
209525 , p_sla_ledger_id => l_sla_ledger_id
209526 , p_pad_start_date => p_pad_start_date
209527 , p_pad_end_date => p_pad_end_date
209528 );
209529
209530 END IF;
209531
209532
209533 --
209534 -- Bug 4865292
209535 -- When the number of events and that of header extract do not match,
209536 -- set the no header extract flag to indicate there are some issues
209537 -- in header extract.
209538 --
209539 -- Event count context is set in xla_accounting_pkg.unit_processor.
209540 -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
209541 -- to report it as a general error.
209542 --
209543 IF xla_context_pkg.get_event_count_context <> g_hdr_extract_count
209544 AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
209545
209546 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209547 trace
209548 (p_msg => '# of extracted headers and events does not match'
209549 ,p_level => C_LEVEL_STATEMENT
209550 ,p_module => l_log_module);
209551
209552 trace
209553 (p_msg => '# of extracted headers: '
209554 ||g_hdr_extract_count
209555 ,p_level => C_LEVEL_STATEMENT
209556 ,p_module => l_log_module);
209557
209558 trace
209559 (p_msg => '# of events in xla_events_gt: '
209560 ||xla_context_pkg.get_event_count_context
209561 ,p_level => C_LEVEL_STATEMENT
209562 ,p_module => l_log_module);
209563
209564 trace
209565 (p_msg => 'Event No Header Extract Context: '
209566 ||xla_context_pkg.get_event_nohdr_context
209567 ,p_level => C_LEVEL_STATEMENT
209568 ,p_module => l_log_module);
209569
209570 END IF;
209571
209572
209573 xla_context_pkg.set_event_nohdr_context
209574 (p_nohdr_extract_flag => 'Y'
209575 ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
209576
209577 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209578 trace
209579 (p_msg => 'No Header Extract Flag is set to Y'
209580 ,p_level => C_LEVEL_STATEMENT
209581 ,p_module => l_log_module);
209582 END IF;
209583
209584 END IF;
209585
209586 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209587 trace
209588 (p_msg => 'END of CreateHeadersAndLines'
209589 ,p_level => C_LEVEL_PROCEDURE
209590 ,p_module => l_log_module);
209591 END IF;
209592
209593 RETURN l_created;
209594 EXCEPTION
209595 WHEN xla_exceptions_pkg.application_exception THEN
209596 RAISE;
209597 WHEN OTHERS THEN
209598 xla_exceptions_pkg.raise_message
209599 (p_location => 'XLA_00707_AAD_S_000005_PKG.CreateHeadersAndLines');
209600 END CreateHeadersAndLines;
209601 --
209602 --
209603
209604 --
209605 --+============================================+
209606 --| |
209607 --| PUBLIC FUNCTION |
209608 --| |
209609 --+============================================+
209610 --
209611 FUNCTION CreateJournalEntries
209612 (p_application_id IN NUMBER
209613 ,p_base_ledger_id IN NUMBER
209614 ,p_pad_start_date IN DATE
209615 ,p_pad_end_date IN DATE
209616 ,p_primary_ledger_id IN NUMBER)
209617 RETURN NUMBER IS
209618 l_log_module VARCHAR2(240);
209619 l_array_ledgers xla_accounting_cache_pkg.t_array_ledger_id;
209620 l_temp_result BOOLEAN;
209621 l_result NUMBER;
209622 BEGIN
209623 --
209624 IF g_log_enabled THEN
209625 l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
209626 END IF;
209627 --
209628 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209629 trace
209630 (p_msg => 'BEGIN of CreateJournalEntries'||
209631 ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
209632 ,p_level => C_LEVEL_PROCEDURE
209633 ,p_module => l_log_module);
209634
209635 END IF;
209636
209637 --
209638 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
209639
209640 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
209641 trace
209642 (p_msg => 'g_diagnostics_mode = '||g_diagnostics_mode
209643 ,p_level => C_LEVEL_STATEMENT
209644 ,p_module => l_log_module);
209645 END IF;
209646 --
209647 xla_ae_journal_entry_pkg.SetProductAcctDefinition
209648 (p_product_rule_code => 'COST_MANAGEMENT_ENCUMBRANCE'
209649 ,p_product_rule_type_code => 'S'
209650 ,p_product_rule_version => ''
209651 ,p_product_rule_name => 'Cost Management Encumbrance Application Accounting Definition'
209652 ,p_amb_context_code => 'DEFAULT'
209653 );
209654
209655 l_array_ledgers :=
209656 xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
209657 (p_base_ledger_id => p_base_ledger_id);
209658
209659 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
209660 l_temp_result :=
209661 XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
209662 (p_application_id => p_application_id
209663 ,p_base_ledger_id => p_base_ledger_id
209664 ,p_target_ledger_id => l_array_ledgers(Idx)
209665 ,p_primary_ledger_id => p_primary_ledger_id
209666 ,p_pad_start_date => p_pad_start_date
209667 ,p_pad_end_date => p_pad_end_date);
209668
209669 l_temp_result :=
209670 l_temp_result AND
209671 CreateHeadersAndLines
209672 (p_application_id => p_application_id
209673 ,p_base_ledger_id => p_base_ledger_id
209674 ,p_target_ledger_id => l_array_ledgers(Idx)
209675 ,p_pad_start_date => p_pad_start_date
209676 ,p_pad_end_date => p_pad_end_date
209677 ,p_primary_ledger_id => p_primary_ledger_id
209678 );
209679 END LOOP;
209680
209681
209682 IF (g_diagnostics_mode = 'Y' AND
209683 C_LEVEL_UNEXPECTED >= g_log_level AND
209684 xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
209685
209686 xla_accounting_dump_pkg.acctg_event_extract_log(
209687 p_application_id => p_application_id
209688 ,p_request_id => xla_environment_pkg.g_Req_Id
209689 );
209690
209691 END IF;
209692
209693 CASE l_temp_result
209694 WHEN TRUE THEN l_result := 0;
209695 ELSE l_result := 2;
209696 END CASE;
209697
209698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209699 trace
209700 (p_msg => 'return value. = '||TO_CHAR(l_result)
209701 ,p_level => C_LEVEL_PROCEDURE
209702 ,p_module => l_log_module);
209703 trace
209704 (p_msg => 'END of CreateJournalEntries '
209705 ,p_level => C_LEVEL_PROCEDURE
209706 ,p_module => l_log_module);
209707 END IF;
209708
209709 RETURN l_result;
209710 EXCEPTION
209711 WHEN xla_exceptions_pkg.application_exception THEN
209712 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209713 trace
209714 (p_msg => 'ERROR. = '||sqlerrm
209715 ,p_level => C_LEVEL_PROCEDURE
209716 ,p_module => l_log_module);
209717 END IF;
209718 RAISE;
209719 WHEN OTHERS THEN
209720 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
209721 trace
209722 (p_msg => 'ERROR. = '||sqlerrm
209723 ,p_level => C_LEVEL_PROCEDURE
209724 ,p_module => l_log_module);
209725 END IF;
209726 xla_exceptions_pkg.raise_message
209727 (p_location => 'XLA_00707_AAD_S_000005_PKG.CreateJournalEntries');
209728 END CreateJournalEntries;
209729 --
209730 --=============================================================================
209731 --
209732 --
209733 --
209734 --
209735 --
209736 --
209737 --
209738 --
209739 --
209740 --
209741 --
209742 --
209743 --
209744 --
209745 --
209746 --
209747 --
209748 --
209749 --
209750 --
209751 --
209752 --
209753 --=============================================================================
209754 --=============================================================================
209755 -- *********** Initialization routine **********
209756 --=============================================================================
209757
209758 BEGIN
209759 g_log_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
209760 g_log_enabled := fnd_log.test
209761 (log_level => g_log_level
209762 ,module => C_DEFAULT_MODULE);
209763
209764 IF NOT g_log_enabled THEN
209765 g_log_level := C_LEVEL_LOG_DISABLED;
209766 END IF;
209767 --
209768 END XLA_00707_AAD_S_000005_PKG;
209769 --